\setcounter{section}{19}
- grafické vyjádření procesu (algoritmus, postup práce)
- reprezentace kroků pomocí tvarů a šipek
- analýza procesu, návrh, dokumentace
- programy -- MS Visio, Lucid chart, Inkscape
- preferovaný směr shora dolů, zleva doprava
- vyznačeno oválem
- šipky ukazují směr pokračování procesu
- obdélník
- popis dílčí akce, kroku
\fullfig{20-diagram1}[Diagram jednoho kroku]
- obdélník se svislými čárami
- více kroků označených jedním symbolem
- vyjádření funkce
- rovnoběžník
- komunikace s uživatelem
\fullfig{20-diagram2}[Diagram se vstupem a výstupem]
- šestiúhelník
- probíhají pouze za platné podmínky, jinak se pokračují dál
\fullfig[width=0.4\textwidth]{20-diagram3}[Diagram cyklu]
- kosočtverec
- pokud podmínka, splní se kroky
\fullfig[width=0.4\textwidth]{20-diagram4}[Diagram podmínky]
- kruh
- spojení více toků procesu do jednoho
\begin{figure}[htbp] \centering \subfloat[Začátek/konec]{\includegraphics[height=0.05\textheight]{20-terminal}}\qquad \subfloat[Proces/krok]{\includegraphics[height=0.05\textheight]{20-proces}}\qquad \subfloat[Rozhodnutí (if)]{\includegraphics[height=0.05\textheight]{20-if}}\qquad \subfloat[Vstup/výstup]{\includegraphics[height=0.05\textheight]{20-io}}\qquad \subfloat[Cyklus]{\includegraphics[height=0.05\textheight]{20-loop}}\\ \subfloat[Komentář]{\includegraphics[height=0.05\textheight]{20-comment}}\qquad \subfloat[Podproces/funkce]{\includegraphics[height=0.05\textheight]{20-function}}\qquad \subfloat[Spojení]{\includegraphics[height=0.05\textheight]{20-connector}}\qquad \subfloat[Databáze]{\includegraphics[height=0.05\textheight]{20-database}}\qquad \subfloat[Soubour]{\includegraphics[height=0.05\textheight]{20-file}}\qquad \subfloat[Skupina souborů]{\includegraphics[height=0.05\textheight]{20-multifile}} \end{figure}
- způsob zapsání kódu a jeho následné použití v počítači
- rozdělení na vyšší a nižší
- strojový kód či mu velice blízko
- jednoduché na převod do binárního záznamu
- základ vyšších jazyků
- přímá kontrola nad registry, pamětí, pointery\dots
- strojový kód, assembly, občas za něj považované i~C
- použití přirozeného jazyku
- velké použití abstrakcí
- překládány do nižších jazyků
- velký počet předdefinovaných funkcí
- menší kontrola nad samotným hardwarem
- procedurální/imperativní
- popis výpočtu pomocí příkazů, určení přesného postupu
- Fortran, ALGOL, BASIC, C
- neprocedurální
- specifikace cíle namísto postupu získání cíle
- SQL, PROLOG, LIPS
- strukturované -- jeden vstup a výstup, vytvoření algoritmu z řídíc struktur a funkcí
- C, Pascal
- objektově orientované -- využití objektů, jejich funkcí, dědičnosti\dots
- Java, C$\#$
- kombinované -- strukturované programování s podporou objektů
- Python, JavaScript, C$++$
- funkcionální
- vyhodnocování matematických funkcí
- využití lambda funkcí
- SQL, Mathematica, Haskell
- logický
- použití matematické logiky k programování
- PROLOG
- kompilované
- jazyky přeloženy do binárního souboru, který je následně spuštěn
- C, C++, Rust
- interpretované
- interpreter interpretuje jazyk v reálném čase
- flexibilnější, ale pomalejší
- chyby jsou zachyceny až při spuštění kódu
- Python, JavaScript, Java, R
- statické programovací jazyky
- typ proměnných je znám v čase kompilace
- typ proměnných zadán programátorem (Java, C, C++) nebo odvozen kompilátorem (Haskell, Rust)
- dynamicky psané programovací jazyky
- typ dat specifikován pro konkrétní hodnotu, ne pro proměnnou
- možno změnit typ proměnné v průběhu programu
- Python, JavaScript, PHP, Ruby