Mendelova univerzita v Brně Provozně ekonomická fakulta
Metodika vedení kroužku se zaměřením na algoritmizaci a programování na nižším stupni gymnázia Závěrečná práce
Vedoucí práce: Ing. Ludmila Brestičová
Mgr. Hana Dudíková
Brno 2013
Děkuji Ing. Ludmile Brestičové za poskytnutou odbornou pomoc a metodické vedení mé práce.
Prohlašuji, že jsem tuto diplomovou práci vytvořila samostatně s použitím literatury, kterou uvádím v seznamu. V Litovli dne 20. května 2013
__________________
Abstract Dudíková, H. Methodology of ring management with a focus on algorithm development and programming at a lower level school. Brno, 2012. The work deals with the classification of learning algorithms and programming to RVP. It maps the current state and justifies the need for algorithm development and implementation of teaching the basics of programming in lower secondary school. It is a proposal of ring activities and teaching methodology. Keywords Methodology, algorithm development, programming, lower level school.
Abstrakt Dudíková, H. Metodika vedení kroužku se zaměřením na algoritmizaci a programování na nižším stupni gymnázia. Práce se zabývá problematikou zařazení výuky algoritmizace a programování do RVP. Mapuje současný stav a zdůvodňuje potřebnost zavedení výuky algoritmizace a základů programování na nižším stupni gymnázia. Je zpracován návrh činnosti kroužku a metodika výuky. Klíčová slova Metodika, algoritmizace, programování, nižší stupeň gymnázia.
Obsah
11
Obsah 1
2
Úvod a cíl práce
13
1.1
Úvod ......................................................................................................... 13
1.2
Cíl práce ................................................................................................... 13
Problematika zařazení výuky algoritmizace a programování v RVP
14
2.1 RVP pro gymnázia - Informatika a informační a komunikační technologie ........................................................................................................ 14
3
2.2
Implementace RVP do ŠVP z hlediska ICT ............................................. 15
2.3
Cíle RVP odkazující na výuku algoritmizace a programování ................ 15
Návrh obsahu činnosti kroužku 3.1
17
Jak začít? .................................................................................................. 17
3.1.1
Algoritmus........................................................................................ 17
3.1.2
Zavedení pojmu algoritmus .............................................................18
3.1.3
Obsah a cíl učiva ..............................................................................18
3.2
Karel ......................................................................................................... 19
3.2.1
Karel ................................................................................................. 19
3.2.2
Obsah a cíl učiva ............................................................................. 20
3.3
Vyšší programovací jazyk ........................................................................ 21
3.3.1
Jak začít s výukou programování .................................................... 21
3.3.2
Závěr šetření.................................................................................... 23
3.3.3
Seznámení s prostředím jazyka Python.......................................... 23
4
Závěr
24
5
Literatura
26
12
Seznam příloh
Seznam příloh Příloha1: Příklady pro výuku, metodické poznámky Algoritmy
26
Příloha2: Příklady pro výuku, metodické poznámky Karel
29
Příloha3: Příklady pro výuku, metodické poznámky Python
32
Úvod a cíl práce
13
1 Úvod a cíl práce 1.1
Úvod
V roce 2004 MŠMT schválilo nové principy v politice pro vzdělávání žáků od 3 do 19 let. Toto rozhodnutí změnilo systém kurikulárních dokumentů, které jsou nyní vytvářeny na dvou úrovních a to na úrovni státní a na úrovni školské. Národní program vzdělávání vymezuje počáteční vzdělávání jako celek a rámcové programy pak vymezují závazné „rámce“ pro jednotlivé etapy vzdělávání (předškolní, základní a střední vzdělávání). Školní úroveň pak představuje školní vzdělávací programy, podle kterých se uskutečňuje výuka na jednotlivých školách. Podle Rámcově vzdělávacího programu pro gymnázia RVP-G jsou pro oblast 5.8 Informatika a informační a komunikační technologie vytyčeny cíle k utváření a rozvíjení klíčových kompetencí, které mají být implementovány na úrovni Školních vzdělávacích programů. Tato práce se zabývá zapojením výuky algoritmizace a základů programování na nižším stupni gymnázia formou kroužku. Nejen na naší škole se totiž tato oblast informatiky zcela vytratila z ŠVP jak nižšího, tak vyššího gymnázia. Sami učitelé bohužel považují kompetence v oblasti algoritmizace a programování za méně významné, ale o to víc náročné. Proto je výuka ICT většinou zcela zaměřena pouze na uživatelské dovednosti a žáci nemají přístup ani k elementárním základům algoritmizace a programování. Je tedy na zvážení učitelů, zda by byli ochotni zařadit úvod do algoritmizace a programování alespoň jako náplň kroužku pro žáky, kteří o tyto aktivity projeví zájem.
1.2 Cíl práce Cílem práce je navrhnout a metodicky zpracovat náplň kroužku se zaměřením na algoritmizaci a programování na nižším stupni gymnázia. Teoretická část práce se zabývá problematikou zařazení výuky algoritmizace a programování v RVP a dále příklady její implementace do ŠVP. Dále pak řeší návrh obsahu kroužku z hlediska různých metodických přístupů. V praktické části jsou uvedeny příklady úkolů jednotlivých lekcí zpracované pro vedoucího kroužku a příklady pro žáky.
14
Problematika zařazení výuky algoritmizace a programování v RVP
2 Problematika zařazení výuky algoritmizace a programování v RVP 2.1 RVP pro gymnázia - Informatika a informační a komunikační technologie Cílové zaměření vzdělávací oblasti Vzdělávání v dané vzdělávací oblasti směřuje k utváření a rozvíjení klíčových kompetencí tím, že vede žáka k: a) porozumění zásadám ovládání a věcným souvislostem jednotlivých skupin aplikačního programového vybavení a k vhodnému uplatňování jejich nástrojů, metod a vazeb k efektivnímu řešení úloh; b) porozumění základním pojmům a metodám informatiky jako vědního oboru a k jeho uplatnění v ostatních vědních oborech a profesích; c) uplatňování algoritmického způsobu myšlení při řešení problémových úloh; d) využívání prostředků ICT k modelování a simulaci přírodních, technických a společenských procesů a k jejich implementaci v různých oborech; e) tvořivému využívání spektra možností komunikačních technologií a jejich kombinací k rychlé a efektivní komunikaci; f) využívání výpočetní techniky ke zvýšení efektivnosti své činnosti, k dokonalejší organizaci práce a k týmové spolupráci na úrovni školní, republikové a mezinárodní; g) využívání informačních a komunikačních technologií (on-line vzdělávání, spolupráce na zahraničních projektech) k celoživotnímu vzdělávání a vytváření pozitivních postojů k potřebám znalostní společnosti; h) využití možností výpočetní techniky a internetu k poznávacím, estetickým a tvůrčím cílům s ohledem ke globálnímu a multikulturnímu charakteru internetu; i) uvědomění si, respektování a zmírnění negativních vlivů moderních informačních a komunikačních technologií na společnost a na zdraví člověka, ke znalosti způsobů prevence a ochrany před zneužitím a omezováním osobní svobody člověka; j) získávání údajů z většího počtu alternativních zdrojů a odlišování informačních zdrojů věrohodných a kvalitních od nespolehlivých a nekvalitních; k) respektování a používání odborné terminologie informačních a počítačových věd; l) poznání základních právních aspektů a etických zásad týkajících se práce s informacemi a výpočetní technikou, k respektování duševního vlastnictví, copyrightu, osobních dat a zásad správného citování autorských děl.
Problematika zařazení výuky algoritmizace a programování v RVP
15
2.2 Implementace RVP do ŠVP z hlediska ICT Z citace RVP je zřejmé, že dokument slouží skutečně jako všeobecný rámec, do kterého se dá zasadit prakticky libovolný obsah učiva. Není zde nicméně vymezen rozsah učiva, který má být zařazen do jednotlivých ŠVP. Uvažujeme-li koncept gymnázií jako způsob všeobecné přípravy žáků, pak i informatika musí mít postavení rovnocenné ostatním vědním oborům. Každý učitel si musí uvědomit, jak je důležité, aby si žáci v jakémkoliv předmětu především dokázali vyhledat, vyhodnotit a utřídit informace. Rovněž si musí být vědom skutečnosti, že o technickou stránku věci a o použité technologie jde až v druhé řadě. Na základě kontaktů s vyučujícími ICT však autorka zjistila, že se obsah výuky tohoto předmětu mnohdy zúžil pouze na nácvik dovedností, jak použít tu či onu funkci Wordu či Excelu a to bez sebemenší snahy vysvětlit žákům, jak a proč tyto funkce fungují, jak se jich dá využít či zneužít a jaký je celkový smysl jejich počínání. Žáci jsou hodnoceni podle schopnosti mechanicky opakovat naučené rutiny v písemkách a jakýkoliv pokus o jiné řešení je vnímán negativně a mnohdy trestán horší známkou. Vyučujícím ICT je obtížné vysvětlit, že pro účely obsluhy Wordu a Excelu jsou vytvořeny podrobné nápovědy a manuály, jejichž využití ve výuce rovněž většinou chybí. Autorka nabyla dojmu, že vyučující ICT pracují v žoldu vybraných softwarových firem a na gymnáziu suplují jejich kurzy, aniž za to pobírají provizi. Autorka se domnívá, že takovéto pojetí výuky informatiky je zcestné, krátkozraké a škodlivé. Úkolem gymnázia jakožto jediného typu školy, který má žákům poskytovat úplné všeobecné vzdělání, musí být žáka naučit se aktivně učit, tvořit a formovat si vlastní názor, řešit problémy a spolupracovat v rámci týmu. Tyto dovednosti jsou v RVP označeny jako „klíčové kompetence“. Pokud však odhlédneme od moderní terminologie, zjistíme, že jsou to vlastně obecné zásady pěstování samostatného (módně „kritického“) myšlení žáků a jejich formování do podoby zralých osobností. Gymnázium je přece tradičně svým určením pravým opakem výcvikového centra. Dá-li se něco považovat za základní kámen samostatného myšlení, pak je to zmíněná schopnost algoritmizace úloh a s tím související programování. Je pravda, že ne všichni žáci mají schopnosti takovýto styl výuky přijmout. Proto autorka uvažuje o výuce v rámci kroužku naplněného dobrovolně přihlášenými žáky se zájmem o problematiku.
2.3 Cíle RVP odkazující na výuku algoritmizace a programování Pokud si přečteme charakteristiku jednotlivých cílů pro získávání klíčových kompetencí v oblasti ICT, zjistíme, že je zde skutečně preferován soubor uživatelských dovedností. Snad jen body b) porozumění základním pojmům a metodám informatiky jako vědního oboru a k jeho uplatnění v ostatních vědních
16
Problematika zařazení výuky algoritmizace a programování v RVP
oborech a profesích a c) uplatňování algoritmického způsobu myšlení při řešení problémových úloh odkazují na možnou konkrétní výuku algoritmizace a programování. Zdá se však, že vyučující ICT přistupují k dané problematice spíše ze subjektivního hlediska svých konkrétních schopností a dovedností. Autorka si nedovede představit, že by při výuce matematiky, chemie či jakéhokoliv jiného vědního oboru došlo k záměrné úpravě obsahu vyučovaného předmětu podle znalostí vyučujícího či podle jeho chuti se dále vzdělávat. Jak může být tímto způsobem naplňován cíl výuky ICT stanovený v RVP, pokud není obsah tohoto předmětu pružně přizpůsobován potřebám žáků? Jakou startovní pozici má absolvent gymnázia, pokud nastoupí na jakoukoliv vysokou školu technického typu? Obvyklým argumentem vyučujících ICT je, že když má žák o obor zájem, tak „se“ to nějak sám naučí. Podle statistik odchází konkrétně ze školy, na které autorka pracuje, na technické obory asi třetina absolventů. Autorka s řadou z nich o této problematice hovořila a zjistila, že absolventi hodnotí absenci výuky základů programování na gymnáziu velmi negativně. Nicméně pouhým žehráním na neuspokojivý stav se situace nezlepší. Autorka chce ve své práci nastínit směr, který by mohl vést alespoň k částečné nápravě poměrů. Je nicméně velmi znevýhodněna faktem, že není aprobovaná vyučující ICT, ale pouze nadšený laik s více než čtvrtstoletím pedagogické praxe. Navíc má autorka velmi zdravý respekt před skutečnými programátory a má rovněž obavy, aby ve svém zápalu pro věc neudělala více škody než užitku. Byla a je nicméně opakovaně ujišťována, že její přístup k realizaci kroužku je uspokojivý z odborného i metodického hlediska.
Návrh obsahu činnosti kroužku
17
3 Návrh obsahu činnosti kroužku V této části své práce se autorka zaměří na některé možné způsoby úvodu do výuky algoritmizace a základů programování. Cílovou skupinou budou vybraní žáci druhého a třetího ročníku nižšího gymnázia. Rozsah výuky je plánován na jedno pololetí 2 vyučovací hodiny týdně. Ředitelstvím školy stanovená odměna vyučujícímu je plánována ve výši 100 Kč/hodina hrubého.
3.1 Jak začít? V průběhu přípravné fáze této práce autorka provedla orientační průzkum jak ve svém okolí, tak na internetových diskusích. Otázka zněla: „Kdybyste ve věku 12 let znovu začínali s programováním, jaký postup by podle vás byl z hlediska vašich současných zkušeností ideální?“ Podle silně většinového názoru je pro začátek nejvhodnější tato posloupnost výuky: Algoritmus → Karel → Vyšší programovací jazyk 3.1.1
Algoritmus
Algoritmický způsob myšlení je podle autorky základem pro činnost každého programátora. Schopnost analyzovat úlohu a rozdělit ji do konečného počtu dílčích dobře řešitelných částí je většinou spojena s tzv. matematickým myšlením, bez kterého se v budoucnu dobře programovat nedá. V průběhu průzkumu zazněl ovšem i pro autorku zcela nový názor, že by bylo vhodné vedle algoritmického myšlení rozvíjet především myšlení systémové. Tento názor byl podporován argumentem, že při analýze problémů a návrhu systémů, které zpracovávají informace, se s algoritmickým přístupem setkáváme v praxi nejméně dvacet let pouze okrajově. Výpočetní postupy jsou fragmentované a sdružené s datovými strukturami do objektů, které nevyjadřují vlastní postup výpočtu. Nedospíváme k nim algoritmizací úlohy, nýbrž analýzou a designem informačního systému. Bylo doporučováno navázat na modelování pojmových systémů pomocí sémantických sítí a konkretizovat jak postup modelování, tak i způsob kreslení modelu směrem ke standardu UML. Pokud jde o algoritmický přístup, ten má podle tohoto názorového proudu svoje zdůvodnitelné místo jen ve zvláštních případech při řešení dílčích úloh. Toto tvrzení přimělo autorku dohledat a dle svých možností prostudovat zmíněnou problematiku sémantických sítí a UML, nicméně dospěla k přesvědčení, že tento přístup vyžaduje především rozvinutou schopnost syntetického myšlení a velké osobní zkušenosti. Těmito vlastnostmi však žáci nižšího stupně gymnázia zpravidla nedisponují, natož aby se byli schopni orientovat ve struktuře informačních systémů.
18
Návrh obsahu činnosti kroužku
Autorka při vyhledávání informací k tomuto názorovému proudu sice narazila na řadu inspirativních úloh v podobě myšlenkových map a systémových analýz, usoudila však, že tyto nekorespondují s její koncepcí. Zůstala tedy u klasického intuitivního zavedení pojmu algoritmus a jeho postupného zpřesňování. 3.1.2
Zavedení pojmu algoritmus
Denně provádíme řadu činností zcela mechanicky, pouze podle postupů, které jsme se kdysi naučili. Provádíme tedy algoritmus například oblékání, vaření čaje, mytí zubů, chůze do školy. Algoritmus je tedy pro nás návod, kterým se řídíme, abychom vždy vykonali činnost daného typu. Pro počítač znamená algoritmus nějaký postup, který je prováděn počítačovým programem. Algoritmus je jednoznačný, přesný a srozumitelný popis řešení problému, který musí mít tyto vlastnosti: Konečnost algoritmus má konečné množství kroků Určitost všechny kroky algoritmu jsou přesně definované Korektnost algoritmus skončí pro libovolná korektní data správným výsledkem v konečném množství kroků Obecnost algoritmus řeší všechny úlohy daného typu Některé problémy můžeme řešit různými způsoby odlišnými algoritmy, které se mohou svým postupem značně lišit. Snažíme se vybrat pro řešení problému co nejefektivnější algoritmus, který vyřeší problém v nejkratším čase, je přehledný a srozumitelný. Algoritmy můžeme zapisovat buď slovně, nebo graficky pomocí vývojových diagramů. 3.1.3
Obsah a cíl učiva
Hledání algoritmů v každodenním životě Algoritmy v algebraických a geometrických úlohách Vývojové diagramy Cílem je, aby žáci dovedli algoritmizovat jednoduché situace a zapsat je vývojovými diagramy. Volíme příklady přiměřené věku, všeobecně jsou doporučovány úlohy s jedním větvením. Pro dosažení cíle je nutno skloubit dva požadavky: 1) aby žáci získali potřebné znalosti 2) aby se žáci nezačali při nutné teorii nudit Toho je možno dosáhnout například prokládáním učiva didaktickými hrami, ve kterých žáci sami simulují převod úloh z reálného života na algoritmus. Vývojové diagramy je vhodné začít používat již při intuitivním hledání algoritmů, učitel je píše na tabuli hned při řešení modelových algoritmů.
Návrh obsahu činnosti kroužku
19
3.2 Karel Karel je nástroj, který obsahuje řadu elementárních příkazů, jež lze skládat do podoby jednoduchých prográmků. Jeho účelem je probudit v dětech schopnost pochopit základy tvorby algoritmů a základní principy programování. Po jeho zvládnutí je pak možno bez problémů přejít na jiný programovací jazyk, ve kterém lze naučené základy využít. 3.2.1
Karel
Programovací jazyk Karel je pojmenován po Karlu Čapkovi na paměť jeho legendární hry R.U.R. Byl vytvořen v roce 1981 a rychle se rozšířil po celém světě. Základem jeho prostředí je dvourozměrná pracovní plocha rozdělená pravidelnou mřížkou na jednotlivá políčka, po kterých se pohybuje robot Karel. Některá políčka jsou zastavěna zdí a nelze na ně vkročit, na některých políčkách jsou umístěny značky/cihly, které lze zvednout. Jazyk Karel nemá pevnou syntaktickou strukturu a standardy. Záleží tedy na tom, zda se rozhodneme pracovat s DOS verzí ( 3.6, 4.1), s verzí Karel Win, xKarel, Karel3D, Robot Karel, Karel ++ či další. Je nutno si před začátkem výuky důkladně „ohmatat“ možnosti konkrétního editoru a žáky neustále vést s ohledem na syntaxi. Z metodického hlediska je výhodné, že žádná chyba není „fatální“, jakoukoli chybu lze kdykoliv v průběhu programu opravit v lehce editovatelném programovém poli. Tento jazyk nezná pojmy proměnná nebo parametr funkce, přesto však lze v něm provádět řadu jednoduchých i složitějších příkladů včetně příkladů na podmínku a cyklus. Veškeré činnosti Karla lze ovládat dvěma typy příkazů: Elementární příkazy - příkazy, které Karel už „zná“: KROK Karel se posune o jedno pole v aktuálním směru VLEVO-VBOK Karel se otočí doleva o 90° POLOŽ Karel před sebe položí cihlu ZVEDNI Karel zvedne cihlu, která leží před ním Vlastní příkazy - instrukce a procedury, které lze naprogramovat skládáním elementárních příkazů. Lze zde uplatnit třeba podmínky, cykly nebo rekurzivní volání. Příkaz se skládá ze tří částí: Začátek Tělo Konec
příkaz, název, začátek příkazy, podmínky, cykly, rekurze konec
Vlastní příkazy nesmí obsahovat názvy příkazů, které neexistují. Program jinak vypíše chybové hlášení.
20
Návrh obsahu činnosti kroužku
Příklad vlastního příkazu: příkaz DVA-KROKY začátek KROK KROK konec Názvy vytvářených příkazů lze ukládat pouze bez čárek a háčků. Pro elementární příkazy se háčky a čárky doplňují automaticky, takže když je nutno napsat "polož", napsat "poloz" a háček je se automaticky doplněn. Práce s textem je stejná, jako ve Wordu. Všechna písmena jsou velká. Kromě elementárních příkazů je Karel vybaven predikáty, které lze použít pro orientaci Karla na ploše jak v podmíněných blocích, tak pro ukončení cyklu typu while. Základní nastavení identifikátorů predikátů podmínky: JeZeď zjistí, jestli Karel stojí před zdí JeSever zjistí, je-li Karel otočen na sever (čelem k hornímu okraji plochy) JeCihla zjistí, zda před Karlem leží cihla Příklad použití identifikátoru v podmínce: JeZeď { } Jinak { Krok } Karel provede krok jen tehdy, jestliže nestojí před zdí. Cyklus: Dokud Karel opakuje posloupnost povelů, dokud podmínka platí Dokud NE Karel opakuje posloupnost povelů, dokud podmínka neplatí Příklad použití cyklu: Dokud NE JeSever { Vlevo-vbok } Karel se otáčí, dokud není otočen čelem k severu. 3.2.2
Obsah a cíl učiva Seznámení žáků s prostředím programovacího jazyka Karel Program jako posloupnost jednoduchých příkazů Práce s editorem příkazů Zásady syntaxe jazyka
Návrh obsahu činnosti kroužku
21
Jednoduché programy do úrovně jednoho větvení Cílem učiva je, aby si žáci přirozeným a nenásilným způsobem osvojili základy psaní programů a pochopili, jak je při psaní programu důležitá syntaxe. S pomocí vyučujícího začnou intuitivně používat pojmy příkaz, instrukce, procedura, podmínka, cyklus.
3.3
Vyšší programovací jazyk
Při otázce na zavedení prvního programovacího jazyka do výuky žáků je tolik odpovědí, co respondentů. Autorka se setkala s tak rozmanitou škálou fundovaných názorů, že se rozhodla otázku zatím nechat otevřenou. Necítí se být natolik kvalifikovaná, aby toto rozhodnutí učinila bez hlubší znalosti problematiky a bez zpracování dalších informací. V této části práce autorka pouze popíše získané názory na problematiku z různých úhlů pohledu a navrhne nástin vlastního postupu.
3.3.1
Jak začít s výukou programování
Zde jsou uvedeny názory respondentů, získané osobně, písemně a prostřednictvím internetových fór na otázku: “Kdybyste ve věku 12 let znovu začínali s programováním, jaký postup by podle vás byl z hlediska vašich současných zkušeností ideální?“ Než učit špatně, raději neučit nic. Toť obvyklý názor aktivních programátorů. Argumentují tím, že vyučující ne-programátor vštípí žákům řadu špatných návyků, které se s žáky potáhnou jako červená nit celou jejich budoucí programátorskou kariérou. Autorka se ovšem domnívá, že při práci na jednoduchých konzolových výstupech a při přepisu základních matematických algoritmů nemá příležitost žákům zkazit jejich styl na celý zbytek života. Rozhodně ihned začít s výukou C podle Herouta - názor těch, kteří studují na ČVUT či VUT. Argument - jiné jazyky nemají budoucnost a nepoužívají se. Nicméně autorka se domnívá, že při pohledu žáků na první program ve formátu #include <stdio.h> /* můj první program */ int main(int argc, char **argv) { printf("hello world!\n"); return 0;
22
Návrh obsahu činnosti kroužku
} dojde spíše k šoku, než k motivaci. Zatím není možnost srovnávat možnosti žáků s představou o okamžité výuce jazyka C, ale autorka se touto cestou zřejmě ubírat nebude. Začít s osvědčeným výukovým jazykem Pascal - názor zejména starších absolventů, kteří prošli programováním. Automatizace postupu zdrojový kód - kompilace - spuštění - ladění je podle tohoto názoru základem pro další úspěšný proces psaní programů. program HelloWorld(output); begin WriteLn('Hello, World!'); end. Odpůrci Pascalu namítají, že v jazyku vyvinutému výhradně pro výuku strukturovaného programování není možno programovat profesionálně a proto nemá cenu s ním vůbec začínat. Autorka se však domnívá, že pro přepis základních algoritmů a pro zavedení pojmu proměnná je Pascal pro začátečníky vhodný právě proto, že je to specializovaný výukový systémový programovací jazyk. Začít v multiplatformním jazyku Python - to radí zejména mladší studenti rozmanitých oborů s tím, že i když je Python primárně vyvinutý jako objektově orientovaný jazyk, lze v něm pohodlně programovat v procedurálním, objektově orientovaném a přiměřeně i ve funkcionálním stylu. Jako příklad uvádějí již zmiňovaný text našeho okřídleného textu: Print „Hello World!“ Posouzení optické jednoduchosti podle uvedeného textu vede k čím dál častějšímu výběru Python jako prvního programovacího jazyka. Zastánci říkají, že Python minimalizuje složitosti syntaxe i sémantiky jazyka, takže lze veškerou energii vložit přímo do řešení schopného návrhu. Také poukazují na to, že Python disponuje množstvím knihoven a je vhodný pro vývoj aplikací a uživatelských prostředí. Začít pracovat se značkovacím jazykem - žáci budou mít radost, že se jim na obrazovce hned něco děje a že to mohou průběžně měnit a doplňovat. Tento názor doplňuji jen pro úplnost s tím, že základy HTML se většinou učí v řádných hodinách ICT.
Návrh obsahu činnosti kroužku
3.3.2
23
Závěr šetření
Po zvážení všech názorů a po dalším vyhledávání informací se autorka původně rozhodla jít cestou nejmenšího odporu a začít s žáky pracovat v prostředí klasického Borland Turbo Pascal, protože je schopna v Pascalu pracovat na základě svých předchozích zkušeností. Pro tuto variantu měla autorka dokonce v prosinci hotovou první verzi této práce. Potom však ke svému vlastnímu překvapení autorka zjistila, že se s pomocí zdrojů [6] a [7] je schopna překvapivě rychle orientovat v prostředí jazyka Python. Průběžně se tedy bude připravovat na odučení asi deseti lekcí úvodu do programování pro žáky nižšího gymnázia v kódu jazyka Python, verze 3.3.
3.3.3
Seznámení s prostředím jazyka Python
Python je označován za nejsnadněji osvojitelný jazyk s krásným použitím pro začátečníky s kódem srozumitelným pro čtení i zápis. Jeho výhodou jako multiplatformního jazyka je, že ho lze spustit jak ve Windows, tak v unixových systémech pouhým zkopírováním souboru/ů programu na cílový zdroj bez potřeby kompilace. Další výhodou je, že kromě silné standartní knihovny jsou k dispozici řádově tisíce dalších knihoven (například síťová knihovna Twisted nebo numerická knihovna NumPy). Pro potřeby výuky bude autorka používat příklady, řešení a cvičení, které jsou k dispozici na stránkách http://knihy.cpress.cz/K1747 Zamýšlený postup výuky: Tvorba a spuštění programů napsaných v jazyce Python – konzolové výstupy Datové typy Logické operátory Příkazy pro řízení toku programu –if, while, for…in Aritmetické operátory Vstup a výstup Tvorba a volání jednoduchých funkcí
24
Závěr
4 Závěr Závěrečná práce se zabývá náplní činnosti kroužku se zaměřením na algoritmizaci a programování, určeného pro žáky nižšího gymnázia v délce trvání jedno pololetí. Mapuje současný stav, zkoumá různé úhly pohledu na tuto problematiku a nabízí návrh cesty, kterou se výuka může ubírat. Situace je o to komplikovanější, že autorka není aprobovaný informatik a její zkušenosti s programováním jsou již staršího data. Proto se tato práce opírá o zkušenosti řady osob, které výukou programování prošly na různých úrovních i jako samouci. Jejich zkušenosti a názory byly východiskem pro celkovou koncepci obsahu předmětu. Výuka algoritmizace a programování nebývá většinou obsahem výuky ICT na školách, která je prioritně zaměřena na uživatelské dovednosti žáků. Důvodem je jednak neochota vyučujících udržovat své znalosti základů programování a jednak jejich argument, že učit otrávené pubescenty algoritmizaci je ztráta času. Je faktem, že jako v ostatních předmětech, tak i v ICT záleží na osobnosti učitele a na jeho přístupu k žákům. Fundovaný programátor však nepůjde do školství, protože si svou odbornou práci nechá daleko lépe zaplatit jinde. Dokonce ani dříve zaběhnutá praxe, že počítačový kroužek vede bývalý absolvent studující na VŠ informatický obor, již nefunguje. Na škole, kde pracuje autorka, je tomu tak proto, že kvůli absenci výuky programování absolventi nechodí na školy se zaměřením na informatiku - a nastává nekonečná rekurze problému. Autorka se bude snažit tento začarovaný kruh přerušit alespoň pro vybrané žáky nižšího stupně. Pokud by se kroužek ujal, autorka by zdokonalovala jeho náplň na základě nabytých zkušeností. Při fungování kroužku v dalším období by autorka musela důkladně zvážit své možnosti a zapracovat na sebezdokonalování, aby mohla vést i případný navazující kurz. Náplň kroužku tak, jak je koncipována, je postavena na postupném přechodu od pojmu algoritmus po základy programování. Nelehká práce zřejmě nastane již v úplném začátku, kdy žáky bude nutno přesvědčit o nezbytnosti teoretické práce. Praxe prověří, jestli jsou do kurzu zapsaní žáci zralí do té míry, že budou schopni akceptovat navržený postup. V době obhajoby této práce bude mít autorka již několik lekcí kroužku za sebou a bude mít jasnější představu o tom, jak je navržený způsob výuky efektivní. Není vyloučeno, že bude muset svou koncepci přehodnotit, ba možná i přepracovat. Autorka vidí velký přínos této závěrečné práce v tom, že byla nucena se problematice věnovat daleko důsledněji a do větší hloubky, než kdyby si pouze vypracovala jednotlivé přípravy do hodin. Při vyhledávání zdrojů a materiálů získala nové znalosti o problematice v oblasti výuky algoritmizace a programování, které byly velmi obohacující. Rovněž porovnávání výhod a nevýhod rozličných přístupů k výuce přivedl autorku k novým názorům, kterými rozšíří své pedagogické postupy i ve svých aprobačních předmětech. Ještě v průběhu psaní práce měla autorka před očima budoucí výuku programování založenou na kódu jazyka Pascal, který by si mohla pouze oprášit a
Závěr
25
podle potřeby upravit a rozšířit. Nepočítala s tím, že se nechá vtáhnout do zcela nového jazyka. Další cennou informací, kterou tedy autorka při psaní tohoto elaborátu získala je, že programovací jazyky stejně jako jazyky lidstva jsou zpočátku o získávání (slovní) zásoby, správných (větných) obratů a především o praxi v používání a ve způsobu myšlení. Toto pojetí se autorka bude snažit implementovat svým žákům, kteří zatím mají otevřenou mysl, zvídavý mozek a chuť do práce.
26
Literatura
5 Literatura [1] PRAHA, V. Metodický portál RVP. [online]. 2008. URL: http://www.rvp.cz/ [2] MOTYČKA, A. Algoritmizace. 1. vyd. Brno: Konvoj, 1999. 75 s. Scriptum. ISBN 80-85615-80-0. [3] PŠENIČKOVÁ, J. Algoritmizace. 1. vyd. Kralice na Hané: Computer media, 2007. [4] AUTORSKÝ KOLEKTIV. Výzkumný ústav pedagogický. Dokument. 2007. URL: http://www.vuppraha.cz/wp-content/uploads/2009/12/RVPG-200707_final.pdf. [5] INFORMATIKA @GRAFIKA. Stránky projektu. [online]. 2012. URL: http://www.gjszlin.cz/ivt/esf/algoritmizace/uvod-do-pascalu.php [6] RUBEŠ, J. Nebojte se programovat. 1. vyd. Prostějov: Computer media, 2001. ISBN 80-902815-4-0. [7] SUMMERFIELD, M. Python 3 Výukový kurz. 1. vyd. Brno: Computer Press, 2010. ISBN 978-80-251-2737-7. [8] HEROUT, P. Učebnice jazyka C 1. díl. 4. vyd. České Budějovice: KOPP, 2007. ISBN 80-7232-220-6.
Přílohy
27
Přílohy
28
Příloha 1: Příklady pro výuku, metodické poznámky Algoritmy
Příloha 1: Příklady pro výuku, metodické poznámky Algoritmy Příklad 1.
Seřaďte činnosti tak, aby popsaly váš ranní odchod do školy: a) Snídám b) Převlékám se z pyžama do denního oblečení c) Odcházím do školy d) Jdu na WC e) Umyji si ruce a obličej f) Beru si školní tašku g) Probouzím se h) Čistím si zuby Obvyklé řešení: g) c) e) b) a) h) f) c) Metodické poznámky: Žáci mají snahu vymýšlet různé varianty. Je dobré mít trpělivost, neustále se vracet k definici algoritmu a vysvětlovat, že na WC se klidně může jít až po snídani, ale není prakticky možno např. snídat, pokud člověk není probuzený či není možno odejít do školy v pyžamu. Nelitovat času na mnohdy hektickou debatu a obratem reagovat na jejich nápady vysvětlením, zda jejich navržený postup ještě je či už není algoritmem a proč. Zdůraznit, že podmínkou je, aby veškeré použité prostředky a předměty byly k dispozici, zavedeme pojem vstupní údaje (data). Zdůraznit, že algoritmus nezávisí na tom, který žák v kterém bytě jej provádí. Debata je psychicky náročná, leč přínosná. Modifikace: 1. Telefonní hovor. 2. Vaření čaje. 3. Nákup nápoje z automatu (automat funguje). Příklad 2. Napiš algoritmus pro přechod světelné křižovatky: Obvyklé řešení: Dojdi k přechodu. Svítí zelená? ANO. Přejdi na druhou stranu. NE. Čekej, dokud se nerozsvítí zelená. Přejdi na druhou stranu. Metodické poznámky: Nejvhodnější příklad na vysvětlení pojmu větvení algoritmu. Zapsat vývojovým diagramem. Ukázat, že v tomto případě se výstupy obou možných situací shodují. Žáci se budou ptát, co když semafor nesvítí. Připomeneme předpokládanou dostupnost všech použitých prostředků čili existenci vstupních dat a necháme je napsat algoritmus pro přechod silnice bez semaforu. Připomeneme, že algoritmus je platný bez ohledu na to, kdo přechází jakou křižovatku v jakém městě. Modifikace: 1. Přechod silnice bez světelné signalizace. 2. Otevření knihy na straně 38. 3. Nákup nápoje z automatu (nevíme, jestli automat funguje). Příklad 3. Seřaď akce tak, aby tvořily algoritmus:
Příloha 1: Příklady pro výuku, metodické poznámky Algoritmy
29
a) Zlomila se mi tužka při rýsování b) Mám druhou? c) Vytáhnu ji z pouzdra d) Půjčím si od souseda e) Pokračuji v rýsování Obvyklé řešení: a) b) ANO jdi na c) e) NE jdi na d) e) Metodické poznámky: Nutný vývojový diagram. Žáci budou vymýšlet, co když mají ořezávátko. Nechat je zapsat algoritmus s tím, že mají ořezávátko a vysvětlit rozdíl v obou algoritmech. Dál budou řešit, co když soused nemá tužku. Nechat je domyslet možnost dalších větvení. Budou se ptát, co když nemá tužku nikdo ze spolužáků. Vysvětlit, že algoritmus pak v té větvi skončí neúspěchem - nelze pokračovat v rýsování - a má tedy odlišný výstup. Budou vymýšlet různé variace na problém, proto raději zavčas debatu ukončit. Připomenout, že si můžeme nastavit (deklarovat) vstupní data. Modifikace: 1. Doma odpoledne při psaní úkolu mi došla náplň do propisky 2. Mám chuť si ráno doma udělat kakao a ono zrovna došlo. 3. Chci si večer vyčistit zuby a došla zubní pasta. Příklad 4. Napište algoritmus pro výpočet aritmetického průměru čísel 7, 8, 24, 35, 40 Obvyklé řešení: Sečti zadaná čísla. Získaný součet vyděl počtem sčítanců. Zapiš výsledek. Metodické poznámky: Neočekáváme nic neobvyklého kromě chybného sčítání či dělení. Příklad 5. Napište algoritmus pro převod smíšeného čísla na zlomek 2 Obvyklé řešení: Vynásobte jmenovatele zlomkové části celým číslem. Přičtěte čitatele zlomkové části. Výsledek zapište jako čitatele výsledného zlomku. Jmenovatele zlomkové části opište do jmenovatele výsledného zlomku. Příklad 6. Napište algoritmus pro převod zlomku na smíšené číslo. Obvyklé řešení: 1) Zjistěte, zda je zlomek v základním tvaru. ANO jdi na 3). NE jdi na 2). 2) Zlomek zkraťte do základního tvaru. 3) Čitatele zlomku vydělte jmenovatelem zlomku. 4) Podíl určí celou část smíšeného čísla. 5) Zbytek po dělení určí čitatele ve zlomkové části. 6) Jmenovatele opište. Metodické poznámky k 5. a 6.:
30
Příloha 1: Příklady pro výuku, metodické poznámky Algoritmy
Žáci obvykle ihned vyřeší početní část, ale zápis algoritmu bude dělat velké problémy. Nelitovat času na jejich vedení k tomu, že algoritmus je vlastně přesný postup jejich matematického řešení pro jakékoliv zadané hodnoty a o tom to všechno je. Trvat na zápisu vývojovými diagramy, i když se jim nebude chtít. Motivovat je tím, že až budou umět „programovat“, přepíšou si algoritmy do programu a počítač je úlohy bude řešit za ně. Modifikace: 1. Zapište algoritmus pro násobení dvojčlenu jednočlenem 2. Zapište algoritmus pro násobení dvojčlenu dvojčlenem
Příloha 2: Příklady pro výuku, metodické poznámky Karel
31
Příloha 2: Příklady pro výuku, metodické poznámky Karel Příklad 1. NaučteKarla CELEM-VZAD Obvyklé řešení: procedura CELEM-VZAD začátek VLEVO-VBOK VLEVO-VBOK konec Metodické poznámky: Jakýkoliv nový příkaz, který se Karel naučí, nazýváme procedura. Je vhodné, aby si žáci zvykli nejprve nakreslit vývojový diagram i u těchto jednoduchých příkladů. Ze začátku budou žáci chybovat jednak kvůli novému prostředí, jednak kvůli tomu, že většina z nich v běžném životě nepovažuje chybějící čárky, pomlčky či závorky za nic podstatného. Nabízí se zde velký prostor pro metodické vedení žáků k pečlivosti a k neustálému poukazování na nutnost dodržovat předepsaná pravidla. Modifikace: 1. VPRAVO-VBOK 2. DVOJKROK 3. UKROK-STRANOU 4. KROK-ZPET Příklad 2. Napište proceduru ZVEDNI-NEBO-KROK Obvyklé řešení: Jestliže je před Karlem cihla, zvedne ji. Pokud ne, udělá krok. procedura ZVEDNI-NEBO-KROK začátek když JeCihla tak ZVEDNI jinak KROK *když konec Metodické poznámky: Nutno zakreslit vývojový diagram. Podmínka úplná má dvě části. V první je popsáno, co vykonat, pokud podmínka platí. V druhé, co vykonat, když podmínka neplatí. Druhá část je uvozena slovem jinak. Modifikace: 1. Karel udělá krok, jen když před ním není zeď. 2. Když je před Karlem zeď, otočí se doleva. Pokud ne, udělá krok. 3. Když je před Karlem cihla, zvedne ji. Pokud ne, udělá krok. Příklad 3. Napište proceduru ZVEDNI-NEBO-NIC Obvyklé řešení: Jestliže je před Karlem cihla, zvedne ji. Pokud ne, neudělá nic. procedura ZVEDNI-NEBO-NIC
32
Příloha 2: Příklady pro výuku, metodické poznámky Karel
začátek když JeCihla tak ZVEDNI *když konec Metodické poznámky: Nutno zakreslit vývojový diagram. Podmínka neúplná má pouze jednu část, ve které je popsáno, co vykonat, pokud podmínka platí. Chybí slovo jinak. Modifikace: 1. Karel udělá krok, jen když je otočen na sever. 2. Když je před Karlem zeď, neudělá nic. Příklad 4. Napište proceduru TŘI-KROKY Obvyklé řešení: procedura TRI-KROKY začátek udělej 3 krát KROK *udělej konec Metodické poznámky: Nutno zakreslit vývojový diagram. Cyklus s daným počtem opakování znamená, že činnost je vykonána přesně tolikrát, kolikrát je zadáno. Začít s postavením Karla uprostřed plochy. Ukázat, že bez použití podmínky není použitelná, protože pokud Karel nestojí alespoň 3 kroky od zdi, program skončí chybou. Příklad 5. Napište proceduru TŘI-KROKY-PODMÍNKA Obvyklé řešení: procedura TRI-KROKY-PODMÍNKA začátek udělej 3 krát když NENÍ ZEĎ tak KROK *když *udělej konec Metodické poznámky: Nutno zakreslit vývojový diagram. Cyklus s podmínkou je opakován pouze tak dlouho, dokud platí podmínka. Vyzkoušet pro různé pozice Karla na ploše. Modifikace: 1. ČTYŘI-KROKY-PODMÍNKA 2. ČTYŘI-KROKY-VLEVOVBOK 3. ČTVEREC 4. ÚHLOPŘÍČKA
Příloha 2: Příklady pro výuku, metodické poznámky Karel
33
Další příklady už je nutno přizpůsobit žákům. Začít se dá pokládáním cihel na různá místa na ploše, stavěním“ zdí různých tvarů za různých podmínek a procházením Karla plochou s překážkou.
34
Příloha 3: Příklady pro výuku, metodické poznámky Python
Příloha 3: Příklady pro výuku, metodické poznámky Python Příklad 1. Python jako kalkulačka a tiskárna Práce s příkazovým řádkem jazyka Python. Obvyklé řešení: >>>1+1 >>>7*7 >>>1+‘a‘ >>>‘a‘+‘b‘ >>>[1,2,3]+ [4,5,6] 2 49 SyntaxError ‘ab‘ [1, 2, 3, 4, 5, 6] Metodické poznámky: Psát v řádku Python. Nechat žáky zkoušet různé možnosti. Ukázat syntaxi numerických operátorů. Vysvětlit a ukázat typ řetězec a seznam. Využít k zavedení pojmu objekt, typy objektů. Příklad 2. Ahoj světe! Práce s textovým editorem a konzolou. Obvyklé řešení: #!/usr/bin/env python3 print(*Ahoj*, *světe!*) Metodické poznámky: Psát v poznámkovém bloku, uložit v adresáři Python3x jako hello.py Spouštět z adresáře py3e voláním c:\py3eg\>hello.py Metodickým oříškem je vysvětlení kombinace použití textového editoru a okna příkazového řádku. Osvědčilo se říct žákům, že takhle prostě pracují programátoři. První řádek podat jako povinnou část, bez kterého by program nefungoval. Každý řádek začínající # je komentář, který se nezobrazí. Ukázat jako alternativu programovací prostředí Pythonu IDLE. Odpadá psaní prvního řádku. Žákům vysvětlit, že programátor pracuje výhradně v anglickém jazyce. Příklad 3. Dáváme objektům jména Práce s IDLE. Obvyklé řešení: >>>MojeJmeno = ‘Hana‘ ‘Ahoj‘+MojeJmeno+‘!‘ Metodické poznámky: Psát v IDLE. Nechat žáky zkoušet různé možnosti. Ukázat syntaxi numerických operátorů. Vysvětlit a ukázat typ řetězec a seznam. Využít k zavedení pojmu objekt, typy objektů.