Uvod u programiranje matematika XI predavanje Matrice Vesna

  • Slides: 21
Download presentation
Uvod u programiranje - matematika – XI predavanje Matrice Vesna Veličković vesna@pmf. ni. ac.

Uvod u programiranje - matematika – XI predavanje Matrice 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 potreban za čuvanje promenljive tog tipa, i uvodi se ime te promenljive. 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 učitavanjem ili pomoću naredbe dodeljivanja. a[3, 5] : = 8; Edit 1. Text : = Str. To. Int (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 ili odštampati samo jednom naredbom.

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 i sabiraju i množe, broj vrsta i broj kolona mora biti jednak. const max = 50; type matrica = array [1. . max, 1. . max] of real;

procedure ucitaj_matricu (var a: matrica; n, m : integer); var i, j : integer;

procedure ucitaj_matricu (var a: matrica; n, m : integer); var i, j : integer; begin for i: =1 to n do for j: =1 to m do <uciraj a[i, j]>; end; procedure stampaj_matricu (a: matrica; n, m: integer); var i, j : integer; begin for i: =1 to n do begin for j: =1 to m do <stampaj a[i, j]>; <predji u novi red>; 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;

procedure TForm 1. Button 1 Click(Sender: TObject); var a, b, c : matrica; n

procedure TForm 1. Button 1 Click(Sender: TObject); var a, b, c : matrica; n : integer; begin <ucitaj n>; ucitaj_matricu (a, n, n); ucitaj_matricu (b, n, n); saberi (a, b, n, n, c); stampaj_matricu (c, n, n); pomnozi (a, b, n, n, n, c); stampaj_matricu (c, n, n); end;

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

Komponenta String. Grid

Komponenta String. Grid

Svojstva komponente String. Grid Brojanje vrsta i kolona počinje od 0. • Col. Count

Svojstva komponente String. Grid Brojanje vrsta i kolona počinje od 0. • Col. Count = broj kolona • Row. Count = broj vrsta • Fixed. Cols = broj fiksiranih vrsta • Fixed. Rows = broj fiksiranih kolona • Scroll. Bars • • ss. Both ss. None ss. Horizontal ss. Vertical

Upisivanje matrice u String. Grid n : = String. Grid 1. Row. Count -

Upisivanje matrice u String. Grid n : = String. Grid 1. Row. Count - 1; m : = String. Grid 1. Col. Count - 1; for vrste: =1 to n do for kolone: =1 to m do String. Grid 1. Cells [kolone, vrste] : = Int. To. Str (a [vrste, kolone])

Domaći zadatak 17 • Za neparno n odštampati matricu O 8 8 8 O

Domaći zadatak 17 • Za neparno n odštampati matricu O 8 8 8 O O 8 O O 8 8 8 8 8 O

Domaći zadatak 18 • Popunjavanje matrice spiralno 1 24 23 22 21 20 19

Domaći zadatak 18 • 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

Domaći zadatak 19 • Popunjavanje matrice dijagonalno 1 2 4 7 11 16 22

Domaći zadatak 19 • 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