Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ú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.