Sunteți pe pagina 1din 2

VECTORI

Fișa nr. 1

I. Tipuri simple vs. Tipuri derivate (structurate)


Tipurile de date utilizate până acum sunt tipuri simple. Pe baza tipurilor simple de
date se pot construi tipuri derivate: tablouri, structuri, fișiere

II. Tablouri
Un tablou (array) este un ansamblu de variabile de acelaşi tip la care se face
referire folosindu-se un acelaşi nume.
Un anume element dintr-un tablou este indicat prin intermediul unui indice
(index).
În C, toate tablourile sunt alcătuite din locaţii de memorie învecinate. Adresa de
memorie cea mai mică corespunde primului element, iar adresa cea mai mare
corespunde ultimului element.
Tablourile pot avea de la una la mai multe dimensiuni.
Tabloul cel mai des folosit în C este şirul – string, care este un tablou de caractere
care se încheie cu un zero. Acest mod de a privi şirurile conferă limbajului C mai multă
putere şi eficienţă faţă de alte limbaje.

III. Tablouri unidimensionale – Definiție și Declarare


În C, tablourile unidimensionale sunt alcătuite dintr-un grup de elemente de acelaşi
tip (numit tip de bază) şi referite printr-un nume comun.
Variabilele de tip tablou se definesc astfel:
tip_de_baza nume_var[dimensiune];

unde tip_de_baza reprezintă tipul tabloului, adică al fiecărui element inclus în tablou, iar
dimensiune defineşte numărul de elemente conţinute în tablou.
Un element al tabloului este accesat folosind ca index poziţia elementului, astfel
tabloul_meu[6] va referi al şaptelea element al tabloului tabloul_meu.
OBSERVAȚII:
1. În C, "numerotarea" elementelor tablourilor începe cu poziţia 0.
Astfel, dacă avem definiţia:
int V[100];
primul element al tabloului va fi V[0], iar ultimul V[99].
2. Tablourile sunt stocate în memorie în locaţii consecutive, un tablou ocupând o zonă
contiguă de memorie, cu primul element al tabloului aflat la adresa mai mica.
3. O problemă legată de tablouri este că în C nu se face nici o verificare legată de
"marginile" tabloului, astfel că se pot accesa greşit elemente din afara tabloului.
De exemplu, pentru definţia:
int V[100];
dacă accesăm V[105] nu se va semnala nicio eroare, returnându-se
valoarea de la o locaţie de memorie aflată la o distanţă de 5 locaţii faţă de
sfârşitul tabloului, fapt ce va duce la comportări "bizare" ale programului.
Aceeaşi situaţe, dar faţă de începutul tabloului, se întâmplă la accesarea
V[-5].
4. Este datoria programatorului să evite astfel de situații !
EXEMPLU:
char s[100];
int x[25];
5. Primul element dintr-un vector va avea indexul 0, iar ultimul element stocat va avea
indexul dim-1
6. Dimensiunile tabloului trebuie să fie expresii constante
7. Compilatorul nu face verificări pentru depăşirea dimensiunii tabloului
8. Pentru alocarea unui tablou sunt necesari
nr_elemente*sizeof(tip) octeţi,
unde tip este tipul de bază al tabloului
9. Atribuirea tablourilor NU poate fi făcută direct
EXEMPLU :
int x[10],y[10];
x = y; // operaţie ilegală

IV. Inițializarea tablourilor


Declaraţia unui tablou poate fi urmată de o secvenţă de iniţializare formată din una
sau mai multe perechi de acolade între care se pun valori ale tipului de bază, separate
prin virgulă.
Pentru tablourile unidimensionale este permisă omiterea numărului de elemente.
El va fi egal cu numărul de valori folosite la iniţializare.
În cazul în care la iniţializarea tablourilor de tip numeric sunt folosite mai puţine
elemente decât dimensiunea tabloului, restul elementelor sunt iniţializate cu 0.
EXEMPLE :
float x[5]={1.2,3.4e3,-2,90.7e-8,-88.5e-7};
char sir[100]=”test tablou”;
short y[]={0,1,2,3,4}; // y are 5 elemente
char s[]={”t”,”e”,”s”,”t”,”0”}; // s=”test”;
int v[5]={1,2}; // v=(1, 2, 0, 0, 0)

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