Odkazy na kapitoly k ověřování najdete na úvodní stránce. Tyto vzdělávací materiály jsou alfa verzí určenou k ověřování ve školním roce 2018/2019 v rámci projektu CZ.02.3.68/0.0/0.0/16_036/0005322 Podpora rozvíjení informatického myšlení.


Slovní popis pracovního postupu

Z Informatika pro každého
Přejít na: navigace, hledání
Úvodní pokusy · Co je to algoritmus
ikona boxu
Co se naučíš:
  • Posoudit kvalitu jiného postupu, identifikovat problémová místa a odstranit je.
  • Kvalitně popsat pracovní postup přirozeným jazykem. Znát a užívat příslušná doporučení.
ikona boxu
Obvyklý průběh hodiny a metodické poznámky


Informace v tomto boxu lze zobrazit samostatně (např. pro tisk).

Související materiály: Plán hodiny (k použití přímo ve výuce), TODO: [[[:Učebnice/Algoritmus/Slovní popis pracovního postupu/Hodina/PRIM-PL]] Pracovní list pro studenty] ------------- vkládat podmínečně, jen pokud PL existuje TODO: vytvořený v rámci projektu PRIM. --- doplň odkaz na PRIM, vkládej jako šablonu, aby se vložil externí odkaz

TODO: RVP

Výstupy podle RVP:
  • Po...

Tato hodina přímo navazuje na předchozí. Její cíle se tradiční výuce informatiky poněkud vymykají. Nezabýváme se zde popisem postupů s využitím nějakých formálních (např. programovacích) jazyků, ale naopak jazykem přirozeným. S návody a instrukcemi v přirozeném jazyce budou totiž žáci v životě pracovat vůbec nejčastěji.

Hodina vede k formulaci základních kritérií, která by měl dobrý popis pracovního postupu splňovat. Následně kritéria otestujeme na příkladech. Využijeme je jak při tvorbě vlastních návodů, tak při hodnocení (a hledání slabin) návodů ostatních.

Díky zkušenosti s popisy přirozeným jazykem žáci později o to více ocení čistotu a jednoznačnost jazyků symbolických a programovacích.


Abychom měli dost příkladů, zformulují nejdřív žáci vlastní návod na provedení nějaké činnosti, kterou znají (např. vaření čaje). Návody mezi sebou opět porovnají (aniž by čaj skutečně vařili).

Na základě dosavadních zkušeností pak žáci společně formulují kritéria a zásady pro tvorbu spolehlivého slovního popisu pracovního postupu. Využijí k tomu sdílený dokument. Jednotlivé body následně rozdělí do různých kategorií (nutné podmínky, doporučení...).

Kritéria pak žáci využijí k pečlivému a konkrétnímu zhodnocení různých návodů a k jejich následnému vylepšení.

Další poznámky
Kapitola v učebnici obsahuje ukázkový popis postupu obsahující rekurzi. Pokud nemáme času nazbyt, můžeme daný příklad vynechat.

ikona boxu
Formální jazyky
Pro popis pracovních procesů citlivých na přesnost a jednoznačnost se spíše ujaly jazyky formální. Ty jsou vytvořené uměle, což ovšem umožňuje navrhnout jednoznačná pravidla. S jednoznačnými (a ve srovnání s přirozenými jazyky jednoduchými) pravidly se snáze zajišťuje jednoznačnost významu.

Ve formálním jazyce píšeš např. zápisy geometrických konstrukcí a chemické rovnice. Jazyk webových stránek uvidíš, když v prohlížeči najdeš volbu Zobrazit zdrojový kód. Také programovací jazyky, včetně PythonuTODO: link, jsou příklady formálních jazyků.

Zápis pracovního postupu přirozeným jazykem má zřejmou zdánlivou výhodu: Každý mu rozumí. Takže v běžných situacích dobře poslouží. Má také jednu nevýhodu: ve skutečnosti není pravda, že mu každý rozumí. Je nesmírně obtížné vyjadřovat se přirozeným jazykem jednoznačně. Všimni si, že i např. právní jazyk má od jazyka přirozeného poměrně daleko.

