Príkazový riadok, jednoduchá kalkulačka, podmienené spracovanie príkazov a príkaz skoku na návestie

Na konci tohto príspevku je kód primitívnej kalkulačky. Rozoznáva iba 4 operácie: + (plus), - (mínus),  * (krát) a / (modulo). Vie pracovať iba s celými číslami, ktoré musia byť zadané v desiatkovej (anglicky decimal number), osmičkovej (anglicky octal number) alebo šestnástkovej (hexadecimálne číslo, anglicky hexadecimal number) pozičnej sústave. V prípade, že sa nezadá celé číslo, ale iný reťazec, prípadne vyberie neplatná operácia, program vyhlási chybu, avšak svoj beh neukončí a bude príkazy vykonávať aj naďalej. Výsledkom je vždy celé číslo, či už kladné alebo záporné.

Aby sme takýto program dokázali vytvoriť, potrebujeme nové príkazy. Sú ními príkaz GOTO - skoku na návestie, a konštrukcia podmieneného spracovania príkazov IF. Samotné návestie je reťazec bez medzier, ktorý začína znakom dvojbodky ":". Keď program narazí na príkaz GOTO, hneď pokračuje vo vykonávaní riadku, ktorý sa nachádza bezprostredne pod návestím.

Konštrukcia podmieneného spracovania príkazov - príkaz IF má tri nasledujúce verzie

        IF [NOT] EXIST subor prikaz
        IF [NOT] retazec1==retazec2 prikaz
        IF [NOT] ERRORLEVEL cislo prikaz

Prvá verzia testuje, či existuje súbor s názvom zodpovedajúcim textovému reťazcu. Ak existuje vykoná príkaz. My používame druhú verziu, ktorá porovnáva dva reťazce. Ak sú zhodné, vykoná príkaz. 

Posledná konštrukcia obsahuje systémovú premennú ERRORLEVEL a príkaz sa vykoná len vtedy, ak hodnota premennej ERRORLEVEL je väčšia alebo rovná ako hodnota premennej cislo. Premenná ERRORLEVEL obsahuje návratovú hodnotu posledného príkazu. Pod návratovou hodnotou sa myslí hodnota typu úspech (príkaz sa podarilo správne vykovať) alebo neúspech (príkaz sa nepodarilo správne vykonať a nasleduje číslo označujúce typ chyby). Takto by to malo fungovať teoreticky, prakticky som ešte túto verziu príkazu neodskúšal. 

Všetky tri verzie umožňujú negáciu testovanej podmienky pridaním reťazca NOT pred testovanú podmienku.

 ------------------------- kalkulacka.bat ---------------

@echo off
echo Program kalkulacka
:zaciatok
set /p X=Zadaj prvu hodnotu:
set /p Y=Zadaj druhu hodnotu:
set /p O=Zadaj operaciu (+,-,*,/):  
if %O%==+ goto vypocet
if %O%==- goto vypocet
if %O%==* goto vypocet
if %O%==/ goto vypocet
goto error
:vypocet
set /a V=%X%%O%%Y%
echo %X%%O%%Y%=%V%
goto end
:error
echo Hodnoty nie su cisla, alebo bola zvolena neplatna operacia
:end
set /p S=Chces zopakovat vypocet (a/n)?
if %S%==a goto zaciatok
echo Dovidenia

------------------------------

Komentáre

Obľúbené príspevky