1. Čo sú podprogramy?

Väčšina programovacích jazykov umožňuje vytvárať určité ucelené a relatívne samostatné časti programov, ktoré sa označujú ako podprogramy. Každý podprogram obvykle predstavuje algoritmus, ktorý je možné vykonávať samostatne alebo v závislosti na iných prvkoch programu. Správne používanie dokáže výrazne zrýchliť ako tvorbu, tak i ladenie programu.

Podprogramy používame ak:

- sa v programe vyskytuje úplne rovnaká postupnosť príkazov viackrát na rôznych miestach. Je bez diskusie, že opakovanie tých istých postupností príkazov vedie k nehospodárnemu využívaniu prostriedkov (zbytočne sa zväčšuje veľkosť výsledného súboru a to ako aplikácie, tak i zdrojového kódu) a na druhej strane predstavuje nočnú moru pre tých, ktorí majú zdrojový kód neskôr ladiť – opakovaním rovnakého kódu sa program stáva neprehľadným a každú úpravu i opravu chyby treba realizovať na všetkých miestach, kde sa táto postupnosť vyskytuje (častým javom je, že raz sa zabudne zapísať jednu zmenu na jednom mieste, potom ďalšiu na inom a napokon sa programátor čuduje, prečo sa program správa „divne“ a náhodne).

- v programe sa viackrát vyskytuje podobná postupnosť príkazov odlišujúca sa iba parametrami.

- potrebujeme zvýšiť prehľadnosť programu a priblížiť jeho zápis “ľudskému” riešeniu. Veľmi často programátor postupuje pri vytváraní programu tak, že najprv určí postupnosť vykonania jednotlivých podprogramov slovne, a až potom ich „kóduje“, napr.:

              VycistiMriezku;
              NacitajHodnotyZoSuboru;
              NajdiNajmensiPrvok;
              Vypis;
 

Výhodou takéhoto postupu je, že okrem zrozumiteľného zápisu algoritmu si ujasní vlastné myšlienkové pochody ešte predtým, ako začne písať samotný kód.

- riešenie je formulované rekurzívne, t.j. celkové riešenie získame tak, že pojem je opísaný pomocou “samého seba”, napr. n!=n*(n-1)! alebo an=an-1+d. Tejto problematike sa budeme podrobnejšie venovať v samostatnej kapitole.

V Delphi sme s podprogramami pracovali už od začiatku – každé kliknutie na tlačidlo, resp. každá udalosť si generovala samostatný podprogram – procedúru.