App Inventor II - Pogojni stavek

App Inventor II - Pogojni stavek

Avtor: Milan Brumec

Učni cilji: Poznam osnovne programske konstrukte in jih smiselno uporabljam: prireditveni stavek in spremenljivke, Odločitveni (pogojni) stavek, Seznam, Zanka, Funkcija (procedura)

Uvod

Računalniki, celo majhni, kot je telefon lahko opravijo milijon operacij v eni sami sekundi. Še več, lahko izvajajo tudi odločitve, na podlagi podatkov iz pomnilnika in logike, ki jo določi programer. Veliko ljudi meni, da je sposobnost odločanja kakor umetna inteligenca, vsekakor pa je to zelo pomemben del pri sestavljanju dobre, zanimive aplikacije! V tem poglavju si bomo pogledali kako v aplikacijo vgradimo logiko odločanja. Nekatere funkcije se izvajajo samo pod določenimi pogoji. Na primer; v igri lahko program preveri ali je tekmovalec že dosegel 100 točk ali ne in se na podlagi tega odloči kako se bo igra nadaljevala. Torej aplikacija lahko postavlja takšna vprašanja in nato glede na odgovor ustrezno odloči.

(slika 18_1n.png)
Slika 1: Nadzornik dogodkov ki testira in ustrezno veji program

Poglejte diagram na sliki 1. Ko se zgodi Dogodek 1 , se izvede funkcija (blok) A. Nato se izvede test nekega pogoja. Če je pogoj izpolnjen (True) se izvede B1. Če ni izpolnjen (False) pa se izvede B2. V obeh primerih, se izvede še zaključni blok C. Ker so odločitveni diagrami kot je ta z enim pogojem nekaj podobnega kot drevo, rečemo da se program veji na eno ali drugo stran odvisno od rezultata. Če je pogoj izpolnjen (True) se izvede veja B1…

Pogojni stavek z if in else if bloki

Za pogojni stavek if in else if ima App Inventor na voljo blok s tem imenom, ki ga najdemo v predalu Control pod Blocks. Blok lahko razširite z poljubno vejami else in else if s klikom na modro ikono prikazano na sliki 2.

(slika 18_2.png)
Slika 2: If in else if pogojni blok

Na vtičnico bloka if in else if lahko priključimo katerikoli logični izraz. Logični izraz je matematična enačba, ki vrne rezultat pravilno (True) ali nepravilno (False).

Bloki relacij in operatorjev

Izraz testira vrednosti spremenljivk in lastnosti s pomočjo relacij in logičnih operatorjev kot so tisti prikazani na sliki 3.

(slika 18_3.png)
Slika 3: Bloki relacij in operatorjev za izvedbo testov

Blok ki ga daš v vtičnico then se izvrši samo če je pogoj izpolnjen (True). Če pogoj ni izpolnjen (False) se program preseli na bloke ki sledijo. Kot primer si lahko pogledamo izraz za preverjanje števila točk nekega igralca. Glej sliko 4:

(slika 18_4.png)
Slika 4: Logični izraz za testiranje vrednosti spremenljivke-točk

V našem primeru se bo zvočna datoteka predvajala, če bo število točk večje od 100. Če število točk še ni doseženo bo program nadaljeval na naslednjem bloku. Če bi želeli da se v primeru neizpolnjenega pogoja zgodi določen dogodek lahko dodamo blok else ali else if.

Programiranje izbir

Zamisli si aplikacijo, ki ti bo, v primeru da ti je dolg čas, na pritisk tipke na telefonu naključno izbrala številko prijatelja. Na sliki 5 je za generiranje naključnega števila uporabljen blok random integer ter if else blok za izbiro telefonske številke na podlagi naključnega števila.

(slika 18_5n.png)
Slika 5: Ta if else blok kliče eno od dveh telefonskih številk glede na generirano naključno število

V tem primeru se naključno število 1 ali 2 z enako verjetnostjo pojavitve shrani pod spremenljivko RandomNum. Po prireditvi vrednosti v RandomNum, blok primerja to vrednost z vrednostjo 1. Če je vrednost RandomNum enaka 1, potem aplikacija nadaljuje v prvi veji (then) in nastavi za klic telefonsko številko 111-1111. Če vrednost RandomNum ni 1, potem je test negativen in v tem primeru program nadaljuje v drugi veji (else) in nastavi za klic telefonsko številko 222-2222. Program v vsakem primeru kliče nastavljeno številko, saj je blok MakePhoneCall pod if-else blokom.

Gnezdenje pogojnih stavkov

Velikokrat moramo izbirati med več kot samo dvema možnostma. Morda boste želeli naključno izbirati med več kot dvema prijateljema. Če želite to narediti v našem programu lahko namesto vtičnice else v blok vstavimo else if kot kaže primer na sliki 6.

(slika 18_6.png)
Slika 6: if, else if in else omogočajo tri možne veje

Če je prvi test pozitiven se izvede prva veja (then) in kliče telefonsko številko 111-1111. Če je prvi test negativen se izvede veja else-if in takoj izvede naslednji test. Če je torej bil prvi test (RandomNum=1) negativen in naslednji (RandomNum=2) pozitiven, se izvede druga veja in kliče številko 222-2222. Če sta oba testa negativna, se izvede zadnja veja else in kliče telefonsko številko 333-3333. Ta sprememba dela ker smo povečali nabor naključnih števil do 3, torej so zdaj možna naključna števila 1, 2, 3 z enako verjetnostjo pojavitve. Dodajamo lahko poljubno veliko else-if vej. Prav tako lahko pogojne stavke gnezdimo enega v drugega. Če teste vstavljamo znotraj vej drugega pogojnega stavka pravimo da so gnezdeni. Gnezdimo lahko tudi druge kontrolne stavke kot n.pr for zanke.

0%
0%