Portál AbcLinuxu, 30. dubna 2025 22:55
Možná znáte vizuální styl programování prostředí Scratch. Nyní se ho dočkal i legendární výukový programovací jazyk Karel.
Karel je pro výuku programování velmi dobře navržený jazyk. Na první pohled vypadá sice velmi primitivně, ale krom základních návyků pro algoritmizaci na něm lze elegantně a jednoduše předvést i věci jako násobení binárních čísel, rekurzivní průchody stromy atd.
Karel si dobu své největší slávy odbyl v době osmibitů. Dnes již pominula doba, kdy se předpokládalo, že každý uživatel počítače by měl umět programovat. To ale neznamená, že by programy jako Karel ztratily svůj význam, schopnost algoritmického myšlení dalece přesahuje potřeby světa výpočetní techniky.
Prostředí pro výuku programování je dnes mnoho. Mezi ty nejlépe hodnocené patří bezesporu Scratch používající programování pomocí přesouvání příkazových bloků myší. Ten je napsán ve Smalltalku, ale pro jeho další verzi se, pokud vím, počítá s Flashem. Někde na půli cesty v tomto procesu vznikl proces DesignBlocksJS, což je prostředí podobné Scratchi, ale napsané v JavaScriptu.
Když jsem DesignBlocksJS viděl, řekl jsem si, že by stálo za to využít jeho kód i pro Karla, čímž by vznikla jeho snadno uchopitelná implementace, která vyžaduje minimální nutnost psát na klávesnici. Bohužel DesignBlocksJS není projekt zrovna dvakrát oplývající elegancí, takže pro implementaci Karla bylo nutné mu řádně promíchat střeva. Z této operace se Karlík ještě zcela nezotavil, takže obsahuje řadu chyb a jeho možnosti jsou dosti omezené. Nicméně pro základní hraní se již použít dá.
S Karlem si můžete pohrát zde: http://windmap.cz/playground/karel/index.html
Pokud chcete pomoci tento projekt vylepšit (minimálně na úrovň jiné JavaScriptové implementace Karla http://karel.oldium.net/), repozitář se zdrojovými kódy naleznete tady: https://github.com/pavel-krivanek/Karel
Tiskni
Sdílej:
Uncaught noStart runtime.js:284Tak si asi nepohraju
Já nejsem učitel, ale mohu uvést jeden příklad z vlastní zkušenosti. Dostal se mi do spárů jeden nešťastník, kterého jeden rok na střední škole (zaměřené na programování) učili Pascal. Jeho výsledky byly dost mizerné, tak jsem byl požádán, jestli bych mu nepomohl.
Velmi rychle jsme zjistil, že jeho problémy pramení především z minimální schopnosti algoritmizace. Mimochodem, prý na tom je značná část jeho ročníku podobně. Věřil bych tomu, jeden známý, co učí na FIT VUTBR, mi jednou říkal, že se setkal se studenty, co mu nejsou schopni popsalt algoritmicky ani uvaření čaje.
Takže co s ním teď? Pokračovat nějak s Pascalem nemělo cenu, protože v dalším ročníku měli stejně pokračovat Céčkem. A jak chcete v čemkoliv programovat, když nejste schopni ani svými slovy nějak popsat, jak budete třeba řetězec s větou rozdělovat na jednotlivá slova?
Takže jsem sáhnul po Karlovi, který měl mimochodem úspěch a můj svěřenec litoval, že ve škole nezačínali radši s ním. Projeli jsme základní klasické úlohy, vysvětlil jsem mu rekurzi a příležitostně dal za úkol převést nějaký jeho vytvořený úkol na rekurzivní variantu a vůbec všechno možné od bludišť až po násobení binárních čísel (docela hezká úloha, mimochodem).
Potom jsem s ním plynule přešel na obdobu Karla, kdy se robot ovládá pomocí takového jednoduchého assembleru, kdy měl ten program na papíře přeložit do strojového kódu a ten pak ručně interpretovat - protože o tom, jak počítač vlastně funguje, neměl samozřejmě ani potuchy.
Minimálně v tomto případě nebyl Karel perverzní mučící nástroj, ale zřejmě nejvhodnější prostředek k rozvoji algoritmického myšlení.
až po násobení binárních čísel (docela hezká úloha, mimochodem)Jak jste to delali? Ja bych asi ty cisla zapsal jedno vodorovne a druhe svisle, nakopiroval to prvni cislo posunute pod sebe, pak vymazal ty radky ktere odpovidaji nulovym bitum, a pak uz jen pricital radky k sobe dokud bych nedostal vysledek. Nebo mi unika metoda, jak se nachodit jeste mene?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.