Diferență între revizuiri ale paginii „PC Laborator 7”

De la WikiLabs
Jump to navigationJump to search
Linia 34: Linia 34:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
<div class="regula">'''<font color="red"> Observatie:</font>''' ''Vectori sunt denumiți statici (static arrays) deoarece numărul de elemente şi spaţiul de memorie ocupat este constant în timpul compilării. (numar_maxim_elemente trebuie să fie o constantă).'' </div>  
+
<div class="regula">'''<font color="red"> Observatie:</font>''' ''Vectori sunt denumiți statici (static arrays) deoarece numărul de elemente şi spaţiul de memorie ocupat este constant în timpul compilării. (număr_maxim_elemente trebuie să fie o constantă).'' </div>  
  
 
<syntaxhighlight lang="C">
 
<syntaxhighlight lang="C">
#define vector_max 100
+
#define număr_maxim_elemente 100
 
...
 
...
unsigned long nume_vector[vector_max]
+
unsigned long nume_vector[număr_maxim_elemente]
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Versiunea de la data 25 septembrie 2015 18:43

Obiectiv

La încheierea acestui laborator studentul va fi capabil:

  • să înteleagă modul de utilizare a tablourilor de memorie
  • să declare şi să iniţializeze vectori/matrici
  • să implementeze algoritmi simpli în lucru cu vectori pentru rezolvarea diverselor probleme


Tablouri

Tablou de memorie este o colecţie de date stocate în locaţii succesive din memorie.
Toate elementele acestuia au acelaşi tip de dată numit de obicei tip de bază.

Tablourile pot fi :

  • vectori (tablouri unidimensionale): șiruri de valori
  • matrici (tablouri bidimensionale): catalogul cu note
  • multidimensionale: pixeli unui imagini în timp


Vectori

Un vector reprezintă o colecție de date de acelaşi tip reprezentate sub forma unei linii sau coloane.

Declarația unei variabile de tip vector

<tip_elemente> <nume_vector>[<număr_maxim_elemente>];

Exemplul 1

int v[10]; /* astfel se alocă 10 locații de memorie consecutive de tip int, ce vor corespunde valorilor vectorului v */
float nume_vector[100]; /* vector de tip float cu 100 elemente */
Observatie: Vectori sunt denumiți statici (static arrays) deoarece numărul de elemente şi spaţiul de memorie ocupat este constant în timpul compilării. (număr_maxim_elemente trebuie să fie o constantă).
#define număr_maxim_elemente 100
...
unsigned long nume_vector[număr_maxim_elemente]
Observatie: Numărătoarea elementelor începe de la 0.
 int v[10]; // primul element va fi v[0],iar ultimul element v[9]

Vectorii se pot iniţializa cu valori constante, în acest caz, compilatorul care va determina dimensiunea vectorului din numărul elementelor din listă.

Exemplul 2

int v[10] = {1, 5, 6, 8, 6, 10, 22, 32, 34, 13};      // Toate elemente sunt initializate
float nume_vector[] = {1.2, 2.2, 6.1, -9.3};          // Compilatorul determina dimensiunea vectorului=4
int vect[1000] = {0, 1, 2, 3, 5};                     // Sunt initializate doar primele 5 elemente


Parcurgerea vectorilor

Cum deja am discutat prima pozitie dintr-un vector este v[0]. Presupunem un vector are N elemente, constatăm că ultimul element este v[N-1]. A trece prin elementele vectorului presupune parcurgerea tuturor celor N elemente , de la V[0] la V[N-1]. Acest lucru este posibil prin:

for(i=0; i < N; i++)
// instrucțiune v[i];
Observatie: Se poate ingnora poziția zero,însă daca avem un vector de 100 elemente declararea uzuală ar fi int v[100];, gândim valorile de la v[0] la v[99]. Daca folosim numărarea de la 1, vom avea doar 99 de locații de memorie disponibile pentru cele 100 de valori. În acest caz declararea corecta ar fi int v[101];.

Matrici