68 lines
4.3 KiB
Markdown
68 lines
4.3 KiB
Markdown
|
# Postup při návrhu algoritmu (od problému k programu)
|
||
|
|
||
|
- Pokud máme problém, který chceme vyřešit pomocí počítačového programu, je potřeba nejprve promyslet různé aspekty vytvářeného programu
|
||
|
- Jaký je algoritmus či algoritmy programu
|
||
|
- Jakým způsobem lze algoritmus realizovat a dekomponovat na menší části
|
||
|
- Jaké jsou potřebné datové struktury
|
||
|
- Jaký bude vstup a výstup programu (co má program načítat a co vypisovat)
|
||
|
- Jak bude program komunikovat s uživatelem (typ uživatelského rozhraní)
|
||
|
|
||
|
### Obecný postup
|
||
|
|
||
|
- Zde je popsáno několik obecných rad, jak při vytváření (rozsáhlejšího) programu postupovat
|
||
|
- Nejedná se o žádnou konkrétní metodiku
|
||
|
- Nejedná se o dogma, které by muselo být dodržováno striktně
|
||
|
|
||
|
#### Promyšlení jednotlivých aspektů
|
||
|
|
||
|
- Je potřeba rozmyslet všechny zmíněné aspekty o Většina z nich spolu úzce souvisí => změna rozhodnutí v jedné oblasti pravděpodobně ovlivní další oblasti
|
||
|
- Dělat si poznámky, schémata
|
||
|
- Zvláště u složitějších problémů se snadno zapomíná na již vymyšlené věci, proto je potřeba si myšlenky zaznamenávat
|
||
|
|
||
|
#### Postup programování
|
||
|
|
||
|
- S programováním by se mělo začít, až když je rozmyšlená a navržená struktura aplikace
|
||
|
- Tj. na jaké třídy bude aplikace členěna a do jakých balíku budou tyto třídy umístěny
|
||
|
- Co naprogramovat nejdříve
|
||
|
- Je možno více postupů
|
||
|
- Častý je postup shora dolů
|
||
|
- Vytvoří se kostry jednotlivých (téměř všech) tříd i s hlavičkami metod
|
||
|
- Do těchto koster se následně postupně doplní funkcionalita (těla metod)
|
||
|
- Pokud budeme mít nejprve hotovou kostru většiny tříd metod (s prázdnými těly), hodí se to při následném psaní těl metod
|
||
|
- Těla metod mimo jiné obsahují volání jiných metod naší aplikace => pokud tyto metody existují (byť s prázdnými těly), IDE nástroj může při psaní pomoci s doplňováním jejich volání
|
||
|
- Průběžná kontrola funkcionality
|
||
|
- IDE nástroj nás upozorní na překlepy a jiné syntaktické chyby je možné vytvořit program, který půjde hned napoprvé přeložit (tj. bez chyb při překladu)
|
||
|
- Program však s vysokou pravděpodobností obsahuje chyby v chování programu, na které nás IDE nástroj neupozorní je potřeba ladění
|
||
|
- Řádné ladění je možné až po dokončení aplikace
|
||
|
- Ladění částí kódu (např. jednotlivých výpočtů) je však možné už v průběhu může to usnadnit ladění v závěrečné fázi, protože části kódu byly už alespoň částečně prověřeny
|
||
|
|
||
|
#### Úpravy algoritmů a refaktoring
|
||
|
|
||
|
- Pro začátečníky ale i pro zkušené programátory není snadné zohlednit při návrhu programu všechny aspekty
|
||
|
- Často se na něco zapomene
|
||
|
- Náprava opomenutí může být drobná, ale také rozsáhlá
|
||
|
- Je poměrně běžné, že se v již hotovém kódu dělají úpravy
|
||
|
- Za účelem doplnění či změny funkcionality
|
||
|
- Typicky proto, že se na něco zapomnělo, nebo se objevil nový požadavek
|
||
|
- Např. změna algoritmů, změna formátu vstupů a výstupů
|
||
|
- Za účelem vylepšení zdrojového kódu (bez změny funkcionality)
|
||
|
- Tzv. refaktoring
|
||
|
- Např. změna struktury aplikace (rozdělení funkcionality do více tříd ametod), přejmenování a přesunutí tříd, rozdělení aplikace do více balíků apod.
|
||
|
- IDE nástroje často poskytují nástroje pro jeho usnadnění
|
||
|
- Např. přejmenování a přesunutí třídy
|
||
|
- Ve skutečnosti se málokdy stane, že původní návrh, jak by měl program vypadat, se naprogramuje 1:1 a nedojde k žádným změnám
|
||
|
|
||
|
#### Ladění a testování
|
||
|
|
||
|
- Po dokončení programu je potřeba provést jeho ladění
|
||
|
- Program obsahuje chyby za běhu programu, které je potřeba odstranit
|
||
|
- Důležité je zkoušet program spouštět s různými typy vstupů (včetně neplatných vstupů) a ověřovat, zda dává správné výstupy
|
||
|
- V případě nalezení problému (program padá a/nebo dává nesprávné výsledky), je vhodné použít debugger (případně kontrolní výpisy) pro zjištění, co se v programu děje a pro nalezení a odstranění chyb
|
||
|
|
||
|
#### Odevzdání programu
|
||
|
|
||
|
- Po dokončení testování je třeba vytvořit formu programu, která je vhodná pro odevzdání či distribuci
|
||
|
- Typicky spustitelný soubor JAR
|
||
|
- Tato forma by rovněž měla být řádně otestována
|
||
|
|