IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

4. diel - Podmienky a vetvenia v Batch

V predchádzajúcom cvičení, Riešené úlohy k 3. lekcii Batch, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

Z minulého dielu už vieme vytvárať premenné a ukladať si do nich nejaké hodnoty. Dokonca vieme i ukladať vstup od užívateľa. Často sa však stáva, že sa potrebujeme rozhodovať a následne reagovať na rôzne situácie. Napríklad podľa zadania užívateľa meniť beh programu. Od toho sú podmienky - na základe zadaných informácií sa program rozhodne, ako bude postupovať ďalej. Takouto podmienkou môže byť napríklad - 1> 2, alebo premenná vstup = niečomu.

Zápis podmienky

Podmienku môžeme zapísať pomocou kľúčového slova

if

Potom nasleduje logický výraz. Pokiaľ je tento výraz pravdivý, vykoná sa nasledujúci príkaz.

Skúsme si to! Vytvorte si program porovnani.bat a vložte do neho základnú štruktúru. Skúsme si porovnať, či sa číslo 15 rovná číslu 5. Rodová sa označuje dvojitým znakom rovnosti.

if 15 == 5 echo Rovnaji se!

Program spustí. Program nám nič nevypíše. Ako nám rozum napovedá, číslo 15 sa nerovná číslu 5, preto je prázdna obrazovka správny výsledok. Čo keď chceme užívateľovi vypísať správu, že sa čísla nerovnajú? K tomu slúži kľúčové slovo:

else

Len by som rád upozornil, že v prípade, že chceme else použiť, musíme dať príkazy do zátvoriek. Upravte preto náš program do tejto podoby:

if 15 == 5 (echo Rovnaji se!) else (echo Nerovnaji se!)

Ak program spustíme teraz, zistíme, že nám vypíše, že sa čísla nerovnajú.

Podmienky s if a else v Batch - Príkazový riadok a dávkové súbory

Relačné operátory

operátor zápis Príklad matematický zápis
rovná sa == alebo EQU 5 == 2 alebo 5 EQU 2 5 = 2
nerovná sa NEQ 5 NEQ 2 5 ≠ 2
menšie LSS 5 LSS 2 5 <2
Menšie alebo rovné Leq 5 Leq 2 5 ≤ 2
väčšia GTR 5 GTR 2 5> 2
Väčšie alebo rovné GEQ 5 GEQ 2 5 ≥ 2
Skúsme si teraz vytvoriť program, ktorý bude deliť zadané číslo nejakým iným číslom. Našou úlohou bude zistiť, či druhé číslo nerovná nule. Ako iste viete, nulou deliť nedá. A ak to neviete, tak ste sa to práve dozvedeli :-) .

Vytvorte si program s názvom deleni.bat a vložte do neho základnú štruktúru.

Ako prvú vec sa užívateľovi prestavíme a vytiahneme z neho obe čísla.

echo Vitej v kalkulacce ktera umi jen delit :)
set /p prvni=Zadej prvni cislo:
set /p druhe=Zadej druhe cislo:

Teraz zistíme, či sa druhé číslo rovná nule. Ak áno, vypíšeme užívateľovi hlášku, že nulou nie je možné deliť. V opačnom prípade vypíšeme výsledok operácie. Najskôr vás napadá, ako to urobíme. Jednoducho - vytvoríme si pomocnú premennú "vysledok", do ktorej budeme ukladať výsledok. Pokiaľ bude druhé číslo nulové, pri vytváraní premennej nenastavíte žiadny prepínač. Ak číslo nulové nie je, pridáme prepínač / a (pre matematickú operáciu).

if %druhe%==0 (set vysledek=Nulou nelze delit!) else (set /a vysledek=%prvni%/%druhe%)
echo Vysledek teto operace je: %vysledek%

Program uložíme a spustíme.

Delenie v Batch - Príkazový riadok a dávkové súbory

Vetvenia

Tu sa už dostávame k samotnej zmene chodu nášho programu. Vetvenie programu sa v Batch vykonáva pomocou príkazu:

goto

Ako už názov príkazu napovedá, jedná sa o "skok" na inú časť programu, napríklad na začiatok. Cieľové umiestnenia (label) sa označuje nasledujúcim spôsobom:

:ciloveUmisteni

A na toto umiestnenie môžeme "preskočiť" už zmieneným príkazom goto:

goto cisloveUmisteni

Jednoduchá kalkulačka

Pamätáte si náš programík Jednoduchá kalkulačka z minulej lekcie? Poďme ho trochu vylepšiť! Stiahnite si zdrojový kód tohto programu (môžete ho nájsť pod minulým článkom).

Ešte pripomeniem, čo tento program robí. Na začiatku si program vyžiada 2 čísla, a následne vypíše ich súčet, rozdiel, súčin a podiel. Potom program počká na stlačenie klávesy a skončí.

Poďme tento program upraviť - skúsme urobiť to, že namiesto ukončenie sa program spýta, či si užívateľ želá, aby bol program spustený znova. Ako možnosti vstupu budeme mať napríklad "Áno" alebo "Nie". Pre zjednodušenie - ak bude vstup "Áno", program spustíme znova, ak bude vstup čokoľvek iné, program ukončíme.

