Řízení programu

Dneska zlepšíme své dosavadní poznatky o řízení programu. Podíváme se na tzv. řídící procedury a prohloubíme své znalosti cyklů a podmínek.

Nejprve pár procedur:

Exit; Okamžitě ukončí podprogram (=proceduru nebo funkci)
Halt;
Okamžitě ukončí náš program.
Halt(Code:Word);
Okamžitě ukončí náš program a jako výsledek (=v Dosu ERRORLEVEL) dá Code.

RunError; Vytvoří chybu s kódem 0.
RunError(Code:Word); Vytvoří chybu s kódem Code; (Lze takto například trápit uživatele hláškami typu Error XYZ: C: is not formatted)

Pokud nastane nějaká událost, která vyžaduje okamžité ukončení našeho programu, zavoláme Halt. Pokud potřebujeme rozlišit více takových stavů, použijeme RunError a některé nevyužité kódy chyb či Halt(Neco).

Ale nyní již k samotnému řízení. To se dělí na rozhodování (if a case) a cykly (for, repeat, while).

Rozhodování

Lehce si zopakujeme své dosavadní poznatky.

Aneb Je-li splněna podmínka vykonej příkaz. Podmínka je libovolný výraz typu Boolean a příkaz může být i složený. Pokud podmínka splněna není (je-li její hodnota False), nedělej nic, či vykonej příkaz za else (zase může být i složený). K if by to bylo vše.

Občas je ale možností víc. K tomu nám již nestačí proměnná typu Boolean (dvě hodnoty), ale musíme využít jiného ordinálního typu (např. interval, char, integer); Toto rozhodování pak vypadá takto:

case Proměnná of
 Hodnota1: Příkaz1;
 Hodnota2: Příkaz2;
 Hodnota3: Příkaz3;
 ...
 else JinýPříkaz;
end;

Má-li Proměnná Hodnotu1, vykoná se Příkaz1 (zase i složený)... Pokud se obsah proměnné neshoduje ani s jednou uvedenou hodnotou, vykoná se JinýPříkaz;
Část s else může být vynechána.

Cykly

for c:='z' downto 'a' do write(c);

repeat
Příkaz1;
Příkaz2;
...
until Podmínka;

Tento cyklus se opakuje tak dlouho, dokud není splněna podmínka (Ale vždy se provede alespoň jednou). Také si všimněte, že může obsahovat více než jeden příkaz. Nesmíme zapomenout, že hodnota podmínka se musí změnit, aby cyklus někdy skončil.

while Podmínka do Příkaz;

Jestliže je splněna podmínka, vykonávej Příkaz (i složený). I zde musíme zajistit, aby se hodnota podmínky někdy změnila.
Na rozdíl od cyklu repeat se tělo cyklu nemusí vykonat ani jednou.

K řízení programu se dále vážou tyto procedury :
Break; Okamžitě ukončí právě prováděný cyklus (zbylé příkazy jsou ignorovány)
Continue; Přejde hned na konec cyklu a znovu vyhodnotí podmínku (u for pokračuje od další hodnoty proměnné). Příkazy mezi Continue a koncem cyklu jsou ignorovány.

DCV: Nyní již víte o řízení programu úplně vše. Pokuste se napsat program, který zjistí prvočíselnost zadaného čísla. Napište také program určující největšího společného dělitele a nejmenší společný násobek dvou zadaných čísel.

Máme za sebou nejnáročnější část programování v Pascalu. Doporučoval bych důkladně si zopakovat všechny lekce (jak ze sekce pro začátečníky, tak i pro pokročilé).