Programozás 1 (Pascal)
9
A REPEAT..UNTIL ciklus
9.1 A REPEAT ... UNTIL (hátultesztelős
ciklus)
A while..do
ciklusnál a számítógép először megvizsgálta a feltételt és csak utána
hajtotta végre a ciklusban levő parancsokat (amennyiben a feltétel igaz
volt). Ha a feltétel mindjárt az első vizsgálatnál hamis volt, akkor a
ciklusban levő utasításokat egyszer sem hajtotta végre.
A repeat..until
ciklusnál a számítógép először végrehajtja a ciklusban levő
parancsokat (repeat..until közötti részt), majd utána vizsgálja meg a feltételt.
Ha a feltétel igaz, kilép a ciklusból. Ha a feltétel hamis, megismétli ismét
a ciklusban levő parancsokat majd ismét megvizsgálja a feltételt. Ennél a
ciklusnál tehát egyszer mindenképpen lefutnak a ciklusban levő parancsok.
A repeat..until
ciklusból a számítógép a while..do ciklussal ellentétben akkor
lép ki, ha a feltétel igaz (a while..do ciklusnál akkor lépett ki, ha
a feltétel hamis volt).
A ciklus
szerkezete:
repeat
parancs1;
parancs2;
...
parancsN;
until feltétel;
Magyarul:
ismételd a ciklusban levő parancsokat, amíg a feltétel nem lesz igaz (tehát
amíg a feltétel hamis).
9.2 Véletlen
számok generálása
A random(n)
funkció egy véletlen számot ad vissza a <0,n-1> intervallumból.
Például:.
a := random(7);
kigenerál egy egész számot, melynek értéke 0-tól 6-ig lehet
a := 3 + random(10);
kigenerál egy egész számot, melynek értéke 3-tól 12-ig lehet
A véletlenszám generátor a program indítása után
mindig ugyanonnan kezdi a számok generálását. A programunk elején ezért
mindig inicializáljuk a randomize; paranccsal (ezt a parancsot úgy
foghatjuk fel, mintha megkeverné a számokat). A randomize; parancsot elég
csak egyszer, a program legelején megadnunk, mielőtt használjuk a random()
funkciót.
Feladat:
A számítógép véletlenszerűen válasszon (gondoljon) egy számot 1-től
5-ig. Kérdezze meg a felhasználótól melyik ez a szám. A felhasználó
addig találgathat, amíg nem találja el ezt a számot. A számítógép csak
annyit írjon neki ki: "eltaláltad, ez az a szám", vagy
"sajnos nem ez az a szám".
Megoldás:
A programunk a következő képen néz ki:
program
Pelda24; var a,b:integer; begin randomize;
{
megkeveri a szamokat } a:=random(5)+1;
{
kigeneral egy egesz szamot 1-tol 5-ig }
repeat write('Melyik szamra gondoltam? '); readln(b); if a=b then writeln('Eltalaltad, ez az a szam!') else
writeln('Sajnos nem ez az a szam.'); until a=b; writeln('Nyomd meg az ENTER billentyut.'); readln;
{ a
szamitogep var az ENTER megnyomasara } end.
|