Functii pentru comparatii
Functiile pentru efectuarea
comparatiilor sunt grupate in subpaleta Comparison a paletei de functii. Acestor
functii le este caracteristic faptul ca datele de intrare pot fi de diverse
tipuri (numerice, booleene, alfanumerice etc), dar datele de iesire sunt, in
general, valori logice (booleene).
De asemenea, este importanta pozitia
in care datele de intrare sunt legate la terminalul functiei (la intrarea
de sus sau la cea de jos). In cazul functiei Greater?, spre exemplu, iesirea va
avea valoarea booleana True daca valoarea de la intrarea de sus este mai mare
decat valoarea de la intrarea de jos sau va avea valoarea booleana False in
caz contrar (Figura 1).
Fig. 1. Exemplificarea functiei
Greater?
Cele mai utilizate functii din
subpaleta Comparison sunt functiile de comparare a doua marimi sau de comparare
a unei marimi cu valoarea nula, precum: Equal?, Not Equal?, Greater?, Less?,
Greater Or Equal?, Less Or Equal?, Equal To 0?, Not Equal To 0?, Greater Than
0?, Less Than 0?, Greater Or Equal To 0?, Less Or Equal To 0?. Acestea sunt
plasate pe primele doua linii ale subpaletei de functii Comparison.
In plus, subpaleta Comparison contine
si alte functii, complexe, precum: Select, Max&Min, In Range and Coerce, Decimal
Digit?, Hex Digit?,
Octal Digit? etc., plasate pe ultimele doua linii ale subpaletei de functii.
Functia Select (Figura 2) genereaza
la iesire valoarea de la intrarea t (True) daca valoarea logica de la intrarea s
este True, respectiv valoarea de la intrarea f (False) daca valoarea logica de
la intrarea s este False. Valorile de la intrarile t si f pot fi atât numerice,
cât si alfanumerice.
Fig. 2. Exemplificarea functiei
Select
Functia Max & Min (Figura 3) genereaza
la iesirea Max cea mai mare dintre valorile X si Y, respectiv la iesirea Min pe
cea mai mica dintre acestea.
Fig. 3. Exemplificarea functiei Max
& Min
Functia In Range and Coerce (Figura
4) verifica daca valoarea de la intrarea X este cuprinsa intre valorile de la
intrarile Lower Limit (limita inferioara) si Upper Limit (limita superioara),
iar valoarea logica reprezentând rezultatul verificarii este generata la iesirea
In Range?. In mod implicit, intervalul de incadrare este inchis la stânga si
deschis la dreapta; inchiderea sau deschiderea intervalului la extremitatile
sale poate fi configurata de catre utilizator din meniul contextual al functiei,
activând sau dezactivând optiunile Include upper limit si Include lower limit. Rezultatul
aducerii obligatorii a valorii X in intervalul prescris este generat la iesirea
Coerced(X).
Fig. 4. Exemplificarea functiei In
Range and Coerce
Functia Decimal Digit (Figura 5) intoarce
o valoare booleana True in situatia in care caracterul de la intrarea sa este o
cifra intre 0 si 9 sau genereaza o valoare False in caz contrar.
Fig. 5. Exemplificarea functiilor Decimal Digit?, Hex Digit? si Octal Digit?
Subpaleta Comparison contine, de
asemenea, functii pentru a verifica daca un caracter este cifra in baza de
numeratie 16 (Hex
Digit?), cifra in
baza de numeratie 8 (Octal Digit?),
caracter tiparibil (Printable?) sau caracter netiparibil (White Space?).
Structurile de programare sunt componente ale diagramei si
contin o serie de terminale de elemente, simboluri de functii si valori
constante ce formeaza un flux de date in interiorul structurii (Figura 6).
Fig. 6. Structurile de programare
Daca, in momentul in care
structura este aleasa din subpaleta Structures, o parte din elementele pe care
urmeaza sa le contina se afla deja dispuse in diagrama, chenarul structurii
poate fi trasat in jurul componentelor respective. Dupa dispunerea in diagrama,
conturul structurii poate fi deplasat sau dimensionat. In cazul in care o
structura este deplasata, aceasta antreneaza toate elementele din interiorul sau.
Elemente aflate in exteriorul structurii pot fi mutate in interiorul acesteia,
iar elemente din interior pot fi mutate in afara structurii. Prin dimensionare
sau deplasare, o structura se poate suprapune cu alte elemente din diagrama,
caz in care acestea nu vor fi incluse in structura.
-Structura secventiala (Sequence).
Atunci când dispune de mai multe ferestre, fiecare dintre acestea cu propriul
flux de date, o structura Sequence executa in ordine crescatoare ferestrele
respective. Spre exemplu, in Figura 7 sunt reprezentate alaturat doua ferestre
ale aceleiasi structuri Sequence. Astfel, se va executa intâi fereastra cu
indicele 0, trimitându-se valoarea de la elementul de control Valoare 1 la
elementul indicator Valoare 2, apoi se va executa fereastra 1, transmitând valoarea
de la elementul de control Valoare 3 la elementul indicator Valoare 4.
Fig. 7. Exemplificarea structurii
de programare Sequence
La dispunerea in diagrama, o
structura Sequence contine o singura fereastra, care este totodata si fereastra
curenta (vizibila). Din meniul contextual al structurii, alegând una din optiunile
Add Frame After sau Add Frame Before, se poate adauga o fereastra dupa sau inaintea
celei curente. Astfel, o structura Sequence va contine mai multe ferestre, care
primesc indici incepând de la 0, iar pe latura superioara a conturului
structurii apare un cursor cu ajutorul caruia se trece de la o fereastra la
alta.
-Structura cauzala (Case). La dispunerea sa in diagrama, o structura
Case contine doua ferestre (True si False), fiecare dintre acestea cu propriul
flux de date. Pe conturul structurii se afla dispus un terminal selector (de
culoare verde, continând semnul intrebarii). Structura Case va executa doar una
dintre cele doua ferestre, in functie de valoarea booleana (True sau False)
conectata la terminalul sau selector (Figura 8).
Fig. 8. Exemplificarea structurii
de programare Case
Daca la terminalul selector al
unei structuri Case, in locul unei valori booleene, se conecteaza o valoare
numerica, numele ferestrelor se vor modifica automat din True si False in 0 si 1.
In continuare, structura va executa fereastra al carei nume coincide cu
valoarea numerica ce ajunge la terminalul sau selector. Deoarece structura Case
nu va putea contine atâtea ferestre câte valori numerice pot ajunge la
terminalul sau selector, una dintre ferestre trebuie declarata drept fereastra
implicita (Default) si va fi executata atunci când valorii ajunse la terminalul
selector nu ii corespunde nici un nume de fereastra.
-Structura repetitiva cu numar fix
de iteratii (bucla For) executa portiunea de diagrama, pe care o contine, de un
numar fix de ori. O executie a portiunii interne de diagrama poarta numele de
iteratie. O bucla For (Figura 9) prezinta in coltul din stânga-sus un terminal
(notat N), la care trebuie legata o valoare care specifica numarul de iteratii
pe care bucla For le va executa.
Fig. 9. Exemplificarea structurii
de programare For
In interiorul buclei se mai afla si
un terminal numarator (notat cu i) care genereaza o valoare numar natural
reprezentând indicele iteratiei aflate in curs de executie. Indicii iteratiilor
sunt numerotati incepând de la valoarea 0, astfel incât ultima iteratie
executata de catre bucla For va avea indicele N-1.
-Structura repetitiva cu conditie
de terminare (bucla While) executa portiunea de diagrama continuta pâna când la terminalul de
continuare (aflat in coltul dreapta-jos) apare o anumita valoare booleana. La
dispunerea unei bucle While in diagrama (Figura 10), terminalul sau de
continuare este setat in starea implicita Continue If True. Bucla va continua sa
execute iteratii succesive atât timp cât la terminalul sau de continuare ajunge
o valoare logica True. Daca la terminalul de continuare ajunge o valoare logica
False, bucla While nu mai trece la urmatoarea iteratie si isi incheie executia.
Fig. 10. Exemplificarea structurii
de programare While
Starea implicita a terminalului de
continuare poate fi modificata astfel: terminalul poate fi trecut in starea Stop
If True, fie cu unealta de operare, fie apasând butonul drept al mouse-ului si
selectând starea respectiva din meniul contextual. In starea Stop If True bucla
While isi va incheia executia atunci când la terminalul de continuare ajunge
valoarea booleana True. De asemenea, in coltul stânga-jos, bucla While prezinta
un terminal numarator (notat cu i) care genereaza o valoare numar natural reprezentând
indicele iteratiei aflate in curs de executie. Indicii iteratiilor sunt
numerotati incepând cu valoarea 0.