Osnovi raunarstva Matlab Programiranje Reavanje problema primenom raunara
Osnovi računarstva Matlab Programiranje
Rešavanje problema primenom računara • Cilj bi bio da se razvijre algoritma za rešavanje problema (BDA dijagram) i da se algoritam transformiše u računarski program (programiranje) za Matlab 2/33
BDA – Podsećanje • Struktura sa grananjem - Kada se u algoritmu pojavi korak odlučivanja, odn. aritmetičkog ili logičkog testa. • aritmetički • logički 3/33
BDA – Podsećanje • Petlja (ciklična struktura) - Odlikuje se višestrukim izvršavanjem jednog ili više algoritamskih koraka. • Suma niza: – Niz: A = {a 1, a 2, a 3, . . . , a. N} = {ai}, i = 1, . . . , N 4/33
Upravljanje tokom programa u Matlabu • Transformacija BDA u računarski program za Matlab ostvaruje se korišćenjem naredbi za kontrolu toka izvršavanja programa (if, for, while, break, continue) i naredbama input (pribavljanje podataka sa tastature) i disp(ispis na ekran) – Naredba if – BDA struktura sa grananjem – Naredbe for, while – BDA petlja (ciklična struktura) – Naredbe break, continue – utiču na for i while 5/33
Naredba disp • disp – omogućava ispis poruke na ekran • Opšti oblik: disp('tekst koji će se pojaviti na ekranu') >> disp('Danas je lep dan') Danas je lep dan 6/33
Naredba input • Naredba za interakciju sa korisnikom. • Opšti oblik: x = input('tekst koji će se pojaviti') • Može se uneti bilo koji izraz Matlaba koji će biti sračunat korišćenjem promenljivih iz radnog prostora, a rezultat će biti vraćen kao vrednost funkcije (može se smestiti u neku promenljivu). 7/33
Naredba input • input - omogućava korisniku unos novih vrednosti sa tastature >> a=input('Molim Vas unesite vrednost broja ') Molim Vas unesite vrednost broja 25 a= 25 8/33
Primer >> X=input('Molim Vas unesite niz X: ') X: [1 2 3 4 5] X= 1 2 3 4 5 9/33
Primer >> ime = input('Unesite ime: ', 's') % unos stringa Unesite ime: Petrovic Petar ime = Petrovic Petar 10/33
Naredba if • if – naredba uslovnog grananja • Služi za uslovno izvršavanje programa. U opštem slučaju, proverava se uslov, i ako je zadovoljen, izvršava se zadati deo programa. Opšti oblik: PRIMER: a=input('unesite vrednost broja ') if Log-Rel-Izraz naredbe 1 naredbe 2. . . naredbe. N end if a>0 disp('Broj je pozitivan') end 11/33
Naredba if Opšti oblik: PRIMER: a=input('unesite vrednost broja ') if Log-Rel-Izraz naredbe 1 else naredbe 2 end if a>0 disp('Broj je pozitivan') else disp('Broj je negativan ili nula') end 12/33
Naredba if Opšti oblik: if logicki_relacioni_izraz 1 % 1 put - obavezan naredbe 1 elseif logicki_relacioni_izraz 2 % 0 ili N puta naredbe 2 else % 0 ili 1 put se javlja naredbe 3 end %obavezan deo 13/33
Naredba if PRIMER: a=input('unesite vrednost broja ') if a>0 disp('Broj je pozitivan') elseif a<0 disp('Broj je negativan') else disp('Broj je nula') end 14/33
Vežba - if 15/33
Vežba - if stanje. TRacuna = input('Unesite stanje tekuceg racuna '); iznos. Za. Placanje = input('Unesite iznos za placanje '); if (stanje. TRacuna - iznos. Za. Placanje)>=0 stanje. TRacuna = stanje. TRacuna - iznos. Za. Placanje; disp('Novo stanje tekuceg racuna je '); stanje. TRacuna else disp('Nema dovoljno sredstva na tekucem racunu') end 16/33
Naredba for • for – brojačka petlja (brojačka ciklična struktura) koja omogućuje ponavljanje istog koda • koristi se kada se unapred zna koliko puta će se izvršiti telo petlje • petlja sa početnom vrednošću, blokom za korekciju i uslovom za kraj • Opšti oblik: for promenljiva=izraz 1[: izraz 2]: izraz 3 naredbe end for brojac=Donja. GR[: Korak]: Gornja. GR naredbe end 17/33
Naredba for • U telu for petlje dostupna je promenljiva za korišćenje PRIMER: %Ispiši sve neparne brojeve od -9 do +9 for i = -9 : 2 : 9 i end 18/33
Naredba for • Opšti oblik: for promenljiva=izraz 1[: izraz 2]: izraz 3 naredbe end • Ako je izraz 2>0 ili ga nema: 1. promenljiva zauzima vrednost izraz 1 2. proverava se da li je promenljiva veća ili jednaka od izraz 3 3. ako nije, izvršavaju se naredbe, pa se promenljiva uveća za izraz 2 (ako ga ima), a ako nema izraza 2, uvećava se za 1 4. ide se na korak 2 • Ako je izraz 2<0: 1. 2. 3. 4. promenljiva zauzima vrednost izraz 1 proverava se da li je promenljiva manja ili jednaka od izraz 3 ako nije, izvršavaju se naredbe, pa se promenljiva umanji za izraz 2 ide se na korak 2 19/33
Primer for i=1: 3 x(i)=i*i end for i=1: 2: 6 a=i end x = a = i 1 1 x = 1 i 1 3 i 3 5 i 5 a = 1 4 i 2 x = a = 1 4 9 i 3 20/33
Primer for i=3: -1: 1 y(i)=i end y = 0 0 3 i 3 0 2 3 i 2 1 2 3 i 1 y = 21/33
Dvostruka petlja i 1 A = j 1 1 A = j 2 1 2 3 1 2 2 0 3 0 j 1 1 2 2 4 3 0 j 2 1 2 2 4 3 6 j 3 A = i 2 for i = 1: 2 for j = 1: 3 A(i, j) = i*j end j 3 A = A = 22/33
Vežba – for • sracunaj sumu elemenata niza počevši od pozicije 3 elementa: X = {x 1, x 2, . . . , x. N} 23/33
Vežba – for S← 0 i← 3 i <= N NE DA S ← S + x(i) i ← i+1 24/33
Vežba – for %sracunaj sumu elemenata niza %pocevsi od pozicije 3 elementa X = [4 3 2 1 11 12 13] n = length(X) suma=0 for i = 3: 1: n suma=suma+X(1, i) end suma 25/33
Naredba while • while – logička petlja (brojačka ciklična struktura) koja omogućuje ponavljanje istog koda • koristi se kada se unapred ne zna koliko puta će se izvršiti telo petlje • poznat je samo uslov za prekid • Deo programa se izvršava dokle god je zadati uslov ispunjen. • Opšti oblik: while Logicki-Relacioni-Izraz naredbe end 26/33
Naredba while PRIMER: %plaćanje računa dokle god na njemu ima novca stanje. TRacuna = input('Unesite stanje tekućeg računa '); while stanje. TRacuna > 0 iznos. Za. Placanje = input('Unesite iznos za plaćanje '); stanje. TRacuna = stanje. TRacuna - iznos. Za. Placanje; disp('Novo stanje tekućeg računa je '); stanje. TRacuna end 27/33
Naredba Break • Naredba break prekida izvršavanje petlje. • Kombinuje se sa while i for petljama while Logicki-Relacioni-Izraz 1 naredbe if Logicki-Relacioni-Izraz 2 break end naredbe end 28/33
Naredba Break • Naredba break prekida izvršavanje petlje. • Kombinuje se sa while i for petljama for brojac=Donja. GR: Korak: Gornja. GR naredbe if Logicki-Relacioni-Izraz 2 break end naredbe end 29/33
Naredba break PRIMER: %plaćanje računa dokle god na njemu ima novca %zabranjeno je otići u minus stanje. TRacuna = input('Unesite stanje tekućeg računa '); while stanje. TRacuna > 0 iznos. Za. Placanje = input('Unesite iznos za plaćanje '); if (stanje. TRacuna - iznos. Za. Placanje) < 0 disp('Na računu nema dovoljno sredstva'); break end stanje. TRacuna = stanje. TRacuna - iznos. Za. Placanje; disp('Novo stanje tekućeg računa je '); stanje. TRacuna end 30/33
Naredba Continue • Naredba continue prekida izvršavanje naredbi u tekućem ciklusu ali se petlja nastavlja dalje. • Kombinuje se sa while i for petljama while Logicki-Relacioni-Izraz 1 naredbe if Logicki-Relacioni-Izraz 2 continue end naredbe end 31/33
Naredba Continue • Naredba continue prekida izvršavanje naredbi u tekućem ciklusu ali se petlja nastavlja dalje. • Kombinuje se sa while i for petljama for brojac=Donja. GR: Korak: Gornja. GR naredbe if Logicki-Relacioni-Izraz 2 continue end naredbe end 32/33
Naredba continue PRIMER: %sracunaj sumu elemenata niza koji su pozitivni brojevi X=[4 -3 2 1 -11 12 13] n=length(X) suma=0 for i=1: 1: n if X(1, i)<0 continue end suma=suma+X(1, i) end 33/33
Vežba 1 Napisati program koji preračunava temperaturu iz stepena Celzijusa u stepene Farenhajta. Stepeni farenhajta se dobijaju kada se stepeni Celzijusa pomnože sa 1. 8 i na tu vrednost doda još 32. 34/33
Vežba 2 Napisati program koji za da datu unetu godinu (npr. 2014) utvrđuje da li je ona prestupna. Po gregorijanskom kalendaru prestupne godine određuju se na sledeći način: 1. ako je godina deljiva sa 400, prestupna je (npr. 2000 godina je prestupna) 2. ako godina nije deljiva sa 400, ali je deljiva sa 100, nije prestupna (npr. 1900. godina nije prestupna) 3. ako godina nije deljiva sa 100, ali je deljiva sa 4, prestupna je (npr. 2004 godina je prestupna) 4. ako godina nije deljiva sa 100 i nije deljiva sa 4, nije prestupna (npr. 2001. nije prestupna) 35/33
Vežba 3 Napisati program koji za uneti niz sabira sve brojeve koji se nalaze na neparnim pozicijama u nizu, čija je vrednost manja od minimalne apsolutne vrednosti svih elemenata niza. 36/33
- Slides: 36