Tingimuste kontroll
Mitme tingimuse kontroll 1
Tingimuse kontrolli saab teha palju, palju huvitavamaks. Sageli ei taha ma kontrollida ainult ühte asja vaid mitut. Lisaks tahan ma, et arvuti vastavalt erinevatele tingimustele ka erinevalt käituks. Sellist asja saab teha IF-ELIF-ELSE kontruktsiooniga.
IF-ELIF-ELSE konstruktsioon
Selle konstruktsiooni selgitamiseks võtan appi ühe võimaliku jupi seiklusmängust. Mängud koosnevad pea alati paljudest erinevatest alamprogrammidest, mis teevad erinevaid asju. Üheks selliseks alamprogrammiks võib olla justnimelt mingi otsustuse kontroll. Vaatame seda lähemalt:
- Kõigepealt antakse mängijale teada, et ta on teelahkmel ja oma edasise tee valimiseks tuleb tal vajutada p, o või v tähte. Mängija valik salvestatakse muutujasse otsus. Samuti on kasutusel veel üks muutuja skoor, mis on võrdsustatud alguses nulliga. Seejärel hakkab toimuma otsustuse analüüs ehk kontroll.
- Kui otus on võrdne p-ga, täidetakse esimese if-lause plokk (plokk oli siis if-lause ja kooloni järel tulev TAANDATUD käskude loetelu)
Ole siin tähelepanelik, muutujate võrdlemisel peavad muutujad olema sama tüüpi. Kuna otsus on väärtustatud input() käsuga, siis on ta sõne tüüpi ja selle muutuja võrdlemiseks peab samuti kasutama sõnet ehk tähele "p" peab kindlasti jutumärgid ümber panema. - Kui esimene tingimus aga täidetud ei ole, siis minnakse kohe järgmise võtmesõna ELIF juurde ja kontrollitakse sealset tingimust. Kui ka see ei osutu tõeks, võetakse järgmine. Selliseid ELIF-e võid sa kirjutada üksteise alla nii palju kui soovid, kuid sageli osutub liiga paljude ELIF-de kasutamine mitteökonoomseks koodi kirjutamiseks. Kuidas selliseid olukordi vältida, sellest räägime aga mõnes järgmises peatükis.
- Eriline on viimane kontroll! Kui kõik eelmised tingimused on kontrollitud ja ükski ei vastanud tõele, siis on mõistlik lisada ELSE osa, mille järel ei tule ühtegi tingimuse kontrolli. See on kõikide muude juhtude jaoks (näiteks juhu jaoks, kus mängija on kirjutanud vale tähe vms.)
- Ning kõige viimaks täidetakse antud programmis skoori välja printimise rida, mis ei sõltu enam ühestki eelmisest if- või elif-lausest