Tablouri bidimensionale
Tablourile Bidimensionale se folosesc pentru a pastra mai multe valori in memorie , uneori grupate pe categorii. Acestea sunt determinate de mai multe variabile decat tablourile unidimensionale.
Sintaxa
-
Declararea: se precizeaza tipul elementelor din matrice, numele matrici, nr maxim de linii si nr maxim de coloane
-
Forma generala:
tip nume M [lmax][cmax]
Referirea unui element se face precizand, numele matrici, linia pe care se afla elementul, coloana pe care se afla elementul , intre paranteze patrate
nume M[linie][coloane]
Observatie: Fie matricea a cu 3 linii si 4 coloane
l=3; c=4;
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
Reprezentarea in memorie – elementele matrici ocupa un spatiu compact de dimensiune egal cu nr de lini inmultit cu nr de coloane.O line din matrice este defapt un sir.
-
Matrici patratice
Spunem despre o matrice ca este patratica daca nr de linii e egal cu cel de coloane ( vom preciza numai nr de linii)
Matricile patratice admit diagonala:
-diagonala principala: uneste coltul din stanga sus cu cel din dreapta jos si diagonala secundara si uneste coltul din dreapta sus cu cel din stanga jos
Matrice patratica

m
Exemplu Program:
Program ce calculeaza suma elementelor de pe perimetrul unui tablou bidimensional.
Program Di; {Di - numele programului}
uses crt; {Directiva ce permite utilizarea bibliotecii CRT, adica pot fi executate astfel de functii, precum: curatarea ecranului dupa executare, adaugarea culorilor, sunetelor in program etc.}
var T: array[1..100,1..100] of integer; {Declaram variabila T de tip array , elementele de tip integer- matrice cu nu mai mult de 100 de randuri si coloane}
s1, s2, s3, n, m, i, j: integer; {Declaram variabilele s1, s2, s3, n, m, i, j de tip integer - numere intregi}
begin {Inceputul programului}
clrscr; {Comanda ce va curata automat ecranul dupa executie}
textcolor(3); {Coloreaza textul programului in culoarea cu nr. 3 - cyan}
textbackground(0); {Coloreaza fundalul programului in culoarea cu nr. 0 - black}
write('Introdu nr.(<100) de randuri si coloane: '); {Afiseaza pe ecran "Introdu nr.(<100) de randuri si coloane: "}
readln(n, m); {Citeste numerele introduse de la tastatura, atribuie variabilelor valorile respective, trece in rand nou}
for i:=1 to n do {Parcurge toate elementele de pe randuri, se repeta pana cand i=n si efectueaza urmatoarele sarcini}
for j:=1 to m do {Parcurge toate elementele de pe coloane, se repeta pana cand j=m si efectueaza urmatoarele sarcini}
begin {Inceputul ciclului}
write('T[',i,j,']= '); {Afiseaza pe ecran "T[", afiseaza valorile lui i si j, afiseaza " ]="}
readln(T[i]); {Citeste valoarea introdusa de la tastatura si o atribuie elementului de pe pozitia corespunzatoare, trece in rand nou}
end; {Sfarsitul ciclului; intoarcere la sintaxa for}
writeln('Ati introdus: '); {Afiseaza pe ecran "Ati introdus ", trece in rand nou}
for i:=1 to n do {Parcurge toate elementele de pe randuri, se repeta pana cand i=n si efectueaza urmatoarea sarcina}
begin {Inceputul ciclului}
for j:=1 to m do {Parcurge toate elementele de pe coloane, se repeta pana cand j=m si efectueaza urmatoarea sarcina}
write(T[i,j]:3); {Afiseaza pe ecran valoarea fiecarui element, cu 3 spatii intre ele}
writeln; {Trece in rand nou}
end; {Sfarsitul ciclului; intoarcere la sintaxa for}
s1:=0; {Ii atribuim variabilei s1, care va calcula suma elemetelor de pe coloane, valoarea initiala 0}
s2:=0; {Ii atribuim variabilei s2, care va calcula suma elemetelor de pe randuri , valoarea initiala 0}
for i:=1 to n do {Parcurge toate elementele de pe randuri, se repeta pana cand i=n si efectueaza urmatoarea sarcina}
s1:=s1+T[i,1]+T[i,m]; {Adaugam la valoarea variabilei s1 valoarea elementelor situate in prima coloana - j=1 - si valoarea elementelor situate pe ultima coloana - j=m }
for j:=2 to m-1 do {Parcurge toate elementele de pe coloane, incepand cu j=2, se repeta pana cand j=m-1 - pentru ca deja am luat in calcul elementele de pe prima si ultima coloana - si efectueaza urmatoarea sarcina}
s2:=s2+T[1,j]+T[n,j]; {Adaugam la valoarea variabilei s2 valoarea elementelor situate in primul rand - i=1 - si valoarea elementelor situate pe ultimul rand - i=n }
s3:=s1+s2; {Ii atribuim variabilei s2, care va calcula suma elemetelor de pe perimetru, suma valorilor variabilelor s1 si s2}
writeln('Suma elementelor de pe perimetru este ',s3); {Afiseaza pe ecran "Suma elementelor de pe perimetru este ", afiseaza valoarea lui s3, trece in rand nou}
writeln('Autor: Mirela Burduja'); {Se afiseaza pe ecran fraza: " Autor: Mirela Burduja", trece in rand nou}
readkey; {La apasarea unei taste, trece din ecranul negru in ecranul albastru}
end. {Sfarsitul programului}

Screenshot-uri:







