Sunteți pe pagina 1din 4

13.

Algoritmi şi scheme logice - Operaţii cu matrice

Matricile sunt tablouri bidimensionale şi pot fi asemuite cu o secvenţa de mai


multe şiruri. Dacă un element al unui şir se identifică cu elem[i] unde i
reprezintă poziţia acelui element în cadrul şirului, la matrice un element se
identifica prin elem[i][j] unde i reprezintă poziţia pe coloană (verticală) a acelui
element, iar j reprezintă poziţia pe linie (orizontală) a acelui element. Dacă
facem analogia cu şirurile, i reprezintă numărul şirului în care se află elementul,
iar j reprezintă poziţia elementului în cadrul şirului i.
j
e00 e01 e02 e03
i e10 e11 e12 e13
e20 e21 e22 e23

Fig. 13.1 Structura unei matrice

O matrice va avea ca şi număr de elemente produsul dintre numărul de coloane


şi numărul de linii. Dacă notăm aceste valori cu m (vertical) respectiv cu n
(orizontal) atunci o matrice Am·n are m · n elemente. În exemplul dat mai sus, m
= 3 şi n = 4.

Obs. Ca şi în cazul şirurilor cei doi indici, i şi j, vor lua valori între 0 şi m-1
respectiv n-1.

13.1. Parcurgerea unei matrice

Fără a se analiza algoritmul de parcurgere, se poate explica în termeni comuni


modul de parcurgere, pe baza figurii 13.1. Se face poziţionarea pe primul
element al matricei e[0][ 0] , şi se trece apoi, pas cu pas la următorul element din
linia i, şi anume la e[0][1] până la ultimul element din linie, e[0][ 3] . Se trece apoi
la primul element din următoarea linie e[1][ 0] , care se parcurge din nou, la fel ca
şi prima, aceşti paşi repetându-se până când se atinge şi ultimul element e[ 2][ 3] .
De foarte multe ori, în prezentarea unor scheme logice cuprinzând operaţii cu
matrice, unele elemente sunt prezentate simplificat, pentru a reduce
dimensiunile schemei logice, ceea ce poate crea uneori neînţelegeri. Astfel, în
continuare se va prezenta algoritmul de bază folosit la parcurgerea unei matrice
(fig. 13.2), indiferent de operaţiile care for fi efectuate asupra elementelor, iar în
cazul reprezentărilor simplificate, se va face preciza acest lucru.

Algoritmul de parcurgere al unei matrice poate fi prezentat astfel:


1. Se citesc dimensiunile matricei, şi
anume numărul de linii şi de
coloane, m şi n;
2. Se consideră doi indici, i şi j care m, n
vor reprezenta poziţia curentă în
matrice;
3. Se poziţionează indicele liniei pe
primul element, şi anume: i = 0;
4. Se poziţionează indicele coloanei i=0
pe primul element, şi anume: j =
0;
5. În figura 13.2. următorul bloc j=0
este notat cu BB – Black Box,
marcând faptul că aici se pot face
diferite operaţii, instrucţiuni sau
blocuri de instrucţiuni aplicate
asupra elementului curent (citire,
scriere, comparare, etc.);
6. dată terminată această operaţie se j = j +1
va trece la următorul element,
prin creşterea cu o unitate a j<n
indicelui de coloană, j = j + 1;
7. Operaţiile din BB şi incrementarea
indicelui j se face până când se i = i +1
ajunge la ultimul element de pe
linia matricei, astfel încât
condiţia j < n nu mai este
i<m
adevărată;
8. În acest moment se iese din primul
bloc de ciclare şi se creşte
indicele liniei, i, cu o unitate, i = i
+1; Fig. 13.2. Parcurgerea unei matrice
9. Se verifică dacă prin noua sa
valoare indicele i se află în matrice cu condiţia i < m;
10. Dacă condiţia este adevărată înseamnă că s-a trecut la o nouă linie şi
algoritmul revine la instrucţiunea de poziţionare a indicelui coloanei pe
primul element, poziţionarea pe primul element din linia i şi se revine astfel
la pasul 4 continuându-se cu paşii 5, 6, 7, 8, 9;
11. Când indicele i nu mai respectă condiţia de la pasul 9 i < m înseamnă că au
fost parcurse toate elementele matricei şi se poate trece la următorul pas din
algoritm.
Suma a două matrice

Suma a două matrice se


poate calcula doar între două
matrice de aceeaşi
m, n
dimensiune, şi anume, dacă
A[0][0] , A[0][1] ,  A[ m −1][ n −1]
matricea A este de tip Am·n
atunci şi B va fi de tip Bm·n B[0][0] , B[0][1] ,  B[ m −1][ n −1]
(unde m şi n sunt fixe).

Schema logică de rezolvare a i=0


acestei probleme este
prezentată în figura 13.3.
j =0
Dacă se face o analiză a
modului de rezolvare acesta
se poate descrie, pe baza S[i ][ j ] = A[i ][ j ] + B[i ][ j ]
algoritmului din figura 13.1
foarte simplu. Întrucât cele
două matrice au aceleaşi j = j +1
dimensiuni elementele lor se
pot citi în acelaşi timp. Astfel
algoritmul se poate prezenta j<n
foarte succint:
1. Se citesc dimensiunile
matricelor, m şi n. i = i +1
2. Se utilizează secvenţa
de parcurgere şi se citesc
în paralel elementele celor i<m
două matrice.
3. Se execută apoi o a
doua parcurgere şi de
această dată în Black Box, S[0][0] , S[0][1] ,  S[ m −1][n −1]
în loc de citire, se
introduce operaţia de
însumare, cu crearea unei
noi matrice, matricea Fig. 13.3. Suma a două matrice
suma, cu relaţia
S[i ][ j ] = A[i ][ j ] + B[i ][ j ] .
4. Se utilizează din nou aceeaşi secvenţă şi de această dată în Black Box se
face tipărirea (afişarea) matricei sumă.
Obs. Citirea celor două matrice şi afişarea matricei sumă s-a prezentat în formă
simplificată pentru economie de spaţiu.