LITERATE PROGRAMMING NA STŘEDNÍ ŠKOLE

Podobné dokumenty
VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

DocBy.TEX dokumentování zdrojových textů TEXem. 1. Úvod, motivace, zadání. Petr Olšák

Maturitní otázky z předmětu PROGRAMOVÁNÍ

(Nepříliš) stručně o systémech TEX a L A TEX

ALGORITMIZACE A PROGRAMOVÁNÍ

Počítačové kognitivní technologie ve výuce geometrie

SSOS_AJ_3.18 British education

Osnova. Koncept a použití prezentací. Seznámení s pracovním prostředím MS Word Režimy zobrazení. Užitečná nastavení. Základní práce s dokumenty

Úvod. Programovací paradigmata

Jak mluvit s roboty. Dokážeš naprogramovat robota tak, aby postavil kelímky ve správnou stavbu?

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Typografické programy (1) WYSIWYG

STRUČNÝ POPIS E LEARNINGOVÝCH KURZŮ

Concept Cartoons a jejich interaktivní možnosti

Vstupní požadavky, doporučení a metodické pokyny

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Typografické programy (1) WYSIWYG

Odborný článek. Petr Klán, VŠE v Praze, IMRAD Introduction, Material and Method, Results, Discussion

Petra Pokorná, Petr Ptáček

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

. Seznámení se systémem TEX. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

Zdeněk. Havlíček. katedra informatiky, PEF, Vysoká škola zemědělská Praha 6 - Suchdol

Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy!

Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU MS POWERPOINT 2010

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Uživatelem řízená navigace v univerzitním informačním systému

Jak využít kancelářské aplikace ve výuce MS Office Gymnázium a SOŠ Orlová Ing. Marta Slawinská

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Microsoft PowerPoint 2007

Inovace a zkvalitnění výuky prostřednictvím ICT Programování se strukturovanými údaji Programové jednotky

Úvod do TeXu. Jan Vaněk. Nové Hrady 2011

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Elektronické publikování. doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB TU Ostrava

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Tematická oblast: Programování 2 (VY_32_INOVACE_08_2_PR) Anotace: Využití ve výuce: Použité zdroje:

Programovací jazyk Pascal

CTUslides jednoduché slídy

ZŠ a MŠ, Brno, Horníkova 1 - Školní vzdělávací program

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

NPRG030 Programování I, 2015/16 1 / :25:32

Obsah 1. Obsah. Sazba dokumentů v LATEXu 2 Úvod... 2 Vstupy... 3 Ceník... 6 Kontakt... 7 Ukázky Tvorba hudebnin v prostředí LilyPond 10

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

IMPLEMENTACE ECDL DO VÝUKY MODUL 6: GRAFICKÉ MOŽNOSTI PC

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Program a životní cyklus programu

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

MAXScript výukový kurz

Sada 1 - Základy programování

Použití prezentací. K heslovitému sdělení informací. Oživení obrázky, schématy, tabulkami, Nevhodné pro dlouhé texty. Doprovodná pomůcka při výkladu

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Inovace výuky prostřednictvím šablon pro SŠ

Úvod do programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Microsoft Word základní

MODERN APPROACHES TO TEACHING PROGRAMMING. Rostislav FOJTÍK

1 Strukturované programování

Úvod do CSS. Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm. Modernizace výuky s využitím ICT, CZ.1.07/1.5.00/34.

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Nástroje pro vývoj software

Základní grafové algoritmy

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

DUM 06 téma: Tvorba makra pomocí VBA

PROJEKT ZKVALITNĚNÍ VZDĚLÁVÁNÍ PEDAGOGICKÝCH PRACOVNÍKŮ V OBLASTI UDRŽITELNÉHO ROZVOJE NA ŠKOLÁCH JIHOČESKÉHO KRAJE REG. Č.: CZ.1.07/1.3.06/04.

Textové editory. Ing. Luděk Richter

Jak psát bakalářskou práci v DocBooku

Lexikální analýza Teorie programovacích jazyků

Změna pro Školní vzdělávací program oboru vzdělání L/51 Podnikání - ŠVP platné od

CZ.1.07/1.5.00/

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Typogra e Pøedtisková pøíprava

1. VSTUP do e-learningu

DTP v systému LATEX.

Maturitní témata Školní rok: 2015/2016

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-211. Prezentace úvod

Po ukončení tohoto kurzu budete schopni:

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-310

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-304

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Vyučovací předmět: informatika a výpočetní technika

