Rudolf Pecinovský: Klasická výuka programování je škodlivá (4) – Jak pokračovat ve výuce OOP

středa 3. listopadu 2004 ·

Minule jsem ukazoval, jaké řešíme příklady před tím, než se seznámíme s klasickými strukturovanými konstrukcemi. Nyní vám ukážu, jaké příklady děti řeší poté, co se začnou seznamovat s podmíněnými příkazy a cykly.

Podmíněný příkaz – ošetřování událostí klávesnice

Od chvíle, kdy se děti seznámí s podmíněným příkazem, jim začnu pomalu vysvětlovat, jak pracovaly některé třídy a instance, které jsme doposud využívali jako služební.

Použití podmíněného příkazu a jeho různých variant včetně přepínače se velmi dobře demonstruje na ošetření událostí klávesnice. Děti sice definovaly reakce na události klávesnice již při tvorbě svých UFO, ale tehdy věděly, že při stisku klávesy dispečer zavolá předem danou metodu a měly za úkol pouze naprogramovat tělo této metody.

Nyní se přesuneme o úroveň níže a začneme si vysvětlovat, jak lze naprogramovat rozpoznání toho, která klávesa byla stisknuta, resp. puštěna, a případně i toho, které klávesy jsou právě stisknuté a které puštěné. V průběhu výkladu navrhneme a postupně vylepšujeme třídy, jejichž instance pracují jako simulace protiletadlového děla.

Soutěž robotů

Po probrání podmíněných příkazů vyhlásíme soutěž: Každé dítě má za úkol naprogramovat vlastní verzi robota, který chodí po dvorku a sbírá značky. Jeho úkolem je nasbírat co nejvíce značek a současně maximálně znesnadnit tento úkol ostatním robotům na dvorku. Na hodině pak uspořádáme turnaj o nejschopnějšího robota. Připravím dvorek a vypustím na něj vždy skupinu robotů (kdo vytvořil více typů, může nasadit od každého typu po jedné instanci). Po uplynutí předem zadané doby, resp. po vysbírání všech značek pak uděláme pořadí, který robot vysbíral nejvíc značek.

Soutěž probíhá v několika kolech. Jednotlivá kola se liší v tom, jsou-li na dvorku pouze značky nebo jsou‑li na dvorku vedle značek také zdi, které ztěžují orientaci a umožňují důmyslnějším robotům prozkoumat i oblasti, do nichž ti jednodušší nezabloudí.

Po hodině si může každý stáhnout všechny třídy z internetu a připravit si na příští hodinu vylepšenou verzi svého robota, která dosavadní verze porazí. Příští hodinu pak vyhlásíme odvetu, v níž nastoupí tyto vylepšené verze. 


Cykly

Po podmíněném příkazu přejdeme na práci s cykly. Ty vysvětluji na animacích. Vytváříme s dětmi simulace skákajících balónků. Nejprve se učí rozpohybovat každou instanci zvlášť tak, aby se po každém odrazu zmenšila výška, do které balónek odskočí, a aby se na konci balónek zcela zastavil. Pak si vysvětlíme základy tvorby nezávislých vláken a ukážeme si, jak to udělat, aby se všechny balónky pohybovaly současně, avšak nezávisle jeden na druhém.

Děti se tak naučí programování jednoduchých paralelních procesů. Na příkladu s balónky si ověří, že i velmi jednoduchý program může při paralelním spuštění několika vláken vytvářet dojem současného běhu několika programů. To už sice zažili několikrát (viz předchozí příklad s roboty nebo před tím kabiny na linkách), ale nyní takový program vytvoří sami od počátku do konce.

Kontejnery – množiny

V tuto chvíli začínáme vysvětlovat práci s kontejnery, což jsou objekty určené k uchovávání jiných objektů. V prvním ročníku probíráme pouze práci se seznamy a množinami.

Množiny trénujeme na simulaci Brownova pohybu molekul v uzavřeném prostoru. Prvním úkolem je vůbec vygenerovat náhodně rozmístěné molekuly tak, aby se navzájem nepřekrývaly. V druhém kole molekuly rozpohybujeme a ve třetím pak doplníme program na jednom konci prostoru o vývěvu, která odsává molekuly, jež se dostanou do jejího dosahu, a na druhém konci o porodnici, která při uvolnění prostoru generuje nové molekuly.

Na tomto příkladě si současně vyzkoušíme, že při používání paralelních procesů nemusíme vytvářet pouze vlastní vlákna, ale můžeme využívat i zabudované časovače a další třídy ze standardní knihovny, které nám ušetří další díl práce.

Kontejnery – seznamy

Práci se seznamy demonstrujeme na přípravě třídy Mnohotvar, jejíž instance představují obrazce sestavené z několika jednodušších tvarů. Ukážeme si, jak lze jednoduše definovat třídu komplexních tvarů a pak už jen daný tvar sestavit a tento tvar se bude okamžitě umět na požádání nakreslit, přesunout, přizpůsobit svůj rozměr a pozici velikosti plátna. Bude zkrátka umět řadu činností, které jsme doposud definovali pro každý takovýto složitý objekt zvlášť.

„Samostatný“ návrh složitějšího projektu

Závěrem celého běhu je samostatný návrh složitějšího projektu, v němž mají žáci za úkol navrhnout architekturu aplikace, která má simulovat sedmisegmentový displej zobrazující zadané číslice.

To je první úloha, kdy mají zcela samostatně navrhnout aplikaci sestávající z několika tříd. Pro její samostatné vyřešení samozřejmě v tuto chvíli nemají dostatek zkušeností, nicméně jejich znalosti jsou dostatečné k tomu, abychom ji mohli krok za krokem navrhnout spolu a vysvětlit si přitom základní zásady, které je vhodné při návrhu takovýchto aplikací dodržovat.

Od tohoto okamžiku se výuka láme. Přestáváme se soustředit na výklad detailů tvorby tříd a na seznámení se základními objektovými a strukturovanými konstrukcemi a těžiště výuky se začíná postupně přesouvat do návrhu architektury vytvářených aplikací. O tom ale zase někdy příště.


Autor pracuje jako EDU-expert ve společnosti Amaio Technologies, Inc.



Rudolf Pecinovský

0 komentářů:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.