Petr Vanický: První zkušenosti s výukou programování

čtvrtek 16. června 2005 ·

Učím již pátým rokem informatiku na střední škole. Dříve jsem zastával názor, že v běžných hodinách IVT nemá smysl programování učit, to že spadá spíše do seminářů nebo kroužků pro pokročilé. V průběhu loňského roku jsem však svůj názor (částečně i pod vlivem některých článků zde na České škole) změnil a letos jsem poprvé zařadil algoritmizaci a programování i do hodin informatiky. Své zkušenosti a hodnocení vám zde nyní nabízím. Jak se dočtete, nejsou úplně kladné.

Rozhodně se nepokládám za nějakého odborníka na problematiku výuky informatiky na středních školách, přesto doufám, že některým z vás mohou zkušenosti „obyčejného informatika“ pomoci při rozhodování, zda učit programování a jak.

Objektově orientované, nebo strukturované?

Na našem gymnáziu učíme informatiku v tercii, kvartě a kvintě. Rozhodl jsem se zařadit základy programování do hodin v kvartě a kvintě, kde jsou studenti, kteří by již měli rutinně zvládat práci se soubory a základy ovládání většiny programů pro Windows. Prvním velkým problémem bylo rozhodnout se, co vlastně učit. Nabízelo se objektově orientované programování (OOP), jehož jsem velkým příznivcem, nebo strukturované programování (SP). Tuto otázku jsem řešil celkem dlouho a nakonec jsem se rozhodl pro strukturované programování z těchto důvodů:

  • Sám mám zkušenosti spíše se strukturovaným programováním a objektově orientované programování se teprve učím.
  • Stále je nedostatek literatury a příkladů z OOP pro tuto věkovou kategorii a začátečnickou úroveň. (Doufám, že tento nedostatek odstraní kolega Pecinovský, jak sliboval v nedávném článku.)
  • Požadavky vysokých škol při přijímacích zkouškách na informatické obory stále obsahují mnoho příkladů pro SP, často v jazyce Pascal či C. Příklady pro OOP jsou spíše raritou.
  • V osnovách pro informatiku na střední škole se to jen hemží pojmy jako algoritmizace, datové struktury atd. :-)
  • Na jednoduchých příkladech v SP si studenti nejlépe uvědomí, že počítač dělá JEN to a PŘESNĚ to, co mu zadáme, a nic si sám nedomyslí. Uvědomění si těchto základů jim usnadní veškerou další práci s počítačem.

Jaký jazyk vybrat? 

Dalším problémem byla volba vhodného programovacího jazyka. Pro výuku v kvartě jsem vybral jazyk Karel a pro kvintu Pascal. Vedly mne k tomu hlavně tyto důvody:

  • Karel je česky a obsahuje jasné příkazy jako krok, zvedni, polož, vpravo, když je značka. atd., kterým studenti rozumí. I zapsaný program je pro ně snadno čitelný. Na rozdíl od jiných jazyků, jako jsou Pascal nebo C, se nemusí „prát“ se složitou syntaxí a mohou se soustředit na řešení problémů.
  • Karel obsahuje malý, ale přesto dostatečný soubor základních příkazů, který se studenti snadno naučí. Tento soubor je třeba postupně rozšiřovat. Aby mohli jednou napsané příkazy opakovaně používat, nutí je to psát tyto příkazy co nejuniverzálněji.
  • Studenti se velmi brzy naučí vytvářet programy, které mají viditelné výsledky. Jejich program „něco dělá“, něco po obrazovce běhá. Pro mladší studenty je tento způsob zajímavější než řešení nějakých „matematických“ úloh třeba v Pascalu.
  • Existuje mnoho zdarma dostupných programů pro programování v Karlovi. Já zvolil program KarelWin, který je zdarma, velmi snadno se instaluje na síť (stačí ho nahrát na síťový disk), je česky a s dobrou nápovědou. Oproti jiným verzím Karla umí pracovat i s proměnnými a umí vytvářet funkce.
  • Pascal má oproti jiným jazykům velmi jednoduchou syntaxi, kterou jsem ještě zjednodušil tím, že jsme používali jen omezenou množinu příkazů.
  • Pascal obsahuje vcelku přehledné typy proměnných, při výuce jsme vystačili s typem integer a string.
  • Borland Turbo Pascal 5.5 je ke stažení zdarma i s řádkovým překladačem.
  • Pro Pascal existuje mnoho snadno dostupných článků a příkladů jak na internetu, tak v tištěné podobě.
  • Psát programy v Pascalu je možné i v mém oblíbeném editoru PSPad, který je rovněž zdarma dostupný, děti ho již znají z dřívějška (učíme se v něm vytvářet HTML stránky) a snadno se instaluje. Navíc tento editor umožňuje používat tzv. šablony kódu, což jsou krátké úseky kódu (například hlavičky funkcí, častou používané programové konstrukce, atd.), které lze snadno vkládat do programu. Díky tomu se studenti nemusí tolik soustředit na syntaxi a mohou se více věnovat řešení problému.

