Algoritmy
- vlastnosti algoritmu
- skončí v konečném čase
- obecnost
- jednoznačnost - musí být jasné, co se má dělat
- nemusí být ale deterministický
- má nějaký výstup
- zápis je konečný
- algoritmy jsou všechny postupy včetně chybných
- v praxi nás ale zajímají algoritmy nějak kvalitní (užitečné, elegantní, rychlé, ...)
Vývojový diagram
- grafický zápis algoritmu
- různé formality zápisu, záleží na dohodě
- nejběžněji
- kulaté konce a začátky a skoky na jiná místa (spojky)
- hranaté akce
- zkosené rovnoběžníky vstupy a výstupy
- kosočtverec je podmínka
- spojnice rovné pravoúhlé, musí být jasný směr
- volání podprogramu/metody/funkce je v obdélníku s dvěma hranami
- přídavné značky na cykly s pevným počtem opakování, nejsou stěžejní, dá se bez nich obejít
Programovací jazyky
- definované způsoby, jak zapsat algoritmus
- zdrojový kód / strojový kód
- kompilované jazyky / interpretované jazyky
- nižší jazyky → vyšší jazyky (ASM → C → C++ → Java → Python)
- existuje jich mnoho druhů s několika různými filozofiemi
- několik různých metod přístupu
- procedurální / imperativní
- strukturované (Basic, Bash, C, ...)
- podmínky, cykly, sekvence, funkce
- objektové (Python, Java, C++, ...)
- obecně to nejpoužívanější
- pouze nadstavba nad strukturovaným programováním
- navíc třídy, dědičnost, objekty
- neprocedurální / deklarativní
- funkcionální (haskell, ...)
- založené na lambda-kalkulu
- chápe programování jako výpočet matematických funkcí
- logické (prolog, ...)
- definují se logické vztahy mezi prvky
- řekne se tomu, co je cílem
- nějak se to spočte
- IDE (Integrated Development Environment)
- textový editor na programování
- statická analýza kódu, ulehčuje práci, upozorňuje na chyby, navrhuje příkazy