# Podprogramy Tento týden se budeme (konečně) zabývat podprogramy. Tyto nám zejména umožní stavět «abstrakce», dekomponovat problémy a organizovat programy. Důležitou formou využití podprogramů je také «rekurze», při které uplatníme jak dekompozici tak abstrakci, a která nám dává jednoduchý mechanismus k řešení řady náročných problémů. Ukázky: 1. ‹cycle› – hledání délky cyklu v permutaci 2. ‹pow› – algoritmus pro celočíselné mocnění Přípravy: 1. ‹cellular› – buněčný automat nad slovem 2. ‹permute› – jsou dvě slova vzájemnou permutací v base 3 3. ‹rotate› – jsou dvě slova vzájemnou rotací 4. ‹fractal› – ⟦n⟧-tý člen fraktální posloupnosti 5. ‹palindrome› – nejmenší počet palindromových segmentů 6. ‹sat› – splnitelnost malé výrokové formule Řešené příklady: 1. ‹power› – modulární mocnění 2. ‹squares› – součty druhých mocnin 3. ‹knight› – skákání koněm 4. ‹bezout› – rozšířený Euklidův algoritmus 5. ‹xxx› 6. ‹xxx›