- 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