You are on page 1of 7

Programarea vizuala

Modul I
1 Introducere
1.1 Definirea programrii vizuale
Exist o varietate de definiii ale acestei noiuni, deoarece exist diferite opinii i
concepii despre programarea vizual:
Programarea vizual se refer la orice sistem care permite utilizatorului specificarea
programului ntr-o manier cel puin bidimensional. Limbajele textuale convenionale
nu sunt considerate bidimensionale, din moment ce compilatoarele sau interpretoarele le
proceseaz sub forma un ir lung, unidimensional. [Myers]
Un limbaj vizual manipuleaz informaia vizual, suport interaciune vizual, sau
permite programarea prin folosirea expresiilor vizuale. Ultima dintre aceste variante este
considerat a fi definiia unui limbaj de programare vizual. Limbajele de programare
vizual pot fi clasificate mai departe n concordan cu tipul i extensia expresiei vizuale
utilizate, n :

limbaje vizuale bazate pe iconie (expresii vizuale),


limbaje bazate pe forme (expresii vizuale) i

limbaje bazate pe diagrame(expresii vizuale).

Mediile de programare vizual furnizeaz elemente grafice i iconice care pot fi


manipulate de ctre utilizator ntr-un mod interactiv respectndu-se o gramatic spaial
specific pentru construirea unui program. [Golin]
Limbajele transformate vizual nu sunt limbaje vizuale dar posed o reprezentare vizual
superimpus. n mod implicit, limbajele vizuale posed o expresivitate vizual pentru
care nu exist o reprezentare textual evident. [Burnett]
Programarea vizual este in mod uzual definit ca fiind utilizarea expresiilor vizuale
(cum ar fi grafic, desene, animaii sau iconie) ca mijloace prin care programele sunt
create si modificate. Aceste expresii vizuale pot fi folosite n mediile de programare ca
i interfee grafice pentru limbajele de programare textuale; acestea pot fi folosite pentru
a alctui sintaxa unor noi limbaje vizuale de programare ducnd la apariia unor noi
paradigme sau pot fi folosite n prezentri grafice ale comportrii sau structurii unui
program textual.
Visual programming is commonly defined as the use of visual expressions (such as
graphics, drawings, animation or icons) as the means by which programs are created and

modified. These visual expressions may be used to form the syntax of new visual
programming languages, sometimes leading to new paradigms such as programming by
demonstration, or they may be used in visual programming environments for textual
programming languages.[McIntyre & Burnett] Margaret Burnett and David W.McIntyre].
Un limbaj vizual este orice form de comunicare care se bazeaz pe o grafic multidimensional n defavoarea unui simplu text. Chiar i textul simplu este deseori nsuit cu
proprieti vizuale cum ar fi indentarea i stilurile de font (ngroat, nclinat- bolding and
italics). De exemplu, limbajele de programare textual sunt mult mai uor de citit dac
textul este indentat pentru a se indica structura ierarhic; urmtorul cod:

voidmakeupper(char*buf){char*i;for(i=buf;*i;i+
+){*i=toupper(*i);}}
este mult mai greu de neles dect acelai cod cu o indentare adecvat:
voidmakeupper(char*buf)
{
char*i;
for(i=buf;*i;i++)
{
*i=toupper(*i);
}
}
n ciuda acestor considerente vizuale este considerat tot un limbaj textual.
Toate limbajele vizuale implic imagini de diferite tipuri - ncepnd de la simple noduri i
arcuri de conexiune pn la propoziii multi-dimensionale imbricate, alctuite din
imagini. Bineneles, limbajele vizuale implic i utilizarea unui simplu text, dar rolul
acestuia este de obicei limitat pentru etichetare sau simple explicaii i adnotri [Rob
Kremer].

1.2 Semantica limbajelor vizuale

