Úvod
Tento kurz je určený všem, kteří si chtějí osvojit základní principy programování. To se dá zobecnit do principů, které se poté aplikují v konkrétních programovacích jazycích. Podtrženo sečteno principy zůstávají stejné, co se ale mění je zápis. V tomto kurzu se seznámíme s jazykem Python, který bývá obecně označován za vhodný pro začátečníky; je avšak stále použitelný v reálném světě. Ze začátku kurzu budou některé koncepty zjednodušovány, aby byl kurz přístupný opravdu pro všechny. K jeho konci budou však vysvětleny v plné šíři.
Pod programem si představíme nějaký soubor s textem, který počítači říká, co má provést. Je to tedy analogie popisu pracovního postupu psaná v nějakém programovacím jazyce, ale místo prózy píšeme zkratkovité instrukce, nějaký kód. Za každým programem je nějaká úloha, tedy co chceme vypočíst – výpočet pětapadesátého prvočísla, výpis všech prvočísel menších než 100, a podobně. Obecnému postupu řešení úlohy, který se skládá z konečného počtu elementárních, myšleno nedělitelných, kroků říkáme algoritmus. Algoritmy můžeme popsat i přirozeným jazykem, třeba algoritmus pro ověření, zda je číslo dělitelné dvěma, můžeme zapsat takto:
Vezmi číslo a podívej se na zbytek po dělení dvěma. Pokud je zbytek 0, číslo je dělitelné dvěma. Pokud ne, číslo není dělitelné dvěma.
Také ho můžeme zapsat zkratkovitě jako
pokud (cislo mod 2 je rovno 0) vypis "cislo je delitelne dvema" jinak vypis "cislo neni delitelne dvema"
Pokud algoritmus zformulujeme v nějakém programovacím jazyce, nazveme tento program implementací algoritmu. Nutno podotknout, že implementace není nutně jedinečná; může existovat, a většinou existuje, více způsobů, jak algoritmus implementovat. Implementace se mezi sebou mohou zásadně lišit, například v době běhu programu. Vždy se samozřejmě snažíme implementovat algoritmus tak, aby běžel co nejrychleji.
Neexistuje jednoznačná definice pojmu “algoritmus”. Můžeme však definovat vlastnosti, které by měl algoritmus splňovat.
- Konečnost zaručuje, že algoritmus skončí po vykonání konečného počtu kroků.
- Správnost zaručuje, že algoritmus vypočítá správnou hodnotu pro nějaký vstup.
- Determinismus znamená, že pro stejný vstup algoritmus vždy vypočítá stejnou hodnotu. Každý krok algoritmu je tedy jednoznačně definovaný v každé situaci.
Pokud máme algoritmus, který splňuje tyto vlastnosti, můžeme o něm jednodušeji uvažovat a analyzovat jeho chování. V rámci kurzu se občas s nějakým algoritmem setkáme, jejich implementace budou většinou ponechána jako domácí cvičení.
Často se také díváme na to, jaký má algoritmus vstup a jaký výstup. V příkladu s dělitelností dvěma bereme jako vstup nějaké číslo. Výstupem je pak informace o tom, zda je číslo dělitelné dvěma nebo není – pravda nebo nepravda. Této dvoustavové hodnotě se říká booleovská hodnota, také boolean. V anglických textech se běžně setkáme se jmény hodnot True a False.
Jak již bylo řečeno, základní koncepty samotného programování se mezi programovacími jazyky prakticky nemění. V další kapitole si představíme proměnné, tedy místo, kam si můžeme uložit hodnoty používané v programu.