03. Vývoj a rozdělení programů
https://soptik.tech/sinf/temata/temata-loni/99-ALGORITMY-pptx.pdf - 11. stránka
Programování
- Algoritmus
- postup pro řešení úlohy, který má 3 vlastnosti :
- Determinovanost - jednoznačnost, přesnost, úplnost
- Hromadnost - obecnost, algoritmus řeší celou třídu = skupinu úloh (např. vyřeší obsah obdélníku)
- Rezultativnost - konečnost - po konečném počtu kroků algoritmus skončí a dodá výsledek
- Zápis algoritmu
- grafický
- Vývojový diagram
- Strukturogram
- grafický
- postup pro řešení úlohy, který má 3 vlastnosti :
- slovní
- česky - popis
- programovací jazyk
- Program
- algoritmus, zapsaný v programovacím jazyce, určený pro PC
- posloupnost instrukcí (=příkazů), která krok za krokem popisuje řešení
- Postup při tvorbě programu
- Formulace úlohy - co máme udělat, řešit
- Analýza (rozbor) úlohy
- udělat si konkrétní příklad
- rozdělit úlohu na jednodušší části
- vstup, zpracování, výstup
- Sestavení algoritmu
- grafický, slovní zápis
- Sestavení programu
- Ladění programu = odstraňování chyb
- chyby
- syntaktické = špatný způsob zápisu, PC na ně upozorní
- sémantické = významové, PC na ně neupozorní, např. špatný vzoreček
- vyjímka dělení nulou
- chyby
- Používání programu
- Aktualizace, optimalizace
- Zásady strukturovaného programování
- cílem je vytvářet programy, které jsou
- Přehledné
- Srozumitelné
- Snadno modifikovatelné (změny)
- Snadno verifikovatelné (ověřitelné)
- Postup shora dolů (top - down)
- rozdělit úlohu na jednodušší části
- Používání doporučených řídících struktur
- Sekvence
- Větvení
- Cyklus
- nepoužívat příkaz GOTO
- cílem je vytvářet programy, které jsou
- Struktura, vývoj programovacích jazyků
- HW = PC, CPU (procesor)
- procesor má instrukční sadu = strojový kód
- Strojový kód (jazyk)
- je blízký HW -> závislý na HW (změna HW -> změna strojového kódu)
- kód je rychlý, efektivní
- pro člověka nesrozumitelný
- Asembler (assembler)
- jazyk symbolických adres
- blízký HW, trošku srozumitelnější pro člověka, než SK
- Vyšší programovací jazyk
- blízký člověku -> snadno se programuje
- nezávislé na HW
- HW = PC, CPU (procesor)
- Dělení jazyků
- Vyšší jazyky
- procedurální (jak) - C, Java
- strukturované, objektivně orientované
- neprocedurální (co) - Lisp, Prolog
- procedurální (jak) - C, Java
- Podle typu překladače
- Kompilátor
- ze zdrojového kódu udělá (přeloží ho) .exe soubor (cílový = spustitelný kód)
- Interpret
- jede po řádcích zdrojového kódu, přeloží je a postupně je vykonává
- Př. CMD ve windows = příkazový řádek
- Kompilátor
- Vyšší jazyky
- Příkazy
- Příkaz vstupu
- Příkaz výstupu
- Příkaz přiřazení
- aritmetický - +, -, *, /
- relační - >, <, =,
- logický - and, not, or
- Větvení
- if, switch
- Cyklus
- do - while - cyklus s podmínkou na konci
- while - cyklus s podmínkou na začátku
- for
- Datové typy v c++
- celočíselné
- char (signed, unsigned) - 8 bitů
- short - 16 bitů
- int - 32 bitů
- mohou být unsigned (bez znaménka), long - přesnější, velikost závisí na překladači
- desetinná čísla
- double - 15 číslic
- float - 7 číslic
- také mohou být long, velikost závisí na překladači
- další datové typy
- char - 8 bitů
- wchar_t - 16 bitů
- bool - 8 bitů (1 bit nelze adresovat)
- pole
- datový typ, jehož prvky jsou stejného typu a jména
- deklarace
- datový typ <název> [počet prvků 1. rozměru] [počet prvků 2. rozměru]...[počet prvků n. rozměru]
- string - řetězec, pole znaků
- použití i pro práci s množinami
- práce se soubory
- v knihovně fstream
- otevření souboru
- fstream <název operace se souborem> (“<název souboru>”, ios::out);
- ios::out soubor vytvoří, neexistuje - li
- zavření souboru
- <název operace se souborem>.close()
- zápis do souboru
- <název operace se souborem> << “Text”
- <název operace se souborem >> <název datového typu> - zápis datového typu
- celočíselné