You are on page 1of 2

Podmienený cyklus s podmienkou na konci

Sú situácie, v ktorých potrebujeme niekoľkokrát zopakovať nejakú činnosť pričom


dopredu nevieme koľkokrát a nie je v nich výhodné použiť cyklus while, napr. obedujete
dukátové buchtičky, môžete ich zjesť koľko Vám hrdlo ráči. Najprv musíte niečo zjesť, aby ste
mohli posúdiť, či chcete jesť ešte ďalej alebo ste dojedli. Pre takéto situácie má programovací
jazyk Pascal pripravený cyklus repeat-until.

Troška teórie:

Používame vtedy, ak nevieme dopredu koľkokrát treba vykonať telo cyklu.

repeat telo_cyklu until výraz;

Fungovanie: Najprv sa vykoná telo cyklu (jeden príkaz alebo blok príkazov) a potom sa
vyhodnotí pravdivosť logického výrazu. Ak je tento výraz nepravdivý, pokračuje sa v cykle, ak
je pravdivý, pokračuje sa za telom cyklu. Minimálny počet opakovaní cyklu je 1.

Zbierame skúsenosti:
 Vytvoríme v Lazaruse aplikáciu, ktorej riešenie sme si ukázali pomocou cyklu while
a ktorá načíta prirodzené číslo a vypíše jeho faktoriál.
 Komentár k riešeniu: Máme riešiť rovnakú úlohu ako v prvom príklade? Prečo? Nuž
preto, že vždy môžeme nahradiť cyklus while cyklom repeat-until a naopak, cyklus
repeat-until nahradiť cyklom while. Záleží len od nás, čo nám viacej vyhovuje a ktorý
z týchto cyklov nám umožní kratší zápis riešenia úlohy. Musíme si však uvedomiť
zásadné rozdiely medzi nimi: Cyklus while sa ukončí, ak podmienka cyklu nie je
pravdivá (kým platí, POKRAČUJEME) a viacej príkazov tela cyklu musíme uzavrieť do
bloku (begin-end). Cyklus repeat-until sa ukončí ak je podmienka cyklu pravdivá
(keď platí, KONČÍME) a viacej príkazov tela cyklu nie je potrebné uzatvárať do
bloku, lebo kľúčové slová cyklu (repeat, until) uzatvárajú telo cyklu.
 Opäť si zhrňme dva najpodstatnejšie fakty: čo máme opakovať (v:=v*i; i:=i+1;)
a dokedy to máme opakovať (kým je i<=n, ale pre cyklus repeat-until zapisujeme
podmienku opačne, teda keď platí, končíme cyklus, takže podmienka ukončenia cyklu
bude i>n). Zdrojový text programu procedúry pre tlačidlo podľa popísaného postupu
vyzerá takto:
procedure TForm1.Button1Click(Sender: TObject);
var n,v,i:integer;
begin
n:=StrToInt(Edit1.Text);
v:=1;
i:=2;
repeat
v:=v*i;
i:=i+1;
until i>n;
Label2.Caption:=IntToStr(n)+'! = '+IntToStr(v);
end.

Precvičujeme, čo sme sa naučili:


1. Zostav aplikáciu, ktorá načíta čas v sekundách a vypíše, koľko je to minút a zvyšných
sekúnd. Delenie realizujte operáciou odčítania.
2. Zostav aplikáciu, ktorá načíta celé číslo a vypíše ciferný súčet (súčet hodnôt cifier,
z ktorých pozostáva zadané číslo).
3. Zostav aplikáciu, ktorá načíta celé číslo a vypíše ho v binárnej sústave v obrátenom
poradí číslic (dokážeme ho správne vypísať?).

Zisti, či to už vieš:
1. Aká je syntax (zápis) príkazu podmieneného cyklu s podmienkou ukončenia na konci
v Pascale?
2. Ako funguje vykonávanie podmieneného cyklu s podmienkou ukončenia na konci
v Pascale?
3. Minimálne koľkokrát sa vykoná príkaz podmieneného cyklu s podmienkou ukončenia
na konci?

You might also like