Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Tipuri de structuri de date - Tablouri

c



+ Font mai mare | - Font mai mic



Tipuri de structuri de date

Tablouri

Tabloul de memorie este o structura de date interna formata dintr-o multime ordonata de date omogene, in care fiecare element are un succesor si un predecesor, exceptand primul element, care nu are decat succesor, si ultimul element, care nu are decat predecesor.



Tabloul de memorie se va identifica dupa un nume, iar fiecare element al sau dupa numele tabloului si numarul de ordine.

Tabloul este o structura de date statica deoarece in timpul prelucrarii nu se permite modificarea lungimii structurii, iar prin adaugare de noi elemente se poate iesi din spatiul de memorare alocat.

Prin urmare, tabloul este o zona continua de memorie interna, careia i se atribuie un nume si care permite memorarea mai multor date de acelasi tip. Aceste date pot fi tratate ca un tot unitar sau ca date elementare independente.

Identificarea elementelor structurii se realizeaza printr-un ansamblu de indici ce are la baza metoda de memorare a elementelor tabloului, in ordine, unul dupa altul, intr-o zona continua de memorie, in locatii cu aceiasi dimensiune. Numarul de indici folosit pentru identificarea elementelor determina dimensiunea tabloului astfel:

Pentru k=1 structura este un tablou unidimensional numit si vector

Pentru k=2 structura este un tablou bidimensional numit si matrice

La definirea unui tablou de memorie, trebuie specificate: numele tabloului de memorie, dimensiunea tabloului de memorie si numarul de elemente pe fiecare dimensiune.

Implementarea unui tabel de memorie se face:

Din punct de vedere logic: tabloul este o structura de date omogena, liniara, in care fiecare element, cu exceptia ultimului, are un succesor unic, localizarea unui element facandu-se cu ajutorul indicilor.

Din punct de vedere fizic: tabloului de memorie i se aloca o zona continua de memorie, de dimensiune fixa, care este impartita in locatii de aceiasi dimensiune. In fiecare locatie se memoreaza un element al tabloului. Dimensiunea unei locatii este data de tipul de data memorata. Localizarea unui element al tabloului se face prin calcularea adresei elementului fata de un element de referinta care este adresa tabloului, adica adresa primului element.

Tablouri unidimensionale

Aspecte teoretice

Definitie: Un tablou unidimensional este o colectie de date de acelasi tip, aranjate contiguu in memorie.

Crearea unei structuri de date de tip tablou presupune:

declararea tabloului de memorie: pentru a i se aloca spatiul de memorie, trebuind furnizate urmatoarele informatii: numele tabloului (pentru identificare), tipul elementelor tabloului, numarul de elemente ale tabloului (pentru a cunoaste spatiul de memorie alocat);

atribuirea de valori elementelor tabloului, care se poate face prin mai multe metode: prin initializarea tabloului (la declararea sa), prin introducerea valorilor de la tastatura, prin preluarea dintr-o alta structura de date, prin generarea valorilor folosind un algoritm de calcul.

Un tablou unidimensional se declara dupa structura:

tip_data nume[nr_elemente];

unde:

tip_data : precizeaza tipul elementelor vectorului

nume : identificatorul vectorului

nr_elemente : constanta intreaga ce semnifica numarul de elemente ale vectorului

Observatii:

- precizarea valorii nr_elemente se poate face fie printr-o constanta literala, fie printr-o constanta simbolica.

la declararea unui vector se pot atribui valori initiale elementelor, prin instructiunea:

tip_data nume[nr_elemente] = ;

in cazul declararii unui vector initializat se poate omite numarul de elemente al vectorului, daca se initializeaza toate elementele; daca lista de valori contine mai putine valori decat elementele vectorului, restul elementelor vor fi initializate cu valoarea 0.

initializarea unui vector de caractere se poate face fie prin atribuirea unei constante de tip caracter fiecarui element, fie prin atribuirea unei constante de tip sir de caractere; caracterul null(caracterul cu codul ASCII '0') este folosit ca un terminator al sirului de caractere si este utilizat pentru a usura prelucrarea vectorilor cu siruri de caractere.

Exemple de declaratii:

int b[35]; float c[4]; char c[5];

const int DIM = 10; int a[DIM];

float c[4] = ;

float c[] = ;



char[5] = ; char d[5] = 'abcd';

char[] = ; char d[] = 'abcd';

Referirea la un element al vectorului, in vederea prelucrarii, se face prin constructia:

nume [indice]

unde:

nume : este numele vectorului;

indice : este numarul de ordine al elementului in cadrul vectorului

Perechea de operatori [ ] : se foloseste pentru a calcula adresa elementului fata de elementul de referinta care este adresa vectorului; prioritatea este maxima.

Tablouri bidimensionale

Aspecte teoretice

Definitie: Un tablou bidimensional este o colectie de date de acelasi tip, aranjate contiguu in memorie.

Un tablou bidimensional este un tabel cu elemente de acelasi tip, dispuse pe linii si coloane, o matrice.

Fiecare element al matricei se afla pe o anumita linie si pe o anumita coloana. Pozitia unui element pe linie se mai numeste indice de linie, iar pozitia elementului pe coloana se mai numeste si indice de coloana.

Daca notam variabila matrice cu a, atunci elementul de pe linia i si coloana j in matricea a se noteaza a[i][j].

Un tablou bidimensional se declara dupa structura:

tip_data nume_mat[max_lin][max_col]

unde:

nume_mat = identificatorul (numele) matricei

tip_data = tipul elementelor matricei

max_lin, max_col = numarul maxim de linii, respectiv de coloane

Observatii

daca declaram o matrice a cu 25 linii si 30 coloane nu inseamna ca trebuie sa folosim toate elementele (750 elemente); vom defini doua variabile, de obicei n si m, care sa reprezinte numarul real de linii respectiv coloane.

daca portiunea efectiv folosita din matrice are m linii si n coloane, nu este obligatoriu ca aceasta sa inceapa cu linia 0 si coloana 0; putem numerota liniile electiv folosite de la 1 la m si coloanele de la 1 la n.

Exemplu de declaratie

float a[30][25]

unde:

a = numele variabilei de memorie in care memoram matricea

tipul elementelor matricei este float

numarul maxim de linii este 30 iar cel de coloane de 25.

Referirea la un element al matricei, in vederea prelucrarii, se face prin constructia:

nume [indice_linie][indice_coloana

unde:

nume: este numele variabilei de memorie unde se gaseste matricea;

indice_linie: este numarul de ordine al liniei in cadrul matricei

indice_coloana: este numarul de ordine al coloanei in cadrul matricei

Exemplu





Politica de confidentialitate | Termeni si conditii de utilizare



});

DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2369
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved