cap.5

23
5. Tablouri (Arrays) TOPICS Introduction to Arrays Auto Indexing Arrays Array Functions Polymorphism

Upload: costelgxa

Post on 14-Nov-2014

407 views

Category:

Documents


7 download

DESCRIPTION

Instrumentatie virtuala

TRANSCRIPT

Page 1: Cap.5

5. Tablouri (Arrays)

• TOPICS• Introduction to Arrays• Auto Indexing Arrays• Array Functions• Polymorphism

Page 2: Cap.5

• Spre deosebire de elementele scalare, care reprezentau o singura valoare, de un anumit tip (numeric, boolean, alfanumeric), elementele vectoriale (Array) pot contine, intr-o maniera ordonata,

mai multe valori de acelasi tip.• Un tablou este o colecţie de elemente ale datelor care sunt toate de acelaşi tip.

• Un tablou are una sau mai multe dimensiuni şi până la 2^31 – 1 de elemente pe dimensiune, sau cât permite memoria.

• Tablourile, în LabVIEW, pot fi de orice tip: numerice, Booleane, tip cale, stringuri, unde, și tip clustere (exceptând şiruri, tabele sau grafice).

• Se poate accesa fiecare element al tabloului prin index-ul său. Index-ul este în gama (0, N-1) unde N este numărul elementelor din tablou. Tabloul unidimensional (1D) arătat mai jos ilustrează această structură. De notat că primul element are index-ul 0, al doilea element are index-ul 1, etc..

Un tablou bidimensional (2D) necesită doi indici pentru localizarea unui

element, un indice coloană şi un indice linie, amândoi pornind de la zero.

Page 3: Cap.5

Controale și indicatoare Tablou (Array)

Se va selecta Array din subpaleta Controls >> All Controls >> Array and Cluster

Atunci cand un element de tipul Array se dispune pe panou, tipul datelor pe care acesta le va contine nu este inca definit. Se spune ca elementul de tip Array este vid.Terminalul din diagrama bloc al elementului este de culoare neagra. Sageata Run este sparta, semn ca programul este incomplet si nu poate fi rulat.Pentru a defini tipul de date, in elementul de tip Array trebuie introdus un element de control sau indicator scalar de tipul dorit (numeric, boolean, alfanumeric, e.t.c.).Elementul scalar ce urmeaza a fi introdus in Array poate exista deja pe panou sau poate fi selectat la momentul respectiv din paleta de elemente.

Page 4: Cap.5

Modul de plasare a unui obiect de date (Control Numeric în cazul acesta) într-un tablou

EXERCITIUDispuneti pe panoul unei aplicatii:- un Array cu valori numerice;- un Array cu valori booleene;- un Array cu valori alfanumerice.Transformati cele trei Array-uri din elemente de control in elemente indicatoare.

Page 5: Cap.5

• In mod implicit, atunci cand este creat, un Array are o singura dimensiune, putand fi descris drept o matrice coloana.

• Numarul de dimensiuni ale unui Array poate fi modificat prin dimensionarea indexului acestuia

• Daca un Array are mai mult de o dimensiune, se poate stabili afisarea mai multor linii si mai multor coloane.

• Terminalul unui element Array se caracterizeaza prin prezenta unor paranteze drepte a caror grosime este proportionala cu numarul de dimensiuni.

• Atunci cand se realizeaza legaturi in diagrama, conexiunile pe care circula un Array cu o dimensiune sunt mai groase decat cele pe care circula valori scalare.

• Pentru Array-urile cu doua sau mai multe dimensiuni, conexiunile sunt reprezentate cu linie dubla. Spatiul intermediar al liniei duble este cu atat mai mare cu cat numarul de dimensiuni ale Array-ului este mai mare.

EXERCITIUModificati numerele de valori vizibile ale celor trei Array-uri create in exercitiul anterior.Transformati Array-urile in elemente de control (daca este cazul) si definiti valori in cadrul acestora.Modificati indexul fiecarui Array si observati modul in care valorile se deplaseaza.

Page 6: Cap.5

• Atunci cand este necesara existenta in diagrama a unei constante Array, aceasta poate fi selectata din meniul cu functii pentru valori vectoriale (Array) al paletei de functii.

• La dispunerea sa in diagrama, similar elementelor Array de pe panou, o astfel de constanta nu are definit tipul de date pe care le va contine.

• Definirea tipului de date se realizeaza prin introducerea in chenarul constantei Array a unei constante de tipul dorit (numeric, boolean sau alfanumeric).

• O constanta Array permite aceleasi operatii de definire a numarului de valori vizibile sau de modificare a numarului de dimensiuni ca si elementele Array din panou.

Page 7: Cap.5

1. Select Array Constant shell from the Array subpalette

2. Place the data object in the array shell

Creating Array Constants

Page 8: Cap.5

Crearea și utilizarea Tablourilor

• Auto-Indexarea – buclele acumulează array-urile la marginile lor.

• În mod implicit, buclele For sunt auto-indexate, în timp ce buclele While, nu.

Page 9: Cap.5

Crearea Tablourilor cu ajutorul Buclelor

• Buclele acumulează tablourile la marginile lor

• Auto Indexarea poate fi eliminată

• Se pot utiliza două Bucle For, una în interiorul celeilalte, pentru crearea unui Array 2D.

• Bucla For exterioară crează elementele rânduri, iar Bucla For interioară crează elementele coloană.

Page 10: Cap.5

Auto-Index Input

• An array input can be used to set the For Loop count terminal.

• Number of elementsin the array equalsthe count terminalinput.

• Run arrow not broken

Page 11: Cap.5

Funcții Array

