Király Gyula: Programozás Quick-Basic nyelven
|
13. lecke CIKLUSOK-3.
C., Tesztelős ciklusok A tesztelős ciklusokat akkor alkalmazzuk, ha előre nem tudjuk megmondani, hányszor kell azokat lefuttatni. Ezek a ciklusok ugyanis addig futnak, amíg valamilyen feltétel igaz (vagy nem igaz). A futáshoz szükséges feltételek meglétét ezért minden futás előtt vagy után meg kell vizsgálni. Ha a ciklusmag előtt tesztelünk, akkor elöltesztelős, ha a ciklusmag után, akkor hátultesztelős ciklusról beszélünk.
1. ELÖLTESZTELŐS CIKLUSOK A ciklus formája: Ciklus amíg a feltétel IGAZ Ciklusmag Ciklus vége
Az utasítás formája: DO WHILE feltétel Utasítások (ciklusmag) LOOP
A ciklusmagban szereplő utasítások addig hajtódnak végre, amíg a feltétel igaz (hamissá nem válik).
A ciklust működtethetjük addig is, amíg a kezdetben megadott feltétel hamis. A ciklus formája: Ciklus amíg a feltétel HAMIS Ciklusmag Ciklus vége
Az utasítás formája: DO UNTIL feltétel Utasítások (ciklusmag) LOOP
A ciklusmagban szereplő utasítások addig hajtódnak végre, amíg a feltétel igazzá nem válik.
2. HÁTULTESZTELŐS CIKLUSOK A ciklus formája: Ciklus Ciklusmag Amíg a feltétel IGAZ Ciklus vége
Az utasítás formája: DO Utasítások (ciklusmag) LOOP WHILE feltétel
A ciklusmag addig hajtódik végre, amíg a feltétel igaz (hamissá nem válik).
A másik módszer: A ciklus formája: Ciklus Ciklusmag Amíg a feltétel HAMIS Ciklus vége
Az utasítás formája: DO Utasítások (ciklusmag) LOOP UNTIL
A ciklusmag addig hajtódik végre, amíg a feltétel hamis (igazzá nem válik).
1. feladat Írassuk ki a számokat 20-tól 40-ig a képernyő bal oldalára! Megoldás:Ez egy elöltesztelős ciklus UNTIL alkalmazásával. A 2. sorban megadtam a ciklusváltozó kezdőértékét. A 3. sorban a hamis feltételt: i nagyobb mint 40. Ezután kiíratom a ciklusváltozó értékét, majd hozzáadok 1-et. A LOOP hatásával a vezérlés újra a 3. sorra kerül, ahol a program megvizsgálja, hogy az 1-gyel megnövelt érték nagyobb-e 40-nél. Ha nem nagyobb, vagyis a feltétel hamis, újra végrehajtódik a ciklus. A folyamat addig ismétlődik, míg az i egyenlő lesz 41-gyel, ekkor az i >40 feltétel igaz lesz, ebben az esetben már a program nem hajtja végre a ciklusmag utasítását.
2. feladat Oldjuk meg az előbbi problémát WHILE alkalmazásával! Megoldás:A program egészen addig működik, amíg igaz az, hogy i értéke kisebb vagy egyenlő 40-nel. Ha a ciklusváltozó értéke meghaladja a 40-et, vagyis a feltétel hamissá válik, a program befejeződik.
3. feladat Kérjünk be két tetszőleges számot, adjuk össze őket, majd a végén kérdezzük meg, legyen-e vége! Megoldás hátultesztelős ciklussal: Az egész műveletet egy ciklusba foglaltam, amely csak akkor fejeződik be, ha az utolsó kérdésre nem "i" vagy "I" a válasz. Amíg ugyanis "i" a válasz, addig a LOOP WHILE értelmében a ciklus újra és újra végrehajtódik.
4. feladat Készítsük el a következő körgyűrűt ábrázoló grafikát!Megoldás: Grafikus üzemmódban megadom a kör sugarának r kezdőértékét. Ezután következik egy ciklus, amelyben az r értékét eggyel növelve addig rajzoltatok köröket, míg r értéke nagyobb nem lesz 100-nál. A megoldás hátultesztelő ciklus, addig, míg a megadott feltétel r > 100 hamis.
5. feladat Másodperc-számláló készítése. Készítsünk olyan programot, amely egy percen keresztül 0-tól 60-ig kiírja a számokat a képernyő közepére, pirossal! Megoldás:A program a képernyő 12-ik sorába, a 36. oszlopba számokat ír ki 1 másodperces eltéréssel, egészen addig, amíg igaz az a feltétel, hogy a mp-ek száma kevesebb 61-nél. A SLEEP 1 utasítás alkalmas arra, hogy a program 1 másodpercre felfüggessze futását, így a számok 1 másodperces időközönként követik egymást.
GYAKORLÓ FELADATOK: 1. Írasd ki a számokat 50-től 100-ig tesztelős ciklus segítségével! 2. Rajzolj a képernyőre piros körlapot, amelynek közepén 40 pixeles üres rész van, és a sugara 150 pixel! 3. Készítsd el a másodperc számlálót úgy, hogy 60-tól 0-ig számoljon!
|