Ako na to? Jednoducho. Kalkulačka sa na začiatku predstavuje a potom žiada zadanie dvoch čísel. Medzi riadok s výpisom a zadaním (predsa sa nebudeme predstavovať pri každom znovu-spustení) vložte label:

:zacatek

Teraz sa presunieme na príkaz "pause> núl" na konci programu. Tento príkaz zmažeme, namiesto neho budeme písať rozhodovanie. Najprv musíme užívateľovi oznámiť, že sa bude rozhodovať. Pre prehľadnosť vložíme prázdny riadok.

echo.
echo Prejete si program spustit znovu ?

A pridáme čítanie vstupu:

set /p pokracuj=Zadej Ano nebo Ne:

Tak, teraz máme načítaný vstup od užívateľa. Prejdeme k rozhodovanie - ak je vstup rovný "Áno", preskočíme na label "zacatek".

if %pokracuj%==Ano goto zacatek

Ak sa vstup rovná čomukoľvek inému, program pôjde ďalej. Ďalej však nič nie je, preto program skončí.

Program uložíme a vyskúšame. Všimnime si, že užívateľ musí zadať "Áno" - podmienka je tzv. Case-sensitive (citlivé na veľkosť písmen). Pokiaľ toto nechcete, vložte za kľúčové slovo "if" prepínač / i. Podmienka teraz bude vyzerať takto:

if /i %pokracuj%==Ano goto zacatek

A náš program je hotový.

Podmienka pokračovanie programu v Batch - Príkazový riadok a dávkové súbory

Vylepšená kalkulačka

Založíme si nový súbor, ktorý sa bude volať Vylepšený-kalkulacka.bat. Vložíme si doň základnú štruktúru.

Tento program vypíše zoznam dostupných operácií a podľa zadania užívateľa operáciu vykoná. Tiež si skúsime ošetriť vstup od užívateľa, aby napr. Nedelili nulou.

V úvode privítame používateľa, vytiahneme z neho dve čísla, vypíšeme mu zoznam operácií a vyzveme ho na zadanie čísla operácie. Pred zadávaním čísel a pred zadávaním operácie si vytvoríme label, ktorý neskôr využijeme.

echo Vitej v kalkulacce!

:zadavani
set /p prvni=Zadej prvni cislo:
set /p druhe=Zadej druhe cislo:
echo.
echo 1 - scitani
echo 2 - odcitani
echo 3 - nasobeni
echo 4 – deleni
:operace
set /p operace=Zadej cislo operace:

Teraz prejdeme k vetvenie programu. Zadáme si podmienky.

if %operace%==1 goto scitani
if %operace%==2 goto odcitani
if %operace%==3 goto nasobeni
if %operace%==4 goto deleni

Teraz nám program bude "skákať" podľa toho, čo používateľ chce :-) . Vytvoríme si labely s akciami.

:scitani
set /a vysledek=%prvni%+%druhe%
goto vypis

:odcitani
set /a vysledek=%prvni%-%druhe%
goto vypis

:nasobeni
set /a vysledek=%prvni%*%druhe%
goto vypis

:deleni
if %druhe%==0 goto zadavani
set /a vysledek=%prvni%/%druhe%
goto vypis

Po zadaní program skočí na label s akciou, kde spočíta výsledok a uloží ho do premennej "vysledok". Potom skočí na label "vypis", kde si výsledok vypíšeme. Všimnite si, že u delenie kontrolujeme, či sa druhé číslo nerovná nule. Ak áno, skáčeme späť na zadanie. Teraz si vytvoríme label "vypis", kde užívateľovi vypíšeme výsledok.

:vypis
echo.
echo Vysedek operace je %vysledek%

Skúste do položky operácie zadať čokoľvek iné - napríklad nejaký text. Program jednoducho pôjde ďalej, ako by tu neboli žiadne podmienky ani labely. Čo s tým? Je to jednoduchšie, než by ste čakali. Pod podmienky vložíme skok na zadanie operácie.

goto operace

Na konci nesmieme zabudnúť na možnosť znovu spustiť program. Spýtajme sa teda užívateľa, či chce program spustiť znova.

echo.
set /p pokracuj=Prejes si program spustit znovu ? Ano nebo ne:
if /i %pokracuj%==Ano goto zadavani

výsledok:

Skoky v Batch - Príkazový riadok a dávkové súbory

Máme hotovo, program je ako vždy k stiahnutiu nižšie.

V nasledujúcom cvičení, Cvičenie k 4. lekcii Batch, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 439x (1.31 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Batch

 

Predchádzajúci článok
Riešené úlohy k 3. lekcii Batch
Všetky články v sekcii
Príkazový riadok a dávkové súbory
Preskočiť článok
(neodporúčame)
Cvičenie k 4. lekcii Batch
Článok pre vás napísal Neaktivní uživatel
Avatar
Užívateľské hodnotenie:
1 hlasov
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity