Tvorba programu - algoritmizace a programování
01-Tvorba programu
Postup při řešení problému
Návrh seshora dolů byl dalším z nových postupů. Myšlenka spočívá v rozdělení velkého programu do menších, lépe zvladatelných úkolů.
Je-li jeden z těchto úkolů stále příliš rozsáhlý rozdělte ho do ještě menších úkolů. Pokračujte tímto způsobem dokud nebude program rozškatulkován do malých,
jednoduše programovatelných modulů. Návrh C tento přístup usnadňuje, podporuje vás, abyste navrhovali programové jednotky nazývané funkce,
které představují jednotlivé moduly úlohy. Jak jste si mohli všimnout, postupy strukturovaného programování odrážejí postupný myšlenkový proces,
jenž přemýšlí o programu v rámci činností, které provádí.
- Přečtu si zadání
- Analýzuji problém
- Sestavím si algoritmus v hlavě
- Převedu algoritmus do programu
- Program odladím
- Shora dolů - rozklad úlohy na segmenty, které se neustále zjemňují, až můžeme řešit problemativu v konkrétním programovacím jazyce.
- Zdola nahodu - z elementárních kroků vytváříme prostředky ke zvládnutí problému
- oba současně
Definice algoritmu
Algoritmus
- postup řešení problému nejen programu
- postup, který určuje, co máme dělat, abychom vyřešili úlohu
- je to přesný postup, který je potřeba k vykonání určité činnosti
Tvorba algoritmů S algoritmy se setkáváme v běžném životě. Těmito algoritmy jsou například recepty na vaření, postup ovládání video kamery, cesta do školy.
Vlastnosti algoritmů "HERgoD"
- Hromadnost – algoritmus musí být použitelný pro všechny úlohy stejného typu (dva lidé dojdou podle stejného popisu na stejné místo)
- Elementárnost - algoritmus se skládá z konečného počtu jednoduchých kroků (elementy: chůze, jízda autobusem)
- Resultativnost – od libovolných vstupních dat musíme dospět k požadovaným výsledkům (vždy dojdeme k výsledku - nezasekneme se uprostřed)
- Konečnost – činnost algoritmu skončí v reálném čase
- Determinovanost – v každém kroku je znám následující krok (člověk vystoupí z autobusu a ví, že jde na nějaké místo)
Program
- je zápis algoritmu pomocí příkazů programovacího jazyka
Možnosti zápisu algoritmu:
- Slovně
- Graficky - vývojové diagramy a strukturogramy.
- Pomocí programovacího jazyka
- Matematicky
Ke kreslení vývojových diagramů používáme standardní grafické symboly:
Jednotlivé značky spojujeme čárami a spojkami:
Slovní vyjádření
Používá se pro skupinu lidí, která nemá programátorské vzdělání - návody k obsluze, recepty, postup práce
Výhody:
- lze se domluvit i s laikem
Nevýhody:
- málo přehledné
- nemá nástroje k dodržení vlastností algoritmu
Vývojové diagramy
Je to symbolický, algoritmický jazyk, který se používá pro názorné zobrazení algoritmu. Zápis ošetřen normou.
Výhody:
- jednoznačný komunikační prostředek při týmové práci
- přehledný
- má nástroje k dodržení vlastností algoritmu
- k dokumentačním účelům je přehlednější než výpis programu
Nevýhody:
Počítačový program
Používá se pro zápis instrukcí z vytvořeného algoritmu, kterému počítač rozumí a umí z něho vytvořit strojový kód.
Výhody:
- forma zápisu, které rozumí člověk i počítač (pokud je vybaven příslušným překladačem)
- nedá se ničím nahradit ani obejít
Nevýhody:
- zápisu rozumí pouze programátor, který umí daný programovací jazyk
- výpis může být málo názorný a nepřehledný
Matematické vyjádření
Používá se tam, kde je možné daný problém popsat matematickým vyjádřením - řešení kvadratická rovnice, apod.
Výhody:
Nevýhody:
- může být málo podrobný
- Při neošetření vstupních podmínek nemusí být věcně správný
Zpracování programu
Integrované vývojové prostřední (IDE - integrated development enviroment) = soubor programů, které si volám podle toho, co potřebuju.
Skládá se z: "EPic KLDr"
- Editor
- Preprocesor
- Kompilátor
- Linker
- Debugger
Preprocesor
- Vkládá knihovny (#include...)
- Odstraňuje komentáře
- Rozvíjí makra (s parametrem / bez parametru, projde a nahradí)
- Zpracovává podmíněný překlad (nástroj k testování určité části programu - ostatní je jako vykomentováno)
[SKE] Příkazy pro něj začínají "#" typicky incude: když ho najde, vyhodí ten řádek a vloží tam tu dotyčnou knihovnu.
V hlavickovych souborech nejčastěji: deklarace fcí, maker, konstant. "<>" zobáčky znamenají, že se includy hledají v defaultním místě standartních inkludů.
Jiná možnost: napsat do uvozovek - hledá se v aktuálním adresáři: "C:\MOJE\MOJE.h" nedávají se znaky "\" dvakrát, bo to není string!
Kompiler
Přeloží každý soubor programu - výsledkem je *.OBJ (object module - binární soubor) v TurboC++, DevC++ *.o.
V OBJ nejsou odvolávky z knihoven, kontroluje syntaktické chyby.
Tyto soubory si předávají členové týmu, protože neodhaluje know-how.
- Syntaxe - pravidla zápisu, pravidla jazyka - lze dohledat v dokumentaci jazyka
- Sémantika - význam napsaného kódu
Linker
Poskládá OBJ moduly s knihovnami a vytvoří *.exe soubor. Také vkládá absolutní adresy paměti.
Debugger
Ladící prostředek součástí IDE. Hledá běhové chyby při spuštěném programu.
Umí breakpointy a skoky po instrukcích: (Turbo)
- F7 - trace into
- na řádku, kde jsem se zastavil je volání nějaké mé funkce, zmáčknu F7, tak krokuje tu mou funkci (skočím dovnitř a krokuju)
- F8 - step over
- zavoláme svou funkci - už se nekrokuje - dodělá se a jde na další řádek
- F4 - run to cursor - nepotřebuje break pointy
- F9 - pokračuj