You are on page 1of 19

Informatica restabilete

nu numai unitatea
matematicilor pure i a
celor aplicate, a tehnicii
concrete i a matematicilor
abstracte, dar i cea a
tiinelor naturii, ale omului
i ale societii, reabiliteaz
conceptele de abstract i
de formal i mpac arta cu
tiina nu numai n sufetul

Profesor
coordonator
Tablouri
bidimensio
nale
Lucrare pentru atestarea
competenelor profesionale
Cuprins
1.Introducere n Informatic - Programul informatic 2
2.Tablouri A.Informaii generale 3
B.Tipul tabloului
3.Tablouri bidimen!ionale "
.Implementarea tabloului bidimen!ional n #$$ %
".Tablouri bidimen!ionale ptratice 1&
'.Aplicaii 12
1 | P a g e
Introducere n Informatic
Programul informatic
Programul informatic este reprezentarea sau implementarea unui algoritm ntr-un cod
surs, scris ntr-un anumit limbaj de programare. O colecie de programe individuale alctuite pentru
ndeplinirea unui scop comun se numete de obicei software. Programul este un produs fnit al
activitii de programare informatic. Considerat formal, un program informatic este un transformator
de aseriuni ce descriu proprietile datelor corecte: att ale datelor de intrare n sistem, ct i cele ale
datelor de ieire din sistem. De obicei programele se creeaz pentru un anumit tip de calculator sau
aparat inteligent.
Pentru ca un program s fe efcient (de ex. s livreze rezultatele n scurt timp), el trebuie s
aib la baz un algoritm efcient, iar tehnicile de implementare i programare s fe i ele efciente.
Un program de calculator este format dintr-un ir de instruciuni alese dintr-un set predefnit
de instruciuni (numit limbaj de programare) prin care se comunic unui calculator, n mod detaliat,
care anume operaii i n ce ordine trebuie s efectueze. Cnd sunt scrise de oameni, de obicei de
ctre programatori specializai, irul de instruciuni se numete cod surs.
De obicei persoana care scrie programul folosete fe un editor text (pentru un program
simplu), fe un mediu integrat de dezvoltare.
Multe limbaje de programare cer ca, dup creare, sursa s fe transformat ntr-un alt format,
prelucrabil direct de ctre calculator, numit de obicei cod obiect, cod main sau i cod binar. Acest
proces de transformare al codului neles de oameni ntr-unul neles de calculator poate f de
tip compilare sau de tip interpretare.
Clase de programe informatice
Program abstract
Programul abstract este un program n form general, al crui studiu e valabil pentru orice program
derivat din el.
Program asamblor
Program de conversie n cod main a programelor specifcate n limbaj de asamblare.
2 | P a g e
Program de aplicaie
Este un program destinat rezolvrii unor probleme concrete i specifce, producerii unor rapoarte
specifce, unor fiere specifce necesare rezolvrii cerinelor unuia sau mai multor utilizatori.
Program de diagnosticare
Program utilitar (ajuttor) folosit pentru depistarea cauzelor disfuncionalitii unui sistem de calcul.
Tablouri
Defniie:
Numim tablou o colecie (grup, mulime ordonat) de date, de acelai tip, situate ntr-o zon de
memorie continu (elementele tabloului se af la adrese succesive). Tablourile sunt variabile compuse
(structurate), deoarece grupeaz mai multe elemente. Variabilele tablou au nume, iar tipul tabloului
este dat de tipul elementelor sale. Elementele tabloului pot f referite prin numele tabloului i indicii
(numere ntregi) care reprezint poziia elementului n cadrul tabloului.
Clasifcare:
n funcie de numrul indicilor avem mai multe tipuri de tablouri:
Tablouri unidimensionale (cu un singur indice);
Tablouri bidimensionale (cu doi indici);
Tablouri multidimensionale (cu mai muli indici).
Ca si variabilele simple, variabilele tablou trebuie declarate nainte de utilizare.
Modul de declarare:
tip nume_tablou[dim_1][dim_2].[dim_n];
3 | P a g e
unde:tip reprezinta tipul elementelor tabloului; dim_1,dim_2,...,dim_n sunt numere ntregi sau
expresii constante ntregi (a caror valoare este evaluata la compilare) care reprezinta limitele
superioare ale indicilor tabloului.
Exemple:
int v[10]; am declarat un vector cu 10 componente de tip intregcare au indici intre 0 si 9,
v[0], v[1], .. v[9];
foat a[10], b[20]; am declarat doi vectori a si b care au 10 respectiv 20 de componente de
tip real;
int a[10][20]; am declarat o matrice cu 10 linii si 20 coloane;
Tipul tabloului
Tipul tablou conine un numr fx de componente de acelai tip.
Tipul comun al elementelor se numete tip de baz al tabloului.
Pentru a avea acces la coninutul componentelor unui tablou, folosim poziia
elementului din tablou , numit i indice.
n cazul n care componentele unui tablou sunt accesate dup un singur indice, tabloul
se numete vector (sau tablou unidimensional).
4 | P a g e
Dac elementele sunt accesate dup mai muli indici, atunci avem de-a face cu
un tablou multidimensional.
Elementelor tabloului le sunt permise orice operaii valabile tipului de baz. Ele sunt
stocate n zone de memorie continua.
Nu este obligatoriu ca elementele unui tablou s fe numere reale.Ele pot f de orice
natur: numere ntregi, caractere etc.
n matematic tablourile se numesc matrici. Termenul a fost preluat i n informatic.
Tablouri bidimensionale
Defniie:
Tabloul bidimensional reprezint o succesiune de locaii de memorie recunoscute prin acelai
identifcator i prin poziia fecreia n cadrul irului. Poziia este dat printr-o suit de dou numere
pozitive (indeci), care reprezint cele dou dimensiuni (linie i coloan).
Utilizare:
Se folosesc pentru a pstra mai multe valori n memorie, uneori grupate n categorii.
Citirea elementelor tablourilor bidimensionale (matricilor se face pe linie.
5 | P a g e
for (i=1;i<=n;i++)
for(j=1;<=m;j++)
{
cout<<v[<<i<<,<<j<<]=;
cin>>v[i][j];
}
!f area elementelor matricilor se face att pe linie ct i pe coloan.
Exemplu:
Matricea cu n linii i m coloane:

!"
#bser$aii:
! Pentru a realiza o prelucrare asupra tuturor elementelor tabloului se folosete
6 | P a g e
for (i=1;i<=n;i++)
for(j=1;<=m;j++)
{
cout<<v[i][j]<< ;
}
instruciunea for cu o variabil contor care sa ia toate valorile indicilor (i , j).
! Identifcarea zonei de memorie unde va f reinut tabloul se face cu ajutorul
numelui tabloului. Acesta are ca valoare adresa primului element din tablou,
Ex: v[i][j], ceea ce l deosebete de identifcatorul folosit pentru variabilele
simple care nu reprezint o adres.
! Citirea elementelor unui tablou nu este posibil dect prin citirea fecrui element.
De aceea, la fel ca i n cazul vectorilor operaia de citire a matricilor impune
folosirea a dou secvene ciclice suprapuse.
! Pentru a realiza o prelucrare asupra tuturor elementelor tabloului se folosete
instruciunea for cu o variabil contor care s ia toate valorile indicilor ( ntre 0 i m-
1/n-1 sau ntre 1 i m/n).
! Copierea unui tablou in altul se face prin copiere fecarui element.
#rganizarea %n structuri de date a datelor prelucrate de algoritmi simplifc& multe
dintre opera'iile de prelucrare( !tunci c)nd organiza'i datele %ntr*o structur& de date+
trebuie s& identifca'i modul %n care pute'i a$ea acces la ele ,i opera'iile pe care
pute'i executa cu datele din colec'ie( Procesul de organizare a datelor %n colec'ii este
un proces care se desf&,oar& pe trei ni$eluri care interac'ioneaz& %ntre ele+ pornind de
la ni$elul conceptual(
-i$elul conceptual:
Nivelul la care se dezvolt imaginea mental a structurii de date: modul n care trebuie organizate
datele i relaiile care exist ntre ele.
7 | P a g e
-i$elul logic:
Nivelul la care se alege un model de implementare a structurii conceptuale.
-i$elul fzic:
Nivelul la care sunt stocate datele n memoria calculatorului i care implic anumite caracteristici
ale operaiilor de accesare i de prelucrare a datelor din colec ie, n func ie de modul n care sunt memorate datele
i de algoritmii implementa i n limbaj pentru accesarea, citirea i scrierea datelor n memorie.
! O structur de date care, la nivel conceptual, are imaginea unui table care conine date de acela i
tip, se implementeaz la nivel logic cu ajutorul tabloului bidimensional.
.mplementarea tabloului
bidimensional %n C//
Declararea unui tablou de memorie tip matrice (cu dou dimensiuni) se face prin instruciunea:
jfhdfkls<tip_dat> <nume> [<nr_1>] [<nr_2>] = {<list_valori>};hjkgjhgj
tip_dat = tipul elementelor matricei;
<nume> = identifcatorul matricei;
<nr_1> = constante ntregi care specifc numrul de linii al matricei;
<nr_2> = constante ntregi care specifc numrul de coloane al matricei;
Exemplu:
| P a g e
int a[2][4] = matrice cu elemente de tip ntreg cu 2 linii i 4 coloane;
foat b[3][4] = matrice cu elemente de tip real cu 3 linii i 4 coloane;
Pentru prelucrarea datelor memorate ntr-o matrice, referirea la un element al matricei se face
prin construcia:
hjjhg<nume> [<indice_1>] [<indice_2>]gghh
<nume> = numele matricei;
<indice_1> = numrul de ordine al liniei;
<indice_2> = numrul de ordine al coloanei;
indicele coloanei j
0 1 2 3
indicele liniei i 0
element =a[i][j] 1
! | P a g e
1 2 3 4
5 6 7 8
Deoarece adresa matricei este i adresa primului element, iar indicii reprezint deplasarea
elementului fa de adresa matricei, numerotarea indicilor se face pornind de la 0, iar
0<=indice_1<mi 0<=indice_2<n, unde m reprezint numrul de linii, iar n numrul de
coloane ale matricei, precizate la declararea ei.
Tabloul de memorie find o structur de date static, la declanarea lui i se aloc o zon fx de
memorie. Lungimea tabloului se memorie reprezint numrul de elemente ale tabloului.
La declanarea tabloului. Este posibil s nu se cunoasc numrul de elemente care vor f
prelucratela fecare execuie a programului.
n prelucrarea tabloului de memorie se folosesc dou lungimi:
Lungimea fzic = reprezint numrul de elemente stabilite la declararea tabloului. Este
numrul maxim de elemente care pot f stocate n spatial de memorie rezervat tabloului. n
cazul unei matrice, lungimea fzic este data de produsul dintre numrul de linii i numrul de
coloane precizate la declararea matricei.
Lungimea logic = reprezint numrul de elemente care vor f prelucrate la execuia
programului. Este cel mai mic sau cel mult egal cu lungimea fzic (numrul maxim de
elemente). Lungimea logic se comunic n timpul execuiei programului (de la tastatur, sau
se citete dintr-un fier text). n cazul matricei, ea reprezint produsul dintre numrul de linii
si numrul de coloane al matricei (mxn).
Tablouri bidimensionale p&tratice
Defnitie:
1" | P a g e
Un tablou bidimensional n care numrul de linii este egal cu numrul de coloane se
numete tablou bidimesional ptratic sau matrice ptratic.
Particularit& i :
n cazul matricilor ptratice se poate vorbi despre noiuni precum: diagonal
principal, diagonal secundar, zon de Nord, zon de Sud, zon de Est, zon de Vest.
i01 22 i/10n/3 (zona de -ord
a
3+3
a
3+4
a
3+5
a
3+6
a
3+7

i/1"n/3(diagonala secundar&
!" a
4+3
a
4+4
a
4(5
a
4+6
a
4+7
i8122i/10n/3 a
5+3
a
5+4
a
5+5
a
5+6
a
5+7
i01 22 i/18n/3 (zona de Est
(zona de 9est a
6+3
a
6+4
a
6+5
a
6+6
a
6+7

a
7+3
a
7(4
a
7+5
a
7+6
a
7+7
i"1
(diagonala principal&
i81 22 i/18n/3 (zona de :ud
Matrice speciale: (sunt matrice care au anumite proprieti, n func ie de
valorile elementelor). Pentru a se face economie de memorie, aceste matrice pot f
memorate ca vectori.
11 | P a g e
#atrice p$tratic$ simetric$ fa de diagonal. Dac este simetric
fa de diagonal principal (a[i][j]=a[j][i]), se vor memora n vectorul b numai
elemente de pe diagonala principal i cele de deasupra diagonalei principale:
b[k]=a[i][j], unde i=0 n-1 i j=i n-1. Dac este simetric fa de diagonala
secundar (a[i][j]=a[n-i-1][n-j-1]), se vor memora in vectorul b numai
elementele de pe diagonala secundar i cele de deasupra diagonalei principale:
b[k]=a[i][j], unde i=o n-1 i j=0 n-i-1. Numrul de elemente ale vectorului
b va f: n*(n+1)/2.
#atrice simetric$ fa de axe. Dac este simetric fa de axa vertical
(a[i][j]=a[i][n-j-1]), se vor memora n vectorul b numai elementele de pe axa
vertical (numai dac numrul de coloane este impar) i cele de la dreapta axei
verticale: b[k]=a[i][j], unde i=o m-1 i j=o n/2 (pentru n par) i j=0 n/2-1
(pentru n impar). Numrul de elemente al vectorului b va f: m*(n/2+1) pentru
n par, respectiv m*n/2, pentru n impar. Dac este simetric fa de axa
orizontal (a[i][j]=a[m-i-1][j]), se vor memora n vectorul b numai elementele de
pe axa orizontal (numai dac numrul de linii este impar) i cele de deasupra
axei orizontale: b[k]=a[i][j], unde i=o m/2 (pentru n par) i j=0 m/2-1
(pentru m impar) i j=0 n-1. Numrul de elemente al vectorului b va f:
n*(m/2+1) pentru m par, respectiv n*m/2, pentru n impar.
#atrice p$trat$ diagonal$% Toate elementele care nu se gsesc pe
diagonala principal, respective secundar, au valoarea 0. Se vor memora n
vectorul b numai elementele de pe diagonala principal, respective secundar:
b[k]=a[i][j], respective : b[k]=a[i][n-i-1] unde i=0 n-1. Numrul de elemente
ale vectorului b va f: n.
#atrice p$trat$ triumg&iular$( Toate elementele care se gsesc
deasupra sau sub o diagonal au valoarea 0. Se va memora la fel ca o matrice
ptrat simetric fa de acea diagonal.
12 | P a g e
!plica ii:
3( !farea elemetelor de pe diagonala principal;secundar&:
13 | P a g e
<include0iostream(=8
$oid main(
>
int i+ 1+ n+ m+ $?3@A?3@AB
cout00Cn"CBcin88nB
for (i"3Bi0"nBi//
for(1"3B0"mB1//
>
cout00C$?D00i00C+C00100CA"CB
cin88$?iA?1AB
E
for (i"3Bi0"nBi//
for(1"3B0"mB1//
if (i""1 ; if (i/1"n/3
cout00$?iA?1A00C DB
E
2.Parcurgerea unei matrici pe contur.
14 | P a g e
<include0iostream(=8
$oid main(
>
int i, j, n, m, v[10][10];
cout<<n=;cin>>n;
cout<<m=;cin>>m;
for (i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cout<<v[<<i<<,<<j<<]=;
cin>>v[i][j];
}
for(i=1)
for(j=1,m)
{
cout<<v[i][j]<< ;
cout>>endl;
}
for(i=2,m)
for(j=n)
{
cout<<v[i][j]<< ;
cout>>endl;
}
for(i=m)
for(j=n-1.1)
{
cout<<v[i][j]<< ;
cout>>endl;
}
for(i=m-1,2)
for(j=1)
{
cout<<v[i][j]<< ;
cout>>endl;
}
}
3.Spirala.
15 | P a g e
<include0iostream(=8
$oid main(
>
int $?3@A?3@A+n+i+1+FB
cout00GHangul matricei"GB
cin88nB
for(i"3Bi0"nBi//
for(1"3B10"nB1//
>
cout00G$?G00i00G+G00100GA"GB
cin88$?iA?1AB
E
for(F"3BF0n;4/3BF//
>
for(1"FB1""n*F/3B1//
>
cout00$?FA?1A00G GB
cout00endlB
E
for(i"F/3Bi0"n*F/3Bi//
>
cout00$?iA?n*F/3A00G GB
cout00endlB
E
for(1"n*FB18"FB1**
>
cout00$?n*F/3A?1A00G GB
cout00endlB
E
for(i"n*FBi8"F/3Bi**
>
cout00$?iA?FA00G GB
cout00endlB
E
E
E
4.Interschimbare linii.
16 | P a g e
<include0iostream(=8
>
int i, j, n, m, v[10][10],x,y,aux;
cout<<n=;cin>>n;
cout<<m=;cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cout<<v[<<i<<,<<j<<]=;
cin>>v[i][j];
}
cout<<x=;cin>>x;
cout<<y=;cin>>y;
cout<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<v[i][j]<< ;
cout>>endl;
}
for(j=1;j<=m;j++)
{
aux=v[x][j];
v[x][j]=v[y][j];
v[y][j]=aux;
}
cout<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<v[i][j]<< ;
cout>>endl;
}
5.Afarea unei matrice dupa cea mai mare valoare dintre indicele liniei i
indicele coloanei.
17 | P a g e
<include0iostream(=:
$oid main(
>
int a?3@A?3@A+n+m+i+1+FB
cout00G-umarul de linii"GB
cin88nB
cout00G-umarul de coloane"GB
cin88mB
for(i"3Bi0"nBi//
for(1"3B10"mB1/
>
if(i8"1
a?iA?1A"iB
else
a?iA?1A"1B
E
for(i"3Bi0"nBi//
>
for(1"3B10"mB1//
cout00a?iA?1A00G GB
cout00endlB
E
cout00G!fsarea unei matrice dupa cea mai mare $aloare
dintre indicele liniei si indicele coloaneiGB
cin88FB
E
6.Afarea unei matrici dup suma indicilor (i i j).
1 | P a g e
<include0iostream(=8
$oid main(
>
int a?3@A?3@A+n+m+i+1+FB
cout00G-umarul de linii"GB
cin88nB
cout00G-umarul de coloane"GB
cin88mB
for(i"3Bi0"nBi//
for(1"3B10"mB1//
>
a?iA?1A"i/1B
E
for(i"3Bi0"nBi//
>for(1"3B10"mB1//
cout00a?iA?1A00G GB
cout00endlB
E
cout00G!fsarea unei matrici dupa suma indicilor (i si
1GB
cin88FB
E

You might also like