Přejít na cvičení:
Krok po kroku
Přejít na téma:
Algoritmické myšlení
Zobrazit na celou obrazovku
Procvičujte neomezeně

Váš denní počet odpovědí je omezen. Pro navýšení limitu či přístup do svého účtu s licencí se přihlaste.

Přihlásit se
Zobrazit shrnutí tématu
NCS
Sdílet

QR kód

QR kód lze naskenovat např. mobilním telefonem a tak se dostat přímo k danému cvičení nebo sadě příkladů.

Kód / krátká adresa

Tříznakový kód lze napsat do vyhledávacího řádku, také je součástí zkrácené adresy.

Zkopírujte kliknutím.

NCS
umime.to/NCS

umime.to/NCS

Úprava programů

Kvalitní kód je takový, který se snadno čte, testuje a upravuje. Kvalitu kódu je vhodné průběžně vylepšovat opravami následujících problémů.

Nepoužitý kód

Části kódu, které se buď neprovedou, nebo sice provedou, ale nijak neovlivňují jeho chování, zbytečně komplikují pochopení programu a je proto vhodné je odstranit. Zbytečný může být příkaz, cyklus, podmínka, proměnná i celá funkce.

Příkaz bez efektu

Efekt nemá opakované přiřazení stejné hodnoty (např. nastavení aktuální barvy malující želvy), přiřazení hodnoty do proměnné, se kterou se již dále nepracuje, nebo matematické operace, které nemění hodnotu (přičtení 0, vynásobení 1).

Cyklus provedený jednou/vůbec

Pokud se cyklus provede vždy právě jednou, není potřeba – nedochází k žádnému opakování. Cyklus odstraníme, ponecháme však příkazy, které byly v jeho těle. Pokud se tělo cyklu neprovádí vůbec, lze cyklus odstranit včetně jeho obsahu. Obě tyto situace jsou nejsnáze vidět u cyklu opakuj N×, ale můžou nastat u všech typů cyklů.

Podmínka platící vždy/nikdy

Pokud podmínka platí vždy, nahradíme podmíněný příkaz obsahem větve pokud. Pokud podmínka neplatí nikdy, nahradíme ho obsahem větve jinak (pokud větev jinak nemá, tak celý podmíněný příkaz smažeme).

Prázdná větev podmíněného příkazu

Pokud větev jinak neobsahuje žádný příkaz, lze ji vypustit.

Pokud neobsahuje žádný příkaz první větev, lze větve prohodit (a prázdnou vypustit) negací podmínky.

Nepoužitá proměnná

Proměnná, do které se pouze zapisují hodnoty, ale nikdy se z ní hodnota nečte, nemá na běh a výstup programu žádný vliv a lze ji tedy odstranit.

Nezavolaná funkce

Funkce, kterou pouze definujeme, ale nikde nevoláme, je zbytečná a lze ji odstranit.

Zbytečně složitý kód

Pokud lze kód zjednodušit, zvýší to většinou jeho čitelnost. Relativně jednoduché jsou případy, kdy lze sloučit dva příkazy, cykly, nebo podmínky. Kód lze ale také někdy zjednodušit použitím vhodnější programovací konstrukce (např. cyklu opakuj N× místo opakuj dokud) nebo rozkladem programu (zavedením pomocných funkcí).

Sloučitelné příkazy

Sloučení dvou po sobě jdoucích akcí do jedné. Například dvě otočení o 90° a 30° lze nahradit jediným otočením o 120°.

Sloučitelné cykly

Pokud je v těle cyklu pouze vnořený cyklus, lze je sloučit do jediného. Sloučení lze také provést u dvou bezprostředně následujících cyklů, které mají stejné tělo.

Sloučitelné podmínky

Pokud podmíněný příkaz obsahuje ve svém těle pouze další podmíněný příkaz, lze se vyhnout vnoření použítím složené podmínky.

Sloučit lze také dva podmíněné příkazy s opačnou podmínkou (pomocí úplného podmíněného příkazu).

Zjednodušitelná negace

Pokud lze logické výrazy zjednodušit, je to typicky vhodné udělat. Častým případem je aplikace negace na nerovnost nebo složenou podmínku. (V případě úplného podmíněného příkazu lze alternative prohodit příkazy ve větvích pokud a jinak a negaci vypustit.)

Nevhodný typ cyklu

Pokud je počet opakování dopředu známý, použijeme cyklus s daným počtem opakování, který je jednodušší.

Cyklus místo podmíněného příkazu

Pokud se má příkaz provést nejvýšše jednou, použijeme podmíněný příkaz, nikoliv cyklus.

Chybějící rozklad

Pokud je hlavní program nebo některá funkce příliš složitá, je vhodné program nebo funkci rozložit do více funkcí tak, aby každá funkce měla jasný účel.

Duplicitní kód

Pokud se v programu opakují stejné nebo podobné kousky kódu, program to nejen zbytečně natahuje, ale také to komlikuje jeho úpravy – je potřeba změnit více míst (a pokud některé místo upravit zapomeneme, zaneseme do programu chybu).

Duplicitní úseky kódu

Pokud jsou dva úseky kódu hodně podobné, lze je často zobecnit do společné pomocné funkce.

Duplicitní příkazy v posloupnosti

Posloupnost stejných příkazů lze nahradit cyklem. Cyklem lze nahradit také posloupnost příkazů, které se liší pouze hodnotou proměnné, která se mění pořád stejným způsobem.

V některých případech nepotřebujeme zavádět nový cyklus, ale upravit stávající.

Duplicity v těle podmíněných příkazů

Pokud mají po sobě jdoucí větve podmíněného příkazu úplně stejné tělo, lze je spojit využitím složené podmínky.

Když se těla liší, ale máme na začátku / na konci všech větví podmíněného příkazu stejný příkaz (nebo více stejných příkazů), lze tento příkaz přesunout před/za podmíněný příkaz.

Pokud všechny větve podmíněného příkazu obsahují cyklus se stejnou hlavičkou, lze se duplicity zbavit přesunutím podmíněného příkazu dovnitř cyklu.

Nevhodná jména

Nevhodně zvolená jména proměnných a funkcí komplikují pochopení programu a nezřídka vedou k chybám při psaní programu (nebo při jeho pozdějším rozšiřování).

Nepopisná jména

Volíme taková jména, která jasně vyjadřují účel proměnné či funkce, i za cenu delšího názvu. Jednopísmenné názvy jsou vhodné jen v omezených případech (řídící proměnná cyklu, souřadnice bodu, krátké ukázky kódu).

Zavádějící jména

Ještě nebezpečnější než jména nepopisná jsou jména, která vypadají popisně, ale popisují proměnnou či funkci chybně.

Překrývající se jména

V rámci jednoho kontextu není vhodné použít jedno jméno pro více různých věcí – ani v případě, že se už na původní proměnnou odkazovat nepotřebujeme. Takové překrývání komplikuje pochopení programu a vede k chybám při jeho úpravách.

Zavřít

Úprava programů (střední)

Vyřešeno:



NAPIŠTE NÁM

Děkujeme za vaši zprávu, byla úspěšně odeslána.

Napište nám

Nevíte si rady?

Nejprve se prosím podívejte na časté dotazy:

Čeho se zpráva týká?

Vzkaz Obsah Ovládání Přihlášení Licence