ALGORITMUS

Algoritmus (původ názvu: zkomolené jméno arabského učence al-Chvárizmího, který v osmém století napsal knihu o algebře) je přesný návod či postup, kterým lze vyřešit daný úkol. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip řešení problému (oproti přesnému zápisu v konkrétním programovacím jazyce). Obecně se ale algoritmus může objevit v jakémkoli jiném vědeckém odvětví. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept.

Základní vlastnosti algoritmů

Konečnost (rezultativnost)

Každý algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů), ale pro každý jednotlivý vstup musí být konečný.

Determinovanost (podmíněnost)

Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat.

Obecnost (hromadnost)

Algoritmus neřeší jeden konkrétní problém (např. "jak spočítat 3×7"), ale obecnou třídu obdobných problémů (např. "jak spočítat součin dvou celých čísel").

Způsoby zápisu algoritmu

  • slovní
  • grafický (vývojový diagram, strukturogram, kopenogram, ...)
  • program

Etapy řešení algoritmické úlohy

  1. Zadání
  2. Rozbor, analýza
  3. Algoritmus (vývojový diagram)
  4. Testování
  5. Přepis do programovacího jazyka (kódování)
  6. Ladění (chyby syntaktické, logické)
  7. Optimilizace (efektivita, přehlednost, testování vstupů, vzhled programu)
  8. Dokumentace (vznik manuálů, referenčních příruček, učebnic, ...)

Některé známé algoritmy

  • Eratosthenovo síto (viz. odkaz)
  • Euklidův algoritmus (viz. odkaz)
  • Algoritmus de Casteljau (viz. odkaz)
  • Dijkstrův algoritmus (viz. odkaz)
  • Bellman-Fordův algoritmus (viz. odkaz)

STRUKTUROVANÉ PROGRAMOVÁNÍ

Strukturované programování označuje programovací techniku, kdy se implementovaný algoritmus rozděluje na dílčí úlohy, které se spojují v jeden celek (dílčí úlohy řešíme metodou shora dolů). K impleentaci v programu se používá vybraných řídících struktur, ostatní struktury nejsou povoleny - u strukturovaného programování se např. nepoužívá řídící příkaz skoku (Goto).

Implementace je uvedení teoreticky stanovené myšlenky do praxe za účelem jejího dalšího použití.

Strukturované programování

Existují tři druhy řídících struktur

Posloupnost příkazů - všechny příkazy se postupně provedou jeden po druhém

Větvení - v závislosti na splnění podmínky se určitý příkaz buď provede nebo neprovede

Cyklus - v závislosti na splnění podmínky se část programu vykoná vícekrát

Pro podrobnější informace k rozebrání jednotlivých řídících struktur viz. odkaz.

VÝVOJOVÉ DIAGRAMY

Vývojový diagram je grafické znázornění nějakého algoritmu či procesu. Vývojový diagram se používá pro znázornění jednotlivých dílčích operací symboly, které jsou navzájem propojeny pomocí orientovaných šipek. Vývojový diagram má nečastější použití v informatice a proramování.

Pokud se rozhodnete programovat nějaký program, který má být funkční, není nikdy na škodu si takový diagram vytvořit. Celkem dobře se v něm hledají chyby, můžete sledovat postup programu a případně vše poopravit.

Vývojové diagramy se skládají z grafických značek. Značky jsou různé a různě se kombinují, tím se simulují různé situace a různé příkazy, do těchto značek se pak vypisují upřesňující údaje. Nyní se podívejme na to, jak vypadají jednotlivé části vývojového diagramu.

Mezní značka

Mezní značka (značení začátku a konce programu)

Vstup a výstup hodnot

Vstup a výstup hodnot

Spojovací bod

Spojovací bod (když máme více stránek)

Zpracování

Zpracování (příkazy, úkoly, činosti,...)

Větvení

Větvení

Cyklus s určeným počtem opakování

Cyklus s určeným počtem opakování

Cyklus s určeným začátkem

Cyklus s určeným začátkem

Cyklus s určeným koncem

Cyklus s určeným koncem

Spojovací čára

Spojovací čára (aby se vědělo odkud kam...)

Podprogram

Podprogram

Znázornění jednoho takového vývojového diagramu

Vývojový diagram

Přeti si to!

Na závěr našeho seriálu o programování bych chtěl vyřknout otázku, na kterou by si každý účastník kurzu měl najít odpoveď před maturitou :-) : "Jaký jsi typ programátora?" Odpověď nebude pro některé nijak příjemná ;-), najdete ji na této stránce (text o programátorech začíná před půlkou).

Citace:

    • http://cs.wikipedia.org/wiki/Algoritmus
    • http://objekty.vse.cz/Programovani/CoJeANeniAlgoritmus
    • http://cs.wikipedia.org/wiki/Strukturovan%C3%A9_programov%C3%A1n%C3%AD
    • http://encyklopedie.seznam.cz/heslo/490874-vyvojovy-diagram

Zdroje:

    • http://www.volny.cz/pczekaj/pocit/pascal/algoritmus.htm
    • http://www.ics.muni.cz/zpravodaj/images/vol05num05.html
    • http://cs.wikipedia.org/wiki/%C5%98%C3%ADd%C3%ADc%C3%AD_struktura
    • http://www.sweb.cz/david.padrta/pascal/2strukt.html#odkaz2
    • http://pavel.lasakovi.com/projekty/programovani/vyvojove-diagramy-uvod/
    • http://programujte.com/index.php?akce=clanek&cl=2005080105-vyvojove-diagramy-1-dil
    • http://programujte.com/index.php?akce=clanek&cl=1970010171-vyvojove-diagramy-2-dil
Naposledy změněno: čtvrtek, 29. října 2015, 10.56