Algoritmus

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Opravy překlepů.)
(Doplnění podrobnějšího popisu.)
Řádka 3: Řádka 3:
 
== Úloha ==
 
== Úloha ==
 
* Zadání, které řešíme.
 
* Zadání, které řešíme.
*Formálním popisem vznikne problém.
+
* Pokud ''úlohu'' popíšeme formálně (matematicky), vznikne ''problém''.
  
 
== Problém ==
 
== Problém ==
; Definice problému
+
; Popis problému zahrnuje:
*vstupní proměnné
+
* vstupní proměnné
*výstupní proměnné
+
* výstupní proměnné
*konfigurační proměnné
+
* konfigurační proměnné
*omezení
+
* omezení
*optimalizační kritérium
+
* optimalizační kritérium
  
 
== Algoritmus ==
 
== Algoritmus ==
 
+
<div class="Definice">
Schematický postup řešení určitého problému, který je konečný, určitý, korektní a obecný.
+
Schematický postup řešení určitého problému, který je konečný, určitý, korektní a&nbsp;obecný.
 +
</div>
  
 
; Vlastnosti algoritmu
 
; Vlastnosti algoritmu
 
#'''Konečnost'''
 
#'''Konečnost'''
#*algoritmus skončí pro libovolná (korektní) data v konečném množství kroků.
+
#* algoritmus skončí pro libovolná (korektní) data v konečném množství kroků.
 
#'''Určitost''' (determinovanost)
 
#'''Určitost''' (determinovanost)
#*všechny kroky algoritmu jsou přesně definovány.
+
#* všechny kroky algoritmu jsou přesně definovány.
 
#'''Korektnost'''
 
#'''Korektnost'''
#*algoritmus skončí pro libovolná (korektní) data správným výsledkem.
+
#* algoritmus skončí pro libovolná (korektní) data správným výsledkem.
 
#'''Obecnost'''
 
#'''Obecnost'''
#*algoritmus řeší všechny úlohy daného typu.
+
#* algoritmus řeší všechny úlohy daného typu.
  
 
; Někdy se jako vlastnosti uvádí také:
 
; Někdy se jako vlastnosti uvádí také:
Řádka 35: Řádka 36:
  
 
== Stav algoritmu ==
 
== Stav algoritmu ==
*Nechť:  
+
<div class="Definice">
 +
* Nechť:  
 
** X={x1, x2, ...,xn} je množina konfiguračních proměnných
 
** X={x1, x2, ...,xn} je množina konfiguračních proměnných
** Z={z1, z2, ...,zn} je množina vnitřních proměnných algoritmu A řešícího I.
+
** Z={z1, z2, ...,zn} je množina vnitřních proměnných algoritmu A řešícího problém I.
*Pak každé ohodnocení s proměnných X a Z je stav algoritmu.
+
* Pak každé ohodnocení s proměnných X a Z je stav algoritmu.
 +
</div>
  
 
== Zápis algoritmu ==
 
== Zápis algoritmu ==
Algoritmy zapisujeme:
+
Algoritmus můžeme zapsat následujícími způsoby:
* v přirozeném jazyce (slovně)
+
 
* pseudokódem
+
; V&nbsp;přirozeném jazyce
** používáme jazyk podobný programovacím jazykům
+
* Česky, anglicky,...
** vynecháváme ale některé prvky, které člověk pro pochopení nepotřebuje (složené závorky tam, kde je dostačující odsazení apod.).
+
* Například napíšeme článek, kde se popisuje, jak problém řešit.
* v programovacím jazyce
+
* Tento popis by měl být srozumitelný každému člověku.
* pomocí vývojových diagramů  
+
 
** viz série článků [http://programujte.com/clanek/2005080105-vyvojove-diagramy-1-dil/ Vývojové diagramy na Programujte.com].
+
; Pseudokódem
** Viz stránka [[Vývojové diagramy]].
+
* Používáme jazyk podobný programovacím jazykům, ale zjednodušený.
 +
* Vynecháváme prvky, které člověk pro pochopení nepotřebuje (složené závorky tam, kde je dostačující odsazení apod.).
 +
 
 +
; V&nbsp;některém **programovacím jazyce**
 +
* Například v&nbsp;Javě.
 +
* Oproti pseudokódu už je zde větší množství řádků, které nesouvisí s&nbsp;vysvětlením principu, ale jsou nutné pro spuštění.
 +
* Výhoda je, že tento postup lze v&nbsp;počítači přímo spustit.
 +
 
 +
; Pomocí vývojových diagramů
 +
* Viz série článků [http://programujte.com/clanek/2005080105-vyvojove-diagramy-1-dil/ Vývojové diagramy na Programujte.com].
 +
* Viz stránka [[Vývojové diagramy]].
  
 
== Algoritmizace × programování ==
 
== Algoritmizace × programování ==

Verze z 22. 9. 2021, 12:39


Obsah

Úloha

Problém

Popis problému zahrnuje

Algoritmus

Schematický postup řešení určitého problému, který je konečný, určitý, korektní a obecný.

Vlastnosti algoritmu
  1. Konečnost
    • algoritmus skončí pro libovolná (korektní) data v konečném množství kroků.
  2. Určitost (determinovanost)
    • všechny kroky algoritmu jsou přesně definovány.
  3. Korektnost
    • algoritmus skončí pro libovolná (korektní) data správným výsledkem.
  4. Obecnost
    • algoritmus řeší všechny úlohy daného typu.
Někdy se jako vlastnosti uvádí také

Stav algoritmu

  • Nechť:
    • X={x1, x2, ...,xn} je množina konfiguračních proměnných
    • Z={z1, z2, ...,zn} je množina vnitřních proměnných algoritmu A řešícího problém I.
  • Pak každé ohodnocení s proměnných X a Z je stav algoritmu.

Zápis algoritmu

Algoritmus můžeme zapsat následujícími způsoby:

V přirozeném jazyce
Pseudokódem
V některém **programovacím jazyce**
Pomocí vývojových diagramů

Algoritmizace × programování

Pojem programování v užším smyslu je synonymem kódování, tedy přepisu algoritmu do zdrojového kódu.

Pojem programování v širším slova smyslu je synonymem pro tvorbu software a zahrnuje: analýzu zadání, algoritmizaci a kódování.

Viz Tvorba software.

Viz také

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje