QBasic/Lekce 4

Z Wikiknih

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]

Porovnávací operátory
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)
Logické operátory
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