120 likes | 483 Views
TABLOURI. Declararea tablourilor Tablouri unidimensionale. 1. Declararea tablourilor. 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 ).
E N D
TABLOURI Declararea tablourilor Tablouri unidimensionale
1. Declarareatablourilor Definiţie: Numimtablou o colecţie (grup, mulţimeordonată) de date, de acelaşi tip, situate într-o zonă de memoriecontinuă (elementeletabloului se află la adrese succesive). Proprietăţile tablourilor: 1oTablourilesuntvariabilecompuse(structurate), deoarecegrupeazămaimulteelemente. 2oVariabileletablou au nume, iartipultablouluiestedat de tipulelementelor sale. 3o Elementeletabloului pot fireferiteprinnumeletablouluişiindicii(numereîntregi) care reprezintăpoziţiaelementuluiîncadrultabloului. Înfuncţie de numărulindicilorutilizaţipentru a referielementeletabloului, putemîntâlnitablouriunidimensionale(vectorii) saumultidimensionale (matricilesunttablouribidimensionale, tridimensionale etc.).
Ca şivariabilele simple, variabileletabloutrebuiedeclarateînainte de utilizare. Modul de declarare: tip nume_tablou[dim_1][dim_2]…[dim_n]; , unde:tipreprezintătipulelementelortabloului; dim_1,dim_2,...,dim_nsuntnumereîntregisauexpresiiconstanteîntregi (a cărorvaloareesteevaluată la compilare) care reprezintălimitelesuperioare ale indicilortabloului. Exemple de declarare de tablouri: 1) intvect[20]; // declarareatablouluivect, de maximum 20 de elemente, de tipulint. // Se rezervă 20*sizeof(int)=20 * 2 = 40 octeţi 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 vect 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p q 0.0 0.0 5 1 4 0 2 9 6 4 8 3 6 7 5 3 2 1 0 9 8 7 tab 2) double p, q, tab[10]; // declarareavariabilelor simple p, q şi a vectorului tab, de maximum 10 elemente, tip double 3) #define MAX 10 char tabc[MAX]; // declarareatablouluitabc de maxim MAX ( 10 ) elemente de tip char // (caracter). 4) double matrice[2][3];// declarareatablouluibidimensionalmatrice cu maxim 2 liniişi // maxim 3 coloane cu elemente de tip double ( numererealeîn // dublăprecizie ). 0.0 ‘A’ 0.0 ‘ ‘ ‘:’ ‘x’ ‘?’ 0.0 0.0 ‘B’ ‘=‘ 0.0 ‘1’ 0.0 0.0 ‘c’ 0.0 ‘a’ 0.0 0.0 tabc
2. Tablouriunidimensionale 0 1 2 0 0.0 0.0 0.0 1 0.0 0.0 0.0 Definiţie: • Tablourileunidimensionalesunttablouri cu un singurindice(vectori). Dacătabloulconţinedim_1elemente, indiciielementelor au valoriîntregi din intervalul [ 0, dim_1 - 1 ]. • De reţinut: • a) La întâlnireadeclaraţieiuneivariabiletablou, compilatorulalocă o zonă de memoriecontinuă (dată de produsuldintredimensiuneamaximăşinumărul de octeţicorespunzătortipuluitabloului) pentrupăstrareavalorilorelementelor sale.
5 1 0 3 5 4 2 2 1 4 0 3 b) Numeletablouluipoatefiutilizatîndiferiteexpresiişivaloarealuiestechiaradresa de început a zonei de memorie care i-a fostalocată. c) Un element al unuitabloupoatefiutilizat ca oricealtăvariabilă (înexemplulurmător, atribuirea de valorielementelortabloului vector). d) Se pot efectuaoperaţiiasuprafiecărui element al tabloului, nu asupraîntreguluitablou. Exemple de utilizare a tablourilorunidimensionale: Exemplul 1 // Declarareatablouluivector. int vector[6]; // Initializareaelementelortabloului vector[0]=100; vector[1]=101; vector[2]=102; vector[3]=103; vector[4]=104; vector[5]=105; 102 105 103 100 104 101 vector vector
0 1 2 3 4 5 Exemplul 2 double alpha[5], beta[5], gama[5]; inti=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 Variabileletablou pot fiiniţializateînmomentuldeclarării: declaraţie_tablou=listă_valori; Valorile din lista de valorisunt separate prinvirgulă, iarîntreagalistăesteinclusăîntreacolade: Exemplul 3 int vector[6]={100,101,102,103,104,105}; 100 101 102 103 104 105 vector
4 3 0 2 1 1 0 2 3 Exemplul 4 double x=9.8; double a[5]={1.2, 3.5, x, x-1, 7.5}; La declarareaunui vector cu iniţializareaelementelor sale, numărul maxim de elemente ale tablouluipoatefiomis, cazîn care compilatoruldetermină automat mărimeatabloului, înfuncţie de numărulelementeloriniţializate. Exemplul 5 char tab[]={ ’A’, ’C’, ’D’, ’C’}; Exemplul 6 float data[5]={ 1.2, 2.3, 3.4 }; Adresaelementului de indiceidintr-un tablouunidimensionalpoateficalculatăastfel: adresa_elementului_i = adresa_de_bază + ilungime_element 1.2 ‘C’ ‘A’ ? ? ‘C’ 2.3 ‘D’ 3.4 tab data
Exerciţii 1) Citireaelementelorunui vector: double a[5]; inti; for (i=0; i<5; i++) { cout<<”a["<<i<<”]=”;//afişarea unuimesajprealabil //citiriifiecărui element cin>>a[i];//citireavaloriielementului de indicei } //sau: double a[20]; inti, n; cout<<”Dim. Max. =”; cin>>n; for (i=0; i<n; i++) { cout<<”a[“<<i<<”]=”; cin>>a[i]; } 2)Afişareaelementelorunui vector: cout<<”Vectorulintroduseste:\n”; for (i=0; i<n i++) cout<<a[i]<<’ ’;
3) Afişareaelementelorunui vector în ordine inversă: cout<<”Elementelevectoruluiînordineinversă:\n”; for (i=n-1; i>=0 i--) cout<<a[i]<<’ ’; 4) Vectorulsumă (c) a vectorilor a şi b, cu acelaşinumăr de elemente: for (i=0; i<n i++) c[i]=a[i]+b[i]; 5) Vectoruldiferenţă (c) a vectorilor a şi b, cu acelaşinumă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.