Sunteți pe pagina 1din 15

Limbaje de programare

AA12-13

Asistent univ. dr. Sînziana RÎNDAȘU 1

Limbaje de programare - Sinziana RINDASU Sinziana.rindasu@cig.ase.ro


Tablouri VB.Net
Un tablou este o variabilă de memorie ce conţine o listă (o mulţime) de elemente de acelaşi
tip, stocate in zone contiguie de memorie;

Element1 Element2 Element3 Element4 Element5 Element6

Primul element Ultimul element

Un tablou se caracterizează prin:


• Nume
• Dimensiune(Rang)
• Capacitate
• Natura

Un tablou se defineşte astfel:


[Acces] numeTablou([listăIndecşi]) As tipData

Limbaje de programare - Sinziana RINDASU 2


Tablouri VB.Net - exemple
Dim Studenti(10) as String
Dim Note(10) as Integer
Dim CoteTva(5) as Double
Dim Profesori() as String= {“Ionescu”, “Popescu”, “Mihailescu”}
Definire cu inițializare
Dim Note() as Integer = {10, 9,9,4}

Limbaje de programare - Sinziana RINDASU 3


Tablouri VB.Net - redimensionare
Sunt tablouri care pot fi redimensionate în funcție de necesitățile programului.
Declarare tablou dinamic
ReDim [Preserve] numeTablou (listăIndecși)

Preserve: este o clauză opțională prin a cărui prezentă se asigură copierea elementelor existente in
noul tablou. Datele din vechiul tabel sunt păstrate;
 listăIndecşi: conţine noii indecşi, limita superioară, pentru fiecare dimensiune, a fiecărui nou
index;
Dim studenti() As String = {"Popescu", "Ionescu"}
ReDim studenti(4) ' redimensionare tablou fără păstrarea
elementelor inițiale
studenti(2) = "Popa"
studenti(3) = "Popovici"
studenti(4) = "Paceona"
ReDim Preserve studenti(10) ' redimensionare tablou cu
păstrarea elementelor inițiale
studenti(5) = "Anghelescu"
studenti(6) = "Dinescu" 4

Limbaje de programare - Sinziana RINDASU


Clasa Array – proprietăți
In VB.NET, orice tablou este un obiect de tip Array, care posedă un set de proprietăți şi metode.

Proprietăţi specifice clasei Array sunt:


 Length
 Rank

Dim studenti(10) As String


MsgBox(studenti.Length) ' va returna 11 - numărătoarea începe de la 0
MsgBox(studenti.Rank) ' va returna 1

Dim studenti(10, 2, 4) As String


MsgBox(studenti.Length) ' va returna 165= 11*3*5
MsgBox(studenti.Rank) ' va returna 3

Limbaje de programare - Sinziana RINDASU


Clasa Array – metode
Principalele metode de instanţă ale clasei Array sunt:

 GetLength(dimensiune As Integer):returnează numărul de elemente ale dimensiunii


precizate;
 GetLowerBound(dimensiune As Integer): returnează valoarea limitei inferioare a
indexului pentru dimensiunea precizată (pentru tablourile VB.NET 0);
 GetUpperBound(dimensiune As Integer): returnează valoarea limitei superioare a
indexului pentru dimensiunea precizată
Dim Profesori(3, 2)
MsgBox(Profesori.GetLength(0)) 'returnează 4
MsgBox(Profesori.GetLength(1)) 'returnează 3
MsgBox(Profesori.GetUpperBound(0)) 'returnează 3
MsgBox(Profesori.GetLowerBound(0)) 'returnează 0
MsgBox(Profesori.GetUpperBound(1)) 'returnează 2
MsgBox(Profesori.GetLowerBound(1)) 'returnează 0

Limbaje de programare - Sinziana RINDASU


Clasa Array – metode
 Array.Sort(numeTablou): sortează crescător elementele tabloului precizat (tabloul
trebuie să aibă doar o dimensiune - vector);

Dim Profesori(3)
Profesori(0) = "Popescu"
Profesori(1) = "Anghelescu"
Profesori(2) = "Chioveanu"
Profesori(3) = "Tanase"
Array.Sort(Profesori)

For i = 0 To Profesori.GetUpperBound(0)
MsgBox(Profesori(i))
' Afiseaza Anghelescu, Chioveanu, Popescu, Tanase

Next

Limbaje de programare - Sinziana RINDASU


Clasa Array – metode
 Array.Reverse(numeTablou): inversează elementele tabloului precizat (tabloul trebuie
să aibă doar o dimensiune - vector);

Dim Profesori(3)
Profesori(0) = "Popescu"
Profesori(1) = "Anghelescu"
Profesori(2) = "Chioveanu"
Profesori(3) = "Tanase"
Array.Reverse(Profesori)

For i = 0 To Profesori.GetUpperBound(0)
MsgBox(Profesori(i))
' Afiseaza Tanase, Chioveanu, Anghelescu, Popescu

Next

Limbaje de programare - Sinziana RINDASU


Parcurgerea tablourilor

Dim matrice(2, 2) ' declarare tablou