Pentru a obtine in mod dinamic (programatic), structuri de valori de tipul Array, pot fi utilizate o serie de functii specifice.

Page 12: Cap.5

Array Size

Initialize Array

C. Common Array Functions

•Functia „Dimensiune Tablou” (Array Size), returneaza numarul de elemente ale fiecarei dimensiuni ale tabloului de intrare.

•Functia „Initializeaza tablou” (Initialize Array), realizeaza initializarea elementelor unui tablou cu N dimensiuni cu o valoare indicata.

Page 13: Cap.5

Array Subset

•Functia „Subtablou” (Array Subset), returneaza un numar specificat din elementele unui tablou, începand de la un indice.

Page 14: Cap.5

The Build Array Function

Building a higher dimension array

Concatenate Inputs

Appending an element

Page 15: Cap.5

The Index Array Function

Extracting an Element

Extracting an Element of a Row

Extracting a Row

Page 16: Cap.5

• Modurile in care un Array se poate comporta la intrarea sau la iesirea dintr-o structura repetitiva sunt valabile si in cazul buclelor While, cu deosebirea ca, in cazul acestora, comportamentul implicit este inversat:

-in mod implicit, o bucla While va prelua la fiecare iteratie intreg Array-ul de intrare. Doar in cazul in care componentei de pe contur i se selecteaza, din meniul propriu, optiunea Enable Indexing, bucla While va prelua cate o valoare la fiecare iteratie.

-in mod implicit, daca o valoare din interiorul unei bucle While se conecteaza la conturul acesteia, componenta de pe contur va genera, dupa incheierea executiei buclei, doar valoarea primita in ultima iteratie.Doar daca se selecteaza optiunea Enable Indexing a componentei de pe contur, aceasta va genera, dupa incheierea ultimei iteratii, un Array cuprinzand valorile primite in cadrul tuturor iteratiilor.

• Functiile aritmetice si logice pentru valori scalare, precum si cele pentru valori alfanumerice, permit conectarea de Array-uri continand valori de tipurile corespunzatoare.Se pot astfel realiza:

- operatii aritmetice asupra valorilor dintr-un Array (radacina patrata, functii trigonometrice etc.), intre un Array si o valoare scalara sau intre doua Array-uri;

- operatii logice intre un Array si o valoare booleana sau intre doua Array-uri cu valori booleene;-operatii asupra Array-urilor de valori alfanumerice.

Page 17: Cap.5

• Functiile Add Array Elements si Multiply Array Elements determina suma, respectiv produsul valorilor numerice dintr-un Array.Functiile And Array Elements si Or Array Elements efectueaza operatiile logice SI, respectiv SAU, asupra tuturor valorilor booleene dintr-un Array, obtinand o valoare booleana scalara.  Atunci cand au drept operanzi un Array si o valoare scalara sau doua Array-uri, functiile de comparatie genereaza un Array de valori booleene, compararea fiind efectuata valoare cu valoare.

• Daca, din meniul propriu al functiei de comparatie, se alege optiunea Compare Aggregates, functia va genera o valoare booleana scalara.De exemplu, daca se compara doua Array-uri de valori numerice cu functia Equal? in starea Compare Aggregates, functia va genera valoarea True doar daca este indeplinita conditia de egalitate intre toate perechile de valori aflate pe aceleasi pozitii in cele doua Array-uri.

• Functia Number To Boolean Array, aflata in meniul pentru functii booleene, transforma un numar natural intr-un Array de valori booleene, efectuand de fapt transformarea din baza 10 in baza 2.Bitul cel mai putin semnificativ este reprezentat in Array de valoarea cu indicele 0. De exemplu, valoarea 6=0+21+22 este transformata intr-un Array cu trei valori booleene: (False, True, True).

• Functia Boolean Array To Number realizeaza transformarea inversa, dintr-un Array de valori booleene intr-un numar natural.

Page 18: Cap.5

D. Polimorfism• Poliformismul reprezintă capabilităţile funcţiilor din LabView (de ex. adunare, înmulţire,

împărţire) de a accepta la intrare date cu dimensiuni şi reprezentări diferite. Funcţiile aritmetice care posedă aceste proprietăţi se numesc funcţii polimorfice.

• Un exemplu clasic pentru această proprietate este poliformismul funcţiei adiţionale scalar – scalar, scalar – matrice și matrice-matrice de dimensiuni diferite.

Combinația Rezultatul

Scalar+Scalar

Array+scalar

Array+Array

Array+Array

Scalar

Array

Array

Array

Page 19: Cap.5

ExercițiiIn this example we see how we can use these Array functions and what they do. The resulting Front Panel is as follows:

Page 20: Cap.5

Să se creeze un VI cu 6 intrări booleane (opțional) și care să returneze numărul primei intrări adevărate (opțional).

Page 21: Cap.5

Să se creeze un VI care să genereze un tablou (array) cu 10 elemente aleatoare și care să scaleze aray-ul realizat, iar apoi să extragă ultimele 4 elemente din array-ul scalat.

Page 22: Cap.5

Exerciții (continuare)

Page 23: Cap.5

• Arrays group data elements of the same type. You can build arrays of numeric, Boolean, path, string, waveform, and cluster data types.

• The array index is zero-based, which means it is in the range 0 to

n – 1, where n is the number of elements in the array.

• To create an array control or indicator, select an Array on the Controls»Array & Cluster palette, place it on the front panel, and drag a control or indicator into the array shell.

• If you wire an array to a For Loop or While Loop input tunnel, you can read and process every element in that array by enabling auto-indexing.

• By default, LabVIEW enables auto-indexing in For Loops and disables auto-indexing in While Loops.

• Polymorphism is the ability of a function to adjust to input data of different data structures.

Summary