POČÍTAČE A PROGRAMOVÁNÍ

PHP tutoriál (základy PHP snadno a rychle)

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Počítačová prezentace. Základní pojmy. MS PowerPoint

AKTIVIZACE STUDENTŮ VE VÝUCE EXTREME COLLABORATION STUDENT-ACTIVATING TEACHING METHODS EXTREME COLLABORATION

Učební pomůcky. Didaktická technika

Transkript:

LITERATE PROGRAMMING NA STŘEDNÍ ŠKOLE Ladislav Kašpárek Střední průmyslová škola Jihlava, kasparek@sps-jia.cz ANNOTATION: "Literate" programs, their documentation and whole philosophy of Literate Programming could have more dimension: the possible usage of LP at both secondary schools and at schools for higher education (colleges, universities), especially in subjects dealing with programming techniques, algorithms, etc. It is therefore essential to devise a new educational technique based on Literate Programming and to attest it in the real process of teaching and learning. The new educational technique based on LP and possibilities how to use these programs and their documentation during lessons and selfstudying are often discussed. ABSTRAKT: Programy a dokumentace, které vznikly v souladu s Literate Programming mohou mít několik rozměrů použití: jedním ze způsobů použití pro výuku programování a algoritmů, zejména na středních a vysokých školách. Proto je nutné navrhnout a v praxi ověřit novou vyučovací metodu, založenou na LP. Příspěvek rozebírá různé možnosti použití LP dokumentů ve vyučování a samostudia na střední škole. Článek stručně seznamuje s principy Literate Programming a možnostmi jak využít programy napsané v systému WEB pro výuku programování na středních školách. Jsou diskutovány možnosti jak použít tyto programy a dokumentace k nim při výuce ve vyučovacích hodinách i při samostudiu. KLÍČOVÁ SLOVA: literate programming, výuka, metoda programování, střední škola, TeX Literate programming Literate Programming obecně je způsob zápisu programu, kde se do jednoho zdrojového souboru zapisuje program (zdrojový text v programovacím jazyce) a dokumentace k němu. Soubor je rozdělen do sekcí a každá sekce se skládá právě z dokumentace a části kódu, která tvoří relativně samostatný a logický celek programu. Z jiného úhlu pohledu můžeme také říci, že Literate Programming je způsob programování (vytváření algoritmů, jejich zápis v programovacím jazyce) a jeho současné dokumentování lze je tedy chápat i jako proces vzniku programu. Autorem myšlenky Literate Programming je prof. Donald E. Knuth, který také vyvinul jeho první implementaci systém WEB [2,3]. Literate Programming se do češtiny volně překládá jako dobře dokumentované programy [4] nebo kultivované programování. Ani jeden z překladů nepovažuji za vhodný, protože zní nepřirozeně a podstatu věci nevystihuje přesně, proto je dále v textu používán anglický originál. Systémů realizujících Literate Programming je celá řada, např. WEB, CWEB, spiderweb, nuweb atd. Prvním takovým systémem byl již zmíněný WEB, který má jako programovací jazyk Pascal a pro formátování dokumentace používá TeX. Jeden z nejpoužívanějších systémů je CWEB, založený na jazycích C/C++ a systému TeX. Existuje mnoho systémů pro různé programovací jazyky a pro různé formátovací nástroje (nejčastěji TeX) [6]. V současnosti se začínají prosazovat i systémy založené na XML technologiích. 40

