• 220 likes • 335 Views
Uvod u programiranje - matematika – V predavanj e. Vesna Veličković vesna@pmf.ni.ac.rs. Tok izvršenja programa. Upravljačke strukture S ekvenca G rananje P etlje M oguće je proizvoljno kombinovanje. Petlje. Naredbe u petlji se izvršavaju nula ili više puta.
E N D
Uvod u programiranje- matematika –V predavanje Vesna Veličković vesna@pmf.ni.ac.rs
Tok izvršenja programa Upravljačke strukture • Sekvenca • Grananje • Petlje Moguće je proizvoljno kombinovanje.
Petlje Naredbe u petlji se izvršavaju nula ili više puta. U Pascal-u postoje tri naredbe koje realizuju petlje (cikluse): • For • While • Repeat
Izbor naredbe za petlju • Ako znamo tačan broj prolazaka kroz petlju, biramo FOR. • Ako ne znamo tačan broj prolazaka kroz petlju, pitamo se da li se kroz petlju mora proći bar jedanput. • Ako se kroz petlju mora proći bar jedanput, biramo REPEAT. • Ako se kroz petlju ne mora proći ni jedanput, biramo WHILE.
WHILE petlja while <uslov> do<naredba> Uslov je logički izraz. Primenjuje se kada ne znamo broj prolazaka kroz petlju, čak i kada nismo sigurni da se kroz petlju uopšte treba proći. U tom slučaju izlazak iz petlje mora biti definisan nekim uslovom.
Složena naredba u WHILE • Ako je unutar while naredbe potrebno napisati više od jedne naredbe, stavljamo ih u složenu naredbu. while <uslov>do begin <naredba1> ; <naredba2> ; ... <naredbaN> end
Izvršenje WHILE naredbe Naredba u petlji se izvršava sve dok je ispunjen uslov. • Prvo se izračuna vrednost uslova. • Ako je ta vrednost TRUE, izvršava se naredba u petlji. Zatim se ponovo ispituje uslov. • Ako je je ta vrednost FALSE, izlazi se iz petlje. Napomena: Sa while naredbom možemo napraviti beskonačnu petlju!
Beskonačna petlja k := 1; while k < 10 do writeln (k); Izvršenje: K se postavi na 1. Ispita se uslov k < 10. Kako je k=1<10, uslov je zadovoljen i izvršava se naredba u petlji (odštamta se k=1). Ponovo se ispituje uslov. I dalje je k=1<10, pa se ponovo štampa k=1. Ponovo se ispituje uslov... Na ovaj način smo napravili beskonačnu petlju.
Ispravan primer Naredba u petlji mora da menja uslov! k := 1; while k < 10 do begin writeln (k); k := k+1; end
Kada se ne ulazi u petlju Uslov u while naredbi se ispituje pre nego što se izvrši naredba u petlji. Može se desiti da uslov odmah na početku bude netačan, pa se onda u petlju uopšte ne ulazi. k := 1; while k < 0 do begin writeln (k); k := k+1; end
FOR i WHILE for i:=1 to 10 do writeln (i) i := 1; while i<=10 do begin writeln (i); i := i + 1; end While je najopštija naredba petlje. Sve što se može uraditi sa for, može se uraditi i sa while.
FOR i WHILE • Nekada je while zgodnija, čak i ako znamo tačan broj prolazaka kroz petlju. • Odštampati sve parne brojeve do n. for i:=1 to n div 2 do writeln (2*i) i := 2; while i<=n do begin writeln (i); i := i + 2; end
Akumuliranje grešaka • Odštampati f(x) za x od m do n sa korakom 1/3 x := m; while x <= n do begin f := <računaj f(x)>; writeln (f); x := x + 1/3 end
Iteracija • Izračunati koren jednačine x – 10 * ln(x) = 0. x0 biramo proizvoljno x1 := 10 * ln(x0); x2 := 10 * ln(x1); ... Postupak prekidamo kada se dostigne tačnost eps, odnosno kada bude |xn – xn-1| < eps. Ako se postupak ne završi za k koraka, pretpostavljamo da postupak divergira, pa ga prekidamo.
read (x0); x := 10 * ln(x0); i := 1; while (i <= k) and (abs(x-x0) >= eps) do begin x0 := x; x := 10 * ln(x0); i := i + 1 end
Iteracija • Izračunati sin(x) sa zadatom tačnošću eps.
S := 0; n := 0; a := x; while abs(a) >= eps do begin S := S + a; a := - sqr(x)*a / ((2*n+3)*(2*n+2)); n := n+1 end
Domaći zadatak 8 • Izračunati cos(x) sa zadatom tačnošću eps.
Rad sa fajlovima type fajl = fileofreal; var n, i : integer; broj : real; f : fajl;
Čitanje brojeva iz fajla assign (f, 'f.dat');reset (f); n := 0; whilenot eof (f) dobegin n := n + 1; read (f, broj); { radimo nešto sa brojem } end; close (f);
Upisivanje brojeva u fajl assign (f, 'f.dat'); rewrite (f); for i:=1 to n do begin { izračunavanje broja } write (f, broj); end; close (f);