10
1. Declararea tablourilor 2. Tablouri unidimensionale

Tipul tablou

Embed Size (px)

DESCRIPTION

Tipul tablou in C++

Citation preview

Page 1: Tipul tablou

1. Declararea tablourilor

2. Tablouri unidimensionale

Page 2: Tipul tablou

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.).

Page 3: Tipul tablou

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

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

vect

Page 4: Tipul tablou

2)

double p, q, tab[10];

// declararea variabilelor simple p, q şi a vectorului tab, de maximum 10 elemente, tip double

3)

#define MAX 10

char tabc[MAX]; // declararea tabloului tabc de maxim MAX ( 10 ) elemente de tip char

// (caracter).

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 ).

p 0.0 q 0.0 0.0

0

tab 0.0

1

0.0

2

0.0

3

0.0

4

0.0

5

0.0

6

0.0

7

0.0

8

0.0

9

‘a’

0

tabc ‘A’

1

‘ ‘

2

‘?’

3

‘:’

4

‘=‘

5

‘1’

6

‘B’

7

‘c’

8

‘x’

9

Page 5: Tipul tablou

0.0 0.0 0.0

0.0 0.0 0.0

0

1

0 2 1

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.

Page 6: Tipul tablou

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

vector

1 2 3 4 5

100

0

vector 101

1

102

2

103

3

104

4

105

5

Page 7: Tipul tablou

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};

100

0

vector 101

1

102

2

103

3

104

4

105

5

Page 8: Tipul tablou

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 };

Adresa elementului de indice i dintr-un tablou unidimensional poate fi calculată astfel:

adresa_elementului_i = adresa_de_bază + i lungime_element

‘A’

0

tab ‘C’

1

‘D’

2

‘C’

3

1.2

0

data 2.3

1

3.4

2

?

3

?

4

Page 9: Tipul tablou

Exerciţii 1) Citirea elementelor unui vector:

double a[5];

int i;

for (i=0; i<5; i++)

{ cout<<”a["<<i<<”]=”; //afişarea unui mesaj prealabil

//citirii fiecărui element

cin>>a[i]; //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]<<’ ’;

Page 10: Tipul tablou

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.