Obsah lekce:
Algoritmus je přesný návod či postup, kterým lze vyřešit daný typ úlohy. 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). Je to předpis, podle kterého počítač (procesor) provádí výpočty realizující požadované řešení daného problému. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept.
Pokud bychom měli zpřesnit pojem algoritmus pro naši potřebu, pak lze říct, že algoritmus je předpis, jak řešit určitý problém. Jinými slovy přesně definovaná konečná posloupnost kroků, která umožní, pro přípustné hodnoty vstupních dat (vstupní informce), nalézt v konečném počtu kroků korektní výstupní data (výsledek). Pokud bychom chtěli být opravdu přesní, tak algoritmus bychom definovali jako "proceduru realizovatelnou Turingovým strojem." Není však v našich možnostech toto nyní objasňovat neboť je to již látka řešená zpravidla až v rámci vysoké školy.
V praxi jsou proto předmětem zájmu hlavně takové algoritmy, které jsou v nějakém smyslu kvalitní. Takové algoritmy splňují různá kritéria, měřená např. počtem kroků potřebných pro běh algoritmu, nebo jednoduchost či elegance algoritmu. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané algoritmická analýza a teorie složitosti.
Část textu o algoritmu a jeho vlastnostech byla převzata z Wikipedie (http://cs.wikipedia.org/wiki/Algoritmus).
Počítačový program (dále jen program) je z hlediska informatiky popis postupu operací, které realizují zadanou úlohu. Zápis algoritmu v některém z programovacích jazyků nazýváme program. Program zpravidla vytváří (zapisuje) programátor. Jako příklad uvedeme jednoduchý program, který nechá uživatele zadat dvě čísla a a b a vypíše na obrazovku jejich součet.
Algoritmus realizovaný tímto programem by bylo možné v přirozeném jazyce vyjádřit například takto:
Program SectiDveCisla;
var a,b:integer;
begin
readln(a);
readln(b);
writeln(a+b);
end.
import java.util.Scanner;
public class InputExp {
public static void main(String[] args) {
int a,b;
Scanner in = new Scanner(System.in);
a = in.nextInt();
b = in.nextInt();
in.close();
System.out.println(a+b);
}
}
Psaní programu má svá pravidla, ale přehlednosti zdrojového kódu programu můžeme pomoci tím, jak jej napíšeme. Předchozí ukázku programu přepíšeme například takto:
import java.util.Scanner;
public class InputExp {
public static void main(String[] args) {
int a,b;
Scanner in = new Scanner(System.in);
a = in.nextInt();
b = in.nextInt();
in.close();
System.out.println(a+b);
}
}
Je vidět, že byť třeba programu nerozumíme, tak je pro nás daleko čitelnější.
Algoritmy je možno zapisovat mnoha způsoby. Na jednoduchém algoritmu pro součet dvou zadaných čísel ukážeme některé z nich:
A) Slovním vyjádřením (obdoba kuchyňského receptu):
B) Pomocí diagramu (jednoduchý nákres, schéma, vývojový diagram, strukturogram, apod.) znázorňujícího postup řešení:
C) V programovacím jazyce:
Program SectiDveCisla;
var a,b:integer;
begin
readln(a);
readln(b);
writeln(a+b);
end.
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d",a+b);
return 0;
}