QBasic/Lekce 4
Příkazy
[editovat | editovat zdroj]IF...THEN
[editovat | editovat zdroj]Slouží k vytváření podmínek. Jeli nastavená podmínka splněná (pravdivá) tak se vykoná příkaz nebo blok příkazů. Tím lze program donutit, aby reagoval podle vytvořených podmínek.
Základní konstrukce
[editovat | editovat zdroj]IF podmínka THEN příkaz který se provede pokud je podmínka splněna
Příklady užití
IF a=5 THEN PRINT "Napiš text"
IF a$="ANO" THEN PRINT "Napiš text"
IF b<8 THEN PRINT "Napiš text"
IF a<>b THEN PRINT "Napiš text"
První řádek říká, že pokud se proměnná a rovná číslu 5 tak se na obrazovku vypíše Napiš text.
Druhý řádek říká, že pokud se proměnná a$ rovná textovému řetězci ANO, tak se na obrazovku vypíše Napiš text.
Třetí řádek říká, že pokud je proměnná b menší než číslo 8, tak se na obrazovku vypíše Napiš text.
Čtvrtý řádek říká, že pokud se proměnná a nerovná (je jiná než) proměnná b, tak se na obrazovku vypíše Napiš text.
Konstrukce do bloku
[editovat | editovat zdroj]IF podmínka THEN příkaz 1 příkaz 2 příkaz n END IF
Příklad užití
IF o$="+" THEN
INPUT "a=",a
INPUT "b=",a
PRINT "a+b=";a+b
END IF
Pokud se proměna o$ rovná řetězci + (znaménko plus), tak požádej uživatele, aby vložil hodnoty do proměnných a potom tyto proměnné sečti.
Konstrukce s využitím příkazu ELSE
[editovat | editovat zdroj]IF podmínka THEN příkaz1 ELSE příkaz2
IF podmínka THEN příkaz nebo blok příkazů 1 ELSE příkaz nebo blok příkazů 2 END IF
Příklad užití
IF a=>10 THEN PRINT "Cislo je rovno nebo vetsi nez 10" ELSE PRINT "Cislo je mensi nez 10"
Pokud je hodnota proměnné a rovno nebo větší než 10, tak na obrazovku vypiš text Cislo je rovno nebo vetsi nez 10, jinak vypiš na obrazovku text Cislo je mensi nez 10.
IF A$="ANO" THEN
PRINT "Napis text 1"
PRINT "Napis text 2"
ELSE
PRINT "Napis text 3"
PRINT "Napis text 4"
END IF
Pokud se proměnná a$ rovná textovému řetězci ANO, tak napiš na obrazovku text Napis text 1 a Napis text 2, jinak napiš na obrazovku text Napis text 3 a Napis text 4.
Konstrukce ELSEIF a ELSE
[editovat | editovat zdroj]IF podmínka 1 THEN blok příkazů 1 ELSEIF podmínka 2 THEN blok příkazů 2 ELSEIF podmínka n THEN blok příkazů n ELSE blok příkazů 3 END IF
Příklad užití
IF m=1 THEN
PRINT "Dostal jsi jednicku z Matematiky"
PRINT "Vynikajíci vysledek"
ELSEIF m=2 THEN
PRINT "Dostal jsi dvojku z Matematiky"
PRINT "Chvalitebny vysledek"
ELSEIF m=3 THEN
PRINT "Dostal jsi trojku z Matematiky"
PRINT "Dobrý vysledek"
ELSEIF m=4 THEN
PRINT "Dostal jsi ctirku z Matematiky"
PRINT "Dostatečný vysledek"
ELSEIF m=5 THEN
PRINT "Dostal jsi petku z Matematiky"
PRINT "Nedostatecny vysledek"
ELSE
PRINT "Známka není v platném rozsahu hodnot"
END IF
Operátory
[editovat | editovat zdroj]symbol | příklad užití | popis operátoru |
---|---|---|
= | IF a=5 THEN PRINT a;" se rovna 5"
|
je rovno |
> | IF a>5 THEN PRINT a;" je vetsi než 5"
|
je větší |
< | IF a<5 THEN PRINT a;" je mensi nez 5"
|
je menší |
>= | IF a>=5 THEN PRINT a;" je vetsi nebo rovno 5"
|
je větší nebo rovno |
<= | IF a<=5 THEN PRINT a;" je mensi nebo rovno 5"
|
je menší nebo rovno |
<> | IF a<>5 THEN PRINT a;" je jiný než 5"
|
je různý (nerovná se) |
symbol | příklad užití | popis operátoru |
---|---|---|
AND | IF a=5 AND b>10 THEN PRINT "text"
|
Logický součin (pokud platí a=5 a současně platí b>10 tak napiš text |
EQV | IF a EQB b THEN PRINT "text"
|
Rovnost - příkaz se provede jen pokud se a=b |
NOT | IF NOT a=5 THEN PRINT "text"
|
Jedničkový doplněk (negace)provede se jen pokud platí opak a=5 (tedy pokud platí a<>5) |
OR | IF a=5 OR b>10 THEN PRINT "text"
|
Logický součet (pokud platí a=5 nebo platí b>10 nebo platí obě podmínky současně tak napiš text |
XOR | IF a=5 XOR b>10 THEN
|
Výhradní součet (musí platit pouze jedna z podmínek, pokud platí obě příkaz se neprovede) |
Využití operátorů při vyhodnocování podmínek s čísly
[editovat | editovat zdroj]IF a>=5 AND a<=10 THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je hodnota a v rozsahu mezi 5 až 10.
IF a>5 AND a<10 THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je hodnota a v rozsahu mezi 6 až 9.
IF a=1 OR a=2 THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je hodnota a rovna 1 nebo 2.
IF a=1 OR a=2 OR a=3 OR a=4 THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je hodnota a rovna 1, 2, 3 nebo 4.
IF NOT(a=1 OR a=2 OR a=3 OR a=4) THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že není hodnota a rovna 1, 2, 3 nebo 4.
IF (a>=0 AND a<=10) OR (a>=20 AND a<=30) THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je hodnota a v rozsahu mezi 0 až 10 nebo v rozsahu 20 až 30.
IF (a>=0 AND a<=10) EQV (b>=20 AND b<=30) THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že podmínka (a>=0 AND a<=10) a podmínka (b>=20 AND b<=30) jsou obě buď pravdivé nebo obě nepravdivé.
IF (a>=0 AND a<=10) XOR (b>=20 AND b<=30) THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že podmínka (a>=0 AND a<=10) je pravdivá anebo je pravdivá podmínka (b>=0 AND b<=10). Výraz se vyhodnotí za pravdivý jen pokud je pravdivá právě jedna z podmínek, tj. pokud jsou obě podmínky pravdivé nebo nepravdivé, výraz se vyhodnotí jako nepravdivý.
Využití operátorů při vyhodnocování podmínek s textovými řetězci
[editovat | editovat zdroj]IF a$="Ahoj" AND b$="Nazdar" THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že řetězec a$ se rovná Ahoj a současně řetězec b$ se rovná Nazdar.
IF a$="Ahoj" OR a$="Nazdar" THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je řetězec a$ roven Ahoj nebo Nazdar.
IF "Adam" < "Karel" THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je Adam v abecedě níž než Karel.
IF a$ < b$ THEN PRINT "text"
Příkaz PRINT "text" se vykoná jen v případě, že je řetězec a$ v abecedě níž než řetězec b$. Tato podmínka se využívá jako součást algoritmu, který řadí textové řetězce podle abecedy (sestupně nebo vzestupně).
Programy
[editovat | editovat zdroj]Program č. 1
[editovat | editovat zdroj]Program, který porovná dvě čísla a vypíše, které je větší, menší nebo zdali se sobě rovnají.
CLS
PRINT "Program na porovnani dvou cisel"
PRINT
INPUT "Zadejte prvni cislo";a
INPUT "Zadejte druhe cislo";b
IF a<b THEN PRINT a;" je mensi nez ";b
IF a>b THEN PRINT a;" je vetsi nez ";b
IF a=b THEN PRINT a;" je rovno ";b
Výstup na obrazovce po spuštění programu
Program na provnani dvou cisel Zadejte prvni cislo? _
Po zadání náhodně zvolených čísel (v tomto případě byly zadány čísla 18 a 39)
Program na provnani dvou cisel Zadejte prvni cislo? 18 Zadejte druhe cislo? 39 18 je mensi nez 39
Program č. 2
[editovat | editovat zdroj]Program který podle věku určí v jaké fázi života se nacházíte.
CLS
PRINT "Faze zivota"
PRINT
INPUT "Zadej svuj vek",v
IF v<0 THEN PRINT "Zatim ses nenarodil"
IF v=0 THEN PRINT "Gratuluji jsi cerstve narozeny"
IF v=2 OR v=3 THEN PRINT "Jsi Batole"
IF v=4 OR v=5 THEN PRINT "Predskolni vek"
IF v>=6 AND v<=11 THEN PRINT "Mladsi skolni vek"
IF v>=12 AND v<=15 THEN PRINT "Jsi v obdobi dospivani (Pubescence)"
IF v>=16 AND v<=20 THEN PRINT "Adolescence"
IF v>=21 AND v<=30 THEN PRINT "Mladsi dospelost"
IF v>=31 AND v>=45 THEN PRINT "Stredni dospelost"
IF v>=46 AND v>=60 THEN PRINT "Starsi dospelost"
IF v>=62 AND v>=74 THEN PRINT "Obdobi starnuti"
IF v>=75 AND v<=89 THEN PRINT "Obdobi stari"
IF v>=90 THEN PRINT "Stareckost"
Výstup na obrazovce po spuštění programu
Faze zivota Zadej svuj vek:_
Výstup na obrazovce po zadání věku (v našem případě 8)
Faze zivota Zadej svuj vek:8 Mladsi skolni vek
Program č. 3
[editovat | editovat zdroj]Kalkulačka
CLS
PRINT "Program Kalkulacka"
PRINT
INPUT "A=",a
INPUT "B=",b
PRINT
PRINT "1... a+b"
PRINT "2... a-b"
PRINT "3... a*b"
PRINT "4... a/b"
PRINT "5... a^b mocnina"
PRINT "6... a^(1/b) odmocnina"
PRINT
INPUT "Zadej pocetni operaci";p
IF p=1 THEN
PRINT a;"+";b;"=";a+b
ELSEIF p=2 THEN
PRINT a;"-";b;"=";a-b
ELSEIF p=3 THEN
PRINT a;"*";b;"=";a*b
ELSEIF p=4 THEN
PRINT a;"/";b;"=";a/b
ELSEIF p=5 THEN
PRINT a;"^";b;"=";a^b
ELSEIF p=6 THEN
PRINT a;"^(1/";b;")=";a^(1/b);
ELSE
PRINT "zadano spatne cislo operace"
END IF
Program po spuštění a zadání hodnot:
Program kalkulačka A=25 B=5 1... a+b 2... a-b 3... a*b 4... a/b 5... a^b mocnina 6... a^(1/b) odmocnina Zadej pocetni operaci? 5 25^5=9765625