sobota 24. mája 2014

Cykly WHILE-DO | REPEAT-UNTIL


  • charakterizujte príkazy cyklu s podmienkou v programe
  • definujte cyklus s podmienkou na začiatku
  • definujte cyklus s podmienkou na konci
  • vysvetlite rozdiel medzi REPEAT-UNTIL a WHILE-DO
  • vytvorte program podľa zadania




Cyklus s podmienkou na začiatku:  while – do 


  • while = podmienka 
  • do = príkaz


Pokiaľ podmienka platí (má hodnotu true), vykonáva sa prikaz. Inak sa pokračuje nasledujúcim príkazom. Prikaz tvorí telo cyklu. Ak chceme vykonať viac príkazov v tele cyklu, vytvoríme z nich  zložený príkaz –
uzavrieme ich medzi slová begin a end. Ak podmienka neplatí hneď po prvý krát (má hodnotu false), telo cyklu sa nevykoná ani raz.
 
Príklady:
1. while c>0 do c:=c div 10;  {číslo c sa zmenšuje vždy o poslednú cifru}

2. while a>b do begin
               a:=a-1;
               b:=b+1;
             end;          {číslo a sa dekrementuje a číslo b inkrementuje,
  pokiaľ hodnota a je väčšia ako b}

3. Q:=true;
while Q do begin
             readln(cislo);
             if cislo mod 7 = 0 then Q:=false;
           end;
  {cyklus skončí, ak načíta číslo deliteľné číslom 7


Cyklus s podmienkou na konci:  repeat - until 


repeat
príkaz_1;
príkaz_2;
príkaz_k
until podmienka;

Príkazy prikaz_1 až prikaz_k   sa budú opakovať, až kým sa nesplní  podmienka (nadobudne hodnotu  true), vtedy sa opakovanie skončí a pokračuje sa nasledujúcim príkazom. Prikaz_1 až prikaz_k  tvoria telo cyklu. Telo cyklu sa vykoná aspoň raz, aj  keď podmienka platí hneď po prvý krát (má hodnotu true).
 
Príklady (tie isté ako pri cykle while): 

1. repeat
   c:=c div 10
until c=0;               {číslo c sa zmenšuje vždy o poslednú cifru, až kým  
nemá žiadnu cifru}

2. repeat
   a:=a-1;
   b:=b+1;
until a<=b;              {číslo a sa dekrementuje a číslo b inkrementuje,
  ak hodnota a je menšia alebo rovná b, cyklus končí}

3. Q:=true;
repeat
  readln(cislo);
  if cislo mod 7 = 0 then Q:=false;
until not Q;
{cyklus skončí, ak načíta číslo deliteľné číslom 7}



Rozdiel medzi cyklami:  „while – do“  a  „repeat – until“



  • Cyklus while má podmienku na začiatku, repeat má podmienku na konci
  • Cyklus while vykonáva svoje telo, ak podmienka platí (má hodnotu true), cyklus repeat
  • Vykonáva svoje telo, ak ak podmienka neplatí (má hodnotu false).
  • Cyklus while sa nemusí vykonať ani raz, cyklus repeat sa určite vykoná aspoň raz.





Príklad program IF


Program na výpočet zvyšku pri delení dvoch prirodzených čísel


Cyklus s podmienkou na začiatku

var a,b,podiel,zvysok : integer;

Procedure PODIELZVYSOK(c,d:integer);
begin;
  if c > d then begin
  while d > c do
  d := d+b;
   podiel := podiel+1;
  end;
  zvysok := b-(d-c);
  writeln(a,' : ',b,' = ',podiel,' so zvyskom ',zvysok);
end;


Cyklus s podmienkou na konci

var a,b,podiel,zvysok : integer;

Procedure PODIELZVYSOK(c,d:integer);
begin;
  if c > d then begin
  repeat
   d := d+b;
   podiel := podiel+1;
  until d > c;
  end;
  zvysok := b-(d-c);
  writeln(a,' : ',b,' = ',podiel,' so zvyskom ',zvysok);
end;





Žiadne komentáre:

Zverejnenie komentára