Podprogramy
Doposud jsme algoritmus navrhovali stylem co úloha, to jeden vývojový diagram. Nyní však začneme využívat tzv. podprogramy, čímž si program rozdělíme na menší části.
Jak tedy postupovat v případě, že chceme řešit složitější úlohu? Musíme provést analýzu a pokusit se dekomponovat (rozdělit) problém na jednotlivé jednodušší celky. Není to nic jiného než to, co dělá každý z nás dnes a denně - složitější úlohy rozdělíme na menší, snáze řešitelné a ve výsledku dosáhneme požadovaného cíle.
Vytvoříme tedy vývojové diagramy pro jednotlivé kousky (podúlohy), které však potřebujeme ještě nějakým vhodným způsobem spojit. U každé jednotlivé části víme, kdy nastane resp. víme, která část jakou předchází, a která následuje - známé jejich pořadí. Části - jednotlivé vývojové diagramy - potřebujeme vhodným způsobem "vyvolávat" a posloupnost tohoto vyvolávání nějak zapsat.
Posloupnost vyvolávání je vlastně náš program. Této základní posloupnosti se říká hlavní program. Doposud jsme řešili úlohy, které jsme zapsali do jednoho vývojového diagramu, a to byl vždy hlavní program té dané úlohy. Nyní budeme řešení úloh dělit do několika části, a každou takovou část zakreslíme do vývojového diagramu, takže ve výsledku budeme mít jeden vývojový diagram pro hlavní program a několik vývojových diagramů pro jeho dílčí části.
Jednotlivé části, ze kterých se skládá hlavní program, se nazývají podprogramy. Pokud takový podprogram chceme spustit, tak říkáme, že voláme podprogram. Volání nemusí probíhat jen z hlavního programu, ale i z jakéhokoliv podprogramu. V jednom programu jich může být více, takže si každý z nich pojmenujeme a do značky pro volání zapíše jeho jméno (volaného podprogramu). Volání (námi vytvořeného) podprogramu se zapisuje značkou na obrázku.
Při vstupu do značky pro volání se "skočí" na jeho vývojový diagram (startovací značka nese název podprogramu). Vykoná se tělo podprogramu a s ukončovací značkou (Návrat) se z podprogramu vrací zpět do místa, odkud byl zavolán. Řekněme, že výřez na obrázku zobrazuje volání podprogramu "Vypočti" z hlavního programu. Při jeho zavolání hlavní program čeká až se dokončí a pokračuje až ve chvíli, kdy je podprogram ukončen.