Slovní popis pracovního postupu
- 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í.
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ě Pythonu, 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.
- 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čebnici.
- 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.
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?
- 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?
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é. 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.
- 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.
Kreslení:
- Sestroj středy obou kontrolních úseček a také střed úsečky tvořené koncovými body kontrolních úseček.
- Narýsuj střed mezi středem kontrolní úsečky a středem úsečky z konců kontrolních úseček.
- Totéž na druhé straně.
- Nakresli prostředek mezi posledními dvěma středy, to je nový bod tvojí křivky.
- Takhle pokračuj, až budeš mít celou křivku.
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.
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í
- 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.
- 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.
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!
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í:
- Pokud všechny body A, A', B, B' splývají, tvoří zároveň výslednou křivku, a máš hotovo. Jinak pokračuj.
- 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).
- Najdi střed S úsečky (A', B').
- Najdi středy ASS, BSS úseček (AS, S), (BS, S).
- Najdi střed X úsečky (ASS, BSS).
- Vyznač X jako bod výsledné křivky.
- Nakresli podle tohoto návodu křivku s koncovými body A, X a s kontrolními úsečkami (A, AS) a (X, ASS).
- 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. 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.
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í intervalu.
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.
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…
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.
Prověření kritérií: vlastní tvorba
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í?