La fel ca orice limbaj de programare, cel vizual poate fi interpretat doar dac este asociat
cu o sintax i o semantic formal cu toate c multe limbaje vizuale duc lips de
semantic sau ambele (Myers 1990). Limbajele vizuale rmn cu mult n urma celor
textuale, n aceast privin. Majoritatea limbajelor de programare textuale sunt bine
nelese datorit unui efort mai mare depus n investigarea semanticii formale a acestora.
n cazul limbajelor vizuale acest efort este mult redus.
Un limbaj de programare vizual este orice limbaj ce permite utilizatorului s specifice
un program ntr-o modalitate bidimensional sau mai multe dimensiuni. Limbajele
convenionale n mod text nu sunt considerate bidimensionale deoarece compilatoarele le
proceseaz ca un ir individual de caractere. Un limbaj de programare vizual permite
programare cu expresii vizuale: aranjamente vizuale ale unor simboluri grafice si
textuale. Majoritatea limbajelor de programare vizual sunt bazate pe ideea de cutii si
sgei adic, cutii sau cercuri sau balonae conectate prin linii i arce.
Un limbaj transformat vizual este un limbaj non-vizual cu o reprezentare vizual
suprapusa. n mod normal limbajele vizuale au expresii vizuale inerente pentru care nu
exist un echivalent text evident.
Visual Basic, Visual C++ si ntreaga familie Visual Studio nu sunt, n ciuda numelor lor,
limbaje de programare vizual. Sunt limbaje textuale care folosesc unelte grafice pentru
interfee de construcie ce uureaz aceast sarcin. Poriunea de interfa utilizator a
mediului de programare este vizual ns limbajele nu sunt.

1.3 Importana limbajelor vizuale


In anumite circumstane, reprezentrile vizuale dein avantaje semnificative fa de
reprezentrile textuale liniare. Pe lng vechiul proverb care spune c "O imagine
valoreaz ct o mie de cuvinte", Nosek i Roth au ajuns la concluzia c reelele semantice
(grafurile) sunt mult mai eficiente din punct de vedere computaional (mai uor de
neles) dect logica predicatelor (simplu text)
Reprezentarea bidimensional a programelor, cum ar fi diagramele de control i chiar
simpla indentare a limbajelor de programare textuale, sunt extrem de utile pentru a
mbunti nelegerea programelor.
Sunt foarte multe limbaje de programare vizuale i limbaje pentru vizualizarea
programelor (Myers 1990; Marks 1991; Price, Baecker & Small 1993) Sunt de asemenea
limbaje vizuale pentru multe alte scopuri, cum ar fi luarea deciziilor (Conklin &
Begeman 1987), reprezentarea cunotinelor (Sowa 1984; Gaines 1991a), interogri ale
sistemelor de informaie geografic (Calcinelli & Mainguenaud 1994; Aufaure-Portier
1995) i interogri de baze de date (Constabile & Catarci 1995), pentru a numi doar
cteva dintre acestea.
Poate fi demonstrat c nu toi utilizatorii sunt api pentru citirea reprezentrilor grafice ale
datelor i cunotinelor. Petre i Green au constatat c "descoperirea" informaiei ntr-un
sistem grafic este o nsuire care se dobndete (Petre & Green 1993). Spre deosebire de
studiul lui Nosek i Roth, Petre i Green au descoperit c persoanele studiate au rezolvat
problemele mult mai repede cu ajutorul descrierii lor textuale dect cu ajutorul limbajelor

lor grafice; oricum, ei au ajuns la concluzia c persoanele par s consume mai mult efort
n citirea informaiei grafice, notaiile grafice s-au dovedit a fi de folos pentru utilizatorii
experimentai.

1.4 Tipuri de programare n limbajele vizuale


Exist mai multe taxonomii ( legi de clasificare ) ale limbajelor de programare vizuale, cu
toate c majoritatea se axeaz pe domenii specifice. De exemplu Price, Baecker i Small
se axeaz doar pe limbajele de vizualizare a datelor. Myers se concentreaz asupra
programrii vizuale i a vizualizrii programelor, i descrie trei taxonomii diferite.
Programarea vizual este specificarea programelor utiliznd tehnici grafice, n timp ce
vizualizarea programelor utilizeaz tehnici grafice pentru a explica structura unui
program (care nu este neaprat vizual).
Taxonomia REGULA DE CLASIFICARE- a lui Myers se refer la sistemele de
programare, i se bazeaz pe urmtoarele trei dimensiuni:
Programare vizual versus non programare vizual: difereniaz limbajele de
programare cu adevrat vizuale, de cele tradiionale bazate pe text.
Programare bazat pe exemple versus programare nebazat pe exemple: difereniaz
sistemele ce ncearc deducerea programelor din unul sau mai multe exemple, de cele
care necesit o specificare explicit.
Limbaj de programare interpretativ versus compilat: difereniaz limbajele care pot fi
direct executate, de cele care necesit o faz intermediar de translaie nainte de a putea
fi executate.

1.5 Metode de descriere a programelor n limbajele vizuale


