4. Vezérlési szerkezetek

4.1. A feltételes utasítás (if..then...else)

  • TRUE és FALSE logikai értékek

  • A logikai kifejezések és kiértékelésük

  • Az if...then utasítás blokk, az else mutátor ág. Működésük.

  • Az if...then...else if változat

  • A relációs operátorok és kiértékelésük (számok esetében)

  • A relációs operátorok és kiértékelésük (szöveg esetében)

  • Az and, or és not logikai operátorok

  • ListPicker komponens: az ElementsFromString, Selection és Text tulajdonságok

  • CheckBox komponens: a Checked tulajdonság

 

4.1.1. feladat

Készítsünk egy pizza-rendelő alkalmazást, amelyben ki lehet választani a megrendelendő pizzát a következőek közül:

  • Négy évszak (1100 Ft)

  • SonGoKu (1300 Ft)

  • Csirkés (1400 Ft)

  • Barbecue (1350 Ft)

  • Tenger gyümölcse (1500 Ft)

A pizzához rendelhetünk: 

  • extra feltétet +500 Ft-ért

  • kólát +600 Ft-ért.

 

Egyszerre több pizzát rendelhetünk, de az egyszerűség kedvéért csak egyfajtát. Ha plusz feltétet vagy kólát választunk, abból is annyit kapunk, ahány pizzát rendeltünk.

A megadott adatok alapján számítsa ki a program a fizetendő végösszeget. 

 

Bónusz feladat: legyen megadható a borravaló értéke %-ban és a végösszeghez a program adja hozzá annak Ft értékét.

 

Tipp: használjunk ListPicker-t a pizza kiválasztásához és checkbox-ot az extra feltét, illetve kóla rendeléshez való hozzáadásához.

download.png
 

4.1.2. feladat
 

Kérjünk be három nevet és írjuk ki őket ABC szerinti sorrendben.

download.png
 

4.2. A Notifier komponens

Nemvizuális komponens felugró dialógus ablakok megjelenítéséhez. A következő típusú dialógus ablakokat tud megjeleníteni:

  • ShowMessageDialog - egy címmel ellátott ablakban megjelenít egy üzenetet, majd vár arra, hogy a felhasználó egy gombra kattintson a folytatáshoz.

 
img017 - 4.2 - 1.png
img018 - 4.2 - 2.png
  • ShowChooseDialog - két lehetőség közül választási lehetőséget ad a felhasználónak.

img019 - 4.2 - 3.png
img020 - 4.2 - 4.png

Válasz felhasználása (ShowAlert - egy pár másodpercig megjelenő üzenet):

img021 - 4.2 - 5.png
  • ShowTextDialog - egysoros adatbevitel.

img022 - 4.2 - 6.png

Válasz felhasználása:

img023 - 4.2 - 7.png

4.2.1. feladat
 

Írjunk egy "telefonfeloldó" alkalmazást: kérjünk be egy PIN-kódot és ellenőrizzük le annak helyességét (='1234'). Helyes PIN-kód esetén jelenítsük meg a 'Telefonzár feloldva' szöveget, hibás jelszó esetén pedig a 'A megadott PIN-kód érvénytelen' szöveget. A jelszó beviteléhez használjuk a PasswordTextBox komponenst. A programban felhasználhatod az innét letöltött képeket:  lock és unlock.

download.png
 
 

4.2.2. feladat

 

Az előző feladatban megvalósított alkalmazást egészítsük ki úgy, hogy 3 sikertelen próbálkozás után írja ki, hogy 'A készülék le lett tiltva' és ne engedjünk újabb próbálkozást.

download.png
img024 - 4.2 - 8.png

4.3. A Clock komponens

Nemvizuális komponens a Sensors komponens-csoportban a dátum és idő kezeléséhez, segítségével lekérdezhetjük a készülék órájából az aktuális dátumot és időt, de időzítőként is funkcionál, melyel bizonyos időközönként megadott kód hajtható végre.

A legtöbb metódusa egy speciális értékkel dolgozik, amit instant-nak (pillanatnak) hívnak. Ez az érték egyaránt tartalmazza egy időpillanathoz tartozó dátumot és időt. 

Now függvény visszaadja az aktuális időhöz tartozó instant-ot. Ha van egy instantuk, azt összehasonlíthatjuk más instantokkal, illetve formázva megjeleníthetjük például címkékben.

Timer esemény a TimerInvertal tulajdonságban ezredmásodpercben megadott gyakorisággal fog bekövetkezni, az eseménykezelőben programozhatjuk le, hogy erre az eseményre az alkalmazásunknak hogyan kell reagálnia.

 

4.3.1. feladat
 

A 4.2.2 feladatban elkészített alkalmazást egészítsük ki egy Label komponensel, ami az aktuális óra-perc-másodpercet mutatja. Az érték frissüljön másodpercenként. Opcionálisan egy ketyegő hangot is hozzáadhatunk.

download.png
 

4.4. A while ciklus

A ciklus azt jelenti, hogy ugyanazt a tevékenységet többször hajtjuk végre. A számítógépek különösen jók ebben. A programunkban ez a tevékenység lehet egy vagy több programblokk. A while ciklusban a megadott blokkok mindaddig fognak ismétlődően végrehajtódni, amíg a kiértékelendő logikai kifejezés igaz marad. Ha a feltétel hamissá válik, a ciklus véget ér és a program végrehajtása a while ciklus után következő blokkal folytatódik. Ha a feltétel a ciklus belsejében nem változik, akkor végtelen ciklust kapunk. Ez kerülendő, mert a program lefagyását jelenti. Ha a feltétel mindig hamis, akkor a ciklusban szereplő utasítások egyszer sem fognak lefutni.

 

4.4.1. feladat
 

Készítsünk egy alkalmazást, amely egy mezőben bekér egy egész számot és összeadja az összes számot nulla és a megadott szám között. Pl. ha a megadott szám 4, akkor a válaszként megjelenítendő szám a 10 lesz (1 + 2 + 3 + 4). Használjunk while ciklust. Nagyobb számok esetén sokáig eltarthat a válasz kiszámolása, a válaszidőből következtethetünk a telefonunk teljeítményére.

download.png
 

 4.4.2. feladat
 

Készítsünk egy alkalmazást, amely egy mezőben bekér egy egész számot és kiszámolja annak a faktoriálját. Ha nem tudod, hogy mi a faktoriál, akkor nézz utána.

download.png
 

4.5. A for ciklus

A while ciklusban egy feltétel határozza meg, hogy hányszor fognak végrehajtódni a ciklus magjában szereplő utasítások. Általában nem tudjuk előre megmondani, hogy ez hányszor fog megtörténni. Ezzel szemben a for ciklusban nem feltétel vezérli a végrehajtást, hanem egy számintervallumot adunk meg, amely minden elemén végigmegy a ciklus (pl. 1-10, 5-50 kettesével, stb). A for ciklust előírt lépésszámú ciklusnak is szokták hívni.