S postupy zapsanými přirozeným jazykem se ale v životě setkáš nejčastěji — jako vykonavatel, ale také jako jejich tvůrce. Máme už s nimi nějaké zkušenosti, tak se podrobněji podívejme, jak vypadá kvalitní popis pracovního postupu přirozeným jazykem.

ikona boxu
Úloha:
  • Podívej se na postupy, se kterými jsme zatím přišli do styku v předchozích hodinách, porovnej je mezi sebou. Jestli ti to nestačí, podívej se také na příklady v učebniciTODO: odkaz...?.
  • Společně se spolužáky pak sestavte seznam pravidel pro slovní popisy pracovních postupů. Může jít o nezávazné dobré nápady a doporučení, ale také o nutné podmínky toho, aby měl návod vůbec šanci být kvalitním.
  • Zaměř se na různé oblasti - jak se v návodu vyjadřovat, jak jej strukturovat, jak jej formátovat.
ikona boxu
Spolupráce na kritériích

Dosud napsané návody a zkušenosti s nimi obvykle poskytují dostatek pozitivních i negativních příkladů, je ale dobré mít je případně vytipované předem a studenty na ně upozornit. Diskusi se snažíme udržovat konstruktivní. Měli bychom dostat více či méně výsledky uvedené níže.

Ke společné práci lze využít třeba [Dokumenty]. Jestli studenti dosud nikdy současnou práci na jednom dokumentu nezkoušeli, mají nejvyšší čas. Způsob práce pochopí rychle, rolí učitele je podporovat strukturu, aby se práce nezvrhla v chaos (resp. aby se z něj po úvodních minutách zase dostala). Tedy rozdělení rolí a zodpovědností, rozdělení dokumentu na části atp.

Kritéria pro kvalitní popis pracovního postupu

Co by mělo být součástí dobrého návodu?

ikona boxu
 
  • Nadpis
  • Věta o tom, k čemu postup slouží (pro lepší pochopení).
  • Popis vstupu: Přesný popis toho, s čím postup pracuje. Týká se jak materiálu, tak informací. Něco z toho může být proměnlivé (lodní smyčku lze vázat z různých provazů), ale obvykle to přesto podléhá nějakým podmínkám (provaz musí být dost dlouhý).
  • Popis výstupu: Přesný popis výsledku naší práce ve vztahu ke vstupnímu materiálu. Přinejmenším musí být jasné, jestli je výsledkem uzel, číslo, slovo, vyléčený pacient nebo raketa.
  • Pracovní podmínky: Přesný popis předpokladů, které musí být splněny, aby návod fungoval, např. co musí vykonavatel umět.
  • Teprve potom jsou na řadě jednotlivé kroky postupu.

Jaký by měl být popis postupu?

TODO: jednou z toho možná udělám mmapu? TODO: aktualizuj podle ISSEP článku, nebo kam to bylo

ikona boxu
 

Tyto body je nutno dodržet za všech okolností:

  • Jazyková správnost. Pokud je něco česky, je šance, že to má jasně daný význam (na kterém se všichni shodnou). Pokud něco není česky, nemá to význam žádný. I kdyby se na Krásně všichni shodli na tom, co asi autor myslel, a co je tedy nejpravděpodobnější význam.
  • Instrukce musí být poznat jako instrukce.
  • Instrukce musí být popsány dost podrobně, by bylo jasné, co dělat.
  • Všechna neznámá slova, termíny atd. musí být jasně a jednoznačně vysvětlena.
  • Jasná návaznost instrukcí („co dělat dál“):
    • Zejména u rozhodování je nutno pokrýt všechny alternativy.
    • Při opakovaném provádění instrukcí musí být jasné, které instrukce se opakují a za jakých podmínek.
    • Pokud postup nekončí na konci popisu, je třeba konec výslovně sdělit.
  • Pokrytí všech očekávaných eventualit (co je či není očekáváno, je vhodné vypsat už u pracovních podmínek).

Několik doporučení