Co a jak učit?

Posledním problémem bylo, co a jak učit. V kvartě s Karlem to bylo snadné, postupovali jsme klasicky, nejprve jednoduché příkazy (otocka, ke zdi, domu,…), které se nám hodily v dalších hodinách. Později jsme přešli na příkazy o něco složitější (ObejdiMesto, SeberZnacky, NakresliDum, …) a končili jsme příkazy s využitím rekurze a funkcí. Tím také schopnosti většiny třídy končily.

V kvintě jsem se zaměřil spíše na obecné řešení problému bez důrazu na konkrétní řešení v Pascalu. Ve většině příkladů jsme vystačily s cyklem for, cyklem while, podmínkou, jednorozměrným polem a základními příkazu pro vstup a výstup.

Začali jsme velmi jednoduchým programem, který byl v podstatě jen jednoduchou posloupností příkazů pro vstup a výstup. Na něm jsme si ukázali základy programování v Pascalu v editoru PSPad, práci s proměnnou, překlad programu a co dělat, když se program nepřeloží. Poté si studenti zkusili tento jednoduchý program modifikovat. Postupně jsme přidávali další programové konstrukce, jako jsou podmínka, for cyklus a další výše zmíněné.

Při výuce jsem postupoval velmi pomalu a vždy se snažil, aby všichni studenti dostali svůj program do funkčního stavu. Studenti pracovali každý na svém PC a snažili se, aby jejich program prováděl požadovanou činnost. Vždy měli k dispozici všechny dříve řešené příklady a to i při písemkách, aby mohli nahlédnout na to, jak jsme obdobný problém řešili dříve. Vždy jsem je nějakou dobu nechal pracovat samostatně a poté jsem příklad ukázal na notebooku s připojeným projektorem, postup jsem květnatě komentoval jak slovně, tak písemně v kódu, upozorňoval jsem na chyby, kterých jsem si všiml na žákovských počítačích a na jiné možnosti řešení.

Výsledky nejsou valné

Zde musím být kritický: studenti zdaleka nedosáhli takových výsledků, jaké jsem očekával, a to ani v Pascalu, ani v Karlovi. Přestože měli k dispozici dříve řešené programy a příklady v písemkách byly jen variací těchto programů, většina třídy nebyla schopna sestavit funkční program. Nevím, zda jsem se selhal já jako učitel, nebo selhaly mnou zvolené didaktické postupy, nebo jsem jen přecenil schopnosti studentů.

Srovnával jsem své výsledky s kolegou, který učí programování již několik let. Zdaleka tolik nevyužívá projekční techniku a studenti píší písemky na papír, přesto dosahovali v jeho třídě lepších výsledků. Po diskusi jsme se shodli na názoru, že pokud studenti vědí, že řešení bude za chvíli „na zdi“, nesnaží se tolik přijít na něj sami. Také studenti velmi často naráželi na problémy se syntaxí, a to i přesto, že jsem se jim psaní snažil ulehčit výše uvedenými šablonami kódu. Možná že by bylo efektivnější šablony nepoužívat a psát vše ručně, ze začátku by asi bylo psaní pomalejší, ale snad by časem syntaxe přešla studentům do krve.

A jaké jsou vaše zkušenosti s výukou programování? Rád bych se dozvěděl, jaké metody a nástroje používáte vy, proč je používáte a s jakými výsledky.



Petr Vanický

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.