Uvod u programiranje matematika XII predavanje Vesna Velikovi

  • Slides: 18
Download presentation
Uvod u programiranje - matematika – XII predavanje Vesna Veličković vesna@pmf. ni. ac. rs

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

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,

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.

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;

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

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

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

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).

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

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;

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

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,

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

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

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

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

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

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