3. díl - Small Basic - Podmínky

Ostatní jazyky SmallBasic 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.GetAr­gument(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.Argumen­Count - 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.


 

  Aktivity (1)

Článek pro vás napsal Michael Škrášek
Avatar
Autor se věnuje prográmkům ve Small Basic, dále programování v C#, HTML, CSS a doplňování znalostí těchto jazyků. Dále se učí JS, PHP, a zajímá se o ASM a Arduino.

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 


Miniatura
Předchozí článek
Small Basic - Cvičení
Miniatura
Všechny články v sekci
SmallBasic
Miniatura
Následující článek
Small Basic - Cykly, funkce a pole

 

 

Komentáře

Avatar
martin.lohynsky587:

Goto!! Opravdu??

 
Odpovědět  -2 18.3.2015 11:09
Avatar
Pavol Hejný
Redaktor
Avatar
Odpovídá na martin.lohynsky587
Pavol Hejný:

Náhodou, na mé TI89 to byl jeden z mých neoblíbenějších příkazů :)

Editováno 18.3.2015 12:02
Odpovědět 18.3.2015 12:01
http://pavolhejny.cz/
Avatar
Odpovídá na martin.lohynsky587
Michael Škrášek:

U 'programovacích jazyků', které jsou takhle jednoduché je to dost podstatný příkaz.

Odpovědět 18.3.2015 14:59
Proč to dělat složitě, když to jde jednoduše.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.