Základní otázkou, kterou si při výuce jakéhokoli bloku znalostí musíme položit, je, které mají být výstupní parametry výuky a jakým způsobem budou pro žáky užitečné. Stojíme-li před problémem, zda chceme ze žáků vychovat alespoň programátory začátečníky, dovolím si odpovědět negativně. Jistě se hodí, aby měli představu o tom, jak se deklarují funkce, jak se pracuje s proměnnými, cykly nebo jak vypadá základní podmínka. Jde ale až o znalosti v podstatě druhotné. Dle mého soudu je cenné, pokud se žáci naučí hledat ve světě či matematických problémech algoritmy.
Pokud dokáží přehlédnout problém a vytvořit systematický postup, jak jej řešit, pak vlastní implementace problému do programu napsaného v určitém paradigmatu není příliš obtížná a ani důležitá, neboť ji většina žáků nebude pravidelně používat. Akcent by tak měl být kladen především na rozvoj jejich myšlení, který právě s rozvojem algoritmizace těsně souvisí.
Pro tento účel se velice dobře hodí dvě významné metody grafického zápisu algoritmu. Jde jednak o Flowchart, tedy diagram, kterým lze krok za krokem popsat algoritmus v imperativním jazyce. Pokud nemáme za cíl vytvářet objektový návrh řešení problému, mohli bychom si vystačit s ním. Osobně se ale domnívám, že přinejmenším zmínka o objektově orientovaném návrhu programu by padnout měla, neboť jde o zcela dominantní způsob programování. A pro něj se ukazuje jako velice vhodný nástroj UML.
V následujícím článku se tedy ještě letmo zmíníme o významu algoritmizace pro rozvoj myšlení žáků a matematiku, podrobněji popíšeme Flowchart a UML a představíme několik programů, které umožňují jejich tvorbu na počítači.
Základní otázkou je, jaký význam má výuka algoritmizace, co je v ní tím bonusem, který obohatí žáka, dá mu větší intelektuální schopnosti, probudí v něm kreativitu nebo mu předá něco užitečného do života. Pro to, abychom mohli vhodně odpovědět, je třeba se krátce podívat na to, kde všude se algoritmy kolem nás vyskytují. Jistě zde nevyčerpáme všechny možnosti, ale pokusíme se vyzdvihnout alespoň několik zajímavých oblastí.
Obrovské množství vzorců chování, které je možné algoritmizovat, nacházíme v živé přírodě. Dokonce v informatice existuje celá disciplína, která se těmito procesy zabývá. Konkrétních příkladů může být obrovské množství; funkce rychlosti srdečního tepu ve vztahu k aktuální zátěži, řízení toku v grafu při dopravě materiálu v mraveništi nebo třeba popis závislostí činností hormonálních žláz v různých situacích. Jde dokonce často o modely, které je možné graficky a obecně (bez konkrétních hodnot) relativně dobře znázornit. Je tedy možné snadno propojit tuto část výuky například s biologií.
Další zajímavou oblastí jsou různé situace, na které se vztahují fyzikální zákony. Jednoduše je možné modelovat srážky částic, pohybový stav tělesa při průchodu polem atp. Pěkným příkladem, jak zde rozvinout algoritmizaci, může být užití aplikace Step pro simulaci nějakého děje. Pak provedeme dekompozici jednotlivých prvků a graficky popíšeme, co se musí kdy s danými objekty (kupříkladu pružinou, koulí či kladkou) stát. Jen jednotlivé přírodní zákony nasazujeme na objekty, které se mohou vzájemně ovlivňovat.
Nejjednodušší a asi také prakticky nejpoužívanější oblastí algoritmizace jsou matematické problémy. V zásadě zcela triviálně lze se žáky procházet jednotlivé naučené postupy a ukazovat, jak by se zpracovaly čistě algoritmicky. Řada pedagogů dokonce přímo postupy ve výuce matematiky vypisuje mocí Flowchart a žáci si tak snadno uvědomují, jak jsou jednotlivé postupy zcela automatické. Samozřejmě lze jít dále než jen k výpisu dělitelů daného čísla, řešení kvadratické rovince a podobných úkolů. Zde je možné se žáky klidně i nějakou konkrétní implementaci řešení projít.
Ve výčtu možných řešení bychom mohli pokračovat dále – do jisté míry je možné algoritmizovat lidské chování v určitých situacích, kuchařské recepty nebo jednoduché otázky z rozhodovacího managementu. Záleží jen na fantazii a času pedagoga, kam až může s algoritmizací zajít. Zde se dostáváme k základní otázce, proč vlastně algoritmizaci vyučovat. Jde o metodu, která umožní žákům dekomponovat a analyzovat problémy a jevy, které jsou všude kolem nich, a racionálně k nim přistupovat.
Lidský mozek neustále algoritmizuje, jde o vlastní činnost, která nám umožňuje strukturovaně myslet. Žákům dá nejen přehled o tom, co vše může do nějakého procesu vstupovat, ale také v nich rozvine schopnost kreativně vnášet nové prvky do řešení různých problémů, a to pokud možno co nejjednodušším způsobem. Jde tedy o rozvoj kreativity, analytického myšlení i celkový rozvoj intelektuálních schopností žáka. A právě v tom, že se naučí dívat se na jevy či problémy algoritmicky, spatřuji hlavní význam výuky základů programování na střední škole.
V této části článku si stručně ukážeme dvě základní metody grafického záznamu programu a ukážeme, v kterých situacích který z nich efektivně využít.
UML (Unified Modeling Language) je v softwarovém inženýrství grafický jazyk pro vizualizaci, specifikaci, navrhování a tvorbu dokumentace programových systémů. Nabízí standardní způsob zápisu jak návrhů systému včetně konceptuálních prvků, jako jsou business procesy a systémové funkce, tak konkrétních prvků, jako jsou příkazy programovacího jazyka, databázová schémata a znovupoužitelné programové komponenty. Podporuje objektově orientovaný přístup k analýze, návrhu a popisu programových systémů, ale neobsahuje způsob, jak se má používat [1].
Kishorekumar 62. UML Diagramy. [cit. 2011-09-26]. Dostupný pod licencí Creative Commons Attribution-Share Alike 3.0 Unported na WWW: http://en.wikipedia.org/wiki/File:UML_Diagrams.jpg |
V prvé řadě jde tedy o nástroj sloužící pro návrh objektově orientovaného programu. Pro žáky může být zajímavé také to, že pomocí UML je možné modelovat například i ekonomické procesy. V zásadě existují v programování tři základní způsoby, jak je využít. V prvním jde čistě o analýzu problému – analytik zhodnotí situaci, naznačí, co se bude muset v daných objektech odehrávat, a praktickou implementaci nechá na programátorovi. Druhou variantou je přípravná programátorská práce, kdy analytik nejen navrhne model, ale provede také popis modelu tříd, řekne, co má obsahovat které rozhraní a které vlastnosti mají mít jednotlivé objekty. Třetí variantou je pak přímá implementace kódu v UML návrhu.
V posledních patnácti letech zažívá UML poměrně velký boom a je ideální nejen pro obecnou výuku algoritmizace, ale také při vysvětlování toho, jak funguje objektově orientované programování. Lze pomocí něj jednoduše popsat nejen základní strukturu, ale také interakce mezi objekty nebo chování jednotlivých elementů, což je zvláště pro větší projekty velice užitečné.
Flowchart neboli vývojový diagram, je druh diagramu, který slouží ke grafickému znázornění jednotlivých kroků algoritmu nebo popisu obecného procesu (opět je možné jej využít i pro ekonomické procesy). Vývojový diagram používá pro znázornění jednotlivých kroků algoritmu symboly, které jsou navzájem propojeny orientovanými šipkami. Standardně se používá následujících symbolů:
Úsečka (spojnice) či množina navazujících úseček končící šipkou — určuje směr zpracování algoritmu. Standardně není třeba používat šipky, pokud je tok programu doprava nebo dolů.
Jedna z možností, jak může vypadat Flowchart [cit. 2011-09-26]. Dostupný pod licencí Public domain na WWW: http://en.wikipedia.org/wiki/File:FlowchartExample.png |
Dle potřeby jsou pak připojovány také další značky, které umožňují například oddělení subprogramu či procedury, naznačení vstupu či výstupu a mnohé další. Je dobré si se žáky na počátku jasně nadefinovat „abecedu“ a tu pak v dalším výkladu dodržovat. Vývojové diagramy se velice dobře hodí pro zápis lineárního neobjektového algoritmu. Často je možné jej zvolit jako doplněk k UML pro jednotlivé uzly grafu.
V této poslední části se pokusíme upozornit na několik málo zajímavých aplikací, které umožňují tvorbu grafického návrhu programu a jsou zdarma. To je důležité nejen pro školu, ale také pro žáky, kteří je pak mohou zkoušet také doma.
Silným a kvalitním nástrojem, který umožňuje dobře ukázat, v čem spočívá síla UML, je Bouml, který podporuje možnost převodu diagramu do jazyků Java, Idl či C++ a to oboustranný. Je tedy možné jednoduše analyzovat pedagogem připravené programy, stejně jako se žáky navrhovat vlastní. Jde tedy o poměrně kvalitní řešení, které je možné používat i v různých programátorských seminářích. Užitečné také je, že jde o program, který je k dispozici téměř pro všechny rozšířené operační systémy.
Pokud nám jde jen o grafický návrh, je možné sáhnout po některém z nástrojů na tvorbu diagramů. Zřejmě nejznámějším takovým nástrojem pro Linux je Dia, který je určený pro tvorbu obecných diagramů. Snadno s ním ale vytvoříte jak Flowchart, ke kterému má přednastavené tvary, tak také ULM návrh. Na rozdíl od Bouml je jednodušší a pro většinu žáků také zřejmě snáze ovladatelný. Podobně lze využít také například Draw z balíčku LibreOffice či OpenOffice.org.
Dia |
Flowcharty je možné jednoduše tvořit také online a to například pomocí Flowchart.com, který nabízí jednoduché ovládání, online přístup, ale také řadu dalších funkcí – přidávání zdrojového kódu k jednotlivým částem, spolupráci více uživatelů, vkládání obrázků pro větší přehlednost, možnost práce na více listech atp. Nechybí ani možnost exportu projektu do png či pdf.
Ve výčtu dalších programů bychom mohli pokračovat velice dlouho. Z komerčních lze uvést Visio od Microsoftu. Pokud jde o bezplatné aplikace, tak pro UML je možné zmínit populární Umbrello, Graphor a mnohé další. Flowchart je možné navrhnout téměř v libovolném nástroji na tvorbu diagramů, ať již jde o Xmind nebo v Javě napsaný eYd, který nabízí velké množství funkcí pro řadu druhů diagramů a skvěle se hodí na tvorbu ilustrací na nejrůznější informatická témata. Výběr je vskutku bohatý.
eYd |
Ať již k výuce programování a algoritmizace přistoupíte jakkoli – obecně nebo výukou konkrétního jazyka, je dobré mít na paměti, že nástroje pro grafický návrh programů jsou pro žáky názorné, jednoduché a přehledné. V žádném případě se v nich nebudou ztrácet a mohou posloužit jako dobrý odrazový můstek pro další rozvoj jejich schopností. Z osobní zkušenosti mohu říci, že jejich užívání má ještě jeden významný pozitivní prvek – vede k rozvaze nad problémem, strukturovanému psaní a efektivnímu řešení problémů. Odpadá tak klasické školní napsání programu jen tak, aby fungoval, bez koncepce a rozmyslu. Již jen proto jejich využití ve výuce mohu jen doporučit.
Všechny články jsou publikovány pod licencí Creative Commons BY-NC-ND.
Pro vložení komentáře je nutné se nejprve přihlásit.
Článek není zařazen do žádného seriálu.
Článek je zařazen v těchto kolekcích: