Functii pentru valori vectoriale (Array)
Spre deosebire de elementele
scalare, care erau reprezentate printr-o singura valoare, de un anumit tip
(numeric, boolean, alfanumeric), elementele vectoriale (Array) contin, intr-o
maniera ordonata, mai multe valori de acelasi tip.
Pentru a fi dispus in panou, un
element de tipul Array se selecteaza din meniul Array & Cluster (Figura 1) al
paletei de elemente.

Fig. Selectarea elementului de tip
Array
La dispunerea pe panou a unui Array,
tipul datelor pe care acesta le va contine nu este inca definit si se considera ca elementul de tip Array este
vid.
Pentru a defini tipul de date, in acest
element se va introduce un element de control sau indicator scalar din tipul
dorit (numeric, boolean sau alfanumeric).
Elementul scalar ce urmeaza a fi introdus in Array poate exista deja pe panou
sau poate fi selectat din paleta de elemente.
Cand elementul scalar este adus
deasupra elementului Array, inainte de a se elibera butonul stanga al
mouse-ului, conturul Array este marcat cu o linie intrerupta, cu semnificatia ca
Array-ul sesizeaza ca i se va introduce un element scalar. La eliberarea
butonului mouse-ului, elementul scalar apare in interiorul elementului Array,
iar acesta isi modifica corespunzator dimensiunile. Īn diagrama, terminalul
elementului scalar dispare, iar terminalul elementului Array capata aspectul
datelor pe care le va manipula.
Īn exemplul din Figura 2, in elementul Array a
fost introdus un element scalar de tip Numeric.

Fig. 2. Introducerea in Array a
unui element de control de tip Numeric
La dispunerea sa in panou si dupa
definirea tipului de date, un element de tip Array afiseaza, implicit, o singura
valoare. Pentru a modifica numarul de valori afisate, se pozitioneaza cursorul
mouse-ului pe un colt al elementului Array, astfel incat pe colturile acestuia
sa apara patru simboluri "echer". La aparitia celor patru simboluri
"echer", se apasa butonul stanga al mouse-ului si, tinandu-l apasat,
se deplaseaza mouse-ul astfel incat sa se redimensioneze conturul elementului Array
(Figura 3). Pe masura ce mouse-ul este deplasat, conturul redimensionat al
elementului Array este marcat cu linie intrerupta.

Fig. 3. Redimensionarea elementului
Array
Redimensionarea conturului se
poate efectua atat pe verticala, cat si pe orizontala. Īn partea sa stanga, un
element de tip Array dispune de un index. Acesta indica numarul de ordine al
valorii afisate in pozitia superioara. Indicele primei valori dintr-un Array
este 0. Imediat dupa definirea tipului de date, intr-un element Array nu se afla
nici o valoare, fapt semnalizat prin afisarea speciala a elementelor pe care le
contine. Desigur, utilizatorul poate interveni si introduce valori.
Implicit, la crearea sa, un Array
are o singura dimensiune, putand fi descris drept o matrice cu o singura coloana
sau cu o singura linie. Numarul sau de dimensiuni poate fi modificat cu
ajutorul meniului contextual in care se afla optiunea Add Dimension. Odata ce un
Array are mai mult de o dimensiune, se poate stabili afisarea mai multor linii si
a mai multor coloane.
Pentru a lucra cu elementele de
tip Array, se utilizeaza o serie de functii specifice.
Functia Initialize Array (Figura
4) genereaza un element Array cu una sau mai multe dimensiuni, continand aceeasi
valoare (conectata la intrarea element) in toate pozitiile.

Fig. 4. Exemplificarea functiei Initialize
Array
Numarul de valori de-a lungul unei
dimensiuni se specifica la intrarea Dimension size a functiei. Atunci cand este
dispusa in diagrama, functia are o singura intrare Dimension size, generand,
astfel, un element Array cu o singura dimensiune.
Functia Build Array (Figura 5) concateneaza
la un element Array una sau mai multe elemente cu un numar de dimensiuni imediat
inferior. Atunci cand este dispusa in diagrama, functia are o singura intrare.
Numarul dorit de intrari se obtine prin dimensionarea simbolului functiei.

Fig. 5. Exemplificarea functiei Build
Array
Functia Interleave 1D Array (Figura
6) construieste un element Array cu o singura dimensiune prin intreteserea (interleave)
mai multor Array-uri avand, de asemenea, o singura dimensiune.

Fig. 6. Exemplificarea functiei Interleave
1D Array
Elementul Array rezultat este format prin
preluarea alternativa a cate unei valori din fiecare Array de intrare. La
dispunerea in diagrama, functia contine doar doua intrari, dar numarul acestora
poate fi modificat prin dimensionarea simbolului.
Functia Array Size (Figura 7) determina
numarul de valori dintr-un element de tip Array cu una sau mai multe
dimensiuni. Daca elementul Array de intrare are o singura dimensiune, iesirea
functiei va fi o valoare scalara, iar daca la intrare este un Array cu N
dimensiuni (N>1), iesirea functiei este un Array cu o dimensiune, continand N
elemente. Spre exemplu, daca la intrarea functiei se conecteaza o matrice, iesirea
functiei va fi un Array cu doua elemente, primul reprezentand numarul de linii si
al doilea, numarul de coloane ale intrarii.

Fig. 7. Exemplificarea functiei Array
Size
Functia Array Subset (Figura 8) extrage
o portiune dintr-un element de tip Array. Pentru fiecare dimensiune a Array-ului
de intrare, functia dispune de o intrare Index (pozitia din care va incepe
extractia) si de o intrare Length (numarul de valori extrase de-a lungul
dimensiunii respective).

Fig. 8. Exemplificarea functiei Array
Subset
Functia Array Max & Min (Figura
9) determina valorile Maxim si Minim dintr-un Array de valori numerice, precum si
indicii acestora. Daca Array-ul de intrare are mai multe dimensiuni, indicii
valorilor extreme nu vor mai fi valori scalare, ci Array-uri cu un numar de
valori egal cu numarul de dimensiuni ale Array-ului de intrare.

Fig. 9. Exemplificarea functiei Array
Max & Min
Functia Insert Into Array (Figura 10)
insereaza valori intr-un Array, incepand de la un indice specificat. Astfel, numarul
acestor valori din Array creste. Functia poate mari numarul de valori din Array
doar de-a lungul unei singure dimensiuni, astfel incat, daca inserarea urmeaza
a se efectua intr-un Array cu N dimensiuni, se vor putea insera in acesta doar
elemente cu N sau cu N-1 dimensiuni.

Fig. 10. Exemplificarea functiei
Insert Into Array
Functia Delete From Array (Figura
11) sterge dintr-un Array o portiune de marime specificata (intrarea Length, cu
valoare implicita 1), incepand de la un indice specificat (implicit ultimul
element). Ştergerea se efectueaza doar de-a lungul unei singure
dimensiuni: se sterg elemente dintr-un Array cu o dimensiune, linii sau coloane
dintr-o matrice etc. (nu se poate sterge doar o singura valoare dintr-o
matrice).

Fig. 11. Exemplificarea functiei Delete
From Array
Functia dispune, atat de o iesire
pentru Array-ul din care s-a realizat stergerea, cat si de o iesire pentru portiunea
ce a fost stearsa. Numarul de dimensiuni ale celei de a doua iesiri variaza,
fiind egal cu numarul de dimensiuni ale Array-ului de intrare, daca a fost
conectata o valoare la intrarea Length, sau este cu o unitate mai mic decat numarul
respectiv daca intrarea Length a fost lasata neconectata.
Functia Split 1D Array (Figura 12)
divide un element Array unidimensional in doua Array-uri, locul in care se
efectueaza divizarea fiind determinat de valoarea conectata la intrarea Index a
functiei. Array-ul rezultat la iesirea First Subarray va contine valorile ce se
aflau in Array-ul initial pe pozitiile 0, 1, ..., index-1.

Fig. 12. Exemplificarea functiei
Split 1D Array
Functia Decimate 1D Array (Figura
13) imparte un Array intial intr-un numar de Array-uri egal cu numarul de iesiri.
Initial, functia are doua iesiri, dar numarul acestora poate fi modificat prin
dimensionarea simbolului functiei. Valorile din Array-ul initial sunt
repartizate alternativ Array-urilor de iesire.

Fig. 13. Exemplificarea functiei Decimate
1D Array