Tyto body mohou tvorbu dobrých postupů usnadnit.

  • Uváděj jednu instrukci na řádek.
  • Řádky čísluj.
  • Používej rozkazovací způsob.
  • Instrukce, které se týkají společného podúkolu, nebo spolu jinak souvisí, vhodně vyznač — odsazením, rámečkem, barvou…
  • Nevyhýbej se opakování slov. Nepíšeš sloh. Bezchybné a snadné pochopení je zde důležitější než čtenářský zážitek.
  • Vyhýbej se opakování instrukcí. Má-li se instrukce několikrát zopakovat, nevypisuj každé opakování, raději popiš, co a jak se tedy má opakovat. Opakováním instrukcí zvyšuješ riziko chyby v zápisu postupu, a čtenář bude unaven zjišťováním, jestli se instrukce liší, nebo ne.
  • Vhodně používej proměnnéTODO: odkaz do programka. To jsou slova či symboly, které něco zastupují. V průběhu postupu se může zastupovaný objekt měnit, nebo taky můžeme rozhodnout, že už budeme proměnnou používat k zastupování jiného objektu.TODO: tohle chce příklad
  • Vhodně používej komentáře. To jsou popisky dění, které ale nejsou instrukcemi. Pomáhají pochopit, co se děje (třeba příkladem). K úspěšnému provedení návodu sice jeho pochopení není potřeba, ale obvykle to člověku výrazně usnadní práci. Komentáře je nutno jasně odlišit od samotných instrukcí k provádění.
  • Pokus se o to, aby bylo možné podle návodu pracovat rovnou, aniž by bylo potřeba ho jednou nejdřív celý přečíst (což v praxi samozřejmě všichni děláte, právě proto, že návody často nefungují).


Prověření kritérií: kreslení křivky

Nově vzniklá kritéria je potřeba prověřit. Podívejme se na následující příklad.

Příklad: Kreslení křivky

Návod na nakreslení křivky.

Na začátku máš dvě kontrolní úsečky.TODO: shromáždi výtky ke kreslení křivky z dú! Ty které tam nechceš, ty odstraň

Kreslení:

  1. Sestroj středy obou kontrolních úseček a také střed úsečky tvořené koncovými body kontrolních úseček.
  2. Narýsuj střed mezi středem kontrolní úsečky a středem úsečky z konců kontrolních úseček.
  3. Totéž na druhé straně.
  4. Nakresli prostředek mezi posledními dvěma středy, to je nový bod tvojí křivky.
  5. Takhle pokračuj, až budeš mít celou křivku.
ikona boxu
Úloha: Hodnocení popisu pracovního postupu

Zkus návod na kreslení křivky provést. Popiš, čím splňuje a čím naopak porušuje kritéria pro dobrý popis pracovního postupu. Navrhni vylepšení problematických míst.

ikona boxu
Nápověda

Postupuj podle jednotlivých kritérií a doporučení. Kontroluj, jestli jsou splněna nebo ne. Nezapomeň uvést místo, které pravidla porušuje, a doporučení, jak dané místo vylepšit, např.:

  • Návod neobsahuje žádnou jazykovou chybu.
  • Návod obsahuje nepřehlednou instrukci č. 1, potřebovala by rozdělit na dvě.

Řešení

TODO: nepíšu "návrhy na zlepšení", ale fakt se mi nechce

  • Není jasné, jaká křivka má být výsledkem, v jakém vztahu je ke „kontrolním úsečkám“, co jsou ty úsečky vůbec zač a jaké splňují podmínky.
  • První krok obsahuje zbytečně hodně instrukcí najednou.
  • Druhý je věcně nejednoznačný. Není jasné, které konce kontrolních úseček použít, takže nelze pokračovat.TODO: obrázek, že je víc možností?TODO: Jiným druhem nejednoznačnosti je jazyková nejednoznačnost, například ve větě "displej nahradil monitor" (xxx lepší příklad - aby to byla instrukce - a dej to do toho návodu?).
  • Třetí krok se snaží být úsporný, což je dobře, jenže to dělá lajdácky. Není jasné, co se má zopakovat (předchozí krok? všechny předchozí kroky?) a co je ta druhá strana. Při opakování je nutné přesně udat, co má být stejné, a co se má změnit.
  • Ve čtvrtém kroku se odkazujeme na "poslední dva středy". Jsou to poslední sestrojené středy? Poslední použité? Poslední zmíněné v návodu? Pomohlo by středy jednoznačně pojmenovat.
  • V pátém kroku je opět nejasně zadané opakování, dokonce vícenásobné. Jenže opět není jasné co a jak máme opakovat, a navíc ani jak dlouho. Jak máme poznat, jestli už je „hotová celá křivka“? Lupou? Mikroskopem? Hlasováním?
  • V celém návodu je nejednoznačná terminologie: rýsujeme, sestrojujeme, kreslíme, hledáme a vyznačujeme středy a prostředky. To může být matoucí: „Proč to asi rozlišují? Mám snad dělat pokaždé něco jiného? Co?“

