Predavanja i vežbe iz računarstva i informatike za učenike gimnazije

Računarstvo i informatika za učenike gimnazije

1. Razred

2. Razred

3. Razred

4. Razred

 

 

While naredba

 


 

Kao što for..do ciklus koristimo za realizaciju cikličkih algoritama tako i While..do ciklus koristimo za realizaciju cikličkih algoritama u Pascal-u, ali samo onda kada određeni algoritam ne možemo realizovati pomoću for naredbe.

Glavna prednost for naredbe u odnosu na while je ta što se deo programa napisan pomoću te naredbe izvršava brže nego kada bi bio napisan pomoću while naredbe. S druge strane već nam je poznato da for naredba ima svoja bitna ograničenja a to su : 1. brojačka promenljiva ne sme biti realnog tipa i 2. pre ulaska u ciklus početna i krajnja vrednost moraju biti definisane. Dakle, kada rešavanje problema zahteva brojačku promenljivu realnog tipa ili kada granice brojačke promenljive nisu poznate već zavise od rezultata koji naknadno program izračunava, koristićemo while..do ciklus. (kasnije ćemo videti da umesto while..do ciklusa možemo koristiti i Repeat.. Until ciklus)

U Pascal-u while..do ciklus definisan je na sledeći način : while L do N; gde je L logički uslov, a N naredba ili češće blok naredba (više naredbi ograničenih sa begin i end)


 

 

Slika 1. sintaksni dijagram za while..do naredbu

Slika 2. Algoritamski zapis za while..do ciklus 


Ciklus se izvršava na sledeći način: prvo se ispituje uslov L, ukoliko je tačan (true) program nastavlja sa izvršavanjem naredbe N i ponovo se vraća na ispitivanje uslova L. Ovakav ciklus se ponavlja sve dok je L=true. Kada je uslov L netačan program nastavlja sa izvršavanjem ostalih naredbi koje su ispod while naredbe.

While..do ciklus spada u cikluse sa pred uslovom pa je moguće da se naredba N (telo petlje) ne izvrši ni jedanput. Npr. rezultat poređenja 2>5 je uvek false ili x>5 za x=2 takođe vraća false, u slučaju da su ovakvi logički uslovu u while naredbi, naredba N ne bi se izvršila ni jedanput. 


Primer 1.

NP koji ispisuje tabelu vrednosti f-je tg(x) za x pripada [1,10] sa korakom 0.5.


Program tgWhile;
 Var x,y: real;
Begin
 x:=1.0
 while (x<=10.0) do 
  begin
   y:= sin (x) / cos (x);
   write (x:10:1, y:10:5);
   x:=x+0.5;
  end;
End.
  

Primer 2. 

NP za približno računanje sume:
S= 1 –  x / 1!  + x^2 / 2! - ... + (-1)^n * (x^n) / n! + ...
Sumirati do člana (uključujući i njega) koji je po apsolutnoj vrednosti manji od zadatog broja epsilon.

Program suma;
Var 
    x, a, s, eps : real;
    i: integer;
Begin
  write (‘Unesite argument x-->’) ; readln (x);
  write (‘unesite tacnost racunanja eps’); readln (eps);
  s:=0;
  i:=1;
  a:=1.0;
  while (abs (a)>= eps) do 
    begin
     s:=s+a;
     a:=-a * x/i;
     i:=i+1;
    end;
  writeln (‘s=’, s:10:2); 

End.


Za vežbu napisati algoritme za gornje primere.

 



 

 

© 2009 Dragoljub Perišić 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

©2017 Dragoljub Perišić