3. diel - Small Basic - Podmienky
V minulom tutoriále o programovaní v jazyku Small Basic sme sa naučili používať premenné a vstup / výstup. Dnes sa zameriame na podmienky.
Program sa môže tzv. Vetviť, teda spúšťať rôzne svoje časti na základe hodnôt v premenných. Najjednoduchšie príklad je reakcia na nejakú akciu používateľa, aby náš program nerobil stále to isté, ale dal sa ovládať.
Príkaz If
Podmienky zapíšeme pomocou príkazov If a Endif. Podmienkou nižšie sa pýtame, či výraz 'a = 0' platí a ak áno, tak sa spustí kód, ktorý podmienka obsahuje.
a = 0 If a = 0 Then TextWindow.WriteLine("PRAVDA") Endif
V prvom riadku sa do 'a' dosadzuje '0', takže sa obsah podmienky vykoná a do konzoly sa vypíše reťazec "PRAVDA". Podmienku nesmieme zabudnúť ukončiť príkazom Endif.
Operátormi
V podmienke môžeme používať nasledujúce operátory:
= | rovná sa |
<> | nerovná sa |
> | väcší než |
< | menšie ako |
> = | väčšie, alebo rovné |
<= | menšie, alebo rovné |
Ďalej môžeme použiť príkaz Else, čím oddelíme v podmienke 2 bloky príkazov. Prvá sa spustí keď podmienka platí a druhý keď neplatí:
a = 0 b = 1 If a = 0 Then TextWindow.WriteLine("PRAVDA") Else TextWindow.WriteLine("NEPRAVDA") EndIf
Skladanie výrazov
Logické výrazy môžeme v podmienkach skladať pomocou operátorov AND a OR. Tie označujú "a zároveň" a "alebo".
a = 8; If a > 5 AND a < 13 Then TextWindow.WriteLine("V a je číslo od 5 do 13ti") EndIf
V ostatných programovacích jazykoch sa väčšinou AND zapisuje ako && a alebo ako ||.
Výraz môžeme negovať pomocou operátora NOT:
a = 8; If NOT a = 8 Then TextWindow.WriteLine("V a není osmička") EndIf
Sekvencie If ... ElseIf
Ak chceme reagovať na viaceré hodnoty jednej premennej, skrátime obvykle nasledujúci kód:
If promena = 1 Then EndiIf If promena = 2 Then EndIf
do tejto podoby pomocou príkazu ElseIf:
If promena = 1 Then ElseIf promena = 2 Then Endif
Príklady
Určenie veku
Vytvorme si jednoduchý príklad s tým, čo sme sa zatiaľ naučili. Necháme užívateľa zadať jeho vek a ten mu okomentuje.
TextWindow.Write("Zadejte svůj věk: ") vek = TextWindow.ReadNumber() If vek <= 4 And vek >= 0 Then TextWindow.WriteLine("Jsi malý a nic si nebudeš z tohoto období pamatovat.") ElseIf vek > 4 And vek <= 6 Then TextWindow.WriteLine("Chodíš do školky.") ElseIf vek > 6 And vek <= 15 Then TextWindow.WriteLine("Jsi někde mezi 1. až 9. třídou nebo chodíš na gymnázium.") ElseIf vek > 15 And vek <= 19 Then TextWindow.WriteLine("Chodíš na střední školu nebo na gymnázium.") ElseIf vek > 19 And vek <= 24 Then TextWindow.WriteLine("Morduješ se na vysoké škole.") ElseIf vek > 24 And vek <= 70 Then TextWindow.WriteLine("Umíráš touhou se vrátit do školky a nikdy nepracovat.") ElseIf vek > 70 And vek <= 90 Then TextWindow.WriteLine("Jsi v důchodu a máš už svá léta za sebou.") ElseIf vek > 90 And vek <= 110 Then TextWindow.WriteLine("Jsi rád že žiješ.") ElseIf vek > 110 Then TextWindow.WriteLine("Jsi čaroděj\nice. ") Else Textwindow.WriteLine("Ještě ses nenarodil. ") EndIf
Zadaní číslice
Podmienky si precvičme ešte rozpoznaním hodnoty zadané číslice.
TextWindow.Write("Zadej libovolnou číslici") i = TextWindow.Read() If i < 5 Then TextWindow.WriteLine("i < 5") ElseIf i > 5 Then TextWindow.WriteLine("i > 5") ElseIf i = 5 TextWindow.WriteLine("i = 5") Else TextWindow.WriteLine("Nezadal jsi číslici. ") EndIF
Goto
Goto je príkaz, ktorý by sme mali používať iba zo začiatku, keď ešte nevieme deklarovať cykly a funkcie. Je to vlastne skok do určitej časti programu, ukážme si to na jednoduchom príklade:
skok: TextWindow.WriteLine("Toto je nekonečný cyklus") Program.Delay(40) Goto skok
skok:
je tzv. návestí. To je nejaký bod v programe. Dvojbodka
dáva znamenie, že to nie je obyčajná premenná. Na druhom riadku je
normálne výstup a na treťom nová vec z triedy Program a to operácie Delay.
Tá zastaví program na určitý počet milisekúnd. No a na konci je príkaz
Goto, ktorý skočí späť na popisok skok:
a opakuje sa to takto
stále dokola. Použijeme to v našej kalkulačke.
Program
Rovno si môžeme popísať niektoré funkcie na triede Program, využijeme je skôr až neskôr.
- Program.End - Ukončí program.
- Program.Directory - Vráti cestu k priečinku s programom.
- Program.GetArgument (1) - Vracia 1. argument nášho programu (ak ho s nejakým spúšťame, napr. Keď napíšeme program.exe nejaky_argument).
- Program.ArgumenCount - Vracia počet zadaných argumentov.
- Program.Delay (1000) - Pozastaví vykonávanie programu na 1000 milisekúnd.
Menšie program na koniec
Vytvorme si taký jednoduchý príkazový riadok (má len dva príkazy ).
start: TextWindow.WriteLine("Command Line, all rights reserved. ") TextWindow.Write("Enter command: ") command = TextWindow.Read() If command = "cls" Or command = "clear" Then TextWindow.Clear() ElseIf command = "end" Or command = "exit" Then Program.End() Else TextWindow.WriteLine("'" + command + "' is not an internal or external command of the Command Line") EndIf Goto start
Nabudúce si ukážeme cykly a polia.