39 1 3MB
Tablouri
Unitatea de învăţare nr. 10 TABLOURI
Cuprins
Pagina
Obiectivele unităţii de învăţare nr. 10
2
10
Tablouri
2
10.1
Declararea tablourilor
2
10.2. Tablouri unidimensionale
3
10.3
Operații cu vectori
4
10.4
Exemple de prelucrări ale datelor organizate în vectori
5
Test de autoevaluare
6
Lucrare de verificare – unitatea de învăţare nr. 10
6
Răspunsuri şi comentarii la întrebările din testele de autoevaluare
8
Recapitulare
9
Bibliografie – unitatea de învăţare nr. 10
9
1
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri
OBIECTIVELE unităţii de învăţare nr. 10 Principalele obiective ale Unităţii de învăţare nr. 10 sunt:
Înţelegerea organizării datelor în tablouri Familiarizarea cu tablourile unidimensionale Modelarea datelor de prelucrat pe principiul utilizării tablourilor Implementarea cu succes a problemelor care utilizează vectori
10. TABLOURI Un tablou este o colecţie de date, de acelaşi tip, situate într-o zonă de memorie continuă (elementele tabloului se află la adrese succesive). Tablourile sunt variabile compuse (structurate), deoarece grupează mai multe elemente. Variabilele tablou au nume, iar tipul tabloului este dat de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului şi indicii (numere întregi) care reprezintă poziţia elementului în cadrul tabloului. În funcţie de numărul indicilor utilizaţi pentru a referi elementele tabloului, putem întâlni tablouri unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).
10.1. DECLARAREA TABLOURILOR Ca şi variabilele simple, variabilele tablou trebuie declarate înainte de utilizare. Modul de declarare: tip nume_tablou [dim_1][dim_2]…[dim_n] ;
unde:
tip reprezintă tipul elementelor tabloului; dim_1,dim_2,...,dim_n sunt numere întregi sau expresii constante întregi (a căror valoare este evaluată la compilare) care reprezintă limitele superioare ale indicilor tabloului.
2
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri De exemplu, în secvenţa: int k[50] ; char c[8] ; float a[100] ; se declară tablourile c , k şi a cu, respectiv, 50 de elemente întregi, 8 elemente de tip caracter şi 100 elemente de tip float.
10.2. TABLOURI UNIDIMENSIONALE Tablourile unidimensionale sunt tablouri cu un singur indice (vectori). Dacă tabloul conţine n elemente, indicii elementelor au valori întregi din intervalul [0, n-1]. La întâlnirea declaraţiei unei variabile tablou, compilatorul alocă o zonă de memorie continuă (dată de produsul dintre dimensiunea maximă şi numărul de octeţi corespunzător tipului tabloului) pentru păstrarea valorilor elementelor sale. Numele tabloului poate fi utilizat în diferite expresii şi valoarea lui este chiar adresa de început a zonei de memorie care i-a fost alocată. Un element al unui tablou poate fi utilizat ca orice altă variabilă (în exemplul următor, atribuirea de valori elementelor tabloului vector). Se pot efectua operaţii asupra fiecărui element al tabloului, nu asupra întregului tablou. Exemplu: // Declararea tabloului vector int vector[6]; // Iniţializarea elementelor tabloului vector[0]=100; vector[1]=101; vector[2]=102; vector[3]=103; vector[4]=104; vector[5]=105;
vector 100
vector[0]
101
vector[1]
102
vector[2]
103
vector[3]
104
vector[4]
105
vector[5]
Exemplu: double alpha[5], beta[5], gama[5]; int i=2; alpha[2*i-1] = 5.78; alpha[0]=2*beta[i]+3.5; gama[i]=alpha[i]+beta[i]; //permis gama=alpha+beta; //nepermis Variabilele tablou pot fi iniţializate în momentul declarării: declaraţie_tablou=listă_valori; 3
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Tablouri Valorile din lista de valori sunt separate prin virgulă, iar întreaga listă este inclusă între acolade: Exemple: 1. int vector[6]={100,101,102,103,104,105}; vector
100
101
102
103
104
[0]
105
[5]
2. double x=9.8; double a[5]={1.2, 3.5, x, x-1, 7.5}; La declararea unui vector cu iniţializarea elementelor sale, numărul maxim de elemente ale tabloului poate fi omis, caz în care compilatorul determină automat mărimea tabloului, în funcţie de numărul elementelor iniţializate. Exemplu: char tab[ ]={ ’A’, ’C’, ’D’, ’C’}; tab
’A’
[0]
’B’ 1
’C’
’D’
[3]
float data[5]={ 1.2, 2.3, 3.4 }; data
1.2
2.3
3.4
?
?
[0] [4] Adresa elementului de indice i dintr-un tablou unidimensional poate fi calculată astfel: adresa_elementului_i = adresa_de_bază + i lungime_element
10.3. OPERAȚII CU VECTORI a) Citirea elementelor unui vector: double a[100]; int n,i; coutn; for (i=0; i