Představ si, že jsi součástí vývojového týmu a před samotným programováním kontroluješ návrhy algoritmů.
Dostal jsi čtyři postupy, které na první pohled vypadají použitelně. Každý z nich ale obsahuje chybu nebo neúplnost, která se projeví při určitém vstupu.
Tvým úkolem není algoritmus pouze přepsat.
Musíš:
najít problém → pojmenovat porušenou vlastnost → algoritmus opravit → otestovat opravu
Při auditu pracuj s těmito vlastnostmi dobrého algoritmu:
Je jasné, s jakými daty algoritmus pracuje a co má být výsledkem?
Je každý krok popsán přesně a bez nejasného výkladu?
Dokáže algoritmus po konečném počtu kroků skončit?
Je možné jednotlivé kroky skutečně vykonat?
Vrací algoritmus správný výsledek pro vstupy, pro které je určen?
Funguje pro celou určenou skupinu vstupů, ne pouze pro jeden konkrétní příklad?
Jedna chyba může souviset i s více vlastnostmi. Vyber hlavně tu, která podle tebe nejlépe vystihuje problém.
Pro každý ze čtyř případů vytvoř samostatný blok.
Použij vždy stejnou strukturu:
V 1–2 větách popiš, co se může pokazit a proč.
Vyber jednu hlavní vlastnost algoritmu.
Pokud je to vhodné, můžeš uvést i druhou.
Stručně svoji volbu zdůvodni.
Napiš kompletní opravenou verzi.
Použij:
očíslované kroky,
nebo jednoduchý pseudokód.
Programovací jazyk není potřeba.
Uveď:
Vstup:
…
Očekávaný výsledek:
…
Proč test dokazuje, že je oprava lepší:
…
Původní algoritmus:
Načti zadané heslo.
Pokud je heslo správné, přihlas uživatele.
Zobraz hlavní stránku aplikace.
Uživatel zadá nesprávné heslo.
Proveď celý audit a vytvoř opravenou verzi algoritmu.
Původní algoritmus:
Nastav nejnižšíCena = 0.
Projdi všechny produkty.
Pokud je cena produktu menší než nejnižšíCena, ulož ji jako novou nejnižší cenu.
Vypiš nejnižšíCena.
Produkty mají ceny:
899 Kč
349 Kč
1299 Kč
Urči, co původní algoritmus udělá, a potom vytvoř správnou opravu.
Původní algoritmus:
Zkontroluj, zda server odpovídá.
Dokud server neodpovídá, opakuj kontrolu.
Po navázání spojení pokračuj.
Server:
nebude dostupný několik hodin nebo vůbec
Navrhni takovou opravu, aby algoritmus měl jasně definované chování i v této situaci.
Původní algoritmus:
Načti seznam bodových výsledků.
Sečti všechny body.
Vyděl součet počtem výsledků.
Vypiš průměr.
Seznam výsledků je:
prázdný
Zjisti, proč je to problém, a navrhni správné chování algoritmu.
Teď otestuj jednu ze svých oprav ještě jednou.
Vyber si jeden z případů 1–4 a vymysli vlastní vstup, který je odlišný od povinného testu.
Vyplň:
Vybraný případ:
…
Můj testovací vstup:
…
Očekávaný výsledek:
…
Co tímto testem ověřuji:
…
Test musí mít smysl a měl by být schopný odhalit případnou další chybu.
Vymysli vlastní krátký algoritmus o 4–7 krocích.
Může řešit například:
objednávku v e-shopu,
přihlášení,
výpočet,
vyhledávání,
práci se seznamem,
rezervaci,
práci se souborem,
jiný jednoduchý problém.
Do algoritmu záměrně vlož jednu logickou chybu.
Chyba nesmí být pouze překlep.
Musí způsobit například to, že algoritmus:
pro některý vstup vrátí špatný výsledek,
nemusí skončit,
neřeší některou možnou situaci,
obsahuje nejasný krok,
funguje jen pro příliš úzkou skupinu vstupů.
Pod něj napiš:
Která vlastnost je porušena:
…
Testovací vstup, který chybu odhalí:
…
Co se při testu pokazí:
…
Opravená verze problematické části:
…
Na konec odpověz vlastními slovy na tři krátké otázky.
Může být algoritmus jednoznačný a konečný, ale přesto dávat špatné výsledky?
Vysvětli na krátkém příkladu.
Proč nestačí algoritmus otestovat pouze na jednom běžném vstupu?
Co je podle tebe při testování algoritmu hraniční případ?
Uveď jeden příklad.
Před odevzdáním zkontroluj, že:
máš zpracované všechny 4 původní algoritmy,
u každého je konkrétně popsaný problém,
u každého jsi pojmenoval porušenou vlastnost,
opravený algoritmus skutečně řeší původní chybu,
u všech 4 případů jsi použil požadovaný test,
jeden algoritmus má navíc vlastní stress test,
vytvořil jsi vlastní chybný algoritmus,
u vlastního algoritmu jsi ukázal test, který chybu odhalí,
odpověděl jsi na všechny 3 závěrečné otázky,
dokument je přehledný a čitelný.
Odevzdání:
Odevzdej jeden dokument ve formátu DOCX nebo PDF.
Dokument musí obsahovat:
4 kompletní algoritmické audity,
vlastní stress test jednoho řešení,
vlastní chybný algoritmus a jeho opravu,
odpovědi na 3 závěrečné otázky.
Název souboru:
ITE3_INF_H03_Prijmeni_Jmeno.docxnebo:
ITE3_INF_H03_Prijmeni_Jmeno.pdfHotový soubor odevzdej v Microsoft Teams ve svém třídním týmu do příslušné očíslované složky tohoto úkolu.