Lekce 3 - Small Basic - Podmínky
V minulém tutoriálu o programování v jazyce Small Basic jsme se naučili používat proměnné a vstup/výstup. Dnes se zaměříme na podmínky.
Program se může tzv. větvit, tedy spouštět různé své části na základě hodnot v proměnných. Nejjednodušší příklad je reakce na nějakou akci uživatele, aby náš program nedělal stále to samé, ale dal se ovládat.
Příkaz If
Podmínky zapíšeme pomocí příkazů If a Endif. Podmínkou níže se ptáme, jestli výraz 'a = 0' platí a pokud ano, tak se spustí kód, který podmínka obsahuje.
a = 0 If a = 0 Then TextWindow.WriteLine("PRAVDA") Endif
V prvním řádku se do 'a' dosazuje '0', takže se obsah podmínky provede a do konzole se vypíše řetězec "PRAVDA". Podmínku nesmíme zapomenout ukončit příkazem Endif.
Operátory
V podmínce můžeme používat následující operátory:
= | rovná se |
<> | nerovná se |
> | vetší než |
< | menší než |
>= | větší, nebo rovno |
<= | menší, nebo rovno |
Else
Dále můžeme použít příkaz Else, čímž oddělíme v podmínce 2 bloky příkazů. První se spustí když podmínka platí a druhý když neplatí:
a = 0 b = 1 If a = 0 Then TextWindow.WriteLine("PRAVDA") Else TextWindow.WriteLine("NEPRAVDA") EndIf
Skládání výrazů
Logické výrazy můžeme v podmínkách skládat pomocí operátorů AND a OR. Ty označují "a zároveň" a "nebo".
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 jazycích se většinou AND zapisuje jako && a nebo jako ||.
Výraz můžeme negovat pomocí operátoru NOT:
a = 8; If NOT a = 8 Then TextWindow.WriteLine("V a není osmička") EndIf
Sekvence If... ElseIf
Pokud chceme reagovat na více hodnot jedné proměnné, zkrátíme obvykle následující kód:
If promena = 1 Then EndiIf If promena = 2 Then EndIf
do této podoby pomocí příkazu Elseif:
If promena = 1 Then ElseIf promena = 2 Then Endif
Příklady
Určení věku
Vytvořme si jednoduchý příklad s tím, co jsme se zatím naučili. Necháme uživatele zadat jeho věk a ten mu okomentujeme.
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
Zadání číslice
Podmínky si procvičme ještě rozpoznání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 příkaz, který bychom měli používat pouze ze začátku, když ještě neumíme deklarovat cykly a funkce. Je to vlastně skok do určité části programu, ukažme si to na jednoduchém příkladu:
skok: TextWindow.WriteLine("Toto je nekonečný cyklus") Program.Delay(40) Goto skok
skok:
je tzv. návěstí. To je nějaký bod v programu.
Dvojtečka dává znamení, že to není obyčejná proměnná. Na druhém
řádku je normální výstup a na třetím nová věc z třídy Program a to
operace Delay. Ta zastaví program na určitý počet milisekund. No a na konci
je příkaz Goto, který skočí zpět na popisek skok:
a opakuje
se to takhle stále dokola. Použijeme to v naší kalkulačce.
Program
Rovnou si můžeme popsat některé funkce na třídě Program, využijeme je spíše až později.
- Program.End - Ukončí program.
- Program.Directory - Vrátí cestu ke složce s programem.
- Program.GetArgument(1) - Vrací 1. argument našeho programu (pokud ho s nějakým spouštíme, např. když napíšeme program.exe nejaky_argument).
- Program.ArgumenCount - Vrací počet zadaných argumentů.
- Program.Delay(1000) - Pozastaví provádění programu na 1000 milisekund.
Menší program na konec
Vytvořme si takový jednoduchý příkazový řádek (má jen dva pří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
Příště si ukážeme cykly a pole.