Tipul tablou

Page 1

1.

2.

Declararea tablourilor Tablouri unidimensionale


Definiţie: Numim tablou o colecţie (grup, mulţime ordonată) de date, de acelaşi tip, situate într-o zonă de memorie continuă (elementele tabloului se află la adrese succesive). Proprietăţile tablourilor: 1o Tablourile sunt variabile compuse (structurate), deoarece grupează mai multe elemente. 2o Variabilele tablou au nume, iar tipul tabloului este dat de tipul elementelor sale. 3o 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, tridimensionale etc.).


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. Exemple de declarare de tablouri: 1) int vect[20]; // declararea tabloului vect, de maximum 20 de elemente, de tipul int. // Se rezervă 20*sizeof(int)=20 * 2 = 40 octeţi

vect

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0


2) double p, q, tab[10]; // declararea variabilelor simple p, q şi a vectorului tab, de maximum 10 elemente, tip double

p

0.0

q

0.0

tab

0

1

2

3

4

5

6

7

8

9

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

3) #define MAX 10 char tabc[MAX];

tabc

// declararea tabloului tabc de maxim MAX ( 10 ) elemente de tip char // (caracter).

0

1

2

3

4

5

6

7

8

9

‘a’

‘A’

‘ ‘

‘?’

‘:’

‘=‘

‘1’

‘B’

‘c’

‘x’

4) double matrice[2][3];

// declararea tabloului bidimensional matrice cu maxim 2 linii şi // maxim 3 coloane cu elemente de tip double ( numere reale în // dublă precizie ).


0

1

2

0

0.0

0.0

0.0

1

0.0

0.0

0.0

Definiţie: Tablourile unidimensionale sunt tablouri cu un singur indice (vectori). Dacă tabloul conţine dim_1 elemente, indicii elementelor au valori întregi din intervalul [ 0, dim_1 - 1 ]. De reţinut: a) 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.


b) 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ă. c) Un element al unui tablou poate fi utilizat ca orice altă variabilă (în exemplul următor, atribuirea de valori elementelor tabloului vector). d) Se pot efectua operaţii asupra fiecărui element al tabloului, nu asupra întregului tablou.

Exemple de utilizare a tablourilor uni dimensionale: Exemplul 1 // Declararea tabloului vector. int vector[6]; // Initializarea elementelor tabloului vector[0]=100; vector[1]=101; vector[2]=102; vector[3]=103; vector[4]=104; vector[5]=105;

0

1

2

3

4

5

0

1

2

3

4

5

100

101

102

103

104

105

vector

vector


Exemplul 2 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]=aplha[i]+beta[i]; //permis gama=alpha+beta; //nepermis

Variabilele tablou pot fi iniţializate în momentul declarării: declaraţie_tablou=listă_valori; Valorile din lista de valori sunt separate prin virgulă, iar întreaga listă este inclusă între acolade: Exemplul 3 int vector[6]={100,101,102,103,104,105};

vector

0

1

2

3

4

5

100

101

102

103

104

105


Exemplul 4 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. Exemplul 5 char tab[]={ ’A’, ’C’, ’D’, ’C’}; Exemplul 6 float data[5]={ 1.2, 2.3, 3.4 };

tab

data

0

1

2

3

‘A’

‘C’

‘D’

‘C’

0

1

2

3

4

1.2

2.3

3.4

?

?

Adresa elementului de indice i dintr-un tablou unidimensional poate fi calculată astfel: adresa_elementului_i = adresa_de_bază + i lungime_element


1) Citirea elementelor unui vector:

Exerciţii

double a[5]; int i; for (i=0; i<5; i++) { cout<<”a["<<i<<”]=”; cin>>a[i];

//afişarea unui mesaj prealabil //citirii fiecărui element //citirea valorii elementului de indice i

}

//sau: double a[20]; int i, n; cout<<”Dim. Max. =”; cin>>n; for (i=0; i<n; i++) { cout<<”a[“<<i<<”]=”; cin>>a[i]; }

2) Afişarea elementelor unui vector: cout<<”Vectorul introdus este:\n”; for (i=0; i<n i++) cout<<a[i]<<’ ’;


3) Afişarea elementelor unui vector în ordine inversă: cout<<”Elementele vectorului în ordine inversă:\n”; for (i=n-1; i>=0 i--) cout<<a[i]<<’ ’;

4) Vectorul sumă (c) a vectorilor a şi b, cu acelaşi număr de elemente: for (i=0; i<n i++) c[i]=a[i]+b[i];

5) Vectorul diferenţă (c) a vectorilor a şi b, cu acelaşi număr de elemente: for (i=0; i<n i++) c[i]=a[i] - b[i]; TEMĂ: Scrieţi în Borland C câte un program pentru fiecare din exerciţiile de mai sus, compilaţile şi executaţile.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.