For i = 0 To matrice.GetUpperBound(0) ' parcurgere și încărcare elemente
For j = 0 To matrice.GetUpperBound(1)
matrice(i, j) = 2 * (i + j)
Next
Next

For i = 0 To matrice.GetUpperBound(0) ' parcurgere și afișare elemente


For j = 0 To matrice.GetUpperBound(1)
MsgBox(matrice(i, j))
Next
Next

Limbaje de programare - Sinziana RINDASU


Colecții
Colecția constituie o altă variantă de reprezentare şi stocare, in memoria internă, a mulțimilor (listelor) de date.
· Colecții versus tablouri

 Avantajele colecțiilor față de tablouri:

 Comportament dinamic: colecțiile permit adăugarea sau eliminarea elementelor, redimensionarea fiind efectuată
automat;
 Structură eterogenă: elementele unei colecții pot fi de tipuri diferite.

 Dezavantajele colecțiilor față de tablouri:

 Lente în utilizare: elementele sunt memorate in zona Heap, in spaţii necontigue;


 Structură eterogenă: elementele unei colecții putând fii de tipuri diferite îngreunează procedurile de control, validare şi
valorificare.

Operaţiile elementare oferite de o colecţie vizează:

 Adăugarea unui element;


 Returnarea unui element;
 Eliminarea unui element;
 Golirea colecției
10

Limbaje de programare - Sinziana RINDASU


Colecții
Tipuri de colecţii VB.NET

•Collection(Microsoft.VisualBasic)

•ArrayList(System.Collections)

•HashTable(System.Collections)

•Queue(System.Collections)

•Stack(System.Collections) etc.

11

Limbaje de programare - Sinziana RINDASU


Clasa ArrayList
Definire

Colecţia ArrayList utilizează un tablou intern, a cărei capacitate este modificată automat, pe măsură ce sunt
adăugate noi elemente. O colecţie ArrayList se defineşte şi se instanţiază astfel:

[Acces] numeColectieAL As ArrayList=New ArrayList()

Dim lista As New ArrayList

Proprietăţi

 Principalele proprietăţi oferite de ArrayList sunt:

 Capacity: setează sau returnează numărul de elemente pe care colecţia le poate stoca;

 Count: redă numărul de elemente ale colecţiei;

 Item (index As integer): returnează elementul colecţiei specificat prin index. 12

Limbaje de programare - Sinziana RINDASU


Clasa ArrayList
Principalele metode oferite de ArrayList sunt:

 Add(valoare As Object): adaugă in colecţie elementul specificat prin parametrul valoare şi returnează
indexul alocat acestuia;

 Clear(): goleşte colecţia. Count devine 0, iar Capacity nu se modifică;

 Contains(valoare As Object): returnează True dacă elementul precizat prin valoare se află in colecție;

 Remove(obiect as object): elimină din colecție elementul precizat prin valoarea sa;

 RemoveAt(obiect as object): elimină din colecție elementul precizat prin index;

 Sort(): ordonează crescător elementele colecției;

 TrimToSize(): setează capacitatea colecției la numărul de elemente ale acesteia.

13

Limbaje de programare - Sinziana RINDASU


Aplicație practică
Implementați în VB.NET clasa Salariat, cu următoarele atribute și reguli de validare:
CNP – numeric, 13 caractere
Nume – maxim 25 de caractere
Prenume – intre 3 si 30 de caractere
DatăAngajare – nu poate sa fie in viitor
TipContract  Full-time, part-time, project-based
NrPersoaneIntretinere >=0
Salariu >=3000

La nivelul unui formular din cadrul aceleiași aplicații VB.NET:


Declarați o colecție care permite gestionarea unui set de obiecte de tip Salariat, obiectele vor fi
stocate după apăsarea unui buton.
Definiți codul asociat evenimentului Click pentru două butoane cu următoarele etichete:
1. Valoarea maximă a salariului pentru un tip de contract specificat la execuție
2. Numărul salariaților angajați în iunie 2020

Limbaje de programare - Sinziana RINDASU 14


Aplicație practică – model test
Implementați în VB.NET clasa Salariat, cu următoarele atribute și reguli de validare:
CNP – numeric, 13 caractere
Nume – maxim 25 de caractere
Prenume – intre 3 si 30 de caractere
DatăAngajare – nu poate sa fie in viitor
TipContract  Full-time, part-time, project-based
NrPersoaneIntretinere >=0
Salariu >=3000

Metoda SituatieFinanciară (Salariu/NrPersoaneIntretinere). Dacă rezultatul returnat după


aplicarea formulei de mai sus este <1000 se va returna “insuficient”, dacă este între 1000 și 1500 se
va returna „bine”, iar dacă este mai mare de 1500 se va returna “foarte bine”.

Se cere și realizarea unui formular prin care să se adauge obiectele (primul buton) într-o colecție
definită în prealabil și prin intermediul celui de-al doilea buton se va parcurge colecția. După
apăsarea primului buton se va afișa rezultatul. Exemplu: “Situație Financiară: 1254 Bine”

Limbaje de programare - Sinziana RINDASU 15

S-ar putea să vă placă și