Na úvod je třeba si uvědomit, že pojem algoritmus není spojen pouze s počítačovou technikou a programováním. S algoritmy se setkáváme i v jiných školních předmětech, jako je matematika, fyzika či chemie. Nejsou však omezeny pouze na školní prostředí – algoritmy využíváme také v běžném životě při řešení každodenních situací.
Zjednodušeně lze na algoritmus nahlížet jako na postup určený k řešení konkrétní úlohy. Může jít například o výpočet kořenů kvadratické rovnice, sečtení dvou čísel nebo postup přípravy 5% kyseliny sírové. „Knihu algoritmů“ má dnes v určité podobě téměř každý doma – příkladem mohou být kuchařské recepty, které lze rovněž považovat za algoritmy.
<aside> <img src="/icons/light-bulb_yellow.svg" alt="/icons/light-bulb_yellow.svg" width="40px" /> Slovo algoritmus je odvozeno od jména arabského matematika Abú Abd Alláh Muhammad Ibn Músá al-Chórezmí, známého také jako Abú Dža'far. [1]
</aside>
Pokud se budeme bavit o algoritmech v programování, je potřeba zpřesnit definici algoritmu. Ne každý návod lze považovat za algoritmus. Pro toto označení je nutné, aby splňoval několik základních vlastností.
Níže uvedené vlastnosti však nejsou absolutně nezbytné. Existují výjimky, kdy algoritmus některou z těchto vlastností nesplňuje, a přesto se stále jedná o algoritmus.
Konkrétně jde o následující čtyři vlastnosti:
Algoritmus je složen z konečné posloupnosti jednoznačných (elementárních) kroků.
Algoritmus musí mít konec. Jinými slovy, algoritmus by měl vyřešit úlohu v konečném počtu kroků.
V případě programování mikropočítačů, například Arduino nebo PLC, však tato podmínka někdy není splněna. Celý algoritmus je navržen tak, aby se v nekonečné smyčce opakoval stále dokola. Ukončí se pouze při odpojení od elektrické energie nebo v případě jiné kritické chyby.
V každém kroku musí být přesně určeno, jakým způsobem se bude pokračovat. Nelze tedy, aby pro stejné vstupy algoritmus skončil s různými výstupy při každém spuštění.
Tato podmínka však není absolutní. Existují algoritmy, které se v určitém kroku rozhodují náhodně (pseudonáhodně). Je přesně popsáno, jakým způsobem se má pokračovat, ale pro stejné vstupy může být výsledek odlišný.
Je samozřejmě jasné, že algoritmus není účelné navrhovat pouze pro jeden konkrétní případ. Algoritmus musí řešit obecnou skupinu problémů. Například algoritmus pro vypsání mocniny dvou není tak užitečný jako algoritmus, který zvládne vypsat mocninu libovolného čísla.
<aside> <img src="/icons/exclamation-mark_red.svg" alt="/icons/exclamation-mark_red.svg" width="40px" /> I přes to, že je informatika exaktní věda, různí autoři občas uvádějí i další vlastnosti algoritmů.
</aside>
<aside> <img src="/icons/light-bulb_yellow.svg" alt="/icons/light-bulb_yellow.svg" width="40px" /> Níže uvedená řešení, jsou pouze jedny z variant. Je samozřejmě možné vymyslet i jiné správné řešení.
</aside>