Király Gyula: Programozás Quick-Basic nyelven
|
8. lecke ELÁGAZÁS A PROGRAMBAN
1. feladat Készítsünk programot, amely bekéri egy kocka élének hosszát, majd kiszámítja felszínét és térfogatát, végül kiírja az eredményt! Megoldás: A program bekéri az a változó értékét, kiszámítja a kocka felszínét, melyet az f változó tárol, kiszámítja a térfogatot, melyet a V változó tárol. A számolt adatokat végül zöld színnel kiíratjuk.
Programunk használata azonban kényelmetlen, hiszen a felszín és a térfogat kijelzése után leáll, vissza kell térni a programszerkesztő képernyőhöz, és újabb számításhoz elindítani. Sokkal ésszerűbb lenne, ha a program a végén megkérdezné, hogy akarunk-e tovább számolni, s ha igen, újra kezdje el a következő adat bekérését, és csak akkor álljon le, ha a kilépést választjuk. Ezt a problémát egy kérdéssel oldjuk meg, amelyre INPUT-tal várunk választ. A bejövő választ elemezzük, és a leütött billentyű fogja meghatározni, milyen irányba folytatódjon a program. A beérkező válasz elemzésének eszköze az IF…THEN szerkezetű utasítás.
Az utasítás formája: IF feltétel THEN tevékenység(HA ez van AKKOR tedd ezt)
Egy INPUT-tal megkérdezzük a következőt: INPUT „Akarsz újra számolni? (I/N)”, c$ A kérdés után zárójelben megadjuk, hogy milyen billentyű lenyomása jelenti a választ: az „igen” az I, a „nem” a N billentyű. A beérkező választást a c$ karakteres típusú változó tárolja majd. Elemezzük a c$ változó tartalmát! · Ha a változó tartalma = „I”, akkor kezdd elölről a programot. Ehhez egy új utasítást kell megtanulnunk. Ez a GOTO (menj oda).
Az utasítás formája: GOTO címke (UGRÁS megadott helyre)
A programban ezt a következő sorral írjuk le: IF c$ = ”I” OR c$ = „i” THEN GOTO 1 (Ha c$ tartalma = „I”, akkor menj az 1 jelű címkéhez. A kis és a nagy I karakter megadása azt jelenti, hogy a program bármelyiket elfogadja.) Ahhoz, hogy az utasítás működjön, el kell helyeznünk program első sorában egy 1-es jelet (címkét), hogy kijelöljük az ugrás célhelyét. Tegyünk egy egyest az első sor képernyőtörlése elé! 1 CLS· Ha a c$ változó tartalma = „N”, akkor legyen vége a programnak. Ezt a következő sorral írhatjuk le: IF c$ = „N” OR c$ = „n” THEN END
2. feladat
Egészítsük ki a választási lehetőséggel és a címkével előző programunkat! Az áttekinthetőség érdekében az 1-es címke után TAB-ot ütöttem, és minden sor elején is, így a címke jól látható. Ha lefuttatjuk a programot, az „I” billentyű lenyomására valóban újra indul, az „N” billentyű megnyomásával megáll. Azonban ha „N” helyett bármi más billentyűt megnyomunk, akkor is befejeződik a program futása. Miért? A program a következőképpen működik: az INPUT után következő sorban megadott karakterrel összehasonlítja a beütött karaktert. Ha egyező, végrehajtja a GOTO 1 utasítást. Ha nem egyezik meg, átlép a következő sorba, ott is elvégzi az összehasonlítást. Ha most egyezik (vagyis ha „N”), akkor véget ér a program. Ha ebben a sorban sem találja meg a beütött billentyűt (tehát ha nem I-t vagy N-t ütöttünk), átlép a következő sorba. Ez azonban nincs, tehát a program futása véget ér.
3. feladat Egészítsük ki programunkat úgy, hogyha nem „I” és nem „N” billentyűt ütünk, akkor ne lépjen ki, hanem ismételje meg a kérdést! Megoldás: Láttuk, hogyha a c$ értéke nem „I” és nem „N”, a program a következő sorba lép. Ha innen visszaküldjük abba a sorba, ahol az INPUT-ot elhelyeztük, minden más billentyű hatására újra ahhoz a kérdéshez jutunk, hogy „Akarsz tovább számolni? (I/N)”, tehát a program csak az „I” és „N” választást fogadja el. Ehhez a megfelelő sor elé egy 2-es számmal megjelöljük a visszaugrás helyét, a program utolsó sorába pedig beírjuk a GOTO 2parancsot. Végleges programunk ezek után már tökéletesen működik.
GYAKORLÓ FELADATOK 1. Egészítsd ki a „KOCKA” című programot hanggal! Az eredmény kiírása után 5, eltérő hangmagasságú jelzést adjon a program! 2. Készítsd el a „KOCKA” című program alapján a „TÉGLATEST” című programot, amely bekéri a téglatest 3 különböző élének hosszát, kiszámolja, majd kiírja a téglatest felszínét és térfogatát!
|