O clasificare complet a metodelor de descriere a programelor n limbajele vizuale
folosind diagramele vizuale, este redat n cele ce urmeaz.
Diagrame de flux
Diagramele de flux sunt construcii topologice, bazate pe grafuri n care se insereaz
deseori un text din program. Logica controlului programului este proiectat cu ajutorul
unor paranteze i cicluri simple.
Utilitatea diagramelor de flux a fost mult dezbtut. Diagramele de flux pentru sisteme
mai mari tind s devin largi i dezordonate, iar deciziile pot avea multe ramuri. Pentru a
rezolva aveast problem, extensii ale acestor diagrame permit terminarea acestora i
continuarea lor pe alt pagin. Din moment ce diagramele de flux necesit ca ciclurile s
conin i sgeile de ntoarcere, acestea se pot ntinde pe mai multe pagini.

Diagramele de structur
O diagram de structur este o descompunere modular ierarhic a unui program. ntre
nivelele arborelui exist legturi cu simboluri care indic tipul de informaie care este
circulat. Aceste structuri sunt reprezentate fie ca arbori, fie ca grafuri aciclice
direcionate. Diagramele sunt topologice, cu vrfuri etichetate i cu noduri.
Diagrame de nivel software
La un nivel mai nalt, funciile unui sistem sunt gndite pe nivele. Acest tip de diagrame
vor fi eficiente doar pentru scheme de acces destul de simple. Schemele mai complexe
vor duce la un graf care nu poate fi reprezentat cu regiuni adiacente. Problema este
reductibil la o problem de planaritate, considernd regiunile ca noduri iar adiacenele
ca vrfuri.

Structuri cu arbori: diagramele Warnier-Orr si diagramele Rothon


Multe tehnici structurate de analiz duc la generarea unor arbori. O modalitate alternativ
este dat de diagamele Warnier-Orr. n loc ca rdcina s fie n vrful arborelui, ca n
orice desfurare obinuit a unui arbore, rdcina este indicat n colul din stnga-sus i
fiecare coloan ce o urmeaz este pe un nivel mai jos n arbore. Utilizarea liniilor i a
dreptunghiurilor este redus, fiind posibil obinerea unei diagrame Warnier Orr n
ntregime fr linii. Variantele bazate pe arbori, ale diagramelor de flux, sunt diagramele
ROTHON. Diagramele Rothon trateaz ciclurile ca obiecte.
Diagrame de tranziie a strilor
Aceste diagrame provin din studiul automatelor finite. Diagramele de tranziie sunt
folosite pentru modelarea unei varieti de domenii din tiina calculatoarelor care se
bazeaz pe evenimente, inclusiv analiza lexical, proiectarea interfeelor utilizator i
proiectarea circuitelor. Arcele reprezint tranziii dintr-o stare n alta care apar datorit
unui simbol de intrare care este citit.
Cu ct diagrama de tranziie devine mai mare, ansele ca aceasta s rmn plan
descresc. Astfel, diagramele mari necesit mai mult efort n organizarea spaiului pentru
noduri i arce astfel nct etichetele s poat fi uor citite.
Diagrame Nassi-Shneiderman
Acest tip de diagram descrie ierarhia utiliznd convenii de incluziune i adiacen.
Deciziile sunt afiate prin trecerea de la linii la dreptunghiuri paralele. Ciclurile sunt
afiate prin includerea unui dreptunghi ntr-un altul mai mare, etichetat cu condiia de

ciclu. La conveniile de adiacen, exist anumite limite. Terminarea prin ieire forat a
ciclurilor nu poate fi reprezentata de aceste grafuri.

