VYUŽITÍ PROGRAMOVACÍCH METOD PŘI VÝUCE TEORETICKÉ INFORMATIKY
|
|
- Bohumír Hruda
- před 6 lety
- Počet zobrazení:
Transkript
1 UNIVERZITA KONŠTANTÍNA FILOZOFA V NITRE FAKULTA PRÍRODNÝCH VIED KATEDRA INFORMATIKY DISERTAČNÍ PRÁCE VYUŽITÍ PROGRAMOVACÍCH METOD PŘI VÝUCE TEORETICKÉ INFORMATIKY Autor práce: Mgr. Hashim Habiballa Vedoucí práce: Doc. RNDr. Tibor Kmeť, CSc. 2003
2 Čestné prohlášení: Prohlašuji, že předložená disertační práce je mým původním autorským dílem, které jsem vypracoval samostatně. Literaturu a další zdroje, z nichž jsem při zpracování čerpal, v práci řádně cituji. V Nitře dne Hashim Habiballa ii
3 Poděkování: Rád bych poděkoval panu Doc. RNDr. Tiboru Kmeťovi, CSc. za vedení a cenné připomínky k tématu, metodám vědecké práce i k jednotlivým konkrétním podnětům. Také děkuji paní Prof. RNDr. Erice Mechlové, CSc. za metodologickou recenzi experimentu a panu Doc. Ing. Miroslavu Benešovi, Ph.D. za odbornou recenzi učebních textů. iii
4 OBSAH 1. Úvod Struktura práce Motivace Cíle disertační práce Základní otázky vyučování teoretické informatiky Teoretická informatika vymezení disciplín Cíle výuky Klasické přístupy a metody ve výuce Utváření představ, pojmů a definic Algoritmy ve výuce Vlastnosti pojmů věty a jejich důkazy Formalizace Motivace pro studium spojení s praxí Výzkum využití aplikačního pojetí ve výuce Výchozí stav a konstruktivismus v informatice Vztah aplikačního pojetí k jiným disciplínám Zásady, metody, formy a prostředky výuky Problém, cíl výzkumu a východiskové hypotézy Výzkumná metoda, charakteristika výzkumu Předvýzkum Způsob ověření hypotéz Implementace programovacích metod v aplikačním pojetí Charakteristika programátorské didaktické pomůcky Programátorské pomůcky v teorii formálních jazyků Pasivní programátorské úlohy Aktivní programátorské úlohy Přehled programátorských úloh v experimentu Pedagogický experiment a analýza tematických celků Výsledky první fáze experimentu Výsledky druhé fáze experimentu Interpretace výsledků jako celku Použití výsledků experimentu v učebním procesu Teoretická informatika ve vysokoškolském vzdělávání Cílová skupina ve vztahu k učebním cílům Horizontální diferenciace výuky Vertikální diferenciace výuky Aplikovatelnost podle forem studia Učitelské obory a středoškolské vzdělávání Závěr Literatura iv
5 PŘÍLOHY Příloha A: Soupis publikovaných prací Příloha B: Didaktická analýza učiva v experimentální a kontrolní skupině Příloha C: Didaktické testy Příloha D: Tematický plán v
6 SEZNAM OBRÁZKŮ Číslo Strana Obrázek 1: Intuitivní pojem konečného automatu...10 Obrázek 2: Reprezentace automat jako stroj...10 Obrázek 3: Dynamická reprezentace automatu...11 Obrázek 4: Vizual Automat...12 Obrázek 5: Matematická definice pojmu konečného automatu...12 Obrázek 6: Interaktivní applet pro demonstraci algoritmu FIRST...13 Obrázek 7: Popis algoritmu formálně a neformálně...14 Obrázek 8: Konstruktivní důkaz tvrzení...16 Obrázek 9: Motivačního příkladu dedukce na slovních příkladech...18 Obrázek 10: Příklad aplikačního pojetí výuky...23 Obrázek 11: Automat rozpoznávající větu...25 Obrázek 12: Graf vystudovaných SŠ a motivace pro obor...32 Obrázek 13: Význam motivace a chápaní logických vztahů...33 Obrázek 14: Položky učiva v kurzu Regulární a bezkontextové jazyky...34 Obrázek 15: Uživatelské rozhraní aplikace GERDS...38 Obrázek 16: Struktura sekvence rezolvent...40 Obrázek 17: Důkaz pomocí strategie prohledávání do šířky...41 Obrázek 18: Důkaz pomocí strategie prohledávání do hloubky...42 Obrázek 19: Strategie podpůrné množiny...43 Obrázek 20: Filtrační strategie...44 Obrázek 21: Syntaktický strom formule...55 Obrázek 22: Návrh konečného automatu v aplikaci GramAut...61 Obrázek 23: Analýza slova v aplikaci GramAut...61 Obrázek 24: Aplikace pro práci s gramatikami a automaty GramAut...62 Obrázek 25: Aplikace Pregjaut...64 Obrázek 26: Programátorská realizace konečného automatu...65 Obrázek 27: Trasovaná aplikace před pasivní programátorskou úlohou...68 Obrázek 28: Trasování syntaktického analyzátoru...68 Obrázek 29: Vizualizace metody rekurzivního sestupu...70 Obrázek 30: Implementovaný automat...74 Obrázek 31: Hrubá síla při vyhledávání...76 Obrázek 32: Přechodová funkce při vyhledávání...77 Obrázek 33: Knuthův-Morrisův-Prattův algoritmus...78 Obrázek 34: Aplikace RABJ pro tvorbu rozkladové tabulky LL(1) gram...80 Obrázek 35: Histogram četností skóre testu u skupiny (K) a (E) (fáze 1)...85 Obrázek 36: Taxonomie učebních úloh ve skóre testu (1)...89 Obrázek 37: Taxonomie učebních cílů ve skóre testu (1)...89 Obrázek 38: Části tematického celku ve skóre testu (1)...90 Obrázek 39: Histogram četností skóre testu u skupiny (K) a (E) (fáze 2)...91 Obrázek 40: Taxonomie učebních úloh ve skóre testu (2)...94 vi
7 Obrázek 41: Taxonomie učebních cílů ve skóre testu (2)...94 Obrázek 42: Části tematického celku ve skóre testu (2)...95 Obrázek 43: Příklady interakce mezi teoretickou inf. a algoritmizací...99 Obrázek 44: Výuka logiky na gymnáziích v ČR Obrázek 45: Výuka teorie formálních jazyků a automatů na SŠ v ČR vii
8 ÚVOD Struktura práce Kapitola 1 ÚVOD motivace a cíle 1. Úvod 1.1. Struktura práce Tato publikace je předkládána jako disertační práce v doktorandském studiu - teorie vyučování informatiky. Zaměřuje se na výzkum aplikačního pojetí výuky teoretické informatiky. Aplikační pojetí má zlepšit naplňování vyšších učebních cílů při výuce a jedním z klíčových aspektů je použití programátorských pomůcek počítačových aplikací se zdrojovými kódy. Tyto aplikace mají využít dovedností studentů informatiků v analýze a navrhování řešení algoritmických problémů a jejich implementace. V úvodních částech práce bude použita část materiálů k disertační zkoušce, neboť jejich využití pomůže přiblížit oblast aplikační výuky teoretické informatiky. V úvodu textové části se bude zabývat motivací výzkumu. Další kapitola nabídne pohled na otázky teoretické informatiky z hlediska pedagogického (didaktického), bude zde podán rozbor základních otázek cílů, obsahu a metod používaných ve výuce. V následující části budou nastíněny hlavní rysy aplikačního pojetí, které je ústředním bodem této disertační práce. Samostatná kapitola ukáže využití programovacích metod pro výuku teoretické informatiky. Rozbor pedagogického experimentu, jenž prověřuje účinnost aplikačního pojetí bude obsahem v následujících částech práce. Kapitola před samotným závěrem, který zhodnotí výsledky, bude věnována možným aplikacím navrhovaného pojetí v různých stupních a formách výuky. Práce se dále skládá z přiloženého CD-ROM média, které obsahuje elektronickou verzi textu spolu s odkazy na citované pomůcky aplikace pro výuku a další doplňující dokumentaci. Velmi rozsáhlou přílohou jsou učební texty, zpracované dle metodiky distančního vzdělávání, které jsou využívány při výuce teorie formálních jazyků a automatů. Budou v této práci citovány, ale jelikož by pro svou rozsáhlost nemohly být s ní svázány, jsou k dispozici pouze v elektronické podobě. 1
9 ÚVOD Motivace 1.2. Motivace Problematika vyučování informatiky je složitá a má svá specifika oproti jiným vědám. Jednak je didaktika (tedy teorie vyučování) informatiky teprve utvářející se disciplínou a jednak jsou jednotlivé disciplíny informatiky poměrně odlišné. Informatika jako všeobecně vzdělávací předmět se vyučuje na všech stupních vzdělávání (tedy primárním, sekundárním a terciárním) a každý ze stupňů má odlišné vzdělávací cíle i metody. Informatika má své aplikované disciplíny, které mají vztah k technickým disciplínám a i jejich výukové přístupy spadají spíše do didaktiky technických předmětů. Algoritmizace a programování, které dává studentům a žákům základy analytického a algoritmického myšlení, je specifickou doménou informatiky a didaktickým aspektům této oblasti se věnuje velká pozornost. Jako každá věda má i informatika své hlubší teoretické základy, které sice nejsou tak lehce viditelné jako aplikace, ale jejich důležitost je jako v jiných vědách zásadní. Vede k pochopení podstaty funkce právě těchto aplikovaných produktů informatiky. Už na střední škole se studenti díky výuce algoritmizace a programování začínají učit, jaké principy se skrývají za praktickými aplikacemi informatiky. Poznávají, co je to algoritmus a jak je lze navrhovat pro řešení různých problémů a jak se implementují v konkrétních programátorských prostředcích. Záleží samozřejmě na přístupu učitele (a osnovách), do jaké míry se podaří studentům nejen ukázat základní způsoby tvorby algoritmů pro řešení problémů. Poměrně zajímavý přístup, jenž volí někteří učitelé, spočívá v algoritmizaci problémů souvisejících s teoretickými předměty (tedy např. matematikou). Typickým příkladem je práce s maticemi, výpočet determinantů a jejich využití při řešení soustav lineárních rovnic (Dávid, 1988; Ralston, 1973). Tento přístup učí programovat, ale také dává potřebnou motivaci, protože se zabývá prakticky použitelnou věcí (využití řešení soustavy je jedna z metod matematiky, kterou lze uplatnit v reálném životě často). A navíc učí, jak tento problém řešit automatizovaně pomocí počítače, přičemž student není jen pouhým uživatelem nástroje ( černé skříňky ), ale chápe, jak prostředek funguje. Tento přístup, jenž motivuje disertační práci není bohužel standardem ve volitelných hodinách informatiky. Právě naopak jde spíše o menšinový přístup, i přestože má dvojí výhodu učí navrhovat řešení problémů (algoritmizaci) a navíc studentům nenásilnou formou přináší i tolik důležitý pohled na teoreticky zaměřené disciplíny (Koubková, 1998). Tato práce není primárně zaměřena na sekundární stupeň vzdělávání. Přesto je příklad uvedený v minulém odstavci dobrou ilustrací toho, jak užitečné pro učení může být vztah algoritmizace a teorie. Teoretické disciplíny informatiky jsou blízké matematice svou vysokou mírou formalizace a v podstatě jsou z metodické hlediska blízké spíše algebře a teorii grafů. Přinášejí řadu poznatků od formalizace pojmu jazyka, gramatiky, akceptoru přes vyčíslitelnost a složitost k logice a formálnímu usuzování. Ten kdo pochopí tyto principy a dokáže si je spojit s aplikovanými produkty informatiky 2
10 ÚVOD Cíle disertační práce (překladače, programovací jazyky, expertní systémy, umělá inteligence apod.), stává se tak opravdu informatikem, nikoliv pouze uživatelem prostředků. Jak již ale bylo naznačeno, jelikož jde o silně formalizované (matematizované) disciplíny, stávají se těžko pochopitelné, málo motivují studenty. Je tedy přirozené se ptát, zda nelze najít způsoby, jak zlepšit metody výuky tak, aby byly lépe naplněny cíle vzdělávání. Jde o to, aby studenti získali dostatečné formální znalosti a dovednosti a zároveň, aby dokázali spojit tyto znalosti a dovednosti s aplikovanou informatikou. Hypotézou, jež vychází z výše zmíněného příkladu s numerickou matematikou ve výuce programování, je, že k naplnění tohoto cíle přispívá využití algoritmizačních a programátorských dovedností studentů. Tento přístup je nazýván výukou s využitím aplikačního pojetí, které bylo formulováno také v publikovaných pracích autora. Ta by měla pracovat s intuitivními znalostmi studentů a především využít jejich analytické a algoritmické schopnosti s použitím počítačových aplikací a jejich algoritmů zdrojových kódů. Zpětnou vazbou pak je pedagogický experiment, který přinesl po důkladné analýze potvrzení této hypotézy, ovšem ukázal také slabiny této metody. To umožnilo formulovat závěry, kde je takový přístup užitečný a kde by naopak mohl vést k nechtěným výsledkům Cíle disertační práce Cíle této disertační práce lze tedy jasně shrnout do následujících bodů: - Provést stručné shrnutí základních problémů, které jsou charakteristické pro teorii vyučování teoretické informatiky. Je nutné zdůraznit, že práce nemá kompilační charakter a hlavní část práce je zaměřena na vlastní výsledky, a proto je toto shrnutí krátké (kapitola 2). - Zkompilovat současné poznatky o aplikačně pojaté výuce informatiky - konstruktivistická, minimalistická a výzkumy v této oblasti (kapitola 3). - Navrhnout metody výuky založené na aplikačním pojetí a programovacích technikách a popsat aplikace vytvořené jak autorem, tak pod jeho vedením či jiné práce využívané ve výuce (kapitola 4). - Popsat pedagogický experiment, jenž testuje experimentální výuku a jeho výsledky (kapitola 5). 3
11 ÚVOD Cíle disertační práce - Interpretovat výsledky experimentu, navrhnout jejich integraci do výuky a také popsat již realizované implementace ve výuce na katedře informatiky a počítačů Ostravské univerzity (kapitola 6). Samotný experiment je sice omezen na oblast teorie formálních jazyků a automatů (větší rozsah by už přesahoval časový i prostorový rámec disertační práce), ale práce ukazuje možnosti pro další implementaci v jiných disciplínách. Vedlejším a zprvu spíše minimalisticky pojatým cílem je tvorba studijních opor. Zdálo se vhodné mít k dispozici nejen klasickou literaturu, ale také vlastní texty pro výuku v experimentu i mimo něj. Díky zapojení do grantových aktivit zaměřených na vzdělávání učitelů přírodních věd a e-learningu se nakonec autorovi podařilo vytvořit poměrně komplexní studijní materiály. Během tvorby této disertační práce takto vznikly tři studijní opory dle metodiky distančního vzdělávání (Bednaříková, 2001). Tyto studijní opory jsou používány na katedře informatiky a počítačů Ostravské univerzity, jak v distanční, tak prezenční výuce (distanční texty lze využít i v prezenčním studiu, naopak ovšem ne). I když nejsou zcela aplikační, jejich existence je pro studenty pomůckou nemusejí složitě získávat klasickou literaturu, která není k dispozici v elektronické podobě. Jde o následující recenzované učební texty: - Regulární a bezkontextové jazyky I. (pro distanční studium aplikovaná informatika ), - Teoretické základy informatiky I. (pro distanční rozšiřující učitelské studium v aprobaci informatika), - Teoretické základy informatiky II. (pro distanční rozšiřující učitelské studium v aprobaci informatika). Opory jsou přiloženy v elektronické podobě. I když mají ještě mnoho slabin, v zásadě jsou použitelné pro aplikačně pojatou výuku a byly kladně recenzovány z odborného informatického i didaktického hlediska. Obsahují také mnoho řešených příkladů, které by nemohly být zařazeny přímo do textu pro svou rozsáhlost, proto by se k nim mělo přihlížet jako k součásti disertační práce. 4
12 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Kapitola 2 TEORETICKÁ INFORMATIKA základní otázky teorie vyučování 2. Základní otázky vyučování teoretické informatiky Pojem teorie vyučování teoretické informatiky může na první pohled vypadat jako nepřirozený a zbytečný. Samotná teoretická informatika je v pozadí aplikovaných disciplín, její vědecký systém se stále buduje a její výuka spadá v podstatě do oblasti terciárního vzdělávání přesněji do univerzitního vzdělávání. Jde-li tedy o disciplíny, které se vyučují jen úzkému okruhu studentů, není bádání nad způsoby její výuky zbytečným plýtváním času a energie? Následující práce dá jasnou odpověď, že tomu tak není. Teoretická informatika a její disciplíny, které zde budou sumarizovány a rozebrány především z hlediska edukačního, dávají pevný formální aparát pro práci se zásadními pojmy informatiky. Ať už jde o problém algoritmické řešitelnosti problému či její složitosti nebo struktury umělých jazyků, vždy jde o sice teoretické otázky, bez kterých si ale nelze představit efektivní a moderní aplikace, se kterými se setkáváme v reálném životě. Tyto disciplíny se vyznačují silnou formalizací tedy důrazem na přesné matematické vyjádření pojmů a vztahů mezi nimi. Vyučování disciplín teoretické informatiky se proto stává velmi odlišným od technicky orientovaných (aplikovaných) oborů informatiky. Souvisí výrazně se způsoby vyučování matematice, ale i přesto silně souvisí také s algoritmizací, neboť hledá postupy automatizace řešení problémů. To činí učení se těmto oborům velmi složitým a náročným pro studenty. Formalizované způsoby výuky zavedené a převažující dnes mají sice výhodu ve svém silném souladu s vědeckým systémem, nicméně jsou pro většinu studentů nevhodné (jak ukazuje orientační průzkum z kapitoly 3). 5
13 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Teoretická informatika vymezení disciplín 2.1. Teoretická informatika vymezení disciplín Vymezení toho, co je teoretická informatika, může být složitý úkol (Lewis, 1996). Pokud budeme studovat různou literaturu, je možné zařazovat do této oblasti i témata a teorie, které spíše spadají do technických disciplín jako je kybernetika (Gluškov, 1968; Havel, 1980). Například kniha o kybernetice (Kotek, 1990) se kromě specificky kybernetických témat dotýká i některých oblastí teorie automatů a teorie jazyků, které jsou typické pro teoretickou informatiku. Stejný fenomén se pak týká i umělé inteligence (UI), jež je dnes samostatnou a rozsáhlou disciplínou, příkladem je encyklopedie UI (Mařík, 2001; 1993; 1995), která ve své poslední části rozebírá teorii složitosti. V této práci vymezíme jako hlavní oblast zájmu z oblasti teoretické informatiky tyto oblasti: 1. teorie formálních jazyků a automatů, 2. teorie vyčíslitelnosti a složitosti (souhrnně označovaná jako teorie algoritmů), 3. logika (její informatická část zaměřená na problematiku automatizovaného odvozování (Lukasová, 1997). Tento výčet samozřejmě nemusí být i s ohledem na předcházející odstavec úplný. Jde spíše o ty nejcharakterističtější disciplíny, jak s ohledem na obsah, tak především na metody zkoumání. Existují hraniční disciplíny, které se již nedají označit za zcela informatické, ale jejich obsah i metody zkoumaní s typickými obory teoretické informatiky úzce souvisí (teorie grafů, diskrétní matematika, analýza dat, fuzzy logika a modelování apod. (Sedláček, 1981; Preparata, 1974; Hebák, 1987; Novák, 1990; Novák, 2000). Jelikož tato práce se zaměřuje na didaktické aspekty teoretické informatiky, není jejím cílem ukázat v plné šíři i hloubce všechna témata, kterými se zabývá například teorie formálních jazyků. V tomto ohledu se bude odkazovat na elektronickou verzi učebních textů na přiloženém CD. Jde o to ukázat metody používané ve výuce a přesný obsah učiva najde čtenář v příloze Cíle výuky Základním didaktickým hlediskem, které si při výuce je třeba ujasnit, je proč a čemu chceme studenty naučit. Musíme si tedy stanovit cíle výuky. Klasické pojetí výuky je silně spjato s vědeckým systémem. Vychází ze strukturovaných poznatků dané disciplíny teoretické informatiky. I když se výuka na jednotlivých VŠ mírně liší (logicky i s ohledem na jejich technické/přírodovědné zaměření) jsou cíle porovnatelné. Na základě různých 6
14 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Cíle výuky zdrojů, které budeme diskutovat především u obsahu výuky v následující kapitole, lze formulovat cíle pro tři základní disciplíny takto (Aho, 1992): Teorie formálních jazyků a automatů: - pochopit vztah mezi jazykem, gramatikou a automatem (Češka, 1992), - pochopit různou složitost jazyků (Chomského hierarchii), - pochopit problém determinismu a nedeterminismu, jeho dopad na třídy jazyků, - získat dovednosti v konstrukci automatů, gramatik, převodů (dle obsahu) (Barták, 2003). Vyčíslitelnost a složitost: - pochopit algoritmickou rozhodnutelnost problémů, resp. rekurzivitu funkcí (Ajzerman, 1971), - pochopit různé formalizace pojmu algoritmus a jejich ekvivalenci (Jančar, 1997), - pochopit pojmy složitosti (časové a prostorové), vztahy mezi třídami složitosti a NP-úplné problémy (Kučera, 1989), - pochopit vlastnosti těchto pojmů a naučit se je formulovat. Logika: - pochopit formální základ logik (syntaxe i sémantiky), - pochopit pojmy sémantické i formální dedukce, - naučit se základní formální metody (důkazové), axiomatické systémy, - pochopit význam těchto systémů pro automatizovanou dedukci. Obecným principem u těchto disciplín je komplexní cíl porozumět učivu, pochopit spojení s praxí (umět také aplikovat) a schopnost formalizovat (vyjádřit definice, vztahy a dokazovat je). To je právě jeden z nejtěžších úkolů pro učitele. I když cíle jsou poměrně jasné a obecně přijímané, je nesnadné docílit u všech studentů dosáhnutí těchto tří cílů. Jde totiž o vyšší učební cíle (Kurelová, 1999), než je pouhá reprodukce 7
15 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Klasické přístupy a metody ve výuce znalostí. Je zřejmé, že tyto cíle mají svou logickou hierarchii. Bez znalostí nelze porozumět, bez porozumění nelze aplikovat ani syntetizovat (formalizovat) Klasické přístupy a metody ve výuce Pokud budeme zkoumat různé způsoby výuky a různé přístupy ve výuce předmětů teoretické informatiky, můžeme vytvořit jejich jistou typologii. Stejně jako kterékoliv jiné typologické rozdělení, je nutné jej brát jako rozdělení do kategorií podle charakteristických vlastností. Určitá konkrétní výuka pak spojuje vlastnosti různých typů. Typ Metoda Výhody Nevýhody Algebraický Definice-věta-důkaz Vědecký systém, přesnost, formalizace Nízká motivace, obtížnost, nepraktičnost Praktický Teorie a příklady Vědecký systém, Malé spojení s praxí algebraický lépe pochopitelné Inženýrský Teorie a nástroje pro Dobrá aplikovatelnost Nižší flexibilita Aplikační aplikaci Intuitivní pojem, teorie, implementace v praxi, motivace Spojení se selským rozumem,motivace, flexibilita Sporná aplikovatelnost, snížení přesnosti Rysy každého z přístupů bychom mohli najít v různých učebních textech a konkrétní výuce. Algebraický způsob výuky je klasickou aplikací výuky typu definice-věta-důkaz. Není zaměřen na praktické příklady, je postaven na exaktních formulacích v jazyce matematiky, což je jeho výhodou. Formalizace je v tomto případě na vysoké úrovni, což ale také vede ke snížení motivace studentů a může vyvolávat dojem nepraktičnosti. To znamená, že studenti chápou pojmy teoretické informatiky jako čistě matematický aparát a nevidí jejich uplatnění v praxi. Typické prvky takového přístupu mohou být nalezeny například ve velmi precizně zpracovaných učební textech (Černá, 1998). Jistou modifikací je prakticky orientovaný algebraický přístup. Tento přístup se vyznačuje snahou formální definice a věty především ukázat na velkém množství vhodně zvolených příkladů. Jeho výhodou je prakticky stejná exaktnost formalizace a lepší pochopitelnost pro studenty. Stále u něj však může chybět spojení s praxí. Typickým příkladem je asi stále nejlepší monografie věnovaná automatům a gramatikám (Chytil, 1984). Inženýrský přístup se zaměřuje jak na formální stránku, ale je více orientován na potřeby praxe a používané nástroje. Má dvě základní výhody motivuje studenty a provádí výklad na prostředcích, jenž jsou přímo uplatnitelné v praxi. Určité rysy takových přístupů lze najít například ve výkladu složitosti v textech na RAM strojích, ještě před formalizací Turingova stroje (Jančar, 1997). Aplikační pojetí je opět 8
16 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Utváření představ, pojmů a definic příbuzným k inženýrskému. Odlišuje se tím, že se snaží akcentovat před jakoukoliv formalizací intuitivní představu pojmu a vysvětlit pojmy také s pomocí jejich konkrétní implementace a využití v praxi. Je tak pro studenty srozumitelnější a lépe motivuje, nicméně může vést k nepřesnostem ve formalizaci. Rysy takového přístupu můžeme najít například ve výuce logiky podle textů (Lukasová, 1997) nebo v teorii formálních jazyků v (Lewis, 2002). Je třeba opět zdůraznit, že žádný z typizovaných přístupů nelze považovat za jediný správný a ani to tato práce netvrdí. Účelem bylo ukázat, že různé přístupy mají jisté výhody. Při volbě přístupu v konkrétních situacích je nutné vzít v úvahu, především koho a za jakým účelem vyučujeme, což bude konstatováno podrobně v závěrech z experimentu. Výuka v typických disciplínách teoretické informatiky má svá specifika. Některé problémy je možné předpokládat již po sumarizaci typologií výuky. Například příliš formalizovaná výuka problematicky utváří představy o pojmech u studentů Utváření představ, pojmů a definic Zásadním problémem ve výuce je správné utváření pojmů. Tím více to pak platí o poměrně složitých pojmech teoretické informatiky. Obecnou chybou dle výzkumů pedagogické psychologie (Krejčová, 1998) je snaha o předčasné definovaní pojmu. Právě to je hlavní úskalí exaktních algebraických přístupů. Přístupy aplikačněji orientované se snaží nejprve vytvořit názornou představu nejlépe na intuitivních pojmech, které již student zná. Samozřejmě i tyto názorné materiály a pomůcky mohou vést k nesprávnému utváření pojmů, ale v obecnosti jsou předpokladem pro osvojení formalizovaného pojmu a jeho definice. Podívejme se na příklad z teorie formálních jazyků. Pojem, se kterým se student setkává, je konečný automat. Jeho formální definici by měla předcházet intuitivní představa. Podívejme se na následující ukázku z učebního textu autora (Habiballa, 2003). 9
17 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Utváření představ, pojmů a definic Obrázek 1: Intuitivní pojem konečného automatu Obrázek 2: Reprezentace automat jako stroj Na obrázku 1 je jedna z mnoha možností, jak studentům ukázat princip konečného automatu na automatu na kávu. Jde samozřejmě o příklad, jenž má svá úskalí, neboť akceptuje pouze konečně mnoho slov (posloupností vhozených mincí). Nicméně právě takové příklady umožňují vytvořit představu o stavech, symbolech, abecedě a 10
18 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Utváření představ, pojmů a definic přechodech mezi stavy (není těžké automat rozšířit na vydávání další kávy při násobku ceny) (Barták, 2003). Samozřejmě je v tomto případě také vhodné utvořit představu nejen o automatu jako množině stavů, ale také jako o abstraktním stroji (Diehl, 1998) viz obrázek 2. Zároveň je také vhodné, aby student získal i funkcionální náhled, tedy aby viděl automat dynamicky reprezentovaný při výpočtu (obrázek 3). Obrázek 3: Dynamická reprezentace automatu Je tedy vidět, že v tomto konkrétním případě je užitečné vytvářet několik různých představ z rozličných hledisek (Kieras, 1984). Tato hlediska nejsou zvolena náhodně. Právě tyto tři pohledy jsou v teoretické informatice velmi časté: - statický (stavový), - abstraktní stroj, - dynamický (výpočet). Umožňuje co nejlépe pochopit mnoho dalších pojmů i z jiných oborů. Např. model zásobníkového automatu, model Turingova nebo RAM stroje v teorii vyčíslitelnosti, inferenční mechanismus v logice. Samozřejmě, že nejefektivnější je v tomto případě používání pomůcek aplikací, které umožňují přímo vizualizovat uvedené mechanismy (Khoo, 1998). Tato problematika spadá spíše do kapitoly o programátorských pomůckách, ale na tomto místě je také vhodné uvést příklad. Je jím jednoduchá pomůcka vyvinutá v rámci samostatné činnosti studentů Vizual Automat. 11
19 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Algoritmy ve výuce Obrázek 4: Vizual Automat Matematická definice pojmu by pak měla následovat teprve až je vytvořena jasná představa a pojem samotný. Student ji pak mnohem lépe pochopí. Obrázek 5: Matematická definice pojmu konečného automatu 2.5. Algoritmy ve výuce V teoretické informatice jsou velmi časté transformační, minimalizační a podobné algoritmické postupy. Jsou většinou popsány teoreticky na principu vstup-výstupmetoda (Molnár, 1987). Tedy jde o formálně popsaný postup se vstupními a výstupními objekty a neformálně popsanou metodou na jejich převod. Tyto postupy se 12
20 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Algoritmy ve výuce vyskytují ve všech zmiňovaných odvětvích a zvláště v teorii formálních jazyků tvoří velkou část učiva (množinové operace s automaty, převody variant konečných automatů a mnoho dalších viz příloha s didaktickou analýzou učiva). Právě algoritmy úzce souvisí s výzkumem provedeným v rámci této disertační práce. Jde však o složitější problematiku, jejíž jsou zde probírané algoritmy pouze součástí. Popis metody daného algoritmu bývá většinou realizován buď zcela pomocí přirozeného jazyka, případně je zapsán v nějaké modifikaci pseudokódu nebo zjednodušeného programovacího jazyka. Zápis pomocí programovacího jazyka nemusí být špatnou volbou s ohledem na studenty (informatiky), kteří mají většinou dobré znalosti programování. Na druhou stranu takový zápis může být nepřehledný a málo ilustrativní. Příkladem je neformální a formální popis normování konečného automatu.interaktivní aplikace je v tomto případě opět účinnou pomůckou (Hansen, 1999). Příkladem budiž applet vyvinutý na Vysoké škole báňské jako semestrální projekt (Wiglasz, 1999). Ten ukazuje postup při výpočtu funkce FIRST u LL gramatik. Obrázek 6: Interaktivní applet pro demonstraci algoritmu FIRST 13
21 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Algoritmy ve výuce Normování spočívá v tom, že označujeme stavy arabskými číslicemi od vstupního stavu. Procházíme sloupce v daném pořadí symbolů tabulky a snažíme se vždy stavu, který ještě není označen, přiřadit nejnižší nepoužitou arabskou číslici. Pokračujeme se stavem s následující arabskou číslicí, který jsme ještě neprocházeli a aplikujeme stejný postup. Algoritmus: Algoritmus převodu KA do normovaného tvaru. Vstup: KA A=(Q,Σ,δ,q 0,F) bez nedosažitelných stavů, množina Σ uspořádaná. Výstup: KA B, který je ekvivalentní s A a je v normovaném tvaru. Nechť Q = n a prvky Σ jsou uspořádané v pořadí a 1,a 2,... a n. Ozn[q 0 ]:=1;InvOzn[1]:=q 0 ; MnozOzn:={ q 0 };PoslOzn:=1; for i: = 1 to n do for j: = 1 to m do begin q:=δ(invozn[i],a j ); if q in MnozOzn then TAB[i,a j ]:=Ozn[q] else begin PoslOzn:=PoslOzn + 1;Ozn[q]:=PoslOzn; InvOzn[PoslOzn]:=q;MnozOzn:=MnozOzn { q}; TAB[i,a j ]:=PoslOzn; end; end; V TAB označit počáteční stav (1) a koncové stavy. Obrázek 7: Popis algoritmu formálně a neformálně Algoritmy souvisí ještě s další charakteristickou vlastností teoretické informatiky, a to jsou konstruktivní důkazy. Popisuje je samostatná kapitola, avšak už na tomto místě je možné konstatovat, že jde skutečně o typickou vlastnost. V matematice se samozřejmě konstruktivní důkazy vyskytují také, ale ani zdaleka v takovém množství a nemají tak velký vztah k samotnému učební procesu tedy chápání vztahů mezi pojmy. Dalším prostředkem, který usnadňuje učení se algoritmům, je také velké množství řešených příkladů různé složitosti. Stejně jako ve výuce algoritmizace většinou nestačí 14
22 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Vlastnosti pojmů věty a jejich důkazy formálně popsat metodu, ale je nutné také ukázat jeho aplikaci na různě problematické vstupy (Aho, 1976) Vlastnosti pojmů věty a jejich důkazy Věty tedy exaktně formulované vlastnosti hrají v teorii formálních jazyků důležitou roli (Thiele, 1985). Stejně jako v jiných matematických teoriích formulují, jakým způsobem se objekty (např. automaty, jazyky, axiomatické systémy) chovají. Vlastnosti pojmů jsou spolu s jejich definicemi a algoritmy dalším stavebním kamenem disciplín teoretické informatiky. Samotná formulace je však nedostatečná. Mělo by jít především o to, aby student pochopil, co daná věta říká a jaký dopad to má na globální nazírání na daný obor. Vezměme si za příklad Kleeneho větu teorie formálních jazyků a automatů (Černá, 1998). Ta postuluje, že každý regulární jazyk je jazykem rozpoznatelným konečným automatem a naopak (jinak řečeno, že třída regulárních jazyků a jazyků rozpoznatelných konečnými automaty jsou stejné). Takové tvrzení není jen pouhou větou teorie, ale dává studentovi první jednoznačné (exaktně definované) spojení mezi akceptory a generátory jazyka. Algebraicky orientované přístupy mohou mít nevýhodu, že se příliš zaměří na samotné věty teorie bez zdůraznění právě těchto důsledků. Samozřejmě to pro jistý okruh studentů (nadaných pro teoretické předměty) nemusí být překážkou, ale naopak.. Chceme-li však, aby se věty nestaly pouze součástí reprodukovaných znalostí, ale aby byly pochopeny (tedy dosáhlo se u nich učebního cíle porozumění), je opět vhodné volit kromě formálního přístupu i metody podporující zásadu názornosti, byť za cenu toho, že tyto metody nevedou přímo k formalizovanému myšlení. Formální důkazy vět nemusejí být z didaktického hlediska neužitečné. V teoretické informatice se u mnoha důkazu používají konstruktivní principy. To znamená, že konstrukce (např. u sestrojení automatu rozpoznávajícího průnik jazyků rozp. dvěma automaty) se využívá ve formálním důkazu. Vytvoří se tak výstupní objekt a úkolem formálního dokazování je pak ukázat matematickou dedukcí, že má požadovanou vlastnost. Toto přímé spojení algoritmického a formálního myšlení má mnoho příznivých dopadů. Jednak student ještě lépe pochopí, proč daný postup funguje tedy větu (vlastnost). Za druhé student pochopí, jaký význam důkaz má tedy že mu dává naprostou jistotu, že princip je korektní. Dává to studentu motivaci pokoušet se i o další složitější důkazy. V neposlední řadě (a to právě souvisí se základní hypotézou práce) jsou takové důkazy mnohem snáze proveditelné než některé matematické důkazy založené na určitém velkém kroku. Takový krok musel slavný matematik promýšlet třeba celé roky, zatímco konstruktivní důkaz většinou vychází z algoritmického postupu složeného z malých krůčku. Využívá se přitom typicky programátorských metod jako 15
23 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Formalizace je dekompozice problému, větvení, cyklů apod. Právě pro informatiky je proto podobné vedení důkazové sekvence přínosné. Příkladem je věta formulující uzavřenost třídy regulárních jazyků vůči operaci průniku. Důkaz této věty spočívá v sestrojení automatu a důkazu, že rozpoznává přesně ta slova, která rozpoznávají oba automaty současně. Věta: Pro libovolné jazyky L 1,L 2 Σ * platí: jestliže L 1,L 2 F, potom také L 1 L 2 F (Neboli: Třída jazyků rozpoznatelných KA je uzavřena vůči operaci průniku) Důkaz: L 1 =L(A 1 ), L 2 =L(A 2 ), kde A 1 =(Q 1,Σ,δ 1,q 1,F 1 ), A 2 =(Q 2,Σ,δ 2,q 2,F 2 ) jsou KA. Sestrojíme KA A=(Q,Σ,δ,q 0,F) takový, že L(A) = L 1 L 2. Předpokládejme: Q 1 Q 2 =. Položme Q=Q 1 Q 2, q 0 = (q 1,q 2 ), F=F 1 F 2 a δ je dána následovně. Pro lib. p 1 Q 1, p 2 Q 2, a Σ je δ((p 1,p 2 ),a) = (δ 1 (p 1,a),δ 2 (p 2,a)). Indukcí lze ukázat, že δ * ((q 1,q 2 ),w)=(δ 1* (q 1,w),δ 2* (q 2,w)) pro lib. w Σ *. w L 1 L 2 w L 1 w L 2 (δ 1* (q 1,w) F 1 ) (δ 2* (q 2,w) F 2 ) (δ 1* (q 1,w),δ 2* (q 2,w)) F 1 F 2 δ * ((q 1,q 2 ),w) F w L(A). Obrázek 8: Konstruktivní důkaz tvrzení Samozřejmě je také důležité, že za takovouto konstrukcí studenti vidí aplikovatelný algoritmus jako v tomto případě. Příklady zde nejsou pro rozsáhlost uvedeny nicméně je čtenář může shlédnout na přiloženém CD v učebním textu Regulární a bezkontextové jazyky I. (Habiballa, 2003, s. 57) Formalizace Schopnost formalizace je pro studenty složitým úkolem k naučení. Patří k složitějším učebním cílům porozumění, analýze a syntéze (pokud tedy budeme od studenta vyžadovat pochopení nikoliv memorovanou reprodukci). Poslední kapitola ukazuje, že existují cesty jak lze studenty postupně k formalizaci přivést bez nutnosti na ni přejít příliš rychle. Všechny zmiňované aspekty v předchozích kapitolách jsou spíše pomocné a nemusí nutně vést k tomuto cíli. Dá se říci, že teoretická informatika je však svými 16
24 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Motivace pro studium spojení s praxí charakteristikami velmi vhodná k hledání přímých cest utváření pojmů na formální bázi u studentů. Jistě i v matematice je propracovaná didaktická teorie pro výuky rozličných témat (např. propedeutika derivace vyložená v renomované učebnici didaktiky (Hejný, 1990). Právě teoretická informatika se svým hlubokým algoritmickým základem nabízí možnosti efektivních výukových metod. Stupeň formalizace, který od studenta budeme vyžadovat, závisí samozřejmě především na profilu studovaného oboru. V závěrečných částech se práce zabývá právě touto problematikou. Nicméně čtenář by mohl po přečtení už těchto úvodních kapitol nabýt dojmu, že práce podceňuje význam formalizace. To ale není pravda, neboť má ukázat na provedeném experimentu, že jinými než algebraicky orientovanými metodami výuky lze u studentů dosáhnout lepších výsledků v jistých dovednostech (podle vyšších učebních cílů). Je celkem logické očekávat (a typologii výuky se to také připouští), že právě aplikačněji orientovaná výuka může schopnost formalizace studentů snížit, což může být například u studentů orientovaných na matematickou informatiku nežádoucí. Záleží tedy na rozvaze učitele, u koho a v jakém rozsahu určitou metodu využije Motivace pro studium spojení s praxí Motivační faktor ve výuce teoretických předmětů hraje nadprůměrně důležitou roli (jak ukázal předvýzkum popsaný v kapitole 3). Student potřebuje nejen s pomocí různých výukových metod dobře pochopit, ale také musí vidět, k čemu nabyté znalosti a dovednosti může využít. Vezmeme-li v úvahu prostou formální stránku teoretické informatiky, bude asi velmi nesnadné studenty přesvědčit o jejím významu. Určitá malá část studentů toho schopna bude, ale u větší části dojde k demotivaci (opět s ohledem na typ studia a obor). Proto je stejně jako intuitivní pohled na formální pojmy důležité také ukázat využití těchto pojmů v praxi. Jelikož v kapitolách věnovaných výzkumu se bude text některými aspekty blíže zabývat (z teorie formálních jazyků), na tomto místě bude uveden příklad spadající do oboru logiky. Učíme-li studenty logice z informatického hlediska, snažíme se jim dát základ pro pochopení způsobu reprezentace znalostí pomocí jazyka logiky (Lukasová, 1995). Díky tomu pak lze realizovat automatizované usuzování, jehož uplatnění v oblasti expertních systémů a umělé inteligence je nesporné. Přesto student logiky dokáže mnohem lépe ocenit mnohem jednodušší příklady z reálného života. Následující obrázek ukazuje aplikaci vyvinutou v rámci zdařilé diplomové práce (Humhalová, 2003), která studentům nejen umožňuje vidět příklady modelování problémových situací pomocí jazyka logiky, ale i jeho řešení (nalezení závěru dedukce) pomocí formálních metod konkrétně rezolučního principu. 17
25 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Motivace pro studium spojení s praxí Obrázek 9: Motivačního příkladu dedukce na slovních příkladech Tato aplikace obsahuje velké množství příkladů (lze ale zadávat i vlastní) jako je tento: K soudu byli předvedeni tři podezřelí z loupeže - A, B a C. Při výslechu se zjistili tyto skutečnosti: 1. Do případu nebyl zapleten nikdo jiný než A, B a C. 2. A pracuje vždycky aspoň s jedním společníkem. 3. C je nevinen. Je B vinen? 18
26 ZÁKLADNÍ OTÁZKY VYUČOVÁNÍ TEORETICKÉ INFORMATIKY Motivace pro studium spojení s praxí Nejen že s pomocí takovýchto příkladů se naučí formálně reprezentovat výroky přirozeného jazyka v jazyku logiky, ale navíc se studentům ukáže i laické využití deduktivního aparátu. Všechny tyto faktory, které byly vyjmenovány jako charakteristické pro teoretickou informatiku, byly také zohledněny ve výuce v pedagogickém experimentu, kterému je věnován zbytek textu této práce. Všechny zmiňované obory by zasloužily samostatnou kapitolu možná i knihu, jež by se věnovala jejich didaktickým aspektům. V rámci řešení disertační práce se však experiment omezuje na teorii formálních jazyků a automatů. 19
27 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Kapitola 3 APLIKAČNÍ POJETÍ VE VÝUCE Rámec výzkumného záměru 3. Výzkum využití aplikačního pojetí ve výuce Komplexní příprava praktických odborníků a učitelů v oblasti informatiky vyžaduje pevné základy teoretických disciplín (TI). Je důležité vytvářet u studentů nejen statické znalosti (definice, věty, důkazy), ale také specifické dovednosti, návyky a postoje (analytické a algoritmické myšlení, strukturovaný přístup k jazykům a překladačům atd...) Z těchto důvodů je třeba zkoumat, zda dosud převážně používané metodiky (i když nejsou explicitně formalizovány) jsou efektivní v tomto směru. Z praxe učitelů (i studentů) těchto předmětů lze často slyšet, že klasická výuka založená na učení znalostí při použití organizační formy hromadného vyučování vede k memorování bez pochopení principů, demotivaci pro další studium, a tím i formování nesprávných návyků a postojů v informatice u budoucích absolventů. U studentů nadaných a motivovaných pro teoretické disciplíny jako je logika, teorie jazyků a automatů nebo teorie algoritmů (výstižněji teorie vyčíslitelnosti a složitosti) má tento způsob výuky své opodstatnění a je pro ně zajímavý. Ti chtějí pochopit nejen podstatu, ale i dokazovat, že pojmy mají mezi sebou deklarované vazby a ti nejlepší se dokonce snaží i rozšiřovat poznání v těchto oblastech. Mluvíme však pouze o úzké skupině, která by neměla být cílovou skupinou této základní výuky. Cílem by mělo být, aby každý student chápal význam teorie pro praxi a pro jeho obecný profesionální nadhled v informatice. Měl by umět vidět vlastnosti algoritmů v jejich obecnosti, nutnost zkoumat řešitelnost a efektivnost řešení problémů. Také by měl pochopit, že používané nástroje v informatice jsou založeny na pevných strukturách souvisejících s pojmy gramatiky, jazyka a analyzátoru. Taktéž logický úsudek a jeho formalizace v matematické logice by se měl stát součástí postojů informatika. Proto byl zahájen didaktický výzkum, jenž má dát odpověď na základní otázku, zda aplikační pojetí při výuce teoretické informatiky zlepší naplnění výše uvedených vzdělávacích cílů. 20
28 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Výchozí stav a konstruktivismus v informatice 3.1. Výchozí stav a konstruktivismus v informatice Konstruktivismus ve vzdělávání je dnes velmi známým pojmem, ať již přímo nebo neadresně z učitelské praxe. Hovoří se o tom, že výuka by neměla spočívat pouze v memorování znalostí, ale že by mělo jít o proces, který bude brát v úvahu přirozenou konstrukci pojmů v myšlení žáka či studenta (Matthews, 1998). Měla by studenta vést k postupnému utváření logické struktury znalostí, přičemž by to měl být aktivní proces, nikoliv pouhé pasivní studium učebnic. Ať už je tento způsob výuky realitou nebo jen nesplněným přáním, jde v každém případě o velmi rozumně formulovaný přístup, který by měl zefektivnit výuku. Odhlédněme pro účely této práce od obecné teorie konstruktivismu a věnujme se jeho aplikaci v oblasti informatiky. Velice inspirativní i informativní zároveň jsou v tomto ohledu práce Prof. Ben-Ariho známého autora populárních vědeckých monografií z oblasti logiky i mnoha článků z oboru didaktiky informatiky. Jeho studie týkající se konstruktivismu (Ben-Ari, 2001) a další týkající se jeho konkrétních aplikací se svou filozofií velmi dobře hodí pro prezentované aplikační pojetí. Tato studie je sice spíše zaměřena na technické aspekty informatiky, ale aplikační pojetí výuky je jistým doplněním pro oblast teoretické informatiky. Ukázky praktické aplikace ve výuce spadají nejen do technických prostředků (diskutuje se zejména otázka kvalitního výukového modelu počítače), ale velmi intenzívně pracuje také v oblasti algoritmizace a programování (např. systém Jeliot 2000 (Levy, 2000)). Aplikační pojetí je založeno na využití programovacích metod, a je proto logicky s termíny jako je bricolage spojeno (Ben-Ari, 1999). Právě bricolage tedy jakési učení se metodou pokusu a omylu známé z programování (Pea, 1986) je využitelné prostřednictvím algoritmů i v teoretické informatice. Tato bricolage je také pro programátora velice dobře vysvětlitelná jako neustálé debuggovaní a trasovaní, tedy snaha zjistit podstatu nějakého důsledku. Doporučení, které citovaný článek dává učiteli, je možné shrnout do těchto bodů: - vyučované pojmy musí mít svůj jasný model, - není vhodné začínat abstrakcí (formalizací), - používání bricolage je vhodné pouze u vstupních pojmů (kurzů), u pokročilejších může být kontraproduktivní, - zajímavým důsledkem je, že použití informačních a komunikačních technologií ve výuce nemusí mít pozitivní dopad ve všech situacích. 21
29 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Výchozí stav a konstruktivismus v informatice Právě tyto zásady používá aplikační pojetí. Studie ukazuje velmi ilustrativní analogii s problematikou výuky objektově orientovaného paradigmatu v programování, kde je typicky důležité dodržovat tyto zásady. Konstruktivismus je obecně v informatice poměrně málo prozkoumaným fenoménem. Logicky v teoretické informatice, jež je součástí informatiky, je to ještě složitější. Proto tato práce vychází ze zatím málo vědecky propracované základny. Existují samozřejmě další teoretické studie (Booth, 2001) zaměřené opět spíše na inženýrsky orientované konstruktivistické vyučování. Mnohem více článků lze pak najít o konkrétních implementacích v oblasti teorie formálních jazyků (Zhang, 1998). Zajímavým využitím jazyka SCHEME pro výuku nedeterministických automatů je práce (Wagenknecht, 1998; Hilsdale, 1995). Další aplikací je vizualizace generování a výpočtu konečného automatu (Braune, 2001; Devedzic, 2002). Je však třeba konstatovat, že těchto systematických pokusů o konstruktivisticky orientovanou výuku je poměrně málo i v celosvětovém měřítku. Existuje samozřejmě mnoho pomůcek, didaktických materiálů, ale jen velmi málo exaktních studií, které by rozebraly i efektivitu těchto přístupů. Ve výuce teorie formálních jazyků a automatů na VŠ se většinou akcentuje matematické pojetí (Hopcroft, 1979). Buduje se pojmový aparát na matematických strukturách a dokazují se vlastnosti zaváděných struktur. Mnohem méně se však ukazuje, jaké je využití těchto znalostí a zejména, jak se tyto struktury v praxi implementují. Nejblíže aplikačnímu pojetí je výuka na technických vysokých školách (v ČR například VŠB, VUT), kde se studenti učí nejen teorii, ale i používané softwarové nástroje k vytváření rozkladových tabulek gramatik apod. (yacc, LL-gen atd.) Používaní nástrojů však studentům nedává potřebný náhled principů samotných algoritmů pro tvorbu analyzátorů. Pochopení těchto algoritmů jim přibližuje nepřímo také samotné teoretické otázky tvorby syntaktických analyzátorů a překladačů. Například metoda rekurzivního sestupu (Dvořák, 1992) je velice účinnou metodou pro výuku tvorby analyzátorů a principů jejich práce. V dalším textu se s ní blíže seznámíme. Podobné přístupy mohou napomoci studentům při pochopení vztahů mezi jazyky, gramatikami a automaty a to tím, že podporují didaktické zásady názornosti a trvalosti. Podporuje se tím specifický i nespecifický transfer znalostí a dovedností (Gall-Ezer, 2000). Například práce prof. Lewise z University of Kentucky (Lewis, 2002) nebo (Kastens, 2002) ukazuje názorné využití této metody. I učební texty zmíněné VŠB v kurzu překladačů se této metodě věnují, nicméně ve výzkumu půjde o důsledné didaktické využití a prověření účinnosti této a metod s podobnými atributy. Následující obrázek ukazuje, jak se při aplikačním způsobu výuky této disciplíny vzájemně doplňuje teoretická a praktická stránka vyučování. Vychází se z intuitivních pojmů, které jsou vytvořeny u studentů (např. studenti chápou, co tvoří jejich mateřský jazyk a gramatiku tohoto jazyka). Tyto pojmy se pak matematicky formalizují, přičemž se však pouze u této formalizace nezůstává a studenti jsou vedeni k samostatné práci, při které navrhují 22
30 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Výchozí stav a konstruktivismus v informatice vlastní jazyky a posléze i jejich analyzátory (Gray, 1992). To jim zpětně dává motivaci do dalšího studia nezbytné teorie, neboť vidí její využití v praxi. Intuitivní pojetí jazyka Intuitivní pojetí gramatiky Formalizace Intuitivní pojetí automatu Regulární, bezkontextové gramatiky (generativní gramatiky) Deterministické bezkontext. jazyky Teorie Obecné techniky syn. analýzy LL, LR jazyky Aplikace v praxi Motivace studenta Rekurzivní sestup Návrh Programovací jazyky (části) Analyzátory syntaktických strukt. Teoretické znalosti Dovednosti pro praxi Obrázek 10: Příklad aplikačního pojetí výuky V učebním textu Regulární a bezkontextové jazyky I. (Habiballa, 2003) lze najít mnoho příkladů intuitivních pojmů. Jde například o intuitivní výklad pojmu jazyka a gramatiky, který následuje: Intuitivní pojem gramatiky: Zobecněný pohled studenta na formální jazyky <Jednoduchá česká věta> ::= <Podmět><Přísudek><Předmět> <Podmět> ::= Jiří Jan <Přísudek> ::= má řídí <Předmět> ::= auto firmu 23
31 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Výchozí stav a konstruktivismus v informatice Toto schéma obsahuje pravidla, která vždy položky v lomených závorkách přepisují na posloupnosti (řetězce, uspořádaný výčet) buď stejných položek v hranatých závorkách nebo slov (symbolů). Jde vlastně o gramatiku (soubor pravidel), jak položky v hranatých závorkách (může říci proměnné) můžeme přepisovat postupně až na slova (symboly). Můžeme tedy tímto postupem dostat například takovéto jednoduché české věty: <Jednoduchá česká věta> -> <Podmět><Přísudek><Předmět> -> Jiří <Přísudek><Předmět> -> Jiří řídí <Předmět> -> Jiří řídí firmu. nebo <Jednoduchá česká věta> -> <Podmět><Přísudek><Předmět> -> Jan <Přísudek><Předmět> -> Jan má <Předmět> -> Jan má auto. Tedy postupným dosazování za proměnné podle pravidel dojdeme až na posloupnosti, které už neobsahují žádné proměnné. Intuitivní pojem jazyka: Budeme-li uvažovat o tom, co je to jazyk, zkusme vyjít z gramatiky z předchozího příkladu na jednoduchou českou větu. Jazyk L je pak množina: L = { Jiří má auto, Jiří má firmu, Jiří řídí auto, Jiří řídí firmu, Jan má auto, Jan má firmu, Jan řídí auto, Jan řídí firmu} Jazyk má tedy 8 prvků (správně utvořených vět). Uvědomte si, že tento příklad je velice jednoduchý. Jednoduchá česká věta se rozvinula na posloupnost podmětu, přísudku a předmětu. Každá z těchto tří proměnných se mohla podle gramatiky rozvinout do dvou symbolů (slov). To tedy dává 23 možných vět. Jazyk je tedy v tomto případě konečný, neboť má konečně mnoho prvků. Například věta Auto řídí Jan by podle této gramatiky nepatřila do jazyka, protože není utvořena podle pravidel (nedodržuje slovosled daný prvním pravidlem)! Intuitivní pojem jazyka: Intuitivní pojem automatu: Pro intuitivní výklad pojmu automat se pokusme sestrojit takový, který rozpoznává jazyk z předchozího příkladu. Jeho algoritmus lze popsat následujícím schématem: 24
32 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Výchozí stav a konstruktivismus v informatice Jan má podmět přísudek předmět Jiří řídí firmu auto NEPŘIJETÍ PŘIJETÍ Automat čte jednotlivá slova věty a přechází do stavů (plné čáry), pokud je přečteno příslušné slovo. Do automatu vstupuje stavem podmět a výpočet skončí ve stavu PŘIJETÍ, pokud je věta správně utvořena, v opačném případě skončí ve stavu NEPŘIJETÍ. Pozn. šipka vyjadřuje přechod do stavu pro jiný případ než je vyjmenovaný u plných čar. Obrázek 11: Automat rozpoznávající větu Pro studenty může být dalším velmi těžko pochopitelným pojmem nedeterminismus. Jelikož jsou zvyklí na algoritmické (tedy deterministické) myšlení, je důležité ukázat na jednoduchém příkladě konečného automatu, jaké má výhody a nevýhody při tvorbě automatů a že ho v případě konečných automatů lze intuitivně pochopitelnou metodou odstraňovat (viz následující ilustrativní příklad). Ilustrativní příklad výhod a nevýhod nedeterminismu: Mějme jazyk L={w {a,b} * w končí symbolem a}. Navrhněte konečný automat, který rozpoznává jazyk L. Pokusme se nejprve navrhnout deterministický automat: q 0 a q 1 b b a 25
33 A nyní nedeterministický automat: VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Vztah aplikačního pojetí k jiným disciplínám a q 0 q 1 a,b Vidíme, že nedeterministický automat je mnohem jednodušší. Ve stavu q0 načítá libovolný symbol a na konci slova uhodne, že má přejít do q1, jen pokud je poslední symbol a. V tom spočívá síla nedeterminismu, i když z algoritmického hlediska je tato situace nepřípustná. Naproti tomu deterministický automat je složitější. Ve stavu q0 se cyklí symbol,b, neboť slovo má končit na a. Pokud je nalezen symbol a, přejde se do koncového stavu q1. Jenže co když ještě nejde o poslední symbol? Pak je třeba se vrátit buď se vrátit do q0, pokud přišel symbol,b nebo setrvat v koncovém stavu, přišel-li symbol a. Pro odborníka zvyklého na formální definování pojmů teorie formálních jazyků se podobné triviální příklady mohou zdát zbytečné. Avšak student nezaměřený na teoretickou informatiku, pro kterého už samotný název předmětu teorie formálních jazyků musí znít odtažitě, ocení podobný přístup. Zvláště u těžko vysvětlitelných pojmů jako je právě nedeterminismus mohou takovéto analogie přinášet úspěch při pochopení, nehledě k tomu, že z pedagogického hlediska je prokázána účinnost návaznosti při učení (Řehák, 1980; Turek, 1990) (typickým příkladem je programované učení). Tedy je efektivní taková výuka, kde je ověřeno, že student pochopil jistou logickou část učiva, než se pokusí porozumět návazným tématům. Není cílem této práce zkoumat tento intuitivní přístup z hlediska této logické návaznosti (zaměřuje se na globální efektivitu výuky a strukturální efektivity podle učebních cílů). Přesto se výuka provedená v rámci experimentu v této práci přidržuje této zásady Vztah aplikačního pojetí k jiným disciplínám Pojem aplikačního pojetí výuky není v pedagogice, resp. Didaktice, novým přístupem. Ať už v přírodovědných předmětech (např. fyzice, chemii) (Mechlová, 1989), matematice nebo technických předmětech je snaha zavádět formy a metody výuky, které studentům přibližují lépe učivo a lépe je motivují do dalšího studia. Informatika jako relativně mladá vědní disciplína má již svůj rozvinutý vědecký systém, nicméně aby příprava nových informatiků mohla být efektivně realizována, je třeba aby se také promítal do systému didaktického. Jelikož pro zmíněné přírodní vědy existuje velmi dobře propracovaný systém, bude přínosné se i pro didaktický systém informatiky 26
34 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Zásady, metody, formy a prostředky výuky částečně poučit i z jiných přírodních věd. Například experiment jako vědecká i didaktická metoda ve fyzice velmi dobře vyhovuje aplikačnímu pojetí výuky TI. I když samozřejmě informatika nemůže převzít zcela metody poznávání fyziky, mnoho z nich může být pro její účely transformováno. Přestože informatika nezkoumá explicitně přírodu, lze najít analogie v tom, jak teorie ovlivňuje její praktické používání a to pak zase zpětně vede ke změně v teoretických přístupech. Například strukturované programování, které se aplikovalo v praxi, vedlo k poznání, že tento přístup (paradigma) má neuspokojivou vlastnost, že odděluje data od algoritmů. To pak podnítilo rozvoj nového paradigmatu, jenž zapouzdřuje data a algoritmy do objektů. Podobně ve fyzice docházelo k vývoji nových paradigmat, která pozorováním přírody dala nový pohled na fyzikální jevy. Matematika je svým formálním aparátem nejpodobnější teoretické informatice a dá se říct, že mnohdy je také za matematickou disciplínu považována. Teoretická informatika je ovšem specifická zejména používáním algoritmických a konstruktivních postupů (i v důkazech), a to v míře, která v matematice není. Navíc je zde silné ovlivnění praxí (algoritmizací nebo programováním). Přesto i didaktika matematiky může významně ovlivňovat informatiku. Například známá učebnice (Hejný, 1990) ukazuje použití problémových příkladů pro zpestření výuky obtížných témat. A konečně informatika je do značné míry také technickým předmětem. Nejvíce je to samozřejmě vidět v disciplínách, jako jsou počítačové sítě, architektura počítačů apod. V teoretické informatice se technická stránka sice promítá daleko méně, avšak metody a zásady (vyučovací i vědecké) mají svou použitelnost v TI (Turek, 1990). Programovací metody jsou pak efektivním prostředkem pro výuku informatiků, jak vyplývá z orientačního průzkumu Zásady, metody, formy a prostředky výuky Při aplikačním pojetí se využívají tři základní metody výuky: 1. Informačně-receptivní metoda je vedená při obvyklém způsobu výuky (definice-věta-důkaz). Měla by tvořit pouze nezbytnou část výuky, tj. uvést do problematiky a zavést nezbytné pojmy a věty; používat zpětnou vazbu (pochopení podstaty pojmů studenty). 27
35 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Zásady, metody, formy a prostředky výuky 2. Reproduktivní metoda bude využívaná ve zvýšené míře, snaha je aby si studenti osvojili co nejvíce smysl zavedených pojmů a uměli řešit příklady. Při této metodě budou také používaný didaktické pomůcky (aplikace). 3. Problémový výklad může být využit při prezentaci vybraných důkazů (to zvyšuje soulad s vědeckým systémem). 4. Heuristická metoda tato metoda je nejdůležitější pro aplikační pojetí. Studentům jsou dány vhodné úlohy např. na tvorbu gramatiky jednoduchého programovacího jazyka, z předchozích řešených příkladů mnohem menšího rozsahu, pak sami musí dospět k vlastnímu řešení, musí sami prověřit zda gramatika splňuje určitá kritéria. Důležité je akcentovat programátorské techniky při této metodě. Cílem je posílení těchto vlastností výuky: porozumění, specifický a nespecifický transfer. Použité formy výuky jsou: 1. Hromadné vyučování používá se především při zavádění pojmů a jejich vysvětlování 2. Skupinové vyučování řešení příkladů 3. Projektové vyučování zadávají se rozsáhlejší projekty skupině studentů, ve které si rozdělí své úkoly (viz 2.); souvisí s metodou 4. (Clark, 1999) Didaktické zásady (principy), které jsou prostřednictvím aplikačního pojetí zdůrazněny: 1. Princip spojení s praxí použití algoritmů při budoucí profesi a aplikovatelnost teoretických poznatků 2. Princip přiměřenosti z pilotního výzkumu vyplývá, že studenti jsou podle svého subjektivního názoru schopni lépe chápat příklady a algoritmy než pouze formalizovanou matematickou teorii 3. Princip motivace toto pojetí umožňuje studenty motivovat pro teoretické předměty individuální prácí studentů, praktickým programováním algoritmů a aplikací z reálného života 4. Princip vědeckosti používané didaktické pomůcky jsou často výsledkem nejen didaktického přístupu, ale také nových vědeckých poznatků 5. Princip názornosti používané didaktické pomůcky jsou vizuálními prostředky, které zvyšují názornost výukového procesu Používanými prostředky jsou aplikace vyvíjené jako seminární, bakalářské, diplomové práce autora, jeho spolupracovníků a studentů. Jde zejména o aplikace, které zpracovávají témata z oblasti teorie formálních jazyků (tvorba a konverze gramatik a automatů), z logiky (dokazování teorémů, formální úpravy). Tyto aplikace jsou použity nejen jako hotové produkty, ale také jako možnost samostatné práce studentů s jejich zdrojovými kódy. 28
36 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Problém, cíl výzkumu a východiskové hypotézy 3.4. Problém, cíl výzkumu a východiskové hypotézy Problém byl nastíněn v předcházejících kapitolách. Jde o navržení metodiky výuky na základě popsaného pojetí při využití programovacích metod a následné prověření její efektivity. Cílem by mělo být nejen prověření metodiky, ale i vytvořené koncepce výuky, které budou využity dalšími učiteli teoretických předmětů. Podcíle lze rozdělit podle zkoumané kategorie. Dílčí problémy lze předběžně formulovat: Cíl A: Vědomosti: 1. Jak ovlivňuje aplikační pojetí vědomosti studentů? 2. Jsou vědomosti studentů při aplikačním pojetí lépe pochopeny? Cíl B: Dovednosti: 1. Jsou dovednosti studentů při aplikačním pojetí lepší než při přístupu typu definicevěta-důkaz? 3.5. Výzkumná metoda, charakteristika výzkumu Hlavní výzkumnou metodou je pedagogický experiment (Turek, 1990; CFE, 2002). Tento experiment byl realizován na Ostravské univerzitě mezi studenty informatických oborů, a to jak odborných, tak učitelských. Byl aplikován na studenty kurzu Regulární a bezkontextové jazyky I. a II., a to tak, že byla vybrána experimentální(e) a kontrolní skupina(k) (Gall, 2003). Skupina E byla vyučována v souladu s aplikačním pojetím a kontrolní skupina byla vyučována klasickým přístupem definice-věta-důkaz. Hypotézy výzkumu jsou přesně specifikovány podle dílčích cílů a problémů (viz kapitola u výsledcích experimentu). Předvýzkum na jehož základě byl určen směr výzkumu byl realizován v akademickém roce 2001/2002. Jeho výsledky vedly právě k formulaci aplikačního pojetí. Použité prostředky a výukové metody jsou popsány blíže v následující kapitole, jež se zaměřuje na využití programovacích metod. Pro podporu samostatné práce byla také studentům k dispozici literatura, především vytvořené učební texty (Habiballa, 2003), ale také kvalitní učebnice (Chytil, 1984; Knuth, 1975; Češka, 1992). Každá vyučovací jednotka byla předem tematicky a metodicky rozpracována i spolu s využitím didaktických prostředků. 29
37 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Předvýzkum 3.6. Předvýzkum Na Ostravské univerzitě se disciplíny teoretické informatiky vyučují ve třech formách studia prezenčním, distančním a rozšiřujícím. Všechny tyto typy studia mají svá specifika. U prezenčního studia v současné době jde většinou o studenty ve věku okolo dvaceti let se zájmem spíše o informační technologie. Prezenčně se studuje magisterský neučitelský obor Informační systémy, bakalářský obor Aplikovaná informatika, Učitelství pro ZŠ v přípustných kombinacích matematika výpočetní technika a fyzika výpočetní technika a Učitelství pro střední školy v kombinacích matematika informatika a fyzika informatika. Studenti distančního bakalářského studia Aplikovaná informatika jsou pak věkově značně diferencováni, od věku srovnatelného s prezenčním studiem až po studenty věku okolo čtyřiceti let. Toto studium je realizováno především formou komunikace em mezi studentem a vyučujícím předmětu v prezenčním studiu. Z toho vyplývá značná náročnost této formy studia a následně nízká úspěšnost frekventantů. Rozšiřující studium je určeno primárně stávajícím učitelům ZŠ a SŠ, kteří si chtějí rozšířit aprobaci o informatiku. Toto studium je obsahově méně náročné než distanční a je realizováno každý pátek v odpoledních hodinách během semestru. V této formě je naopak vysoká úspěšnost studentů. Jejich věkové rozvrstvení je pestré, od začínajících učitelů až po učitele před důchodovým věkem. Teoretická informatika je velmi důležitá pro správné informatické myšlení absolventů VŠ studia. Jako každá teoretická disciplína má mezi studenty své nadšené příznivce, ale většina studentů k ní přistupuje spíše jako k nutnosti. Přesto jsem lze formulovat hypotézu, že správný výklad a obsah jednotlivých předmětů dokáže jejich postoj částečně změnit. Jelikož studenti jsou především lidé, je správné se ptát, jak výsledky jejich učení ovlivňuje motivace a logické vztahy při výkladu učiva. Výše uvedeného cíle samozřejmě nelze dosáhnout bez citlivého didaktického přístupu a akcentu na motivační prvek vyučovacího procesu. Motivace spolu s dobře propracovanou metodikou výuky teoretických základů informatiky je často podceňovanou složkou formování odborného profilu informatika. Aby bylo možné se dozvědět více o přístupu studentů k teoretickým disciplínám, byl realizován průzkum mezi studenty těchto kurzů spadajících do teoretické informatiky: - prezenční kurz Regulární a bezkontextové jazyky I. (základy teorie formálních jazyků), - prezenční kurz Vyčíslitelnost a složitost I. (základy teorie algoritmů), - rozšiřující kurz Základy teoretické informatiky. 30
38 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Předvýzkum Průzkum byl realizován formou dotazníku, jenž sledoval kromě základních informací o osobě následující faktory ovlivňující kvalitu studijních výsledků studenta: - typ vystudované střední školy, - motivaci pro studium informatiky, - preference jednotlivých kategorií disciplín (teoretická inf., inf. technologie, programování a matematika), - vliv učitele a jeho vlastností na učení a preferované stránky vyučujícího, - jak se student připravuje (na základě logických souvislostí nebo mechanicky), - zda student preferuje spíše teoretické nebo praktické znalosti v předmětech. Speciální část pak vyhodnocuje (pouze u kurzu Regulární a bezkontextové jazyky I.) význam logických vztahů mezi jazyky, gramatikami a automaty a především preferovanou skladbu látky. Dotazník celkem odevzdalo 41 studentů, z toho 15 studentů kurzu Regulární a bezkontextové jazyky I. Z nich bylo 34 můžů a 7 žen. Průměrný věk studentů je 21 let. 31
39 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Předvýzkum Typy středních škol SPŠ 37% gymnázium 41% obch. akademie 22% Motivace pro výběr oboru peníze 5% ostatní 15% atraktivita 22% zájem 58% Obrázek 12: Graf vystudovaných SŠ a motivace pro obor Podíl studentů, kteří již studovali VŠ před nástupem na OU je 41%. Příznivým faktorem v tomto vzorku je, že 78% studentů pochází z gymnázia nebo střední průmyslové školy (většinou elektrotechnického zaměření), kde je výuka algoritmizace, která je základem informatického vzdělání, velmi kvalitní. Stejně uspokojivý je fakt, že většina studentů si informatiku zvolila zejména na základě zájmu o obor a pouze 5% přiznává, že si tento obor vybrali z finančních důvodů. Atraktivita oboru bude ovšem do budoucna bohužel vzrůstajícím motivem. Motivaci studentů lze považovat za klíčový faktor při jejich výuce, neboť zvláště v teoretických disciplínách je nutné studenty nejprve nadchnout pro studium dané disciplíny, jinak ji budou považovat za zbytečnou a přejdou pouze 32
40 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Předvýzkum k memorování logicky spjatých pojmů. Následující dva grafy ukazují, jak studenti hodnotí motivaci pro aktivní přístup k předmětu, a zároveň, za jak důležité považují pochopení logických vztahů uvnitř předmětu. Snaha a úspěch při chápání logických vztahů ne 7% ano 37% ano, obtížně 56% Význam motivace pro studium ne 15% nevím 5% ano 80% Obrázek 13: Význam motivace a chápaní logických vztahů Vyplývá z něj opět pozitivní fakt, že studenti se ve většině snaží o logické chápání pojmů a vztahů, nicméně se jim to daří pouze obtížně. Zároveň považují motivaci za důležitou, což by mělo podporovat snahu o zlepšení způsobu výuky. Většina studentů to ve svých obsáhlejších odpovědích velice oceňovala, pokud učitel klade důraz na souvislosti a dokáže je vysvětlit. Nejvíce jim vadí striktní formalizace typu definice-věta-důkaz, která jim bez vhledu do problematiky, navozuje situaci, kdy sklouznou k mechanickému učení. Orientační průzkum také prokázal (alespoň v tomto omezeném vzorku), že studenti preferují především informační technologie (IT) a programování (P). Ze skóre 33
41 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Předvýzkum je ale patrné že ani teoretická informatika (TI), resp. matematika (M) nedopadly v průměru tak špatně a zájem o ně je zhruba poloviční, resp. čtvrtinový. Ze speciální části dotazníku pak vyplynulo, že studenti vcelku nemají v teoretickém předmětu problém pochopit používané algoritmy (např. v teorii formálních jazyků) a poměrně dobře získávají nadhled nad učivem. Na druhou stranu hůře chápou formální definice a nejhůře dopadají důkazy vět a motivace pro další studium. Zároveň pak frekventanti kurzu vyjadřovali přání o zařazování většího množství praktických příkladů. Přepočítané skóre pochopení jednotlivých položek učiva 3,5 3 2,5 2 1,5 1 0,5 0 nadhled smysl definic algoritmy důkazy motivace Přepočítané skóre hodnocení vysvětlení jednotlivých položek učiva pedagogem 3,5 3 2,5 2 1,5 1 0,5 0 vztahy intuit.náhled algoritmy formalizace důkazy Obrázek 14: Položky učiva v kurzu Regulární a bezkontextové jazyky 34
42 VÝZKUM VYUŽITÍ APLIKAČNÍHO POJETÍ VE VÝUCE Způsob ověření hypotéz Z provedeného průzkumu vyplývá, že studenti informatiky mají převážně zdravé vnitřní motivy pro studium informatiky. Pod pojmem zdravé se myslí, že mají zájem o studium a kurzy, byť se většina přihlásila spíše k preferenci kurzů z oblasti informační technologie. Nicméně je povzbudivé, že programování zůstává v těsném závěsu za touto oblastí vzhledem k tomu, že algoritmizace tvoří jádro myšlení informatika. Stejně tak je to vidět z úspěšnosti v chápání jednotlivých částí učiva zde jsou algoritmy opět velmi úspěšně přijímány. Zároveň se potvrzuje, že důkazy vět jsou pro studenta spíše těžko pochopitelné a nepřispívají k jeho motivaci. Bylo by tedy dobré obětovat část výuky na úkor důkazů pro praktické aplikace. Např. absolvent studia spíše než vědět, jak dokázat, že třída regulárních jazyků je totožná s třídou jazyků rozpoznatelných konečnými automaty, potřebuje znát využití regulárních jazyků v praxi a jejich analýzu. A nakonec lze usoudit, že studenti považují motivaci pro studium za důležitý prvek procesu učení a také považují za důležité, aby měli možnost se učit logickým vztahům a nikoliv pouze faktům. Většině z nich to však jde obtížně a proto by bylo na místě pokusit se jim to maximálně usnadnit Způsob ověření hypotéz Pro ověření hypotéz byly zpracovány didaktické testy, které budou zkoumat vědomosti, dovednosti a návyky studentů. Výsledky byly zpracovány pomocí statistických metod testování hypotéz a analýzy rozptylu (Chráska, 1998; Kubáčková, 1990). Na základě této kvantitativní analýzy je vytvořeno kvalitativní hodnocení cílů. Didaktická analýza učiva (Kurelová, 1999) v předmětech, které jsou předmětem výzkumu, byla základem výuky v obou skupinách (kontrolní i experimentální), její detailní obsah lze nalézt v příloze. Pro exaktní ověření znalostí a dovedností studentů byly využity didaktické testy.. Testy jsou vypracovány podle metodické literatury (Chráska, 1982; 1998) a podle klasifikace dle těchto publikací patří mezi testy nestandardizované, kognitivní, ověřující a jde o testy výsledků výuky. Testy jsou zpracovány celkem tři a to na každý tematický celek a jsou stejné pro obě skupiny (K,E). V testu jsou otázky rovnoměrně rozloženy podle taxonomie vzdělávacích cílů a obsahu učiva, tj. nejen na znalosti studenta, ale hlavně na jeho porozumění učivu. Měla by se jím testovat nejen znalost studenta, ale také porozumění a schopnost aplikace. 35
43 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Kapitola 4 VYUŽITÍ PROGRAMOVACÍCH METOD VE VÝUCE Programátorské didaktické pomůcky v realizaci experimentu 4. Implementace programovacích metod v aplikačním pojetí Jak vyplynulo z předvýzkumu realizovaného na OU (viz kapitola 3), studenti sice nepreferují disciplíny teoretické informatiky, ale poměrně vysoko si cení algoritmizace a programování. Proto je snaha využít aplikace a jejich algoritmický základ pro výuku jistě zajímavá vzhledem k motivaci studentů. Jak si ukážeme, tyto aplikace podporují i další aspekty přispívající ke kvalitě výuky. Nejde jen o jejich využití jako interaktivních pomůcek pro pochopení teoretických předmětů, ale i o využití algoritmických dovedností, které fungují obousměrně. Přinášejí s sebou obousměrný transfer studenti se naučí řešit teoretické postupy algoritmicky pomocí počítače a zároveň tak lépe pochopí teoretickou stránku problematiky. Vždyť podle psychologických výzkumů význam právě takovýchto pomůcek je neoddiskutovatelný (Turek, 1990) na základě psychologických studií Fredmanna). Průměrný člověk si zapamatuje přibližně: - 10% z toho, co přečte; - 20% z toho, co slyší; - 30% z toho, co vidí v podobě obrazu; - 50% z toho, co vidí a současně slyší; - 70% z toho, co vidí, slyší a aktivně vykonává; - 90% z toho, k čemu dospěl sám na základě vlastních zkušeností vykonáváním činnosti. A právě hypotézou výzkumu zmiňovaného v kapitole 3 je tvrzení, že pro informatiky je touto činností analýza problému a jeho algoritmizace a implementace. Pokud je student nejen nucen učit se obrovské množství definic, vět a důkazů, ale dokáže je aplikovat na konkrétní situace, budou jeho dovednosti hlubšího a trvalejšího charakteru. 36
44 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Druhou důležitou stránkou jsou programovací metody využité v experimentu. Budou v této kapitole popsány a jako nejlepší ilustrace výsledků budou citovány nejlepší studentské práce vytvořené během experimentu. Některé z nich jsou skutečně mistrovskou ukázkou, jak aplikační pojetí dokáže aby se studenti naučili a aplikovat složité otázky teorie formálních jazyků a automatů Charakteristika programátorské didaktické pomůcky Programátorské didaktické pomůcky jsou prostředkem, jenž směřuje k vysoké efektivitě výuky (Devedzic, 1998). V následujících kapitolách se pokusíme některé z nich rozebrat, přičemž se zaměříme především na aplikaci GERDS, která byla samostatně vyvinuta autorem a nejlépe splňuje všechny atributy, formulované pro takovou pomůcku. Pak rozebereme další aplikace, které sice nenaplňují tak dobře všechny aspekty, ale jsou také pro výuku velmi efektivní a přínosné. Základní požadavky kladené na programátorskou didaktickou pomůcku. 1. Jde o aplikaci realizovanou prostřednictvím (osobního) počítače (příp. i na jiném prostředku, jenž umožňuje jeho programování) 2. Tato aplikace řeší vybraný teoretický problém a umožňuje studentům interaktivně řešit problémové úkoly tedy studenti mohou parametry programu i vstupu měnit podle vlastní vůle nebo pokynů učitele. 3. Aplikace má alespoň základní dokumentaci, která studentům umožní samostatnou práci a zároveň je vhodné, aby obsahovala ilustrativní příklady. 4. Procedury, které vybraný problém při zvolené konfiguraci řeší, je možné rozebrat na základě jejich algoritmické implementace. Zároveň lze do těchto procedur zasahovat a měnit chování programu, nebo použít částečné úseky kódu pro řešení příbuzných problémů. Jak již bylo naznačeno, je splnění všech těchto podmínek obtížné. Splňují je v tomto textu beze zbytku pouze některé aplikace. Pokud jde o body 1 3 jsou podmínky jasné, ovšem naplnění bodu 4 naráží na mnoho komplikací: - autorská práva k některým i akademickým aplikacím sice umožňují jejich použití, avšak omezují nebo zcela vylučují práci se zdrojovými kódy aplikace; 37
45 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky - implementace je realizována v málo přístupném prostředku pro studenty (například jazyk C++ je sice z profesionálního hlediska účinný, ale jeho didaktické použití není příliš vhodné); - aplikace používají velké množství již hotových knihoven nebo produktů, které zamezují přístup k jejich algoritmickým řešením apod. Vzhledem k tomu, že nelze tyto problémy pominout ani nelze zavrhnout aplikaci, která bod 4 nenaplňuje, postačuje splnění v přiměřených mezích. Například aplikace RABJ tento bod nebude splňovat, ale přesto jsou didaktický význam a řešení tak zdařilé, že lze jeho použití ve výuce teorie formálních jazyků velmi doporučit a nahradit teoretickým výkladem algoritmů, který tento prostředek implementuje. Tyto obtíže uvidíte i u jiných aplikací, které tato práce přináší, přesto je lze považovat za programátorské didaktické pomůcky. I když je experiment navržený v kapitole 3 zaměřen primárně na teorii formálních jazyků a automatů, za nejlépe charakterizující lze považovat aplikaci vytvořenou autorem pro oblast automatizované dedukce (konkrétně zobecněné rezoluční metody) (Bachmair, 1997) a logiky obecně. V předcházejících kapitolách jsme se zmiňovali o počítačové aplikaci didaktickém prostředku, který se nyní pokusíme detailně popsat. Je realizována na 32-bitové platformě Windows (95,98,NT atd.). Na přiloženém CD ji můžete nalézt v adresáři GERDS. Obrázek 15: Uživatelské rozhraní aplikace GERDS 38
46 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Autor v rámci diplomové práce využil teoretických východisek automatizace zobecněného pravidla rezoluce a navrhl a implementoval počítačovou aplikaci (Generalized Resolution Deductive System GERDS), která je použitelná jako didaktický prostředek pro demonstraci nejen nových směrů ve výzkumu automatizované dedukce, ale také pro pochopení klasických přístupů inferenčních postupů. Uživatelské rozhraní aplikace je velmi jednoduché. Jde o MDI (Multiple document interface) aplikaci, která dává možnost pracovat s více otevřenými příklady najednou. Každé nezávislé okno příkladu má dvě části Editor pro vstupní formule (axiomy) a Výstup pro sledování procesu inference a jejích výsledků. Na obrázku můžete vidět příklad otevřeného okna. Editor dovoluje vkládat výchozí formule (axiomy) a cíle (dotazy), jejichž platnost chceme prověřit. Dotaz je uvozen řetězcem?- a může se vyskytovat vícekrát, systém pak vyhodnotí všechny dotazy, které se v Editoru vyskytují. Každý dotaz se dokazuje (odvozuje) pouze s pomocí formulí, které jsou uvedeny před ním v okně Editoru. Podívejme se na následující příklad. a(x)ýg(x)ôb(x). b(x)ýg(x)ôc(x). a(a).?-g(a). g(a).?-c(y). V tomto příkladu máme tři výchozí formule uvedené před první dotazem. Jak uvidíte, pokud si zkusíte jej vyhodnotit, tento první dotaz nebude vyhodnocen jako platný, protože výchozí tři formule nedávají dostatečné znalosti pro jeho odvození. Následuje čtvrtý axiom a za ním další dotaz, který by již v tomto případě byl dokázán jako platný, neboť poslední axiom umožní jeho odvození. Okno Výstupu může obsahovat seznam výchozích formulí a cílů, sekvenci rezolvent, nezjednodušených forem rezolvent a statistiku inference. Položky sekvence formulí jsou v následující podobě na obrázku. 39
47 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Číslo rezolventy Číslo první premisy (F = axiom) R0 [F4&F1] : [b(y)ýg(y)]. Číslo druhé premisy Rezolventa Obrázek 16: Struktura sekvence rezolvent Podívejme se na příklad takovéto sekvence. Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F1 : [b(x)ýg(x)ôc(x)]. F2 : a(a). F3 ( dotaz) : g(a). Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F1 : [b(x)ýg(x)ôc(x)]. F2 : a(a). F3 : g(a). F4 ( dotaz) : c(y). R0 [F4&F1] : [b(y)ýg(y)]. R1 [R0&F3] : b(a). R2 [R1&F0] : [a(a)ýg(a)]. R3 [R2&F3] : a(a). [R3&F2] : YES. Y = a. R4 [R2&F2] : g(a). [R4&F3] : YES. Y = a. Rezolventa, která obsahuje místo formule řetězec YES, označuje rezolventu false, tedy popření množiny axiomů a znegovaného cíle. Pod touto rezolventou se vyskytuje výraz Y = a, což je přiřazení konstanty proměnné Y, které způsobilo nalezení důkazu. Pro práci s příklady je tato možnost nezbytná, aby se dalo hovořil o prakticky použitelném odvozovacím prostředku. Podívejme se nyní na didaktických příkladech na některé vybrané strategie, jejichž vysvětlení a praktická ukázka s pomocí programu GERDS zlepšuje pochopení 40
48 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky teoretických východisek automatizované dedukce. Použijeme k tomu příklady vygenerované s pomocí aplikace GERDS, kterou mohou využívat sami studenti. Velmi dobrým zdrojem informací o strategiích je kniha (Mařík, 1993). Prohledávání stavového prostoru lze realizovat různými přístupu a tento přístup je pak univerzální pro různé typy úloh, což samozřejmě platí i o hledání rezolučního důkazu, generováním rezolvent. Strategie prohledávání do šířky spočívá v generování všech rezolvent, které lze vytvořit z množiny vstupních formulí (axiomů) a negovaného závěru (nultý stupeň) a ty se pak nazývají rezolventy prvního stupně. Potom se pokračuje v generování všech možných rezolvent druhého stupně, které vznikají z libovolné rezolventy nižšího stupně a alespoň jedné rezolventy bezprostředně předchozího tedy prvního stupně. Pokračuje v generování rezolvent dalších stupňů podle stejného pravidla až je nalezeno rezoluční popření nebo do nekonečna či určitého limitu, pokud takové popření neexistuje. Podívejme se na následující příklad důkazu: Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F1 : [b(x)ýg(x)ôc(x)]. F2 : a(a). F3 : g(a). F4 ( dotaz) : c(y). R0 [F4&F1] : [b(y)ýg(y)]. R1 [F3&F1] : [b(a)ôc(a)]. R2 [F3&F0] : [a(a)ôb(a)]. R3 [F2&F0] : [g(a)ôb(a)]. R4[F1&F0]: [[g(x)ôc(x)]ü [a(x)ýg(x)]]. R5 [R4&F4] : [ g(x)ü [a(x)ýg(x)]]. R6 [R4&F3] : [c(a)ü a(a)]. R7 [R3&F3] : b(a). F0 F1 F2 F3 F4 R8 [R3&R1] : [ g(a)üc(a)]. R9 [R1&F4] : b(a). R10 [R1&R7] : c(a). R11 [R0&R7] : g(a). R4 R3 R2 R1 R0 [R11&F3] : YES. Y = a. [R10&F4] : YES. R9 R8 R7 R6 R5 Y = a. [R9&R7] : YES. Y = a. R12 [R9&R2] : a(a). Yes Yes R12 R11 R10 [R7&R9] : YES. Y = a. Yes Yes Yes [R12&F2] : YES. Y = a. Obrázek 17: Důkaz pomocí strategie prohledávání do šířky 41
49 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Obrázek a důkazová sekvence nám ukazuje, jak postupně probíhal důkaz závěru c(y). Vidíme, že postupným generováním stupňů rezolvent, jsme nejprve odvodili antecedent implikace F1 jako rezolventu R0. Spolu s ní vznikly další rezolventy R1 R4. V dalším stupni se vygenerovaly další rezolventy a již ve třetím stupni jsme našli dvě možné cesty k popření, z nichž právě první vznikla z tohoto antecedentu (jde zřejmě o nejjasnější cestu, kterou bychom použili při rezolučním popření při dokazování bez použití automatizace). I na další úrovni ještě bylo dosaženo popření třemi dalšími cestami. Vidíme, že tato strategie vedla k cíli (hned několika cestami), avšak vzniklo při ní mnoho rezolvent. Tato metoda je sice úplná (tedy pokud popření existuje, pak bude nalezeno), ale za cenu zpomalení důkazu, generováním značného množství rezolvent. Tomu se naopak vyhneme při použití další strategie. Strategie prohledávání do hloubky generuje rezolventu ze dvou premis ze vstupní množiny a pak opakovaně aplikuje rezoluci na výslednou rezolventu a další rezolventu nebo axiom rekurzivně, až nelze žádnou rezolventu již dále vygenerovat. Poté se algoritmus vrátí na předchozí úroveň (provádí backtracking) a pokračuje s další možnou rezolventou. Tento typ strategie není úplný, neboť v případě nekonečné sekvence generovaných rezolvent uvízne v nekonečné smyčce a nemusí tak najít řešení, které by se vyskytlo v jiné větvi. Tato strategie vede často rychleji k cíli než předchozí ovšem právě s omezením, které již bylo zmíněno. Podívejme se na stejný příklad řešený s pomocí tohoto prohledávání. Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F1 : [b(x)ýg(x)ôc(x)]. F2 : a(a). F3 : g(a). F4 ( dotaz) : c(y). R0 [F4&F1] : [b(y)ýg(y)]. R1 [R0&F3] : b(a). R2 [R1&F0] : [a(a)ýg(a)]. R3 [R2&F3] : a(a). F2 F0 F3 R3 F1 F4 R0 R1 R2 R4 [R3&F2] : YES. Y = a. R4 [R2&F2] : g(a). [R4&F3] : YES. Y = a. Yes Yes Obrázek 18: Důkaz pomocí strategie prohledávání do hloubky Vidíme, že důkaz s pomocí této strategie je mnohem kratší a stačí k němu vygenerování pouze 5 rezolvent. 42
50 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Mezi další pomocné strategie, které zefektivňují inferenci patří také například lineární strategie spočívající v použití poslední generované klauzule při každé další rezoluci (vytváří se tak vlastně neporušený řetěz při generování). Jde o základní techniku používanou při logickém programování. V aplikaci GERDS se používají dva typy lineární strategie lineární, která vychází při první rezoluci pouze z dotazu a modifikovaná lineární strategie, která není omezena pouze na dotaz. Strategie podpůrné množiny je jednoduchá a efektivní, ale bohužel také neúplná strategie. Vznikla na základě faktu, že v každé množině formulí existuje konsistentní podmnožina. Je pochopitelné, že rezolventy z této podmnožiny nemohou vést k rezolučnímu popření. Proto tato strategie umožní aplikovat rezoluci na takových formulích, které jsou buď dotazem nebo z dotazu vznikly. Podívejme se opět na příklad: R0 [F4&F1] : [b(y)ýg(y)]. R1 [R0&F3] : b(a). R2 [R0&F0] : [ g(y)ü [a(y)ýg(y)]]. R3 [R2&F3] : a(a). R4 [R2&F2] : g(a). F2 [R4&F3] : YES. Y = a. [R3&F2] : YES. Y = a. F0 F3 F1 F4 R0 R2 R1 R3 R4 Yes Yes Obrázek 19: Strategie podpůrné množiny Strategie podpůrné množiny umožňuje usměrňovat proces inference, aby byl mnohem efektivnější. Filtrační strategie je další metodou redukce důkazu. Dvě premisy A,B mohou být použity do rezoluce tehdy a jen tehdy, pokud platí tyto dvě podmínky: 1. A a B jsou z množiny výchozích formulí 2. A je potomkem B nebo B je potomkem A (potomek je rezolventa vygenerovaná z rodičovské) To zda je formule potomkem, lze zjistit ze stromu rezolučního popření. Tato strategie je úplná, i když není tak efektivní jako předchozí. Podívejme se na příklad použití: 43
51 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Výchozí formule (axiomy) : F0 : aôbýg. F1 : býgôc. F2 ( dotaz) : [aôc]. R0 [F2&F2] : c. R1 [F2&F1] : [býg]. R2 [F2&F0] : býg. R3 [F1&F0] : [gôc]ü a. R4 [R3&F2] : gü a. R5 [R3&F0] : cü a. R6 [R2&F1] : gôc. R7 [R2&R6] : c. [R7&F2] : YES. Obrázek 20: Filtrační strategie Poslední strategií, která je ovšem nejúčinnější a byla vyvinuta speciálně pro tuto aplikaci, je detekce redundantních rezolvent. Podívejme se nyní na příklady jejího využití: Uvažujme formuli [a ü b] ý [ b ü c] dokažme, že [a ü c] je z ní vyplývající formulí. Provedeme rezoluci na negaci implikace výchozí a vyplývající formule: [[aüb]ý[ büc]ôaüc] [[ çüb]ý[ büc]ô çüb]ü [[ äüb]ý[ büc]ô äüb] ç Bylo použito zjednodušujících pravidel a dostali jsme tím logickou hodnotu false, což znamená že jsme dokázali, že jde skutečně o vyplývající formuli. Podívejme se ještě na jeden příklad: Formule aýb je konsekventní formulí [aób]ýa. [[aób]ýaôaýb] F0 F1 F2 R3 R2 R1 R7 Yes [ [[ äób]ý äô äýb]ü [[ çób]ý çô çýb]]ý[ [[ çób]ý çô çýb]ü [[ äób]ý äô äýb]] ç Důležitým aspektem detekce konsekventních formulí je její jednoduchá implementace v systému GERDS, kde je již vytvořena procedura pro zobecněnou rezoluci. Aplikace umí s formulemi zacházet jako se syntaktickými stromy a proto je jednoduché vytvořit virtuální strom negace implikace z kandidátské a předchozí rezolventy a provést rezoluci, na jejímž základě po několika krocích zjistíme, zda dospějeme k false tedy důkazu, že implikace je platná. R0 R6 R5 R4 44
52 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Porovnejme důkazy s použitím standardních strategií s detekcí konsekventních rezolvent. F0 : aóbýg. F1 : býgóc. F2 ( dotaz) : [aóc]. R0 [F2&F1] : [ aü [býg]]ý[aübýg]. R1 [R0&F2] : [býg]üc. R2 [R1&F0] : gücü a. R3 [R2&F2] : gü a. R4 [R3&F2] : güc. R5 [R4&F0] : cü a. R6 [R5&F2] : a. R7 [R6&F2] : c. R8 [R7&F1] : býg. R9 [R8&F1] : góc. R10 [R9&F2] : [güa]ý[ gü a]. R11 [R10&F1] : aü[bóc]. R12 [R11&R6] : bóc. R13 [R12&F2] : [büa]ý[ bü a]. R14 [R13&F0] : aü[aóg]. R15 [R14&F2] : gü c. R16 [R15&F1] : c. R17 [R16&F2] : a. [R17&R6] : YES. Čas : 0.22 s. Žádná ze standardních strategií nebyla schopna omezit velikost důkazu. Student si sám může vyzkoušet, že bez kontroly konsekventních rezolvent jsou důkazy naprosto nekontrolované a vytvářejí v tomto případě během několika sekund více než 300 rezolvent. F0 : aý býcýdüaý bý cýdü aý býcýdüaý bý cýdüaý býcýd. F1 ( dotaz) : [ aý büaý b]. R0 [F1&F1] : b. R1 [F1&F0] : bü býcýdü bý cýdü bý cýdü býcýd. R2 [F0&F1] : býcýdüb. R3 [F0&F0] : býcýdü býcýdü bý cýdü bý cýdü býcýd. [R3&F1] : YES. Čas: 0.05 s. (bez restrikce) R0 [F1&F1] : b. R1 [F0&F0] : býcýdü býcýdü bý cýdü bý cýdü býcýd. [R1&F1] : YES. (s detekcí konsekventních formulí) Aby učitel, který využije možnosti které GERDS nabízí z didaktického hlediska, měl k dispozici již vyřešené příklady, jsou již připravené ukázky, jak lze demonstrovat studentům metody a strategie dokazování teorémů. Samozřejmě že nejdůležitější je, aby učitel sám vedl studenty k interaktivní práci se systémem. Nejlépe pochopené jsou totiž znalosti a dovednosti, které si student sám vyzkouší. V prvním příkladě se pokoušíme dokázat naprosto triviální tvrzení o současné platnosti F0 a F1. 45
53 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Výchozí formule (axiomy) : F0 : a(x). F2 ( dotaz) : [a(x)ýb(x)]. R0 [F2&F1] : a(x). [R0&F0] : YES. R1 [F2&F0] : b(x). [R1&F1] : YES. F1 : b(x). V dalším příkladu se pokusíme dokázat tvrzení, které zjevně nemůže vyplývat z F0 a F1, neboť neobsahuje hledaný atom c. Nesmíme však zapomenout, že pokud je množina výchozích tvrzení nekonzistentní, lze z ní odvodit cokoliv! Tento příklad jasně studentům připomíná základní pravidlo dedukce tedy že sporná teorie implikuje všechny formule. Ukáže jim, že musí být opatrní při formulaci výchozích tvrzení a dbát na jejich vzájemnou konzistenci. Výchozí formule (axiomy) : F0 : aý b. F1 : aýb. F2 ( dotaz) : c. Nejprve se pokusíme využít lineární strategie, která nevede k popření, neboť začíná od dotazu, který v tomto případě nemůže rezolvovat s žádným axiomem. Abychom mohli dospět k popření pomocí lineární strategie, musíme použít výše zmíněnou modifikovanou strategii. Nejpřímější cestou je však použití strategií do hloubky. R0 [F1&F1] : b. [F1&F0] : YES. [aý b]ü[ aýb].?- aý b. Řešení:?- [ aý b]. [F1&F1] : [ äý b]ü [ çý b]. [F1&F0] : [ äý b]ü äý bü çýb. [F1&F0] : [ aý ä]üaý çü aý ä. Na detailním zobrazení nezjednodušených formulí můžeme vidět, že nelze pro tuto situaci vytvořit smysluplnou rezolventu. Výchozí formule (axiomy) : 46
54 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky F0 : aý býcýdü aýbý cýd. F1 ( query) : [ aý b]. R0 [F1&F0] : bü býcýd. R1 [F1&F0] : aü aý cýd. R2 [F0&F0] : bý cýdü býcýd. R3 [F0&F0] : aý cýdüaýcýd. R4 [F0&F0] : aýbýdüaý býd. R5 [F0&F0] : aý býcü aýbý c. Další příklad opět ukazuje, jak bude vypadat generování rezolvent, pokud nelze najít popření tedy z axiomů formule nevyplývá. Výchozí formule (axiomy) : F0 : aôbýg. F1 : býgôc. F2 : býgôa. F3 : côbýg. F4 ( dotaz) : [aóc]. R0 [F4&F3] : aübýg. R1 [R0&F4] : býgü c. R2 [R1&F2] : cü[gôa]. R3 [R2&F1] : [gôa]ü [býg]. R4 [R3&F4] : gü [býg]ü c. R5 [R4&F3] : bü c. R6 [R5&F4] : büa. R7 [R6&F3] : aü c. R8 [R7&F4] : c. R9 [R8&F4] : a. R10 [R9&F0] : býg. R11 [R10&F1] : gôc. R12 [R11&F4] : gü a. R13 [R12&F0] : a. R14 [R13&F4] : c. [R14&R8] : YES. Čas : 0.48 s. Výchozí formule (axiomy) : F0 : aóbýg. F1 : býgóc. F2 ( dotaz) : [aóc]. R0 [F2&F1] : [ aü [býg]]ý[aübýg]. R1 [R0&F2] : [býg]üc. R2 [R1&F0] : gücü a. R3 [R2&F2] : gü a. R4 [R3&F2] : güc. R5 [R4&F0] : cü a. R6 [R5&F2] : a. R7 [R6&F2] : c. R8 [R7&F1] : býg. R9 [R8&F1] : góc. R10 [R9&F2] : [güa]ý[ gü a]. R11 [R10&F1] : aü[bóc]. R12 [R11&F1] : aü cü g. R13 [R12&F2] : cü g. R14 [R13&F2] : güa. R15 [R14&F1] : aü c. R16 [R15&F2] : c. R17 [R16&F2] : a. [R17&R6] : YES. Čas: 0.54 s. 47
55 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Příklad právě uvedený ukazuje silně neklauzulární rezoluci. Jak je uvedeno, důkaz formule aóc může být proveden, jak implikativními axiomy, tak ekvivalenčními axiomy. Pokud bychom použili klasický důkaz s pomocí klauzulárního systému, vzniklo by nám obrovské množství formulí při převodu do klauzulární formy, které by značně zpomalily proces dokazování. F0 : [a(x)ýg(x)ôb(x)]. F1 : a(a). F2 : g(c). F3 ( dotaz) : b(a). R0 [F3&F0] : [a(a)ýg(a)]. R1 [R0&F1] : g(a). Čas : 0.06 s. b(a) v tomto příkladě nelze dokázat, neboť g platí pouze pro konstantu c. Na tomto příkladě si studenti mohou uvědomit, jak důležitá je unifikace pro nevýrokové příklady. Uvidí, že je nejprve nutné substituovat do proměnných termy, které jsou stejné, aby mohla proběhnout rezoluce. Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F2 : g(c). F4 ( dotaz) : b(a). R0 [F4&F0] : [a(a)ýg(a)]. R2 [F2&F0] : [a(c)ôb(c)]. R4 [R3&F4] : g(a). R6 [R1&F4] : a(a). Čas : 0.27 s. F1 : a(a). F3 : g(a). R1 [F3&F0] : [a(a)ôb(a)]. R3 [F1&F0] : [g(a)ôb(a)]. R5 [R3&F3] : b(a). [R6&F1] : YES. V předchozím příkladě jsou zajímavé rezolventy s implikací, které ukazují názornost důkazu s pomocí zobecněné rezoluce. Není nutné je převádět do normální formy a díky tomu si rezolventy zachovávají svou expresivitu. Výchozí formule (axiomy) : F0 : [a(x)ýg(x)ôb(x)]. F1 : [b(x)ýg(x)ôc(x)]. F2 : a(a). F3 : g(a). F4 ( dotaz) : c(y). R0 [F4&F1] : [b(y)ýg(y)]. R1 [F3&F1] : [b(a)ôc(a)]. R2 [F3&F0] : [a(a)ôb(a)]. R3 [F2&F0] : [g(a)ôb(a)]. R4 [F1&F0] : [[g(x)ôc(x)]ü [a(x)ýg(x)]]. 48
56 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky R5 [R4&F4] : [ g(x)ü [a(x)ýg(x)]]. R6 [R4&F3] : [c(a)ü a(a)]. R7 [R3&F3] : b(a). R8 [R3&F1] : [ g(a)üc(a)]. R9 [R3&R0] : g(a). R10 [R1&F4] : b(a). R11 [R1&R7] : c(a). [R11&F4] : YES. Y = a. [R10&R7] : YES. Y = a. R12 [R10&R2] : a(a). [R9&F3] : YES. Y = a. [R7&R10] : YES. Y = a. [R12&F2] : YES. Y = a. Čas : 1.72 s. Tento příklad je prvním, které v dotazu vyžadují přiřazení do proměnné. Je zde pět možných popření a všechny jsou možné pouze při přiřazení konstanty a. Tato možnost, kterou GERDS poskytuje je zásadní pro mnoho didaktických příkladů. Uvidíme v následujících ukázkách, že díky jí ukážeme studentům zajímavé úlohy z matematiky. Výchozí formule (axiomy) : F0 : [a(x)ôa(x+1)]. F2 ( dotaz) : a(5). R0 [F1&F0] : a(1). R2 [R1&F0] : a(3). R4 [R3&F0] : a(5). Čas : 0.05 s. F1 : a(0). R1 [R0&F0] : a(2). R3 [R2&F0] : a(4). [R4&F2] : YES. GERDS umožňuje i použití infixních operátorů, které se vyhodnocují. V příkladě se realizuje pomocí implikace jednoduchá inkrementace celočíselné hodnoty. Výchozí formule (axiomy) : F0 : 1<2. F1 : 2<3. F2 : 3<4. F3 : 4<5. F4 : 5<6. F5 : [X<YýY<ZôX<Z]. F6 ( dotaz) : 1<5. R0 [F6&F5] : [1<YýY<5]. R1 [R0&F3] : 1<4. R2 [R1&F5] : [1<YýY<4]. R3 [R2&F2] : 1<3. R4 [R3&F5] : [1<YýY<3]. R5 [R4&F1] : 1<2. [R5&F0] : YES. Čas : 0.22 s. 49
57 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Tento důkaz ilustruje možnosti modelování tranzitivity v systému GERDS konkrétně jde o relační operátor <. Další příklad demonstruje použití různých typů datových typů. Výchozí formule (axiomy) : F0 : [a(x)ýg(z)ôb(x)]. F1 : [b(x)ýg(z)ôc(x)]. F2 : a(a). F3 : g(30). F4 ( dotaz) : [c(y)üg(y)üb(y)]. R0 [F4&F4] : [g(y)üb(y)]. R1 [F4&F4] : [c(y)üb(y)]. R2 [F4&F4] : [c(y)üg(y)]. [F4&F3] : YES. Y = 30. [F3&F4] : YES. Y = 30. R3 [F3&F0] : [a(x)ôb(x)]. R4 [R3&F4] : a(x). R5 [R3&F2] : b(a). [R2&F3] : YES. Y = 30. [R1&R5] : YES. Y = a. [R0&F3] : YES. Y = 30. [R0&R5] : YES. Y = a. [R5&F4] : YES. Y = a. [R5&R1] : YES. Y = a. [R5&R0] : YES. Y = a. [R4&F2] : YES. Y = a. Čas : 0.54 s. Příklad, který lze nyní zkoumat se studenty, je pro ně velice vhodný a má motivační prvky. Ukazuje jim poměrně jednoduchou Fibonacciho posloupnost, modelovanou s pomocí predikátové logiky: Výchozí formule (axiomy) : F0 : [f(i, A) ý f(i+1, B) ô f(i+2, A+B)]. F1 : f(0, 1). F2 : f(1, 1). F3 ( dotaz) : f(15, X). R0 [F2&F0] : [f(2, B)ôf(3, 1+B)]. R1 [F1&F0] : [f(1, B)ôf(2, 1+B)]. R2 [R1&F2] : f(2, 2). R3 [R0&R2] : f(3, 3). R4 [R3&F0] : [f(4, B)ôf(5, 3+B)]. R5 [R2&F0] : [f(3, B)ôf(4, 2+B)]. R6 [R5&R3] : f(4, 5). R7 [R4&R6] : f(5, 8). R8 [R7&F0] : [f(6, B)ôf(7, 8+B)]. R9 [R6&F0] : [f(5, B)ôf(6, 5+B)]. R10 [R9&R7] : f(6, 13). R11 [R8&R10] : f(7, 21). R12 [R11&F0] : [f(8, B)ôf(9, 21+B)]. R13 [R10&F0] : [f(7, B)ôf(8, 13+B)]. R14 [R13&R11] : f(8, 34). R15 [R12&R14] : f(9, 55). R16 [R15&F0] : [f(10, B)ôf(11, 55+B)]. 50
58 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky R17 [R14&F0] : [f(9, B)ôf(10, 34+B)]. R18 [R17&R15] : f(10, 89). R19 [R16&R18] : f(11, 144). R20 [R19&F0] : [f(12, B)ôf(13, 144+B)]. R21 [R18&F0] : [f(11, B)ôf(12, 89+B)]. R22 [R21&R19] : f(12, 233). R23 [R20&R22] : f(13, 377). R24 [R23&F0] : [f(14, B)ôf(15, 377+B)]. R25 [R22&F0] : [f(13, B)ôf(14, 233+B)]. R26 [R25&R23] : f(14, 610). R27 [R24&R26] : f(15, 987). [R27&F3] : YES. X = 987. Čas : 1.29 s. Nalezli jsme patnácté Fibonacciho číslo, které je přiřazeno do proměnné dotazu (987). Další motivační příklad modeluje funkci faktoriál, vypočetli jsme zde faktoriál čísla 10: F0 : [f(x, Y)ôf(X+1, Y*(X+1))]. F1 : f(1, 1). F2 ( dotaz) : f(10, Y). R0 [F1&F0] : f(2, 2). R1 [R0&F0] : f(3, 6). R2 [R1&F0] : f(4, 24). R3 [R2&F0] : f(5, 120). R4 [R3&F0] : f(6, 720). R5 [R4&F0] : f(7, 5040). R6 [R5&F0] : f(8, 40320). R7 [R6&F0] : f(9, ). R8 [R7&F0] : f(10, ). [R8&F2] : YES. Y = Zobecněná rezoluce má také velmi důležitý dopad na dokazování kvantifikovaných formulí. Problém převodu do klauzulární formy zahrnuje také skolemizaci existenčních proměnných. Systém GERDS tuto skolemizaci nevyžaduje, což je další výhoda. Nejprve se podívejme na důkazy jednoduchých problémů záměny pořadí kvantifikátorů, které jiné metody řeší velice obtížně. F0: XöY p(x,y).?-öy X p(x,y).?-öyöx p(x,y).?- XöY p(x,y).?- Y X p(x,y). Řešení #1. Řešení #2. [F1&F0] : YES. Řešení #3. [F1&F0] : YES. Řešení #4. 51
59 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Případy 1 a 4 nemají řešení, neboť nevyplývají z F0. Opačný případ již vyplývá, neboť případ 2 je speciální případ F0 a 3 je přímo F0. Příklad s existencí na první místě je opět správně vyřešen: öy X p(x,y).?- XöY p(x,y).?-öxöy p(x,y).?- X Y p(x,y). Řešení #1. [F1&F0] : YES. Řešení #2. [F1&F0] : YES. Řešení #3. Případ 1 je dokazatelný, protože existuje-li jedno fixní Y pro X, pak triviálně je toto Y tímto pro vybrané X. Případ 2 je speciálním případem F0. öyöx p(x,y).?- XöY p(x,y).?-öxöy p(x,y).?- X Y p(x,y). Řešení #1. Řešení #2. [F1&F0] : YES. Řešení #3. Poslední případ ukazuje nejjednodušší případ, kdy testujeme existenci obou proměnných. Je jasné, že jediný důsledek je druhý dotaz. Uvedené příklady s existencí je velice důležité studentům správně vysvětlit. Může to značně zlepšit jejich pojetí interpretace existence v predikátové logice. ZöY p(x,y,z). [F1&F0] : YES.?- ZöY p(x,y,z). Unifikační algoritmus je podle dalšího příkladu schopen pracovat i s více proměnnými v jednom predikátu v souladu se svázáním s ostatními proměnnými. ZöY p(x,y,z). Řešení #1.?- öy Z p(x,y,z). öy Z p(x,y,z). Řešení #1.?- ZöY p(x,y,z). 52
60 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky [F1&F0] : YES. Pro správné fungování unifikace je také důležité, zda pracuje správně při dosazování za existenční proměnné. X a(x) ô öx b(x). X a(x).?- b(a). Řešení b(a). öx a(x)ô X b(x). a(a).?- b(c). Řešení b(c). R0 [F2&F0] : X a(x). [R0&F1] : YES. Pro vývoj systému GERDS bylo použito vývojového prostředí Borland Delphi 2 s jazykem Object Pascal. Právě GERDS je jako programátorská didaktická pomůcka nejvyvinutějším produktem. Nejde jen o možnost pracovat s ním interaktivně, ale pro výuku informatiků je neocenitelná možnost pracovat se zdrojovými kódy aplikace, které jim umožňují provést již zmíněný specifický a nespecifický transfer znalostí a dovedností. Jde nejen o znalosti teoretické z logiky a teorie formálních jazyků, ale také o znalosti a dovednosti z oblasti implementace překladačů, rezolučních strategií apod. Nyní rozebereme pouze ilustrační možnosti využití tohoto produktu jako pomůcky pro tuto výuku na zdrojových kódech aplikace. Formule predikátové logiky v programu GERDS reprezentuje obecný objekt typu TSub (podformule). TSub = class Neg : boolean; { Flag, který označuje, že podformule je negována } Ev : shortint; { Indikátor logické hodnoty formule } Pol : shortint; { Hodnota polarity formule } L : TSub; R : TSub; { Odkaz na levý a pravý podstrom formule } Ac : TObject; { Nadřazený objekt - formule } Q : TQuant; { Kvantifikační část podformule odkaz na objekt typu kvantifikátor }... end; TSub je základní třídou pro její potomky TCon, TDis, TImp, TEqv a TAtom, které reprezentují podformule s konkrétní logickou spojkou nebo atomem. Každá 53
61 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky podformule má referenci na levou a pravou podformuli. Ev může obsahovat tři hodnoty: -1 false, 1 true, 0 pokud není formule prozatím evaluována. Ac obsahuje ukazatel na nadřízený uzel (kořen stromu formule odkazuje na objekt typu TFALFormula. TAtom má již speciální prvky, jelikož obsahuje složitější strukturu. Studenti nejlépe pochopí celou hierarchickou strukturu objektů a potažmo i logických formulí z následujícího příkladu syntaktického stromu formule. Uvažujme následující formuli X p(x,30) ý öy r("string",y) ô q(const,x). 54
62 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky object hierarchy TFALFormula atomic level parent connective TCon TImp TAtom TQuant TAtom TQuant TAtom TFunctor q TVariable X TFunctor p TVariable öy TFunctor r TFunctora const TVar:X TVar:X TInteger 30 TStrLit string TVar:Y Po přiřazení proměnných: TFALFormula TImp TQuant TQuant TAtom TCon TQuant TAtom TAtom TFunctor q TVariable X TVariable X TFunctor p TVariable öy TFunctor r TFunctora const TInteger 30 Obrázek 21: TStrLit string Syntaktický strom formule 55
63 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky Příklad objektové hierarchie syntaktického stromu ukazuje, jak jsou proměnné přiřazeny příslušným výskytům. Po přiřazení vznikne nový kvantifikátor, jenž kvantifikuje volnou proměnnou X. Atomy jsou svázány pomocí ukazatelů, což umožňuje mnohem efektivnější práci při hledání možných rezolucí než by bylo procházení celého stromu rekurzivně. Syntaktický analyzátor a kompilátor Analyzovali jsme datové struktury, především syntaktický strom a třídy, které jej tvoří. Syntaktický analyzátor (Aho, 1972; Waite, 1984) má za úkol rozpoznat, zda logický program seznam formulí a dotazů je správně zapsán, a má provést převod do formy stromu. Hlavní metodou je XComp. procedure TPLProgram.XComp; begin... StackInit; cpos := 0; dontcare := 0;Error := OK;Getchar; if (ch = '?')and(infix[cpos] = '-') then begin query := true;getchari; GetChar; end; if Error = OK then Eqv; { Go to parser / generator. }... if Error = endcomp then begin Error := OK;sub := TSub(VPSStack^.Node);dispose(VPSStack); if query then F := TQuery.Create(self) else F := TFALFormula.Create(self); F.Cont := sub;sub.ac := F;F.MF := FirstMol;F.ML := LastMol; F.PostComp;GetChar; if ch <> #0 then LocalPos := cpos-1 else LocalPos := cpos; end else begin if VPSStack <> nil then DestroyNode(VPSStack^.node); DisposeStack;LocalPos := cpos-inum-1; end; err := error; case error of... end; end; Na začátku tohoto algoritmu je třeba správně inicializovat zásobník, jenž se používá k vytváření stromu. Dokud nejsou prvky stromu přiřazeny správným nadřazeným objektům a podformulím, jsou zde uloženy. GetChar (resp. GetCharI) nastavuje správně aktuální lexikální element do proměnné ch, přičemž ignoruje prázdné znaky (resp. 56
64 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky bere v úvahu prázdné znaky, pokud je to u některých syntaktických struktur potřeba). Potom rozhoduje o tom, zda formule je dotazem nebo ne. Dalším krokem je rekurzivní sestup na základě gramatiky jazyka, o němž budeme detailně diskutovat v dalších odstavcích. Na konci procedura identifikuje chyby. Pokud k žádným nedošlo, je vytvořena formule ve formě objektu typu TFALFormula. Metoda rekurzivního sestupu, kterou používá analyzátor (Dvořák, 1992), spočívá v konstrukci procedur strukturovaného programovacího jazyka přesně dle Backusovy- Naurovy formy (BNF), kde je každému neterminálu přiřazena jedna procedura a je volána procedura GetChar před každým terminálem. Výskyt neterminálu v pravidle je v proceduře nahrazen rekurzivně voláním příslušné procedury. Iterace a podmínka v Backus-Naurově formě je nahrazena jednoduše jejich programátorskými protějšky. Vyžaduje se, aby jazyk byl definován LL(k) gramatikou. V tomto případě jde o LL(1) gramatiku definovanou následovně: <Formula> ::= <Imp> { ó <Imp> } <Imp> ::= <Dis> { ô <Dis> } <Dis> ::= <Con> { ü <Con> } <Con> ::= <Subformula> { ý <Subformula> } <Subformula> ::= <Subformula> <Quantifier section> <Subformula> [ <Formula> ] <Predicate> <Quantifier section> ::= <Quantifier character> <Variable> {, <Variable> } {<Quantifier character> <Variable> {, <Variable> } } <Predicate> ::= <Predicate name> <List of parameters> <Term> <InfixPred> <Term> <Term> ::= <Term2> { <+/- operator> <Term2> } <Term2> ::= <Base> { <*// operator> <Term2> } <Base> ::= <Variable> <Function> <StrLit> <Number> + <Number> - <Number> ( <Term> ) <Functor> ::= <Lower case> {<Alphanumeric>} <Predicate name> ::= <Lower case> {<Alphanumeric>} <List of parameters> ::= { ( <Term> {, <Term> } ) } <Function> ::= <Functor> <List of parameters> <Variable> ::= <Upper case> {<Alphanumeric>} <Number> ::= <Integer> {. <Integer>} { e <+/- operator> <Integer>} <StrLit> ::= {<Alphanumeric>} <InfixPred> ::= Ý ß < > = á <Quantifier character> ::= ö <+/- operator> ::= + -, <*// operator> ::= * / <Lower case> ::= a.. z, <Upper case> ::= A.. Z _ <Alphanumeric> ::= <Lower case> <Upper case> <Numeric>, <Integer> ::= <Numeric> { <Numeric> }, <Numeric> ::=
65 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky procedure Eqv; begin if Error = OK then begin Imp; while (ch = ceqv)and(error = OK) do begin Getchar; Imp; if error = OK then AssignSub(TEqv.Create); end; end; end; Procedura Eqv přísluší neterminálu <Formula>, který reprezentuje podformuli se spojkou ekvivalence (s nejmenší prioritou). Tato procedura volá Imp a pak pokračuje libovolněkrát opět voláním Imp podle toho kolikrát se vyskytuje znak ekvivalence, přesně podle definice gramatiky. Každá ekvivalence je tak vytvořena a jsou jí přiřazeny podřízené formule do položek L a R pomocí procedury AssignSub. procedure AssignSub(Ob : TObject); { Přiřazuje formuli její podstromy } begin Put(Ob);pom := Cut; TSub(pom^.node).R := TSub(VPSStack^.node); TSub(VPSStack^.node).Ac := pom^.node; garbage := Cut;dispose(garbage); TSub(pom^.node).L := TSub(VPSStack^.node); TSub(VPSStack^.node).Ac := pom^.node; garbage := Cut;dispose(garbage);SInsert(pom); end; Procedura Put vytváří objekt zásobníku, jenž zapouzdřuje tuto položku během jejího setrvání v zásobníku, než je přiřazen jeho nadřízenému objektu. Potom je vybrán ze zásobníku pomocí procedury Cut a do zásobníku je pak uložen nadřízený objekt. Celá procedura se realizuje tak dlouho, dokud není vytvořen uzel na nejvyšší úrovni. Procedura ICE, přiřazená neterminálu <SubFormula>, plně demonstruje rekurzivní charakter tohoto algoritmu, neboť sama volá opět Eqv. procedure ICE; begin if error = OK then begin case ch of cneg : begin Getchar; ICE;NegateF; end; 58
66 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Charakteristika programátorské didaktické pomůcky cforall, cexists : begin Quant; ICE; if Error = OK then AssignQtoSub; end; 'a'..'z', 'A'..'Z', '_', '0'..'9', '"', '(', '+', '-' : begin Atom; end; '[' : begin GetChar; Eqv; if (ch <> ']')and(error = OK) then Error := missbra; Getchar; end else if error = OK then Error := missexp; end; end; end; Případ pro cneg reprezentuje negovanou podformuli, volajíce sama sebe. Další případy řeší ostatní možné syntaktické struktury. Použili jsme pouze některé ze syntaktických struktur v tomto textu, neboť gramatika je mnohem složitější. Každý student si však může celou gramatiku a její programátorské vyjádření najít ve zdrojovým textech aplikace. Aplikaci GERDS lze považovat za nejlépe propracovanou programátorskou didaktickou pomůcku. Respektuje zásady názornosti, vědeckosti a další zásady uvedené v kapitole o aplikačním pojetí výuky. Shrňme nejpodstatnější didaktická témata, která lze se studenty probírat: - predikátová logika a vyjadřování znalostí pomocí ní, - rezoluční princip, jeho podstata a zobecněná verze, - rezoluční zamítnutí a jeho strategie (prohledávání stav. prostoru, podpůrné strategie), - důkazy aplikovaných problémů. Důležité však je zejména to, že GERDS je také programátorskou didaktickou pomůckou. To znamená, že slouží nejen k procvičování teoretických témat, ale s pomocí řešení algoritmických problémů a jejich implementace poskytuje obousměrný transfer mezi teoretickou informatikou a algoritmizací. Studenti si, jinak řečeno, osvojí způsoby implementace vybraných problémů a zároveň jsou lépe motivováni k pochopení vlastní teorie. Shrňme nyní základní didaktické moduly, které odpovídají 4 bodu vlastnosti pomůcky. 59
67 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků - objektová hierarchie (objektový model formule), například specifikace dědičnosti u obecné formule TSub a potomka TImp apod. (transfer pro logiku, umělou inteligenci i algoritmizaci a objektové programování); - překladač (kompilátor formulí do formy stromu), implementace metody rekurzivní sestupu a generování vnitřní reprezentace formule apod. (transfer pro teorii formálních jazyků a algoritmizaci); - inferenční proces (řízení procesu rezolučního dokazování), strategie, omezování rezolvent, nepřímé dokazování (transfer pro logiku, umělou inteligenci); - rezoluční důkazy (rezoluční pravidlo, výběr premis) (transfer pro logiku a algoritmizaci) Programátorské pomůcky v teorii formálních jazyků Již v aplikaci GERDS, jež je sice primárně zaměřena na oblast logiky, se vyskytla témata, která se dobře hodí i do teorie formálních jazyků. Ta je v této práci stěžejní a proto se nyní budeme již zabývat pouze pomůckami pro tuto oblast. Asi nejrozsáhlejší a nejprecizněji zpracovanou je práce Mgr. Hřivňáka (Hřivňák, 2002). Tato práce přináší počítačovou aplikaci GramAut, která umožňuje návrh a převody regulárních a bezkontextových gramatik a příslušných automatů. Implementuje stávající algoritmy a dává velmi účinný didaktický nástroj pro výuku. Umožňuje i provádět syntaktickou analýzu u těch gramatik, které vyhovují podmínkám pro LL(k), resp. LR(k) gramatiku. Na obrázku 24 můžeme vidět grafické rozhraní této aplikace, jež implementuje netriviální algoritmy. Aplikace umožňuje v souladu s didaktickou analýzou učiva (viz příloha) a podle výukového textu (Habiballa, 2003) zejména tyto činnosti studentů: - návrh konečných automatů a jejich vizualizaci, - převody těchto konečných automatů na deterministické a redukované, - analýzu slov pomocí navržených konečných automatů, - návrh a převody regulárních výrazů na automaty, 60
68 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků Obrázek 22: Návrh konečného automatu v aplikaci GramAut Obrázek 23: Analýza slova v aplikaci GramAut 61
69 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků Obrázek 24: Aplikace pro práci s gramatikami a automaty GramAut - návrh a převody bezkontextových gramatik na normální a redukované formy, - převody regulárních gramatik na konečné automaty, - návrh zásobníkových automatů a převody BKG na ně. Vzhledem k tomu, že aplikace poskytuje implementaci převodních algoritmů pro celou náplň všech tematických celků v experimentu (viz příloha), byl tento prostředek v experimentální výuce využíván velmi často. Zejména v oblasti BKG, kde nebyl z programátorského hlediska lépe popsaný prostředek, byl používán téměř výlučně (s výjimkou aplikace RABJ a částí zdrojových kódů již popsané aplikace GERDS). Z programátorského hlediska je však ještě zajímavější program PREGJAUT bakalářská práce vytvořená na OU (Tkačík, 1997). Tato aplikace umožňuje provádět a zobrazovat detaily převodu regulárních výrazů na automaty (nedeterministické, deterministické, podílové a normované). Tento program studenti využívají pro kontrolu samostatně počítaných příkladů a také pro sledování průběhu převodu v jednotlivých krocích. K programu jsou rovněž přiloženy zdrojové kódy, které mohou studenti použít pro lepší pochopení probíraných algoritmů. Aplikace je uložena v adresáři PregJaut a 62
70 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků obsahuje poměrně solidně napsaný popis přechodu od teoretických postupů k jejich implementaci. Její využití je ještě bližší využití programovacích metod než aplikace GramAut. Algoritmy, jakožto jádro programu, jsou vytvořeny v Turbo Pascalu 7.0 a jsou uloženy ve třech modulech. První modul je UNITSYNT.PAS, ve kterém se provádí syntaktická analýza zadaného regulárního výrazu v infixu metodou s předsnímáním jednoho symbolu dopředu bez návratu, s rozpoznáváním pěti druhů chyb v zápisu regulárního výrazu a s paralelním zápisem zadaného regulárního výrazu do postfixu. Rozpoznávané chyby jsou: chybí pravá závorka, chybí identifikátor nebo výraz, chybí operátor, přebývá pravá závorka, špatný znak. Druhý modul je UNITMAIN.PAS, jenž převede regulární výraz zadaný v postfixu na ZNKA. Třetí unit je UNITPREV.PAS, který provádí všechny ostatní přechody (tzn. ZNKA -> NKA -> DKA -> Totální KA -> PA -> NA). Ostatní moduly jsou již vytvořeny programovacím nástrojem Delphi 2.0, který je použit pro grafickou nadstavbu programu. Hlavním datovým souborem je Delphi projekt PREGJAUT.DPR, jenž má v sobě informace o všech použitých modulech a formulářích. Hlavním formulářem je MainForm, jehož modul se nazývá UNITPRJA.PAS, jenž vyvolává a obhospodařuje ostatní formuláře a moduly. Formulář, ve kterém se vizualizují provedené algoritmy, se nazývá MDIChild. Jeho vlastníkem je MainForm, ve kterém může být několik formulářů typu MDIChild. Modul patřící k MDIChild je CHILDWIN.PAS, ve kterém jsou veškeré kroky k vizualizaci provedených algoritmů či různé jiné položky (jako např. zadání regulárního výrazu, tabulky, kontrola správnosti vyplnění tabulky apod.). Další moduly a k nim patřící okna jsou PREVFORM.PAS (jaké z převodů se mají vypsat na obrazovku), UNIT2.PAS (AboutBox), UNIT3.PAS (úprava vložené tabulky). Pro práci se studenty se osvědčilo zadávat výpočet jednoduchého regulárního výrazu manuálně (např. ((a + b)b*)). Studenti si tak postup vyzkoušejí samostatně a uvidí, že tento postup lze efektivně realizovat automatizovaně. Dále je velmi užitečné jim ukázat, že ekvivalentní výrazy (např. (ab* + bb*)) vedou ke stejným automatům. Studenti jsou podobným aplikovaným způsobem výuky osloveni a sami si pak dokáží vytvářet problémové příklady. 63
71 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků Obrázek 25: Aplikace Pregjaut Uživatelské rozhraní PREGJAUTu je znázorněno na obrázku 25. Z hlediska využití programovacích metod se aplikace využívá pro ilustraci implementace (počítačové realizace) algoritmů a datových struktur pro reprezentaci a transformace konečných automatů a regulárních výrazů. Na obrázku můžete vidět způsob reprezentace konečného automatu pomocí spojového seznamu, se kterým se studenti mají možnost seznámit. 64
72 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků Obrázek 26: Programátorská realizace konečného automatu Vstupem je regulární výraz zadaný v infixu. Pojmem infix rozumíme notaci zápisu, v kterém se binární operátory vyskytují mezi identifikátory (např. a+b). Regulární výraz může mít na vstupu jednotlivé znaky z abecedy {a,..,z,a,..,z} plus ještě znak prázdného řetězce epsilon (ε) a znaky, které nám zastupují operace zřetězení (.), spojení (+), iterace (*) a mocniny (^). Znak zřetězení není nutno psát. Syntaktická pravidla jsou následující (zápis Backusovou-Naurovou formou) - ε je prázdný znak: <vyraz> ::= <term> {+ <term>} <term> ::= <faktor> {{.} <faktor>} <znak> ::= A B... Z a b... <faktor> ::= <pom1> <pom2> <pom1> ::= <znak> <pom3> <pom2> ::= ( <vyraz> ) <pom3> <pom3> ::= ε {*} ^ <cislice-bez-nuly> {<cislice>} <cislice-bez-nuly> ::= <cislice> ::=
73 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Programátorské pomůcky v teorii formálních jazyků Dalším krokem je převod na postfix, který se provádí pro následné zpracování počítačem. Pojmem postfix rozumíme notaci zápisu, v kterém se binární operátory vyskytují za identifikátory (např. ab+). Pro lepší představu rozdílu mezi infixovou a postfixovou formou zápisu uvedeme příklad: Výraz zapsaný v infixu převedeme na výraz zapsaný v postfixu: abc+(a+c)*+a^3 ab.c.ac+*+a^3+ Výraz v postfixu se nyní převede na Zobecněný nedeterministický konečný automat (dále jen ZNKA). Pojmem zobecněný rozumíme, že v konečném automatu se mohou vyskytovat epsilon přechody. Pojmem nedeterministický rozumíme, že v konečném automatu může být více vstupních stavů než jeden a že z jednoho stavu může vystupovat více stejně pojmenovaných přechodů (stejným znakem z abecedy se můžeme dostat do různých stavů) nebo ze stavu nemusí vystupovat žádný přechod. Z postfixu se čte postupně znak za znakem a podle určitých pravidel se na zásobníku (struktura LIFO) vytváří konečný automat (dále jen KA). Z jednoho znaku abecedy (např. a) se vytvoří na vrcholu zásobníku KA: 1 2 a Když je přečtený znak., potom se vyberou dva KA z vrcholu zásobníku, provede se na nich operace zřetězení a výsledek se vloží do zásobníku. Např. při a.b se vytvoří KA: a 1 2. b 3 4 = Když je přečtený znak +, potom se vyberou dva KA z vrcholu zásobníku, provede se na nich operace spojení a výsledek se vloží do zásobníku. Např. při a+b se vytvoří KA: a 1 2 b = 5 ε ε Když je přečtený znak *, potom se vybere jeden KA z vrcholu zásobníku, provede se na něj operace iterace a výsledek se vloží do zásobníku. Např. při (ab)* se vytvoří KA: b 2 a b * = 4 ε 1 a b Kdyby nastala situace načrtnuta níže, iterace by se řešila trochu jinak: 1 a 2 b 3 * = 4 ε 1 ε a c c 2 3 b Když je přečtený znak ^, potom se vybere jeden KA z vrcholu zásobníku, provede se na něj operace zřetězení tolikrát, kolikrát je za znakem ^ uvedeno a výsledek se vloží do zásobníku. Např. při a^3 se vytvoří KA: ε a a 1 2 b 3 4 ε 6 66
74 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy a 1 2 ^3 a a = a 4 Po přečtení a zpracování všech znaků z postfixu získáme na vrcholu zásobníku ZNKA ekvivalentní s námi zadaným regulárním výrazem. Bližší popis převodních algoritmů je možné nalézt v elektronické dokumentaci v adresáři Pregjaut nebo v učebních textech autora Pasivní programátorské úlohy Popsané aplikace slouží především jako programy umožňující simulaci převodů a lze samozřejmě zkoumat i jejich zdrojové kódy. Takovéto metody výuky bychom mohli nazvat jako pasivní programátorské úlohy. Jde o využívání již vytvořených pomůcek a sledování použitých programovacích technik. Uveďme nyní typický příklad, který byl využíván v experimentu (kapitola 3). Jde o úlohu spadající do třetího tematického celku tedy do tvorby syntaktických analyzátorů. Studenti mají k dispozici zdrojový kód aplikace GERDS, která umožňuje analyzovat a přeložit do vnitřní reprezentace formuli predikátové logiky (viz předcházející text). Tato konkrétní pasivní programátorská úloha tedy spočívá v krokování programu (resp. části provádějící syntaktickou analýzu formule) a zjišťování, jakým způsobem probíhá odvození v procedurách sestavených podle gramatiky z předcházející podkapitoly. 67
75 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy Obrázek 27: Trasovaná aplikace před pasivní programátorskou úlohou Obrázek 28: Trasování syntaktického analyzátoru Student provádí trasování metody rekurzivního sestupu, čímž lépe pochopí princip syntaktické analýzy ve své obecnosti i konkrétní programátorskou metodu (samozřejmě po teoretické přípravě). V tomto případě jde o analýzu formule a b. Může k tomu použít jak pokročilejší vývojová prostředí (v tomto případě jde o Borland Delphi 2), tak i jednoduchá prostředí pod systémem MS-DOS. Výhoda pokročilejších prostředí je především v lepších možnostech trasování programu, jak vidíme na obrázku 28, kde je možné sledovat nejen hodnoty proměnných (analyzovaný řetězec, aktuální znak), ale i 68
76 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy hierarchii volaných procedur (zde dle gramatiky jsou volány postupně Eqv, Imp, Dis a nakonec Con). Studenti pak jsou na základě těchto pasivních programátorských úloh lépe připraveni na aktivní. Jejich přesné vymezení provedeme v samostatné kapitole. Výhody těchto úloh lze shrnout do těchto bodů: - u složitějších úloh studenti nemusí ihned programovat, ale mohou využít existující kód a aplikace a pochopit je (šetří se čas, jenž by byl jinak nepostačující), - studenti mohou využít zdrojové kódy pro vlastní projekty (ukázka v dalším textu), - je možné ukázat postupně různé části algoritmického problému bez nutnosti naprogramovat velký celek (aplikaci), čímž jsou odstíněni od grafického rozhraní a podobných náročných součástí aplikací. Nevýhody: - studenti nemusí naprogramovat a odladit program jako celek, čímž mohou přijít o důležité implementační kroky (a chyby), které je mohou lépe naučit látce, - při pasivním programování student často podceňuje složitost úlohy (rozumí postupům, ale kdyby je měl sám vytvořit, zvládl by to jen velmi obtížně). Ukázku velmi pozitivní motivace tohoto způsobu lze najít v jedné z nejzdařilejších studentských aplikací. Ta byla vytvořena během experimentální výuky studenty (Kaluža, 2003). Podařilo se jim na základě zmíněného kódu syntaktického analyzátoru vytvořit program pro vizualizaci programátorské metody rekurzivního sestupu. Tento program vznikl jako aktivní programátorská úloha (projekt) a je založen na zdrojových kódech analyzátoru vytvořeného autorem této práce. Pochopením a využitím již hotové implementace tak vytvořili program, který nejen pomohl zlepšit jejich dovednosti v oblasti teorie formálních jazyků, ale také přinesl aplikaci velmi dobře použitelnou ve výuce. Ukazuje přesně to, co je možné díky trasování tedy vzájemné volání procedur, které je podstatou metody. Navíc ukazuje způsob identifikace chyby v jednoduchém aritmetickém výrazu. Úloha je ekvivalentní s analýzou predikátových formulí, avšak pro studenty mohou být aritmetické výrazy bližší. Program lze nalézt jako elektronickou přílohu na CD. Přechod k jednoduchým kompilátorům Rozeberme nyní jádro programu autora, který byl využit i při tvorbě posledního zmiňovaného programu na vizualizaci metody rekurzivního sestupu. Toto jádro obsahuje především základní proceduru Compile, která provádí kompilaci aritmetického 69
77 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy v infixové (tedy přirozené) notaci do notace postfixové (Wirth, 1976), (Berztiss, 1975). Ta je vhodná pro zpracování pomocí počítače např. vyhodnocení pomocí zásobníku. Obrázek 29: Vizualizace metody rekurzivního sestupu Příklad: Aritmetický výraz v infixové (přirozené) notaci * 2 lze pomocí této procedury přeložit na výraz v postfixové notaci * +. Ta je konstruována tak, že místo tvaru, kde je operátor mezi operandy, má operátor až za oběma operandy. Tento výraz lze pak pomocí zásobníku vyhodnotit tak, že čteme jednotlivé symboly a provádíme s nimi tyto dvě operace: 1. Je-li čtený symbol operandem, pak ulož operand na zásobník. 2. Je-li čtený symbol operátorem, pak vyber ze zásobníku posledních n operandů (kde n je arita operátoru; např. pro + je n = 2). Proveď operaci dle operátoru s vybranými operandy a výsledek ulož na zásobník. Příklad: Pro výraz * 2 vezměme jeho postfixovou notaci * + a vyhodnoťme jej s pomocí zásobníku. 70
78 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy Nepřečtená část Aktuální znak Zásobník Vybírané symboly Operace * * * * + * * 3 = = Obsah zásobníku po přečtení slova je roven hodnotě výrazu. Postup by samozřejmě bylo možno zobecnit na složitější čísla nebo proměnné, ale vyžadovalo by to složitější struktury zásobníku. Máme-li postfixový tvar výrazu je jednoduché provést jeho vyhodnocení, ale mnohem složitější je samotná kompilace. Procedura Compile při svém běhu používá procedury sestrojené již zmiňovanou metodou rekurzivního sestupu. Jde o analogický postup jako v podkapitole věnované aplikaci GERDS, kde se analyzuje výraz logický. Jelikož jde o rozsáhlejší komentovaný zdrojový kód, je jeho přesné znění možno nalézt v elektronické dokumentaci na přiloženém CD v adresáři model. Gramatiku v Backusově-Naurově formě pro náš zjednodušený příklad (pouze s číslicemi místo identifikátorů) lze zapsat takto: <Výraz> ::= <Term> { <+ -> <Term>}; <+ -> ::= + - <Term> ::= <Faktor> { <* /> <Faktor>}; <* /> ::= * / <Faktor> ::= Pozn. Zavedené neterminály <+ -> a <* /> jsou uvedeny pouze z důvodu dodržení notace BNF. Jsou zjevně tak jednoduché, že pro ně není nutné tvořit samostatné procedury při použití metody rekurzivního sestupu. procedure Compile(infix1:string;var postfix1:string;var err1,pos1:word); {procedura kompilace výrazu -infix1 obsahuje vstupní vyraz -postfix1 obsahuje přeložený výraz -err1 obsahuje číslo chyby (viz demopgm) -pos1 obsahuje pozici,kde kompilace skončila} Modul dále obsahuje nezbytný lexikální analyzátor pro načítaní jednotlivých symbolů (v našem zjednodušeném případě jde o jednoznakové symboly). Lexikální analýza je realizována procedurou GetChar. 71
79 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Pasivní programátorské úlohy procedure Getchar; {čte znak z infixu do proměnné ch} begin if err=0 then begin Inc(infixpos); if infixpos<=length(infix2) then ch:=infix2[infixpos] else ch:=#0; ch:=upcase(ch); if not((ch in pismeno)or(ch in cislice)or(ch in ['(',')','-','*','/','+']) or(ch in ignore)) then err:=2; {ošetření nežádoucích znaků} end; end; Jádrem modulu jsou jednotlivé rekurzivní procedury Výraz (sčítaní, odčítání), Term (násobení, dělení), Faktor (identifikátor, unární plus a mínus, vnořený závorkovaný výraz), Identifikátor. Pro příklad uveďme nejvyšší proceduru Výraz. procedure Vyraz; {výraz s nižší prioritou} begin if err=0 then begin Term; while (ch='+')or(ch='-') do begin case ch of '+': begin Getchar; Checkignore; {sčítání} Term; postfix2:=postfix2+'+'; end; '-': begin Getchar; Checkignore; {odčítání} Term; postfix2:=postfix2+'-'; end; end; end; end; end; Podobně jako u logických výrazu v aplikaci GERDS se zde volá procedura nižší v hierarchii (Term) a toto volání se opakuje podle počtu výskytu symbolu operace sčítání nebo odčítání. Důležité pro kompilaci do postfixové notace je implicitní zapamatování načteného symbolu operace (+, -) a to tím, že program je vždy v příslušné větvi (+, -) a po návratu z volané procedury Term se do proměnné postfix přidá příslušný operátor. 72
80 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy Ilustrujme to opět na výrazu * 2 (pro jednoduchost jsou identifikátory čísla již v proceduře Faktor). Infixová notace Aktuální znak Postfixová notace Aktuální procedura Návrat do procedury * 2 5 Výraz * 2 5 Term + 3 * Faktor Term + 3 * Term Výraz 3 * Výraz (+) 3 * Term * 2 * 5 3 Faktor Term Term (*) Faktor Term (*) * Term (*) Výraz (+) * + Vyraz (+) V rámci teoretické výuky je tento jednoduchý kompilátor nezbytný, aby byla dodržena didaktická zásada přiměřenosti. Přesto jsou tyto principy v zásadě stejné i při tvorbě kompilátorů pro složitější jazyky (např. jednoduché programovací). U nich však složitost jazyka vyžaduje i sémantickou analýzu a specifické operace jako je typová kontrola, tvorba tabulek identifikátorů apod. To by však mělo být náplní až pokročilejších kurzů ve vyšších stupních studia v kurzu Překladače (viz kapitola 6) a nikoliv základní teoretické výuky, kde by nebylo reálné tyto složitější otázky zařadit. Ukázka takového jednoduchého programovacího jazyka, jeho gramatiky a analyzátoru je součástí níže popsané aplikace RABJ Aktivní programátorské úlohy Dalším stupněm při využití programovacích metod je aktivní programátorská úloha. Ta již spočívá v samostatném programování (buď v rámci cvičení na jednoduchých příkladech nebo na složitějších projektech). Již v minulé podkapitole bylo možné vidět jednu z úloh, ale pokusme se vyložit je od mnohem jednodušších příkladů. První velmi jednoduchou, ale přitom užitečnou a důležitou úlohou je vytvoření zdrojového kódu pro simulaci výpočtu konečného automatu (bez vizualizace). Vezměme například následující automat (stav 2 je koncový automat tedy rozpoznává slova se sudým počtem jedniček). K tomuto automatu můžeme sestrojit následující zdrojový kód, jenž bude simulovat jeho výpočet. Jde skutečně o jednoduchou úlohu, kterou lze realizovat s minimální znalostí algoritmizace (Wirth, 1976). 73
81 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy Implementace v jazyce Pascal: Obrázek 30: Implementovaný automat Čteme jednotlivé znaky ze standardního vstupu pomocí funkce ReadKey. Ta ale vrací načtený znak. Např. převedení znaku na numerickou podobu v DEC (např. '0' na 0) realizuje funkce znc(z). Tabulku přechodové funkce vyjádříme pomocí dvourozměrného pole. Automat při své činnosti vypisuje stavy, ve kterých se právě nachází. uses crt; var c:char;{ Vstup } q, sym:integer; { Počáteční stav } delta:array[0..2,0..1] of integer; { Přechodová funkce - 3 x 2 } function znc(z:char):integer; begin znc := ord(z) - ord('0'); end; begin clrscr; delta[0, 0] := 0; delta[0, 1] := 1; delta[1, 0] := 1; delta[1, 1] := 2; delta[2, 0] := 2; delta[2, 1] := 1; c := ReadKey; write('vstup symbol:',c); while c <> chr(13) do begin sym := znc(c); if ((sym = 0) or (sym = 1)) then begin q := delta[q, sym]; 74
82 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy writeln('-jsem ve stavu:',q); c := ReadKey; if c <> chr(13) then write('vstup symbol:',c); end else begin writeln('-znak nepatri do abecedy!'); Exit; end; end; if q = 2 then writeln('shoda') else writeln('neshoda'); end. Např. takto student může uvedenou implementaci realizovat. Nutno dodat, že je naprosto lhostejné, jaký konkrétní jazyk, platformu nebo vývojové prostředí student použije. V tomto ohledu byla v rámci experimentu dána studentům volnost, jelikož by bylo zbytečné nutit studenta, jenž již programuje profesionálně, pracovat například v Pascalu. Studenti tak pracovali v Pascalu, C++, PHP, ale i např. v jazyce Fortran. Jediným požadavkem je, aby takto naprogramované zdrojové kódy byly funkční a relativně přehledné. Další velice užitečnou úlohou je implementace netriviálních vyhledávácích algoritmů (Habiballa, 2003b). Pokusme se její fragment reprodukovat i zde. Nejjednoduššími jazyky, které zkoumá teorie formálních jazyků, jsou jazyky regulární (resp. jazyky rozpoznatelné konečnými automaty). I když tyto pojmy zní odtažitě, podívejme se na jednu úlohu, kterou asi řešil každý čtenář a tou je vyhledávání v textu. Hned poté si ukážeme, jak je možno takovou myšlenku ilustrativně vysvětlit pomocí pojmu konečného automatu. Pro tuto úlohu existují různě efektivní a složité algoritmy. Pokusme se rozebrat nejprve ten nejjednodušší, který nás zřejmě napadne (jde o algoritmus brute-force - hrubá síla). Příklad: Vezměme si slovo totožné. Jak bychom realizovaly jeho vyhledávání například v textu tojetotožné. 75
83 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy Obrázek 31: Hrubá síla při vyhledávání Algoritmy, které postupně načítají text a hledají výskyt slova, samozřejmě využívají knihoven funkcí. Tyto knihovny jistě obsahují již připravené algoritmy porovnání řetězců apod. Přesto půjdeme-li až na jádro způsobu nalezení slova bez použití těchto pomůcek, musí se číst postupně znaky textu a srovnávat jde o první písmeno hledaného slova t? Pokud ano, dále srovnávej zda souhlasí následující písmena... Pokud projdeme celé slovo totožný, aniž by se v právě načítaném úseku textu něco lišilo, pak můžeme skončit a říct, že totožný se v textu vyskytuje a pokud ne, pak se vrátíme na další písmeno textu a celý postup opakujeme. Toto je zhruba řečeno algoritmus brutální síly. Jeho postup probíhá zkráceně podle obrázku (srovnávání textu a slova). Vidíte, že uvedený algoritmus je skutečně hrubý. Nevyžaduje sice příliš mnoho uvažování, ale na druhou stranu je poměrně hloupý, protože se vždy vrací v textu na následující symbol a vůbec nevyužívá informaci o tom, co již v hledaném slově úspěšně srovnal. Proto by bylo rozumné zkusit navrhnout algoritmus, jenž by se již nemusel nikdy vracet v textu na symboly, které již srovnával. Pokusme se tuto myšlenku ilustrovat pomocí pojmů teorie formálních jazyků. Z hlediska teorie formálních jazyků jde o vyhledávání regulárního výrazu (mimochodem velice strukturálně jednoduchého), tyto výrazy mají obecně mnohem větší sílu než pro náš ilustrativní příklad), jenž můžeme realizovat pomocí konečného automatu. Pokusme se tento automat reprezentovat pomocí stavového diagramu (jde o automat zobecněný s e-přechody přerušovanými čarami, což nesnižuje obecnost): 76
84 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy t to tot totožné totožn totož toto řídící jednotka má kruhové symboly (stavy určují zde, jaká část hledaného slova je již nalezena), které se během práce automatu mohou stávat aktivní (při začátku čtení slova po symbolech je aktivní stav do kterého vstupuje šipka), koncový stav je stav, ze kterého šipka vystupuje. Šipky mezi stavy určují, jaký stav se stane aktivní místo stávajícího při přečtení symbolu, který je u šipky (nazývají se přechody mezi stavy). Pozn. šipka znamená, že automat přejde do určeného stavu v situaci, která není jinak určena (v tom případě nečte z textu žádný symbol); Σ-{t} označuje všechny přípustné symboly kromě t. Obrázek 32: Přechodová funkce při vyhledávání Co nám tento diagram říká? Stavy vyjadřují, jakou část hledaného slova jsme již úspěšně načetli. Na počátku po vstupu do automatu nejprve čekáme na symbol t, kterým slovo začíná (to je ona smyčka Σ-{t}). Po načtení t se dostáváme do příslušného stavu. Pokud přijde o pokračujeme v úspěšném porovnávání, ale pokud ne, pak se musíme rozhodnout, kam se vrátit, abychom sice nic z textu znovu zbytečně nečetli, ale zároveň abychom tak neopominuli již načtenou úspěšnou část slova. V tomto případě se můžeme vrátit až na počátek. Všechny situace s přerušovanou čarou jsou tyto standardní návraty. Podívejme se ale, co se děje, jsme-li již ve stavu tot. V tom případě se nemůžeme vrátit úplně na počátek, protože bychom tak ignorovali, že jsme již úspěšně načetli symbol t. Musíme se tedy do příslušného stavu nastavit, abychom tak neporušili potenciální možnost vyhledání slova v textu. Stejná nestandardní situace nastává ve stavu toto. Musíme vzít v úvahu, že i přes neúspěch pro totož jsme se již dostali do stavu, kdy je načteno to a může potenciálně přijít tot! Naznačme schématicky, jak pracuje tento vylepšený algoritmus. 77
85 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy Obrázek 33: Knuthův-Morrisův-Prattův algoritmus Tento automat nám vlastně poskytuje jakési know-how, díky němuž se zbavíme základního nedostatku (z hlediska efektivity algoritmu) a to je nutnost vracet se v textu vždy na další symbol. Při tomto postupu nikdy již čtený symbol v textu nemusíme znovu načítat. To jistě v rozsáhlých textech zrychlí hledání. Cena za to je nutnost zjistit si, kam se musím vrátit v automatu při selhání. Jelikož to však činíme jen jednou na počátku, u rozsáhlých textů se to vyplatí. Popsaný postup je vlastně teoreticky popsaným algoritmem známým jako Knuthův-Morrisův-Prattův algoritmus. Lze jej naprogramovat a navíc poměrně jednoduše je pouze třeba zkonstruovat postup vytváření automatu jinak řečeno tabulky, která popisuje kam se vrátit z jednotlivých stavů - jako algoritmus (není to složité v podstatě jde o problém prohledávání slova v sobě samém a tím zjištění kolik symbolů v jednotlivých částech slova se shoduje s jeho začátkem). Takový algoritmus je pak možno aplikovat buď pro konkrétní příklad nebo obecně pro jakýkoliv vyhledávaný řetězec. Konkrétní příklad je jednoduše řešitelný po převodu na deterministický automat resp. naprosto stejným principem jako úloze předchozí (při simulaci automatu). Obecná implementace už je složitější a vyžaduje vytvoření pole návratové (přechodové) funkce. To však není těžké, jak již bylo diskutováno v textu (procedura InitNext): var next : array[1..255] of byte; a, p : string; M, N : byte; procedure InitNext; var i, j: integer; begin i := 1; j := 0; next[1] := 0; repeat if (j = 0) or (p[i] = p[j]) then begin inc(i); inc(j); next[i] := j; end else j := next[j]; until (i > M); end; function KMPSearch:integer; var i,j:integer; 78
86 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Aktivní programátorské úlohy begin i := 1; j := 1; InitNext; repeat if (j = 0) or (a[i] = p[j]) then begin inc(i); inc(j); end else j := next[j]; until (i > N) or (j > M); if j > M then KMPSearch := i - M else KMPSearch := i; end; begin a := 'tojetotozne'; N := length(a); p := 'totozne'; M := length(p); writeln('nalezeno na pozici:',kmpsearch); end. Výsledky aktivních programátorských úloh však mohou být opět velice užitečné pro samotnou výuku. Příkladem je úloha na vytvoření programu pro vytvoření rozkladové tabulky. Velmi zdařilou prací, jež vznikla během výuky teorie formálních jazyků a automatů, je aplikace RABJ studenta Koběrského pro výpočet množin FIRST a FOLLOW u LL(1) gramatik a vytvoření rozkladové tabulky. Všechny tyto práce přispívají nejen k osobnímu rozvoji studentů v programování, ale i v teoretické informatice, neboť jim umožňují lepší pochopení problematiky. Příklad, který můžeme vidět na obrázku 34, je gramatikou pro aritmetické výrazy s operátory +,* a závorkami. Gramatiku lze navrhnout přímo v tomto programu a poté si nechat vypsat následující položky strom pravidel, množiny FIRST, FOLLOW, N-epsilon, množinu konfliktů a vytvořit rozkladovou tabulku, pokud nenastal žádný konflikt. 79
87 IMPLEMENTACE PROGRAMOVACÍCH METOD V APLIKAČNÍM POJETÍ Přehled programátorských úloh v experimentu Obrázek 34: Aplikace RABJ pro tvorbu rozkladové tabulky LL(1) gram Přehled programátorských úloh v experimentu V předcházejících podkapitolách byly uvedeny používané aplikace a dva základní typy programátorských úloh, které jsou využitím programovacích metod. Nyní budou uvedeny konkrétní úlohy, jež studenti řešili při experimentu. Jsou rozděleny jednak podle toho, zda byla povinná (řešená na cvičeních) nebo povinně volitelná (v rámci projektu samostatně), jednak podle tematických celků (viz příloha). Tematický celek 1: Konečný automat a jazyky rozpoznatelné konečnými automaty, regulární jazyky a výrazy (experimentální skupina) Povinné (cvičení): - vytvoření jednoduché deterministické simulace konečného automatu (viz text práce), - implementace Knuthova-Morrisova-Prathova algoritmu, 80
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA BAKALÁŘSKÁ PRÁCE 2002 SEDLÁK MARIAN - 1 - OSTRAVSKÁ UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA KATEDRA INFORMATIKY A POČÍTAČŮ Vizualizace principů výpočtu konečného
ŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování
4.8.16. Úvod do programování Vyučovací předmět Úvod do programování je na naší škole nabízen v rámci volitelných předmětů v sextě, septimě nebo v oktávě jako jednoletý dvouhodinový kurz. V případě hlubšího
TEORETICKÁ INFORMATIKA VE VZTAHU K PROGRAMÁTORSKÝM TECHNIKÁM
TEORETICKÁ INFORMATIKA VE VZTAHU K PROGRAMÁTORSKÝM TECHNIKÁM Hashim Habiballa Přírodovědecká fakulta Ostravské Univerzity, katedra informatiky a počítačů 30.dubna 22, 701 03 Ostrava 1, Česká Republika
Standard studijního programu Informatika se zaměřením na vzdělávání
Standard studijního Informatika se zaměřením na vzdělávání A. Specifika a obsah studijního : Typ bakalářský Oblast/oblasti vzdělávání Informatika/Učitelství 60 % / 40 % 1 Základní tematické okruhy Diskrétní
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 11 METODY VERIFIKACE SYSTÉMŮ NA ČIPU Hana Kubátov vá doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta 1 informačních
5.1.7 Informatika a výpočetní technika. Časové, obsahové a organizační vymezení. ročník 1. 2. 3. 4. hodinová dotace 2 2 0 0
5.1.7 Informatika a výpočetní technika Časové, obsahové a organizační vymezení ročník 1. 2. 3. 4. hodinová dotace 2 2 0 0 Realizuje se vzdělávací obor Informatika a výpočetní technika RVP pro gymnázia.
Soulad studijního programu. Aplikovaná informatika
Standard studijního Aplikovaná informatika A. Specifika a obsah studijního : Typ Oblast/oblasti vzdělávání Základní tematické okruhy Kód Rozlišení Profil studijního Propojení studijního s tvůrčí činností
DIDAKTIKA FYZIKY DIDAKTICKÉ PRINCIPY (ZÁSADY) Prof. RNDr. Emanuel Svoboda, CSc.
DIDAKTIKA FYZIKY DIDAKTICKÉ PRINCIPY (ZÁSADY) Prof. RNDr. Emanuel Svoboda, CSc. CITÁTY KOMENSKÉHO Poněvadž při všem je nesnadněji odučovati se než učiti se, musí být opatrně přihlíženo k tomu, aby se ničemu
Formální jazyky a gramatiky Teorie programovacích jazyků
Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Brožura dobré praxe
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/02.0024 Brožura dobré praxe Informatika 1 Brožura dobré praxe informatika Materiál shrnuje
Standard studijního programu Učitelství informatiky pro střední školy
Standard studijního Učitelství informatiky pro střední školy A. Specifika a obsah studijního : Typ navazující magisterský Oblast/oblasti vzdělávání Informatika/Učitelství 60 % /40 % 1 Základní tematické
RNDr. Milan Šmídl, Ph.D. Co je to BOV?
RNDr. Milan Šmídl, Ph.D Co je to BOV? BOV = Badatelsky Orientovaná Výuka Inquiry Based Science Education (IBSE) Inguiry = bádání, zkoumání, hledání pravdy cílevědomý proces formulování problémů, kritického
Měření výsledků výuky a vzdělávací standardy
Měření výsledků výuky a vzdělávací standardy Erika Mechlová Ostravská univerzita v Ostravě Obsah Úvod 1. Měření výsledků výuky 2. Taxonomie učebních úloh 3. Standardy vzdělávání Závěry Úvod Měření výsledků
ZÁKLADNÍ METODOLOGICKÁ PRAVIDLA PŘI ZPRACOVÁNÍ ODBORNÉHO TEXTU. Martina Cirbusová (z prezentace doc. Škopa)
ZÁKLADNÍ METODOLOGICKÁ PRAVIDLA PŘI ZPRACOVÁNÍ ODBORNÉHO TEXTU Martina Cirbusová (z prezentace doc. Škopa) OSNOVA Metodologie vs. Metoda vs. Metodika Základní postup práce Základní vědecké metody METODOLOGIE
ÚVOD Didaktika fyziky jako vědní obor a jako předmět výuky v přípravě učitelů F Prof. RNDr. Emanuel Svoboda, CSc.
DIDAKTIKA FYZIKY ÚVOD Didaktika fyziky jako vědní obor a jako předmět výuky v přípravě učitelů F Prof. RNDr. Emanuel Svoboda, CSc. DIDAKTIKA FYZIKY JAKO VĚDNÍ OBOR - zákl. oblasti HROMADA poznatků, dovedností,
Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:
IB102 Automaty, gramatiky a složitost, 6. 10. 2014 1/29 Regulární výrazy Definice 2.58. Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: 1 ε, a a pro každé a
Standard studijního programu Učitelství matematiky pro střední školy
Standard studijního Učitelství matematiky pro střední školy A. Specifika a obsah studijního : Typ navazující magisterský Oblast/oblasti vzdělávání Matematika/Učitelství 60 % / 40 % 1 Základní tematické
10. Techniky formální verifikace a validace
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 10. Techniky formální verifikace a validace 1 Simulace není
Celoživotní vzdělávání
Celoživotní vzdělávání Nabízené akce CŽV - Přírodovědecká fakulta OU, ak.r. 2016/2017 Rozšiřující studium pro učitele o Rozšiřující studium biologie rozšíření o obor učitele biologie tak, aby po jeho absolvování
Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.
Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou
Časové a organizační vymezení
Vzdělávací oblast Vzdělávací obor Vyučovací předmět Týdenní hodinové dotace Časové a organizační vymezení Matematika a její aplikace Matematika a její aplikace Matematika 1. stupeň 2. stupeň 1. ročník
Výsledky učení (Intented Learning Outcomes) jako klíčový nástroj řízení kvality vzdělávacího procesu. Teaching Excellence
Výsledky učení (Intented Learning Outcomes) jako klíčový nástroj řízení kvality vzdělávacího procesu doc. Ing. Jiří Hnilica, Ph.D. Teaching Excellence Výsledky učení aneb jak jasně a ověřitelně popsat,
PEDAGOGIKA: OKRUHY OTÁZEK Státní závěrečná zkouška bakalářská
PEDAGOGIKA: OKRUHY OTÁZEK Státní závěrečná zkouška bakalářská (otázky jsou platné od ledna 2013) I. Teoretické základy pedagogických věd 1. Teorie výchovy a vzdělávání, vzdělanost a školství v antice.
Vzdělávací aktivity ve vzdělávání
Vzdělávací aktivity ve vzdělávání dospělých Cíle výuky, učební cíl Cíl výuky zachycuje to, co má účastník na konci učební jednotky vědět nebo umět. Učební cíl tedy popisuje ne to, co lektoři chtějí nebo
Příklad z učebnice matematiky pro základní školu:
Příklad z učebnice matematiky pro základní školu: Součet trojnásobku neznámého čísla zvětšeného o dva a dvojnásobku neznámého čísla zmenšeného o pět se rovná čtyřnásobku neznámého čísla zvětšeného o jedna.
Renáta Bednárová, Petr Sládek. Pedagogická fakulta MU Brno, Univerzita obrany Brno
Renáta Bednárová, Petr Sládek Pedagogická fakulta MU Brno, Univerzita obrany Brno Cíle Úvod Cíle projektu Charakteristika e-kurzu Několik poznámek k pedagogickému šetření Využití e-kurzu v praxi Možnosti
Další povinnosti / odb. praxe. Návrh témat prací. Návaznost na další stud. prog.
Teoretická informatika Složitost I 2p+1c Z, Zk P RNDr. Čepek, PhD není stanoven Složitost II 2p+1c Z, Zk PV RNDr. Čepek, PhD Vyčíslitelnost II 2p Zk PV doc. Kučera, CSc. Datové struktury I 2p Zk P RNDr.
Standard studijního programu Matematika se zaměřením na vzdělávání
Standard studijního Matematika se zaměřením na vzdělávání A. Specifika a obsah studijního : Typ bakalářský Oblast/oblasti vzdělávání Matematika/Učitelství 60 % /40 % 1 Základní tematické okruhy algebra
DIDAKTICKÝ EXPERIMENT VE VÝUCE TEORETICKÉ INFORMATIKY
DIDAKTICKÝ EXPERIMENT VE VÝUCE TEORETICKÉ INFORMATIKY HABIBALLA Hashim Abstrakt. Příspěvek popisuje pedagogický experiment výuky teorie formálních jazyků a automatů na základě aplikačního přístupu. Rozebírá
ALGORITMY A DATOVÉ STRUKTURY
Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu
METODICKÝ APARÁT LOGISTIKY
METODICKÝ APARÁT LOGISTIKY Metodický aparát logistiky jedná se o metody sloužící k rozhodování při logistických problémech Metodu = použijeme, v případě vzniku problému. Problém = vzniká v okamžiku, když
VÝUKOVÉ METODY A FORMY V ZEMĚPISE
VÝUKOVÉ METODY A FORMY V ZEMĚPISE Vyučování a učení činnost učitele činnost žáka učením si žáci osvojují vědomosti, dovednosti, návyky, ale i postoje a rozvíjí své schopnosti = kompetence veškerý vzdělávací
Projektově orientované studium. Kompetence
Pojem kompetence Současný pojetí pojmu kompetence je vágní a neuchopitelné, každý si pod ním může představit cokoliv a kdykoliv to změnit. Současné pojetí pojmu kompetence logicky neumožňuje zlepšení protože
Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory
Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový
InnoSchool Mapování vzdělávacích potřeb zapojených regionů
InnoSchool Mapování vzdělávacích potřeb zapojených regionů Náš projekt si klade za cíl vyvinout vysoce inovativní vzdělávací systém (InnoSchool), který bude atraktivní pro studenty středních škol, bude
Tabulace učebního plánu
Tabulace učebního plánu Vzdělávací obsah pro vyučovací předmět : Informační a výpočetní technika Ročník: 3. - 4. ročník (septima - oktáva) Tématická oblast DIGITÁLNÍ TECHNOLOGIE informatika hardware software
doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je
28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci
System for individual learning of mathematics. Agnieszka HEBA, Ph.D. Doc. RNDr. Jana KAPOUNOVÁ, CSc. dr hab. prof. UŚ Eugenia SMYRNOVA-TRYBULSKA
System for individual learning of mathematics Agnieszka HEBA, Ph.D. Doc. RNDr. Jana KAPOUNOVÁ, CSc. dr hab. prof. UŚ Eugenia SMYRNOVA-TRYBULSKA Obsah prezentace Výzkumný problém Teoretická východiska Hlavní
Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů
BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické
Struktura e-learningových výukových programù a možnosti jejího využití
Struktura e-learningových výukových programù a možnosti jejího využití Jana Šarmanová Klíčová slova: e-learning, programovaná výuka, režimy učení Abstrakt: Autorská tvorba výukových studijních opor je
Didaktický proces vzdělávání
Didaktický proces vzdělávání dospělých Základní prvky didaktického procesu ve vzdělávání dospělých: Didaktický proces = výuka CÍL= určen zvenčí např. politikou, společností, potřebami institucí OBSAH=
1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017
Znalostní systémy úvodní úvahy a předpoklady 26. září 2017 1-1 Znalostní systém Definice ZS (Feigenbaum): Znalostní (původně expertní) systémy jsou počítačové programy simulující rozhodovací činnost experta
II. MATEMATIKA A JEJÍ APLIKACE
II. MATEMATIKA A JEJÍ APLIKACE Charakteristika vzdělávací oblasti Tato oblast je v našem vzdělávání zastoupena jedním předmětem matematikou, od 1. do 9. ročníku. Podle vývoje dětské psychiky a zejména
TEORIE ZPRACOVÁNÍ DAT
Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky TEORIE ZPRACOVÁNÍ DAT pro kombinované a distanční studium Jana Šarmanová Ostrava 2003 Jana Šarmanová, 2003 Fakulta
Jak efektivně přednášet v době e-learningu
ČVUT v Praze Fakulta elektrotechnická Jak efektivně přednášet v době e-learningu David Vaněček Masarykův ústav vyšších studií Katedra inženýrské pedagogiky Evropský sociální fond Praha & EU: Investujeme
DIDAKTIKA PRÁCE S ICT V MŠ. Mgr. Daniel Janata daniel.janata@seznam.cz
DIDAKTIKA PRÁCE S ICT V MŠ Mgr. Daniel Janata daniel.janata@seznam.cz DIDAKTICKÉ ZÁSADY (PRINCIPY) VZDĚLÁVACÍHO PROCESU Didaktickými zásadami (principy) rozumíme nejobecnější pravidla didaktického procesu,
Matematika II. dvouletý volitelný předmět
Název předmětu: Zařazení v učebním plánu: O7A, C3A, S5A, O8A, C4A, S6A dvouletý volitelný předmět Cíle předmětu Tento předmět je koncipován s cílem umožnit studentům dosáhnout lepší výsledky ve společné
PARAMETRY EFEKTIVITY UČENÍ SE ŽÁKA V PROSTŘEDÍ E-LEARNINGU SE ZAMĚŘENÍM NA ADAPTIVNÍ VÝUKOVÉ MATERIÁLY
PARAMETRY EFEKTIVITY UČENÍ SE ŽÁKA V PROSTŘEDÍ E-LEARNINGU SE ZAMĚŘENÍM NA ADAPTIVNÍ VÝUKOVÉ MATERIÁLY Kateřina Kostolányová Ostravská univerzita v Ostravě 1 Podpořeno projektem ESF OP VK CZ.1.07/2.3.00/09.0019
Hodnocení a klasifikace při výuce F na SŠ. Jiří Tesař
Hodnocení a klasifikace při výuce F na SŠ Jiří Tesař Hodnocení a klasifikace Většinou nejneoblíbenější činnost učitele: stresové a konfliktní situace musí se rychle rozhodnout musí zdůvodnit své rozhodnutí
Informační média a služby
Informační média a služby Výuka informatiky má na Fakultě informatiky a statistiky VŠE v Praze dlouholetou tradici. Ke dvěma již zavedeným oborům ( Aplikovaná informatika a Multimédia v ekonomické praxi
Základy algoritmizace
Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice
I ÚVOD DO PEDAGOGIKY...
Obsah 5 OBSAH PŘEDMLUVA............................................ 7 I ÚVOD DO PEDAGOGIKY.............................. 9 II PEDAGOGIKA VOLNÉHO ČASU....................... 25 III PŘEDŠKOLNÍ PEDAGOGIKA..........................
Přírodní vědy. Doplňující pedagogické studium - geografie - učitelství pro SŠ a ZŠ
Přírodní vědy Doplňující pedagogické studium - biologie - učitelství pro SŠ a ZŠ Anotace: Program je zaměřen na pedagogickou a oborově didaktickou přípravu pro učitelství přírodovědných předmětů na základních
MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY. Učební osnova předmětu MATEMATIKA. pro nástavbové studium. varianta B 6 celkových týd.
MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY Učební osnova předmětu MATEMATIKA pro nástavbové studium (hodinová dotace: varianta A 4 až 5 celkových týd. hodin, varianta B 6 celkových týd. hodin) Schválilo
Vlastnosti regulárních jazyků
Vlastnosti regulárních jazyků Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti regulárních jazyků: vlastnosti strukturální, vlastnosti uzávěrové a rozhodnutelné problémy pro
vývojvoj a perspektivy
Příprava učitelu itelů fyziky na JU vývojvoj a perspektivy Jiří Tesař, katedra fyziky PF JU Brno 13. 14. 9. 2007 Historie přípravyp pravy učitelu itelů na PF JU 1948 Pedagogická fakulta (pod UK Praha)
Revize rámcových vzdělávacích programů. Helena Marinková
Revize rámcových vzdělávacích programů Helena Marinková 1. 6. 2017 první RVP z roku 2005 Proč? dokumenty vzdělávací politiky: Strategie vzdělávací politiky do roku 2020 Strategie digitálního vzdělávání
POSUDEK VEDOUCÍHO BAKALÁŘSKÉ PRÁCE
UNIVERZITA KARLOVA V PRAZE PEDAGOGICKÁ FAKULTA Katedra informačních technologií a technické výchovy POSUDEK VEDOUCÍHO BAKALÁŘSKÉ PRÁCE Jméno a příjmení autora: Lukáš Valenta Studijní program: B7507 Specializace
Organizace výuky, podmínky zápočtu a zkoušky. Vyučovací metody formy a metody vyučování. Vyučovací jednotka, praktické dokumenty ve výuce
1 4.10. 2 11.10.* 3 18.10. 4 25.10. * datum téma Organizace výuky, podmínky zápočtu a zkoušky. Pravidla prezentace Vyučovací metody formy a metody vyučování Vyučovací jednotka, praktické dokumenty ve výuce
Web based dynamic modeling by means of PHP and JavaScript part III
Web based dynamic modeling by means of PHP and JavaScript part III Jan Válek, Petr Sládek, Petr Novák Pedagogická fakulta Masarykova Univerzita Poříčí 7, 603 00 Brno Úvodem Člověk se učí prostřednictvím
Cíle vyučování zeměpisu
Cíle vyučování zeměpisu stanovení si jasných, jednoznačných a dosažitelných cílů by mělo určovat základní obsahové prvky učiva teprve poté je vhodné se ptát na prostředky cíle obsah prostředky základní
Itálie Dotazník pro učitele VŠ připravující budoucí učitele cizích jazyků Zpracování údajů
Itálie Dotazník pro učitele VŠ připravující budoucí učitele cizích jazyků Zpracování údajů O Vás 1. Dotazník vyplnilo sedm vysokoškolských pedagogů připravujících budoucí učitele cizích jazyků. 2. Šest
Praktické využití Mathematica CalcCenter. Ing. Petr Kubín, Ph.D. xkubin@fel.cvut.cz www.powerwiki.cz Katedra elektroenergetiky, ČVUT v Praze, FEL
Praktické využití Mathematica CalcCenter Ing. Petr Kubín, Ph.D. xkubin@fel.cvut.cz www.powerwiki.cz Katedra elektroenergetiky, ČVUT v Praze, FEL Obsah Popis Pojetí Vlastnosti Obecná charakteristika Ovladače
OSA. maximalizace minimalizace 1/22
OSA Systémová analýza metodika používaná k navrhování a racionalizaci systémů v podmínkách neurčitosti vyšší stupeň operační analýzy Operační analýza (výzkum) soubor metod umožňující řešit rozhodovací,
U Úvod do modelování a simulace systémů
U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení
PROPOJENÍ VĚDY, VÝZKUMU, VZDĚLÁVÁNÍ A PODNIKOVÉ PRAXE. PhDr. Dana Pokorná, Ph.D. Mgr. Jiřina Sojková, Státní zámek Sychrov, 21. 23. 5.
PROPOJENÍ VĚDY, VÝZKUMU, VZDĚLÁVÁNÍ A PODNIKOVÉ PRAXE PhDr. Dana Pokorná, Ph.D. Mgr. Jiřina Sojková, Státní zámek Sychrov, 21. 23. 5. 2012 APSYS Aplikovatelný systém dalšího vzdělávání pracovníků ve vědě
Moderní systémy pro získávání znalostí z informací a dat
Moderní systémy pro získávání znalostí z informací a dat Jan Žižka IBA Institut biostatistiky a analýz PřF & LF, Masarykova universita Kamenice 126/3, 625 00 Brno Email: zizka@iba.muni.cz Bioinformatika:
Matematika I. dvouletý volitelný předmět
Název předmětu: Zařazení v učebním plánu: Matematika I O7A, C3A, O8A, C4A dvouletý volitelný předmět Cíle předmětu Tento předmět je koncipován s cílem usnadnit absolventům gymnázia přechod na vysoké školy
Úvod do modelování a simulace. Ing. Michal Dorda, Ph.D.
Úvod do modelování a simulace systémů Ing. Michal Dorda, Ph.D. 1 Základní pojmy Systém systémem rozumíme množinu prvků (příznaků) a vazeb (relací) mezi nimi, která jako celek má určité vlastnosti. Množinu
Rozvíjení informační gramotnosti v pregraduální přípravě učitelů na PřF OU. Doc. PaedDr. Dana Kričfaluši, CSc.
Rozvíjení informační gramotnosti v pregraduální přípravě učitelů na PřF OU Doc. PaedDr. Dana Kričfaluši, CSc. Úvodem Člověk přece vţdy musel pracovat s informacemi tak proč se s tím nadělá tolik křiku????
Projektově orientované studium Základní principy a filozofie PBL Co a co není PBL Co je to projekt. CIIV červenec 2013 odpovědný manažer: Petr Hynek
Základní principy a filozofie PBL Co a co není PBL Co je to projekt Projektově orientované studium není nic nového Po celou historii je stále a znova voláno po praktické výuce Fantazie je důležitější než
Algoritmizace. 1. Úvod. Algoritmus
1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá
Teorie systémů TES 1. Úvod
Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti. Teorie systémů TES 1. Úvod ZS 2011/2012 prof. Ing. Petr Moos, CSc. Ústav informatiky a telekomunikací Fakulta dopravní ČVUT v Praze
Standard studijního programu Deskriptivní geometrie se zaměřením na vzdělávání
Standard studijního Deskriptivní geometrie se zaměřením na vzdělávání A. Specifika a obsah studijního : Typ bakalářský Oblast/oblasti vzdělávání Matematika/Učitelství 60 % /40 % 1 Základní tematické okruhy
Úvod do Informatiky. 0 Organizační pokyny k výuce IB000. Organizátor předmětu: Ondrej Moriš Cvičící (online přes IS MU):
0 Organizační pokyny k výuce IB000 Úvod do Informatiky 2010 Přednášející: Petr Hliněný hlineny@fi.muni.cz Organizátor předmětu: Ondrej Moriš xmoris@mail.muni.cz Cvičící (online přes IS MU): Martin Derka,
STRUČNÝ POPIS E LEARNINGOVÝCH KURZŮ
STRUČNÝ POPIS E LEARNINGOVÝCH KURZŮ A) KURZY ZAMĚŘENÉ NA METODIKU DISTANČNÍHO VZDĚLÁVÁNÍ A E LEARNINGU. Metodika on line vzdělávání E learning v distančním vzdělávání B) KURZY ZAMĚŘENÉ NA PRAVIDLA VEDENÍ
Úvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška první Miroslav Kolařík Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Co a k čemu je logika? 2 Výroky a logické spojky
VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ
VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi
Informatika na gymnáziu Dan Lessner
Informatika na gymnáziu Dan Lessner ksvi.mff.cuni.cz/ucebnice ucime-informatiku.blogspot.cz Osnova 1. Osnova 2. Úvod 3. Výzkumné otázky 4. Metodika 5. Vymezení oboru 6. Pilotáž a výsledky 7. Závěr Credit:
Konstruktivistické principy v online vzdělávání
Konstruktivistické principy v online vzdělávání Erika Mechlová Ostravská univerzita ESF Čeladná, 4.11.2005 Teorie poznání Teorie poznání, noetika - část filozofie Jak dospíváme k vědění toho, co víme Co
Logika a logické programování
Logika a logické programování témata ke zkoušce Poslední aktualizace: 16. prosince 2009 Zkouška je písemná, skládá se obvykle ze sedmi otázek (může být více nebo méně, podle náročnosti otázek), z toho
Reálné gymnázium a základní škola města Prostějova Školní vzdělávací program pro ZV Ruku v ruce
2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY 2. 2 Cvičení z matematiky Časová dotace 7. ročník 1 hodina 8. ročník 1 hodina 9. ročník 1 hodina Charakteristika: Předmět cvičení z matematiky doplňuje vzdělávací
4.9.70. Logika a studijní předpoklady
4.9.70. Logika a studijní předpoklady Seminář je jednoletý, je určen pro studenty posledního ročníku čtyřletého studia, osmiletého studia a sportovní přípravy. Cílem přípravy je orientace ve formální logice,
Kognitivní informatika očima studentů
Kognitivní informatika očima studentů Výsledky ankety ZS 2011/2012 Kateřina Farská O dotazníku Reponse rate relativně vysoká: 49% (odpovědělo 26 z 53 aktuálně studujících) Až na výjimky vysoká kvalita
Výpočetní a aplikovaná matematika
Magisterský studijní program: Výpočetní a aplikovaná matematika (garant: prof. RNDr. Jiří Bouchala, Ph.D.) 8. února 2019 1/12 Specializace: Aplikovaná matematika Výpočetní metody a HPC 2/12 Charakteristika
2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY
2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY 2. 2 Cvičení z matematiky Časová dotace 7. ročník 1 hodina 8. ročník 1 hodina 9. ročník 1 hodina Charakteristika: Předmět cvičení z matematiky doplňuje vzdělávací
Užití software Wolfram Alpha při výuce matematiky
Jednalo se tedy o ukázku propojení klasického středoškolského učiva s problematikou běžného života v oblasti financí za pomoci využití informačních technologií dnešní doby. Hlavním přínosem příspěvku je
Reálná čísla a výrazy. Početní operace s reálnými čísly. Složitější úlohy se závorkami. Slovní úlohy. Číselné výrazy. Výrazy a mnohočleny
A B C D E F 1 Vzdělávací oblast: Matematika a její aplikace 2 Vzdělávací obor: Cvičení z matematiky 3 Ročník: 9. 4 Klíčové kompetence (Dílčí kompetence) 5 Kompetence k učení učí se vybírat a využívat vhodné
Didaktika účetnictví Kurs DEP507
Snímek 1 Didaktika účetnictví Kurs DEP507 marie.fiserova@oavin.cz Ing. Marie Fišerová, Ph.D. Snímek 2 Obsah výchovně vzdělávací práce v účetnictví na OA a EL Kurs 1DP507 Snímek 3 Didaktika ekon. předmětů
PROFIL BUDOUCÍHO ABSOLVENTA OBORU INFORMATIKA
PROFIL BUDOUCÍHO ABSOLVENTA OBORU INFORMATIKA Cyril Klimeš Ostravská univerzita, katedra informatiky a počítačů, 30. dubna 22, 701 03 Ostrava, ČR, e-mail: cyril.klimes@osu.cz Abstrakt Tento příspěvek si
POSUDEK VEDOUCÍHO BAKALÁŘSKÉ PRÁCE
POSUDEK VEDOUCÍHO BAKALÁŘSKÉ PRÁCE Jméno studenta Branný Jan Název práce Jméno vedoucího práce Jméno oponenta práce Realizace modulárního CMS pro digitální agentury Ing. David Hartman Ph.D. Ing. Lukáš
čtyřleté gymnázium a vyšší stupeň osmiletého gymnázia
DODATEK Č. 1 KE ŠKOLNÍMU VZDĚLÁVACÍMU PROGRAMU čtyřleté gymnázium a vyšší stupeň osmiletého gymnázia Proč?... Proč ne? Škola: Ředitelka školy: Mgr. Ivana Vitisková Platnost dokumentu: od 1. 9. 2015 Dodatek
Základy umělé inteligence
Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v
Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Pojem algoritmus doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Pojem algoritmus 54 / 344
Bakalářský studijní obor informatika
Bakalářský studijní obor informatika Předpoklady Struktura studia Přihlášky Poradenství Vzdělání v bakalářském oboru informatika nabízeném na Technické univerzitě v Chemnitz představuje vyvážený kompromis
Matematika a její aplikace Matematika 1. období 3. ročník
Vzdělávací oblast : Vyučovací předmět : Období ročník : Matematika a její aplikace Matematika 1. období 3. ročník Počet hodin : 165 Učební texty : H. Staudková : Matematika č. 7 (Alter) R. Blažková : Matematika
Vysoká škola báňská Technická univerzita Ostrava TEORIE ÚDRŽBY. učební text. Jan Famfulík. Jana Míková. Radek Krzyžanek
Vysoká škola báňská Technická univerzita Ostrava TEORIE ÚDRŽBY učební text Jan Famfulík Jana Míková Radek Krzyžanek Ostrava 2007 Recenze: Prof. Ing. Milan Lánský, DrSc. Název: Teorie údržby Autor: Ing.
Vývoj vědeckého myšlení
Vývoj vědeckého myšlení Systémovost logistického řešení je spjata se schopností řešit komplexy navzájem souvisejících úkolů. V rámci vývoje vědeckého myšlení uvádí americký autor Waren Weaver tři vývojová
Reálné gymnázium a základní škola města Prostějova Školní vzdělávací program pro ZV Ruku v ruce
3 INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE UČEBNÍ OSNOVY 3. 2 Informatika pro pokročilé Časová dotace 9. ročník 1 hodina Charakteristika: Předmět informatika pro pokročilé doplňuje vzdělávací obsah předmětu
OBOROVÁ DIDAKTIKA, HISTORIE DIDAKTIKY A VÝUKY CHEMIE
OBOROVÁ DIDAKTIKA, HISTORIE DIDAKTIKY A VÝUKY CHEMIE RNDr. Milan Šmídl, Ph.D. Co je to didaktika? didaktické...poučné umělecké dílo přednášené rytmicky, s fantazií, půvabně nebo energicky (J. W. Goethe