QBasic/Lekce 4
Příkazy
editovatIF...THEN
editovatSlouží 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
editovatIF 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
editovatIF 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
editovatIF 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
editovatIF 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
editovatsymbol | 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
editovatIF 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
editovatIF 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
editovatProgram č. 1
editovatProgram, 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
editovatProgram 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
editovatKalkulač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