Uvod u programiranje matematika XII predavanje Vesna Velikovi



![Matrica 1 1 2 3 a[3, 2] . . . n. . . max. Matrica 1 1 2 3 a[3, 2] . . . n. . . max.](https://slidetodoc.com/presentation_image/6833c7e98969d266738bc5e833d1dad0/image-4.jpg)














- Slides: 18
Uvod u programiranje - matematika – XII predavanje Vesna Veličković vesna@pmf. ni. ac. rs
Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani) Složeni (struktuirani) Redni tipovi INTEGER CHAR BOOLEAN intervalni nabrojani pointer REAL array record string file set
Array tip Više promenljivih istog tipa čini jednu celinu. Ta celina ima zajedničko ime, a do pojedinačnih komponenti se dolazi pomoću indeksa. array [ <tip indeksa> { , <tip indeksa> } ] of <tip komponente> Tip indeksa mora biti neki redni tip. Tip komponente može biti bilo koji tip.
Matrica 1 1 2 3 a[3, 2] . . . n. . . max. Vrsta 2 3 . . . max Kolona
Deklaracija matrice Matrica je dvodimenzionalni array (ima dva indeksa). const max. Vrsta = 100; max. Kolona = 50; type matrica = array [1. . max. Vrsta , 1. . max. Kolona ] of real; var x : matrica; n, m : integer; // broj stvarno upotrebljenih vrsta i kolona
Upotreba matričnog array tipa • Deklaracija tipa. U ovoj fazi opisujemo kako će promenljiva tog tipa izgledati, ali za sada ne postoji ni jedna promenljiva tog tipa • Deklaracija promenljivih. Odvaja se memorijski prostor za potreban za čuvanje promenljive tog tipa, i uvodi se ime te poromenljive. Vrednost svih komponenti te promenljive je nedefinisana, pa se još uvek ne mogu upotrebljavati. • Definisanje vrednosti komponenti. Do pojedinačne komponente matrice se dolazi navodjenjem njenog imena i indeksa vrste i indeksa kolone u uglastim zagradama. • Upotreba cele promenljive ili neke od njenih komponetni.
Specifičnost matričnog array tipa • Obično se u primenama ne zna unapred tačan broj vrsta i kolona matrice. U deklaraciji tipa matrice se procenjuje maksimalan broj potrebnih vrsta i kolona. • Zbog toga uz promenljivu matričnog array tipa idu po dve integer promenljive, za svaki indeks po jedna koja označava koliko komponenti je stvano upotrebljeno. • Procenjeni maksimalni broj komponetni ne sme biti premali, da bi program mogli upotrebiti u većem broju slučajeva, ali ni preveliki da ne bi imali mnogo neiskorišćenog prostora.
Definisanje vrednosti komponenti Ovo se može uraditi na dva načina: • Celoj promenljivoj array tipa se dodeljuje vrednost druge promenljive istog tipa. var a, b : matrica; a : = b; • Dodeljivanje vrednosti pojedinačnim komponentama se može uraditi pomoću naredbe dodeljivanja ili read. a[3, 5] : = 8; read (a[7, 2]);
Učitavanje i štampanje • Učitavanje i štampanje matrica se radi pokomponentno (komponeta po komponenta). Ne može se cela matrica učitati naredbom read, odnosno odštampati naredbom write. • Za učitavanje array (i record) tipa koristimo procedure. (Rezultat funkcije ne može biti struktuiranog tipa. )
Rad sa matricama • Deklarisati tip matrica. • Učitati dve matrice, sabrati ih i pomnožiti i odštampati dobijene vednosti. • Da bi matrice mogle da se množe, broj vrsta i broj kolona mora biti jednak. const max = 50; type matrica = array [1. . max, 1. . max] of real; var a, b, c : matrica; n : integer;
procedure ucitaj (var a: matrica; n, m : integer); var i, j : integer; begin for i: =1 to n do for j: =1 to m do read (a[i, j]); end; procedure stampaj (a: matrica; n, m: integer); var i, j : integer; begin for i: =1 to n do begin for j: =1 to m do write (a[i, j]: 8: 2); writeln; end;
procedure saberi (a, b: matrica; n, m: integer; var c: matrica); var i, j : integer; begin for i: =1 to n do for j: =1 to m do c[i, j] : = a[i, j] + b[i, j]; end; procedure pomnozi (a, b: matrica; n, p, m: integer; var c: matrica); var i, j, k : integer; begin for i: =1 to n do for j: =1 to m do begin c[i, j] : = 0; for k: =1 to p do c[i, j] : = c[i, j] + a[i, k] * b[k, j]; end;
begin {program} write ('n = '); read(n); ucitaj (a, n, n); ucitaj (b, n, n); saberi (a, b, n, n, c); stampaj (c, n, n); pomnozi (a, b, n, n, n, c); stampaj (c, n, n); end. {program}
Glavna dijagonala j glavna dijagonala i=j 1 1 2 ispod glavne dijagonale i >j isnad glavne dijagonale i <j i 3. . n 2 3 . . n
sporedna dijagonala i + j = n+1 Sporedna dijagonala j iznad sporedne dijagonale i + j < n+1 1 1 2 ispod sporedne dijagonale i + j > n+1 i 3. . n 2 3 . . n
Zadatak na predavanjima • Popunjavanje matrice dijagonalno 1 2 4 7 11 16 22 3 5 8 12 17 23 29 6 9 13 18 24 30 35 10 14 19 25 31 36 40 15 20 26 32 37 41 44 21 27 33 38 42 45 47 28 34 39 43 46 48 49
Domaći zadatak 21 • Za neparno n odštampati matricu O 8 8 8 O O 8 O O 8 8 8 8 8 O
Domaći zadatak 22 • Popunjavanje matrice spiralno 1 24 23 22 21 20 19 2 25 40 39 38 37 18 3 26 41 48 47 36 17 4 27 42 49 46 35 16 5 28 43 44 45 34 15 6 29 30 31 32 33 14 7 8 9 10 11 12 13