Nedostatků se v návodu najde ještě víc, tyhle jsou nejvýraznější.

Uvedený návod na kreslení křivek je sbírkou častých nešvarů. Vypěstuj si na ně citlivost: nauč se je poznat, opravit, a především nedělat. Mnoho z vás teď ani netuší, jak vlastně provedení návodu vypadá. Schválně to zkus podle návodu následujícího.

Příklad: Kreslení křivky podruhé (de Casteljau)

Tenhle postup slouží k postupnému nakreslení křivky se dvěma kontrolními úsečkami podle principu známého z běžných grafických editorů. Potřebujeme plochu s vyznačenými koncovými body A a B výsledné křivky. Z koncových bodů vychází kontrolní úsečky (A, A'), (B, B'), které svou orientací a délkou určují konečný tvar výsledné křivky. Křivka v koncových bodech ke kontrolním úsečkám těsně přiléhá na úseku dlouhém úměrně délce kontrolní úsečky.

Potřebujeme umět pracovat s úsečkami a hledat jejich středy, např. pomocí tužky, pravítka a kružítka, nebo např. pomocí Geogebry.

ikona boxu
Stručnější zápis

Množství bodů v postupu je vlastně jen pomocných. Když jako S(K,L) označíme střed úsečky (K,L), můžeme bod X vyjádřit stručněji:

X = S(S(S(A,A'),S(A', B')),S(S(B,B'),S(A', B')))

Raději to zkontroluj!

ikona boxu
Nápověda

Nějak si zvýrazni strukturu závorek, např.:
S( S( S(A,A'), S(A',B') ), S( S(B,B'), S(A',B') ) )

Kreslení:

  1. Pokud všechny body A, A', B, B' splývají, tvoří zároveň výslednou křivku, a máš hotovo. Jinak pokračuj.
  2. Najdi středy AS, BS obou kontrolních úseček (pokud koncové body úsečky splývají, splývá s nimi i její střed).
  3. Najdi střed S úsečky (A', B').
  4. Najdi středy ASS, BSS úseček (AS, S), (BS, S).
  5. Najdi střed X úsečky (ASS, BSS).
  6. Vyznač X jako bod výsledné křivky.
  7. Nakresli podle tohoto návodu křivku s koncovými body A, X a s kontrolními úsečkami (A, AS) a (X, ASS).
  8. Nakresli podle tohoto návodu křivku s koncovými body B, X a s kontrolními úsečkami (B, BS) a (X, BSS).

Drží se tento druhý návod pravidel a doporučení pro popisy pracovních postupů? Ve srovnání s návodem předchozím je už o mnoho lepší. Dokonce i když si někdo není zcela jist, k čemu má vlastně vést, je možné podle něj prostě začít pracovat a křivku úspěšně dokončit.TODO: dej sem příklad s příkladem úvodního postavení křivek. Označení bodů brání zmatení. Návod je sice suchopárný a nudný, ale to nevadí. Prioritou je přesnost. Všimni si také, že nepopisujeme, jak hledat střed úsečky. Předpokládáme, že kdokoliv bude postup provádět, středy hledat umí. Vždy, když rozmýšlíme a popisujeme nějaký návod, musíme si ujasnit, jakou úroveň schopností vlastně čekáme od realizátorů toho návodu.

TODO: ilustrace, jak to počítá počítač (mmch pro srovnání, jak je rekurzivní popis jednodušší) https://www.desmos.com/calculator/cahqdxeshd https://www.desmos.com/calculator/vfkihgwzo1 - tady jsou nakreslené pomocné konstrukční úsečky!

Rekurze

ikona boxu
Rekurze

