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

Algoritmus a program

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.