5. Riadenie programu

Vstavané riadiace procedúry

  • Exit – Okamžite ukončí podprogram (= procedúru alebo funkciu).
  • Halt – Okamžite ukončí náš program.
  • Halt(Code:Word); Okamžite ukončí náš program a ako výsledok (=v Dose ERRORLEVEL) dá Code.
  • RunError; Vytvorí chybu s kódem 0.
  • RunError(Code:Word); Vytvorí chybu s kódem Code; (Lze takto napríklad trápiť užívateľa hláškami typu Error XYZ: C: is not formatted)
    Ak nastane nejaká udalosť, ktorá vyžaduje okamžité ukončení nášho programu, zavoláme Halt.
    Ak potrebujeme rozlíšiť viac takých stavov, použijeme RunError a niektoré nevyužité kódy chýb.
  • Rozhodovanie

    Využívame:

    • if Podmienka then Príkaz;
    • if Podmienka then Príkaz else InýPríkaz;
    • Ináč povedané: ak je podmienka splnená, vykonaj príkaz. Podmienka je ľubovoľný výraz typu Boolean (musí byť vyhodnotiteľná: pravda/nepravda) a príkaz môže byť aj zložený (skupina začne BEGINom a končí ENDom). Ak podmienka splnená nie je (jej hodnota je False), nerob nič, alebo vykonaj iný príkaz za ELSE (zase môže byť aj zložený). Ku if by to bolo všetko.

      Občas je ale možností viac. K tomu nám už nestačí premenná typu Boolean (dve hodnoty), ale musíme využiť iný ordinárny typ (napr. interval, char, integer); Toto rozhodovanie potom vyzerá takto :

      case Premenná of
      Hodnota1: Príkaz1;
      Hodnota2: Príkaz2;
      Hodnota3: Príkaz3;
      ...
      else InýPríkaz; end;

      Ak má premenná Hodnotu1, vykoná sa Príkaz1 (zase i zložený)... Ak sa obsah premennej nezhoduje ani s jednou uvedenou hodnotou, vykoná sa InýPríkaz;
      Časť s else môže byť aj vynechaná.

      Príklad:

      Program AbsoltnaHodnota;
      var a: real;
      begin
      Writeln('Zadaj číslo');
      Readln(a);
      If a<0 then a:=a*(-1);
      Write('Absolútna hodnota čísla je:', a);
      readln;
      end.

      Cyklus

      • For Prem := Min to Max do Príkaz;
        Vykonáva príkaz, pričom hodnotu ordinárnej premennej zvyšuje od Min do Max (Max > Min)
      • For Prom := Max downto Min Príkaz;
        To isté ako for s to, ale hodnota premennej sa znižuje
      • for c:='z' downto 'a' do write(c);
      • repeat...until
        repeat
        Príkaz1;
        Príkaz2;
        ...
        until Podmienka;
      • Tento cyklus sa opakuje tak dlho, dokiaľ nie je splnená podmienka (Ale vždy sa vykoná aspoň raz. Všimnite si tiež, že môže obsahovať aj viac ako jeden príkaz. Nesmieme ale zabudnúť, že podmienka sa musí meniť, aby cyklus niekedy aj skončil.

      • while ... do
        while Podmienka do Príkaz;

      Ak je splnená podmienka, vykonávaj príkaz (i zložený). I tu musíme zaistiť, aby sa hodnota podmienky niekedy menila. Narozdiel od cyklu repeat sa telo cyklu nemusí vykonať ani raz. Na riadenie programu sa ďalej viažu tieto procedúry:

      • Break – Okamžite ukončí práve prebiehajúci cyklus (ostatné príkazy sú ignorované)
      • Continue; Prejde hneď na koniec cyklu a vyhodnotí podmienku (pri for pokračuje od ďalšej hodnoty premennej). Príkazy medzi Continue a koncom cyklu sú ignorované.

      Príklad:

      Program Faktorial;
      var a, b: integer;
      begin
      Writeln(' Zadaj číslo pre výpočet faktoriálu');
      Readln(a);
      b := 1 For I := 1 to A do b := b * I; Write('Faktoriál je', b);
      readln;
      end.