Ponekad je velike količine podataka teško predstaviti i manipulisati njima u jednodimenzionalnom nizu.U određenom broju slučajeva podacima se lakše manipuliše kada su smešteni u dvodimenzionalnoj tabeli.
Dvodimenzionalni nizovi u matematici se nazivaju matrica, pa ćemo taj termin koristiti na dalje čisto iz praktičnih razloga.
U članku o komponenti StringGrid možete videti kako se pomoću te komponente kreira tabelaa za unos podataka. Primer dat u tom članku podatke uzima direktno iz komponente bez pamćenja podataka u memoriji. U slučaju kada podatke unete u komponentu StringGrid želimo da zapamtimo u memoriji radi dalje manipulacije moramo definisati novi tip podataka – dvodimenzionalni niz.
Kako deklarisati dvodimenzionalni niz?
Kod jednodimenzionalnog niza rekli smo da svi elementi niza moraju biti istog tipa. Bilo kog tipa ali bitno je da su istog tipa . Ako je tako, onda je logično da elementi niza mogu biti i tipa niz. U tom slučaju imali bi niz čiji su elementi nizovi.
PRIMER: Definišemo dvodimenzionalni niz (matricu) X koja može imati najviše 20 kolona i 30 redova u kojima će biti smešteni celi brojevi.
Možemo je deklarisati na jedan od sledećih načina:
- Kao niz nizova:
Type niz=ARRAY[1..30] of integer;
matrica=ARRAY[1..20] of niz;
var x: matrica;
- Kao niz nizova na drugi način:
Type matrica=ARRAY[1..20] of ARRAY[1..30] of integer;
var x: matrica;
- Skraćena verzija zapisa:
Type matrica=ARRAY[1..20,1..30] of integer;
var x: matrica;
- Direktnim opisom u odeljku var:
Var x: ARRAY[1..20,1..30] of integer;
Najčešće se koristi jedan od zadnja dva prikazana primera.
Pri zadavanju dimenzija matrice koriste se prirdni (celi) brojevi n i m koji govore da se matrica dimenzija nxm sastoji iz n kolona i m redova.
Svaki element dvodimenzionalnog niza (matrice) nalazi se u jednoj ćeliji tabele čiju adresu određuju dva indeksa – i , j. Indeks i predstavlja redni broj kolone u kojoj se niz nalazi a j redni broj reda.
Opšti element matrice X možemo predstaviti kao:
X[i,j]
Imamo primer dvodimenzionalnog niza x dimenzija 3×2 (3 kolone, 2 reda).
x
5 | 7 | 9 |
4 | 9 | 8 |
-U prvoj koloni na prvom mestu(u prvom redu) nalazi se broj 5.
· 5 je element matrice
· Adresa ovog elementa matrice je x[1,1]
-U trećoj koloni na drugom mestu (u drugom redu) je broj 8
· 8 je element matrice
· Adresa ovog elementa matrice je x[3,2]
itd
ZADATAK:
Kreirati aplikaciju koja omogućava unos matrice nxm i klikom na dugme ”računaj “ računa zbir elemenata matrice (ispisuje ga u labeli) i prosečnu vrednost elemenata (ispisuje je u edit boxu).
Kao što možete primetiti radi se o potpuno istom zadatku koji je urađen u članku o komponenti StringGrid gde je urađen tako što se podaci direktno uzimaju iz komponente i sabiraju.
Ovoga puta deklarisaćemo tip matrica (dvodimenzionalni niz) i podatke koji se unesu u komponentu zapamtimo u memoriju i sabiramo iz memorije.
Koraci u izradi aplikacije:
-
Postaviti komponente na formu
-
Podesiti osobine za StringGrid tako da nema zaglavlja i da je omogućen unos podataka.
-
Napisati proceduru za događaj klik mišem za komponentu StringGrid za postavljanje proizvoljnih dimenzija tabele (kao što je prethodno prikazano u članku o komponenti StringGrid).
-
Procedura za dugme “racunaj” koja pamti unete vrednosti iz tabele, sabira ih i računa prosečnu vrednost
Повратни пинг: Dvodimenzionalni nizovi | Dragan Ilić Blog
Повратни пинг: 3. Razred: Dvodimenzionalni nizovi | Dragan Ilić Blog
Повратни пинг: Jednodimenzionalni i dvodimenzionalni nizovi | Učimo informatiku 2