Uvod u programiranje matematika V predavanje Vesna Velikovi

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

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

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

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.

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

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

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 <naredba 1> ; <naredba 2> ; . . . <naredba. N> end

Izvršenje WHILE naredbe Naredba u petlji se izvršava sve dok je ispunjen uslov. •

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:

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

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

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 : =

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

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

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. x 0

Iteracija • Izračunati koren jednačine x – 10 * ln(x) = 0. x 0 biramo proizvoljno x 1 : = 10 * ln(x 0); x 2 : = 10 * ln(x 1); . . . 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 (x 0); x : = 10 * ln(x 0); i : = 1;

read (x 0); x : = 10 * ln(x 0); i : = 1; while (i <= k) and (abs(x-x 0) >= eps) do begin x 0 : = x; x : = 10 * ln(x 0); i : = i + 1 end

Iteracija • Izračunati sin(x) sa zadatom tačnošću eps.

Iteracija • Izračunati sin(x) sa zadatom tačnošću eps.

U ovom slučaju tačnost znači

U ovom slučaju tačnost znači

S : = 0; n : = 0; a : = x; while abs(a)

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.

Domaći zadatak 8 • Izračunati cos(x) sa zadatom tačnošću eps.

Rad sa fajlovima type fajl = file of real; var n, i : integer;

Rad sa fajlovima type fajl = file of real; var n, i : integer; broj : real; f : fajl;

Čitanje brojeva iz fajla assign (f, 'f. dat'); reset (f); n : = 0;

Čitanje brojeva iz fajla assign (f, 'f. dat'); reset (f); n : = 0; while not eof (f) do begin 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

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