Cls 9 C++ Intensiv (NR 2) - Partea A V-A Vectori Si Matrici [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

C apito lul V: T a b lo u ri V . 1. V ec to r i (t a b l o u ri u n i di m e n si o n a l e ) V . 1 .1 . N o Ń i u n i i n t r o d uc t i v e

NoŃiunea de vector

În practică, apare deseori necesitatea de a prelucra un set de valori de acelaşi tip, aşezate într-o anumită ordine. O astfel de structură se numeşte şir, iar valorile respective se numesc elementele şirului. De exemplu, cu mediile generale ale elevilor unei clase putem alcătui un şir de numere reale. De la început trebuie observat faptul că ar fi total ineficient să declarăm câte o variabilă pentru fiecare element al şirului, deoarece numărul acestor elemente poate fi foarte mare. De aceea, limbajul Pascal oferă posibilitatea de a memora toate elementele unui şir într-o singură variabilă, în care elementele sunt dispuse într-o anumită ordine şi fiecare element ocupă o anumită poziŃie bine determinată. O astfel de variabilă se numeşte tablou unidimensional sau vector.

Exemplu: Considerăm şirul de numere întregi

-3, 6, -5, 14.

poziŃiile (indicii) elementelor în cadrul vectorului 0

1

2

-3

6

-5

3 14

elementele vectorului Aşa cum am spus, putem memora toate elementele şirului într-o variabilă numită vector, pe care o notăm cu v. Elementele şirului vor ocupa poziŃii succesive în vectorul v, începând cu poziŃia 0 (0,1,2,3,...). Pentru a referi un anumit element din vector, trebuie să scriem numele variabilei vector urmat de poziŃia elementului, cuprinsă între paranteze pătrate. Astfel, pentru vectorul ilustrat mai sus, poziŃiile elementelor sunt 0,1,2,3, şi: 

Elementul de pe poziŃia 0 în vector este primul element al şirului, adică -3, şi se notează v[0]; 274

 

Elementul de pe poziŃia 1 în vector este al doilea element al şirului, deci v[1]=6. Analog, v[2]=-5, v[3]=14.

Pe caz general, dacă variabila vector este v, atunci prin v[i] înŃelegem elementul de pe poziŃia i în vector.

Aici trebuie observat un aspect foarte important. PoziŃia (indicele) unui element NU arată al câtelea este elementul respectiv în vector, deoarece numerotarea poziŃiilor începe de la 0. Astfel, în exemplul anterior, elementul v[3], de pe poziŃia 3 (sau de indice 3), nu este al treilea element al vectorului, ci al patrulea, înaintea sa aflându-se trei elemente, şi anume v[0], v[1] şi v[2]. Majoritatea lucrărilor de specialitate asimilează complet noŃiunea de poziŃie cu cea de indice, chiar dacă acest fapt contravine sensului lingvistic al cuvântului ”poziŃie”. Dacă vrem să păstrăm concordanŃa avem o soluŃie foarte simplă: nu folosim elementul v[0] ! Dacă am utiliza elementele doar începând cu v[1], atunci v[1] ar fi primul element, v[2] ar fi al doilea, ş.a.m.d., iar poziŃia fiecărui element ar indica într-adevăr al câtelea este el în vector. În capitolul de faŃă vom adopta această soluŃie în unele aplicaŃii, acolo unde ne va ajuta să urmărim mai uşor parcurgerea şi prelucrarea vectorului. PoziŃia unui element se mai numeşte şi indicele sau rangul elementului, iar elementele se mai numesc şi componente ale vectorului. Declararea unui vector

Un vector trebuie declarat, la fel ca orice variabilă, în secŃiunea de declaraŃii a programului. Orice vector se caracterizează printr-un număr maxim de elemente. Acesta este o valoare constantă, reprezentând cel mai mare număr de elemente care s-ar putea memora în vectorul respectiv. Acesta trebuie precizat la declararea vectorului, între paranteze pătrate. PoziŃiile elementelor vor fi numerotate începând de la 0 până la ”numărul maxim de elemente minus 1” (de exemplu, dacă vrem să declarăm un vector cu maxim 20 de elemente, atunci poziŃiile elementelor vor fi 0,1,2,...,19). Pe lângă numărul maxim de elemente, în declararea unui vector mai trebuie să apară: identificatorul vectorului, (numele variabilei-vector) şi tipul elementelor.

Ex e mp l u :   

int v[20];

Am declarat un vector v cu maxim 20 de elemente numere întregi; identificatorul v reprezintă numele variabilei-vector; cuvântul cheie int desemnează tipul elementelor vectorului, adică elementele sunt numere întregi. Elementele vectorului sunt v[0],v[1],...,v[19], având indicii (poziŃiile) 0,1,2,...,19.

275

Cu aceste precizări, putem prezenta sintaxa generală a declarării unui vector:

Sintaxa:

[nr_max_de_elem];

unde: − → tipul de date al elementelor; − → numele (identificatorul) variabilei-vector; − → numărul maxim al elementelor vectorului. Tipul elementelor poate fi orice tip predefinit sau definit de utilizator. Numărul real (efectiv) de elemente

Aşa cum am spus, din declararea unui vector reiese numărul maxim de elemente ale acestuia, adică cel mai mare număr de elemente care s-ar putea memora în vector. În urma declarării unui vector, compilatorul rezervă pentru elementele sale o zonă fixă de memorie, care să poată memora numărul maxim de elemente. Astfel, dimensiunea zonei de memorie alocată este egală cu numărul maxim de elemente înmulŃit cu numărul de octeŃi necesari pentru un element. Spre exemplu, pentru vectorul declarat prin int v[25];

se alocă în memorie 50 de octeŃi, deoarece vectorul are maxim 25 de elemente şi fiecare element, fiind un număr întreg, ocupă 2 octeŃi. Să presupunem că am scris un program în care am declarat vectorul de mai sus, cu maxim 25 de elemente. Este oare necesar ca de fiecare dată când executăm programul să folosim toate cele 25 de elemente ? Fireşte că nu ! La fiecare execuŃie a programului, ar trebui să putem memora în vector un alt şir, alcătuit din alte elemente. Pentru aceasta, introducem o altă noŃiune: numărul real de elemente într-un vector. Numărul elementelor efectiv folosite într-un vector se numeşte numărul real (efectiv) de elemente şi se declară ca variabilă, deoarece diferă de la o execuŃie la alta. De obicei, pe acesta îl vom nota cu n. În plus, la fiecare execuŃie a programului, elementele pot primi alte valori. De aceea, în general, numărul real de elemente precum şi elementele vectorului se citesc de la tastatură.

Exemplu: Să considerăm un vector v cu maxim 25 de elemente numere întregi. • Aşa cum am arătat deja, vectorul trebuie declarat ca variabilă specificând numărul maxim de elemente: int v[25]; 276

• Dacă notăm cu n numărul real (efectiv) de elemente ale vectorului v, atunci: 

n se declară ca variabilă de tip întreg (int sau long), şi se va citi în corpul programului.



Elementele efectiv utilizate vor fi v[0],v[1],...,v[n-2], v[n-1], şi ocupă în cadrul vectorului poziŃiile 0,1,...,n-2,n-1. Cu alte cuvinte, dacă de exemplu am declarat un vector cu maxim 25 elemente numere întregi, atunci, pentru el se alocă în memorie 25 de "căsuŃe" (locaŃii) de memorie, deci vor fi definite elementele (v[0],v[1],...,v[24]), dar din el folosim efectiv numai primele n elemente, în speŃă (v[0],v[1],...,v[n-1]) (n≤ ≤ 25 ).

PoziŃii Elemente

0 v[1]

1 v[2]

.... ....

n-1 v[n-1]

.... ....

23 v[23]

24 v[24]

Prin v[i] se înŃelege elementul de pe poziŃia i în vector, unde variabila i parcurge pe rând valorile 1,2,...,n. Elementele unui vector se comportă ca nişte variabile simple, deci pot fi citite, afişate şi folosite în expresii.

Exemplu: Pentru vectorul v ilustrat grafic mai sus, iată câteva exemple de instrucŃiuni care folosesc elemente ale vectorului: ♥ cout 0) cout