Rekurze si nepochybně zaslouží vlastní hodinu, nemá ale smysl na ni čekat a použití rekurze omezit pouze do ní. Rekurze se v informatice vyskytuje běžně. Zde tedy stačí na ni stručně upozornit, zbytek textu uvádíme pro zájemce z řad studentů. Všichni by ale po nějaké době výuky informatiky měli vědět, co a k čemu rekurze je.

Zde si zaslouží pozornost označení bodů. Některým studentům je třeba výslovně vysvětlit, že každá úroveň zanoření si body přeznačí po svém, aby návod fungoval. Tedy návod vyvoláváme např. s úsečkami (B, BS) a (X, BSS), ale uvnitř toho návodu tytéž úsečky uvidíme jako (A, A'), (B, B').

Možná ti připadají záhadné instrukce 7 a 8. To máme v rámci provádění návodu zopakovat celý ten návod, a hned dvakrát? A v rámci těch dvou opakování návod provést znovu, ještě čtyřikrát? A v každém z těch čtyř opakování…? Ano. S podobnou situací už jsme se setkali v postupu půlení intervaluTODO: odkaz.

ikona boxu
Pamatuj si:

Vyvolání návodu sebou samým nazýváme rekurze.

Možná vidíš malý háček: když budeme takto pokračovat — skončíme někdy? Ano, všimni si kroku 1. Obsahuje tzv. ukončovací podmínku. Pokud je splněna, právě prováděný návod okamžitě končí, nedojde ke kroku 7 ani 8, a nedojde tedy k vyvolání dalšího provádění návodu. Pokračuje se naopak na předchozí úrovni, v provádění návodu, kterým byl právě ukončený návod vyvolán. TODO: obrázek, nebo jako úkol: ilustrace, kde budou různě barevné body odpovídat různým hloubkám volání

ikona boxu
Pamatuj si:

Ukončovací podmínku musí obsahovat každý rekurzivní návod, jinak by nebyl konečný.

Rekurze je velmi oblíbený nástroj informatiků. Umožňuje totiž zcela jednoduše a stručně popsat jinak nepříjemně složité struktury a chování (nikoliv ovšem každé složité chování). Jaké křivky znáš? Přímku, kružnici, parabolu, sinusoidu atp. a jejich případné kombinace. Nyní máš k dispozici křivku, která nabývá mnohem bohatší škály tvarů. Přitom k jejímu sestrojení stačí opakovat 8 instrukcí a ani není potřeba nic počítat.

Rekurze je schovaná i v samotných základech informatiky. Nejen, že je základním kamenem počítání vůbec, využívá se k definici tak základních struktur, jako jsou přirozená čísla:

Příklad:

Přirozené číslo je buď 1, nebo následník jiného přirozeného čísla. A to je buď 1, nebo…

ikona boxu
Úloha: Definice kruhem?

V definici přirozeného čísla tady používáme dosud nedefinovaný pojem přirozené číslo. Není to definice kruhem? Proč si to myslíš?

Jiný příklad, který znáš, je pravidlo pro dělitelnost třemi:

Příklad:

Dělitelná třemi jsou čísla 0, 3, 6 a 9 a přirozená čísla, jejichž ciferný součet je dělitelný třemi.

TODO: tady je třeba něco udělat

TODO: úloha

Vytvoř ilustrační obrázek (hodnotí se názornost a přehlednost) ke kreslení křivky podle rekurzivního algoritmu v učebnici. Práci odevzdej ve formátu, která umožňuje další úpravy (takže nikoliv bitmapu).
ikona boxu
Nápověda

Nezapomeň označit všechny body, části konstrukce barevně odliš. Do obrázku můžeš vložit čísla odpovídající jednotlivým krokům algoritmu. Zahrň do obrázku alespoň jedno rekurzivní volání (tam začne kolidovat značení, promysli, jak se s tím vypořádat). Usnadni si práci volbou vhodného nástroje, např. Geogebry nebo Inkscapu.

Prověření kritérií: vlastní tvorba

ikona boxu
Úloha: Vylepšení vlastního postupu

Vrať se k již dříve vypracovanému návodu, který považuješ za nejslabší. Vylepši jej podle nových kritérií a doporučení. Porovnej původní a novou verzi. Vidíš nějaké zlepšení?

TODO: teacher samozřejmě je prima zadat znova tvorbu popisu, teď už teda s kritérii; případně pro budoucnost: kvadrovnice?