Reele Petri
Diagramele vizuale de tip grafuri sunt folosite in etapa premergatoare programarii
vizuale. Retelele Petri reprezinta o categorie aparte de grafuri care pot fi folosite in
automatica/robotica la descrierea fluxurilor tehnologice pentru un sistem flexibil de
fabricatie (sistem cu evenimente discrete), descriere redata intr-o prima forma, de caietul
de sarcini al sistemului respectiv.
Instrumentele de baza pentru intocmirea caietelor de sarcini sunt grafurile de tipul Retele
Petri sau grafurile functionale GRAFCET (GRAphe Fonctionnel de Commande Etape
Transition (fr.).
Simulare functionala si realizarea prototipului virtual, al unui sistem de fabricatiefolosind programarea vizuala- este precedata de intocmirea caietelor de sarcini, deci de
obtinerea modelelor grafice de tip retele Petri sau grafurile functionale GRAFCET.
Consideram ca cititorii sunt familiarizati cu aceste modele. Vom aminti unele notiuni
necesare modelarii componentelor si a operatiilor dintr-un sistem de fabricatie, folosind
teoria grafurilor.
Modelul Grafcet a fost introdus in anul 1975 de un grup de cercetatori francezi condus de
Michel Blanchard si a fost inspirat din modelul Retelelor Petri.
Alegerea intre cele doua reprezentari grafice ar trebui sa se faca in functie de
complexitatea sistemului modelat. Pentru sisteme relativ simple nu are importanta
modelul folosit. La modelarea sistemelor complexe Grafcetul este folosit drept caiet de
sarcini, dar pentru analiza, sinteza si validarea modelului este recomandat sa se
foloseasca reteaua Petri. In felul acesta greseli greu detectabile pot fi evitate.
Un graf este complet definit daca se cunosc multimile nodurilor si arcelor acestuia.
Diferenta dintre un graf si o retea Petri consta n faptul ca, n cazul acesteia din urma,
multimea nodurilor este nlocuita cu doua multimi disjuncte: multimea locurilor
(reprezentate prin cercuri) si multimea tranzitiilor (reprezentate prin bare verticale sau
prin patrate).
Descrierea programelor n limbajele vizuale poate fi realizata si cu ajutorul retelelor Petri.
Studiul reelelor Petri este uzual acompaniat de o abordare la nivel vizual, prin
reprezentri grafice expresive. Drept urmare, literatura de specialitate raporteaz o larg
utilizare a reelelor Petri n modelare, analiz i proiectare, acoperind o arie semnificativ
de procese controlate secvenial, de la dinamica unor entiti individuale (David et al.,
1992), (Zurawski and Zhou, 1994), la dinamica unor entiti colective (sisteme mari
eng. large scale systems), ca de exemplu, sisteme hardware i software (Peterson, 1981),
(Levi and Agrawala, 1990), procese chimice (Yamalidou et al., 1990), sisteme de
fabricaie (Desrochers and Al-Jaar, 1993), (Zhou and DiCesare, 1993), (Lewis et al.,
1995), roboi i sisteme de transport (Freedman, 1991), (Cassandras et al., 1995), sisteme
de comunicaii (Nissanke, 1997).
Reelele Petri pot modela fenomenele specifice sistemelor cu evenimente discrete, din
care fac parte roboii i sistemele de fabricatie si transport. Fenomenele specifice acestor
sisteme sunt : succesiunea (o evoluie succede alteia), alegerea sau conflictul (selectarea

uneia din mai multe posibiliti de evoluie), concurena (startarea unor evoluii paralele),
sincronizarea (ncheierea unor evoluii paralele), excluderea mutual (condiionarea
reciproc a unor evoluii), care pot fi formulate n contexte temporizate sau
netemporizate.
Pe de alt parte, informaiile coninute de alte modaliti de descriere a dinamicii
sistemelor cu evenimente discrete (automate, sisteme de ateptare, reprezentri de stare
max-plus) pot fi grefate cu uurin pe arhitectura modelelor de tip reea Petri.
Reelele Petri sunt strns legate de grafurile de flux de date. O deosebire semnificativ
este c grafurile sunt bipartite, alctuite dintr-un set de poziii i tranziii. Fiecare tip de
nod poate fi subdivizat n subtipuri.
Grafuri de flux de date
Un graf de flux de date este un graf direcionat ce este alctuit din arce (reprezentnd
fluxul de date) i noduri (reprezentnd operaiile). Pachetele se deplaseaz n graf, iar
cnd un nod are pachete pe toate arcele care-i furnizeaz intrrile va executa operaiile.
Dup ce nodul este executat, va plasa pachete pe toate arcele sale de ieire. Nu exist o
ordine predeterminat a execuiei grafului de flux de date - datele urmeaz ordinea de
execuie.
n cadrul grafului, nodurile pot fi de patru tipuri (Perrot 1987) :
- computaionale (2 in, 1 out, sau 1 in, 1 out),
- de control (2 in, 2 out),
- de fuzionare (2 in, 1 out),
- de inglobare(1 in, 2 out).

Definirea programrii vizuale


Importana limbajelor vizuale
Tipuri de programare n limbajele vizuale
Metode de descriere a programelor n limbajele vizuale