Systém WEB Systém WEB se skládá z programu tangle, programu weave a formátovacího makra webmac.tex pro TeX. Programátor zapisuje svůj zdrojový text a dokumentaci k němu pomocí řídících kódů do sekcí vše do jednoho textového souboru 1 s příponou *.web. Pro základní informaci stačí vědět, že pomocí názvů sekcí lze zdrojový kód programu různě slučovat, skládat, případně opakovat v pořadí, ve kterém to vyhovuje programátorovi. S takto vzniklým souborem lze pracovat dvojím způsobem (viz obrázek 1). Program tangle z web souboru vygeneruje pascalovský zdrojový text a ten lze kompilátorem přeložit. Program weave z web souboru vygeneruje dokumentaci k programu. Dokumentace je složena z textů jednotlivých sekcí a naformátovaného zdrojového textu v Pascalu. Výsledek zpracuje TeX do finální podoby (dvi, pdf, ps apod.). Obrázek 1: Práce s WEB souborem. Výsledkem jsou tedy dvě věci, soubor s programem v Pascalu a precizně naformátovaná dokumentace k programu, včetně rejstříku použitých identifikátorů, rejstříku sekcí, křížových referencí a obsahu. Tímto způsobem prof. Knuth vytvořil např. programy TeX, Metafont, weave, tangle, StandfordBase a mnoho dalších. Systém CWEB pracuje stejně, jen programovací jazyk je C/C++. Literate Programming ve výuce Pro didaktické účely má Literate Programming, a tedy jeho instance systém WEB, několik výhod. Největší výhoda spočívá v tom, že lze zdrojový kód (deklarační a příkazová část) programu rozdělit na relativně malé a samostatné úseky sekce, včetně jejich komentáře a ty dle potřeby skládat a vytvořit tak celý program. Toho lze také dosáhnout pomocí podprogramů (popřípadě jazyk Pascal umožňuje používání lokálních podprogramů), ale tento způsob má nevýhodu v tom, že vzniká příliš mnoho uměle vytvořených podprogramů a ztěžuje to orientaci ve zdrojovém kódu. Čtení a studování takového kódu je pro studenty obtížné. Každou sekci lze dokumentovat, tzn. podávat vysvětlení toho, co se v kódu dané sekce děje, tedy co dělají jednotlivé příkazy a co vykonává celá sekce jako celek v kontextu celého algoritmu [1]. Pro učitele to znamená, že se může zaměřit na to podstatné co potřebuje studentům vysvětlit, ať se týká vlastního kódu algoritmu nebo např. deklarací datových struktur. Výklad může být veden stylem shora dolů (začít přímo hlavním programem, případně hlavičkou podprogramu a zanořovat se do jednotlivých sekcí) nebo může postupovat zdola nahoru (začít jednotlivostmi někde hluboko v sekcích a ty postupně skládat do celku). Obě 1 Kompletní popis struktury WEB souboru a jeho jednotlivých řídících kódů přesahuje rámec tohoto příspěvku. 41

dvě možnosti lze samozřejmě vhodně kombinovat. Toto je ideální v hodinách přednáškového typu, kdy lze dokumentaci upravenou a naformátovanou pro dataprojektor promítat, při tom ji komentovat a diskutovat se studenty. Sekce se mohou do sebe navzájem vkládány tak, aby při jejich vzájemném sestavování nevznikl cyklus. Této vlastnosti lze využít při výkladu tak, že algoritmus (program) je rozdělen do několika úrovní na obecné sekce a sekce specializované. Příklad: ssort je program, který autor používá pro výuku řadícího algoritmu select sort. Na obrázku 2 je fragment dokumentace k tomuto programu, na kterém jsou vidět všechny uvedené vlastnosti (např. kód ze sekce 7 je vložen do sekce 6, vše je podrobně popsáno). Obrázek 2: Ukázka dokumentace k programu ssort. Dokumentace, která je produktem programu weave, se do finální podoby zpracovává systémem TeX, resp. pdftex, za použití souboru maker webmac.tex. Pomocí těchto nástrojů lze jednomu dokumentu dát různé podoby vytisknout program jako brožurku nebo na samostatné listy nebo je také možné vytvořit prezentaci vhodnou pro promítání na dataprojektoru či na interaktivní tabuli. Učitel má možnost připravit takový dokument, který je pro jeho výklad nejvhodnější. Zmíněné vlastnosti se vztahovaly k dokumentaci. Při výuce lze také používat samotný zdrojový kód programu, tedy produkt programu tangle. Jsou dvě možnosti, jak zdrojový kód programu ze souboru *.web získat. Pro studenty nepopulární způsob je kód z dokumentace vypsat ručně. Je to sice pracné, ale nutí to studenta o programu, o algoritmu přemýšlet a číst si dokumentaci. Tento způsob lze použít v případě, že program není příliš dlouhý (max. 20 25 řádek textu). Druhou cestou je použití programu tangle. Výstup originálního programu tangle je primárně určen pro kompilátor, proto jsou z něj vyjmuty všechny nadbytečné mezery, konce řádků a komentáře. Takto zapsaný zdrojový text v jazyce Pascal je pro člověka na první pohled téměř nečitelný. Pokud není kód příliš dlouhý (max. 20 řádů po 80 znacích), studenti 42

se v něm rychle zorientují (např. podle komentářů, ve kterých jsou čísla sekcí) a jsou schopni jej upravit do čitelné podoby a s tímto zdrojovým textem pak dále pracovat a experimentovat. Pro delší programy je i toto nepoužitelné, proto je vhodné program tangle upravit tak, aby každý příkaz nebo deklarace byla vypsána na samostatném řádku [5]. Výuka vedená tímto způsobem ukazuje studentovi, jak programátor při vytváření kódu postupoval, jak skládal do sebe jednotlivé kroky algoritmu a jakých programátorských postupů použil pro vyjádření algoritmu v daném programovacím jazyce. Zdrojový text tak dále slouží k experimentování s daným programem (změny vstupních hodnot, konstant apod.) nebo k jeho modifikacím (optimalizacím). Na obrázku 3 je výstup programu tangle, jehož vstupem byl soubor ssort.web. {3:}program ssort;const{4:}max=30; {:4}var{5:}data:array[1..max]of integer;i,j:1..max;tmp:integer; indexmin:1..max;{:5}begin writeln('select sort demo program.'); {8:}randomize;for i:=1 to max do data[i]:=-1000+random(2001);{:8}; {9:}for i:=1 to max do write(data[i]:8);{:9}; {6:}for i:=1 to max-1 do begin indexmin:=i; {7:}for j:=i+1 to max do if data[indexmin]>data[j]then indexmin:=j;{:7}; tmp:=data[indexmin];data[indexmin]:=data[i];data[i]:=tmp;end;{:6}; writeln;{9:}for i:=1 to max do write(data[i]:8);{:9};end.{:3} Obrázek 3: Výstup programu tangle. Samostudium Forma těchto dokumentů je přímo předurčena k samostudiu. Výstup programu weave je v podstatě hypertextovým dokumentem podobně jako html stránky. Ten lze vytisknout jako knihu a také ji tak číst nebo lépe řečeno listovat v ní ze sekce na sekci. Pomocí pdftexu je možné vytvořit i interaktivní podobu dokumentu a ten pak pročítat a studovat přímo na počítači. Doporučení pro psaní výukových materiálů v systému WEB Tvorba nových ukázkových programů v systému WEB není nijak náročná. Autor, nejlépe zkušený učitel, musí znát základní řídící sekvence systému, musí umět programovat v Pascalu a uživatelsky ovládat plaintex. Z didaktického hlediska je nejtěžší správně rozložit program do jednotlivých sekcí a dobře je zdokumentovat. K psaní vlastního kódu, jehož velikost nepřesahuje deset stran textu, postačí libovolný jednoduchý textový editor. Pro rozsáhlejší projekty je vhodné použít nějaký sofistikovaný editor např. EMACS, vim nebo pro Windows Leo. WEB je propracovaný systém pro tvorbu dokumentovaných programů v jazyce Pascal. Např. obsahuje preprocesor podobný tomu, který má jazyk C. Dále má řídící sekvence pro formátování dokumentace a pro manipulaci s výsledným zdrojovým textem. Pro výukové účely je vhodné psát dokumenty co nejjednodušší a tedy některé pokročilé vlastnosti systému nepoužívat. Určitě se nedoporučuje používat preprocesor a jeho makra, protože studenti mají problémy pracovat se samotným jazykem. Shrnutí Použití programů napsaných v systému WEB vnáší do výuky programování několik nových prvků. Mezi nejdůležitější patří oživení výuky jinou formou zápisu programu, lepší zapojení studentů do procesu výuky a možnost pohodlného a efektivního samostudia. Dále si studenti 43

zvykají své programy více a lépe komentovat. Vedlejší efekt je propagace typografického systému TeX mezi studenty. LITERATURA [1] Kašpárek L.: Literate Programming at Secondary School, 4th International PhD Workshop, Spa Libverda September 2003, Department of Adaptive Systems, UTIA ISBN 80-239-1333-6 [2] Knuth D. E.: Literate Programming, Stanford University, CA USA 1992, ISBN 0-937- 07380-6 [3] Knuth D. E.: Literate Programming, The Computer Journal, 27:97 111, 1984 [4] Olšák P.: Typografický systém TeX, 1. vyd. CSTUG 1995, ISBN 80-901950-0-8 [5] Sewell W.: Weaving a program: literate programming in WEB, Van Nostrand Reinhold, NY, USA 1989, ISBN 0-442-31946-0 [6] http://www.literateprogramming.com 44