Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A programkészítés didaktikája

Hasonló előadás


Az előadások a következő témára: "A programkészítés didaktikája"— Előadás másolata:

1 A programkészítés didaktikája
Szlávi Péter Szlávi Péter: „A programkészítés didaktikája”

2 A programkészítés didaktikája
Tartalom Elöljáróban – célok Három alapelv – a programkészítés folyamata ürügyén A programozás gondolkozási eszköztára A gondolkozási eszközök használat közben Absztrakció Lexikalitás kontra kreativitás Programozás – modellezés A programkészítés didaktikája Szlávi Péter: „A programkészítés didaktikája”

3 A programfejlesztés didaktikája
1. Elöljáróban – célok Értelmező szótár: „didaktika – oktatástan; a neveléstudomány-nak az oktatás elméletével és módszertanával foglalkozó ága”. Mi az, hogy didaktika? Elsősorban a közoktatásbeli programkészítés-ről lesz szó. Neumann-i (algoritmikus, procedurális) nyelvekhez kapcsolódó didaktika (elmélet ← módszertan). (Bár csak) egy-modulos programtermék, a programozás lényegi részeit érinti (nem térek ki az adatabsztrakcióra). Módszertan gyökerű elmélet: a programozás általunk követett módszertanához kapcsolódó fogalmak definiálása, jellemzése. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

4 2. Három alapelv – a programkészítés folyamata ürügyén
Pólyai megközelítés: kérdés-középpontú. Didaktika: Pólyai elv: „jól kérdez  jól analizál  jól »problémameg-old«” Programozás folyamata  programkészítés folyamata Behelyezzük a programozás számunkra érdekes lépéseit a „nagy egészbe”. ad „Pólyai…” A legrövidebb módja vmi kézzel foghatóvá tételének: a kérdéseken keresztüli… A megértés első stációja: a kérdezni tudás. Amíg vki kérdezni sem tud, addig semmit sem tud a dologról. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

5 2. Három alapelv – a programkészítés folyamata ürügyén
Megjegyzés a „jól kérdez”-hez: idézet egy hallgatói levélből ( ): „Az Algoritmizálás, adatmodellezés Tételek 1 előadásával kapcsolatban lenne kérdésem. Az összegzés tétel mátrixra vonatkozó algoritmusánál a 8. dián N,M, és X változókként vannak feltüntetve, ám az ezt követő dián, az eljárásnál már konstansként szerepelnek.  Melyik az igazi? Vagy ez nem elírás, és azért jelölődnek így, mert a beolvasás után már nem változnak? Illetve, ha a beolvasásnál vesznek fel értéket, miért konstansként adjuk meg őket? (gondolom, több bemenet esetén okozhat ez galibát)” A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

6 2. Három alapelv – a programkészítés folyamata ürügyén
Megjegyzések a folyamathoz: iteratív átfedők a lépések Megjegyzések a didaktikához: a lépések „vegytiszta” tárgyalása „Madártávlatból közelí-tés” alapelve – célja a tudatosítás „Keretbe foglalás” alapelv: bevezetés + összefoglalás Ez példája a fontos (általános) didaktikai alapelvnek, a „madártávlatból közelítés” elvnek. A „madártávlatból közelítés” elv: a konkrétan vizsgálandó tananyag tágabb témákkal való összefüggéseire világítunk rá. A tágabb témacsoport kontextusába helyezve válnak érthetővé a taglalt téma céljai, kiindulópontjai. A (majdan tárgyalt) részletek nem lógnak „légüres térben”. A programkészítés folyamata (legalább) kétszer is említendő: bevezetésként + (az egyes részek taglalása után) összefoglalásként. Jó a kirándulással való hasonlítgatás: Kezdetben a résztvevőknek térképen bemutatjuk, merre fogunk járni. Egy-egy szakasz megtétele után jelezzük, h. hol tartunk, mi következik, visszatekintünk, h. honnan jöttünk. A kirándulás végén összegezzük az élményeket, hol jártunk, miket tapasztaltunk. Gyerekkoromban –emlékszem– roppantul zavart, ha nem tudtam mi meddig tart, mennyi van még hátra.  Ez példája a másik fontos (általános) didaktikai alapelvnek, a „keretbe foglalás” elvnek. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

7 2. Három alapelv – a programkészítés folyamata ürügyén
Amire koncentrálunk a továbbiakban… A szorosan vett programozás folyamata  programkészítés folyamata A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

8 3. A programozás gondolkozási eszköztára
A programozás során a feladat egyre finomabb mo-delljeinek sorozatát hozzuk létre, amiben addig kell eljutni, ahol már a választott programozási nyelv szókincse jelenti a modell alapját. Modellezés = „modellek gyártása”: konkrét(feladat)absztrakt(feladat/megoldás)konkrét(megoldás) Gondolkozási műveletek: Nyelvi absztrakció Analogikus gondolkozás Algoritmikus absztrakció Információ-konverzió Dekompozíció, szuperpozíció Intuíció Variáció A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

9 3. A programozás gondolkozási eszköztára
A programozás: a feladat egyre fino-mabb modelljeinek át-írási sémákon alapu-ló sorozata, amiben addig kell eljutni, ahol már a választott prog-ramozási nyelv szókin-cse (utasításkészlete) jelenti a modell alap-ját. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

10 A programfejlesztés didaktikája
3. A programozás gondolkozási eszköztára S2 S1 M1 M2 M0 S3 Jelölések: Si : az átírás i. „sémája” Mi : a megoldás i. „modellje” S4 M3 M4 M3 M3 A programfejlesztés folyamata = megoldási modellek és átírási sémák láncolata. S3 A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

11 A programfejlesztés didaktikája
3. A programozás gondolkozási eszköztára S2=Alg. S1=Spec. M1 M2 M0 S3=Fin. Jelölések: Si : az átírás i. „sémája” – Specifikálás, Al-goritmizálás, Fi-nomítás, Kódolás Mi : a megoldás i. „modellje” – Feladat, Specifi-káció, Algorit-mus (legfelsőbb, összes szinten), Kód S4=Kód. M3 M4 M3 M3 A megoldásmodellek és az átírási sémák miben léte. S3 S3 A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

12 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Nyelv? Nyelv=szókincs (=absztrakció)+nyelvtan(=ab-sztrakció) Kiinduló pontok: „bármely nyelv absztrakció” a programozás = modell-sorozat (a feladattól a kódig) modell  specifikus nyelv sajátos szókinccsel, nyelvtannal Mennyire kell „bírni” az egyes nyelveket? Modell-nyelvek szinterei: Feladatmegfogalmazás Tervezés Kódolás Kiinduló pont: „egy nyelv elsajátítása nagyfokú absztrakciót kíván, hisz minden nyelv elemei, struktúrái elvonatkoztatások. Ezek szintaktikus és szemantikus viszonyainak ismerete nélkül reménytelen bármely nyelv helyes alkalmazása.” A szintaxisnak van két szintje: a „konkrét” szint az „írásos” szint (ezzel foglalkoznak a nyelv helyesírási szabályai), az absztrakt szint mentes a leírás akkurátusságától, csak a lényegi vonásokat tartalmazza (lehetnek benne hibás „szavak”, hibás „szószerkezetek”, ha egyértelműen dekódolható, akkor ugyanolyan jó, mint az azonos értelmű hibátlan). Csak „hiedelem”, hogy lehet programozni specifikálás nélkül! Minden programozó specifikál, csak éppen tudat alatt, ill. ezt a tevékenységet a következő lépéssel (rosszabb esetben a kódolással) együtt végzi… s ebből támadnak a gondok. Ezt a nyelvet „beszélni” kell, nem feltétlenül „írni”. Azaz a formalizáltság kezdetben nem lényeges; csak a használat tudatossága. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

13 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Pólyától vett idézet: (Kovács Emőd közvetítésével) Specifikálás – mint „nyelvi absztrahálás”. (A korábbi dián S1 séma-követés.) A lényeg kiszűrése – mik a kiinduló adatok, a meghatározandók (eredményadatok), az összefüggések a kiinduló adatok között – szerkezeti és tartalmi viszonyaik a kiinduló és az eredményadatok egymáshoz való viszonya – tartalmi kapcsolataik? Gondolati szerkezet: „embrionális” nyelvtan (alanyokkal=be/ki, állítmányokkal)nyelvtan Hasonló a tanuló dolga, mint a matematikai szöveges feladatoknál: értelmeznie kell tudni. A fent felsoroltak adnak támpontokat az értelmezéshez. A specifikációs „nyelv” szókincsét ezen támpontok segítségével lehet létrehozni. Pólyaiul: Milyen adatok állnak rendelkezésre? Milyen választ vár a feladat? Mit tudunk az alapadatokról? Mondjunk néhány példát! Milyen összefüggések vannak az alapadatok között? Hogyan határozzák meg az eredményadatokat az alapadatok? Mondjuk példát az alapadatokra és a hozzátartozó eredményadatokra! A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

14 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
A következő absztrakciós lépés: a konkrét adatok adathalmazokká lényegítése. Nyelvi absztrakció(s keret) – támpontok: néhány alaphalmazra visszavezetés, néhány halmazkonstrukció felhasználásával. Szókincs-bővitési szabályok (nyelvtan) Szókincs Alaphalmazok:  Z (Egészek)  R (Valósak)  S (Szövegek) … Halmazkonstrukciók:   (Direktszorzás)  * (Iterálás)  = (Definiálás) … ad Halmazkonstrukciók: Ezt „alátámasztó” tapasztalatai vannak egy középiskolásnak, hiszen tanult már síkgeometriát, amelyben egy pontot két koordináta együtt jellemez, tud arra a kérdésre is választ adni, h. mi jellemzi egy adott országot, amire kb. ilyesmiket válaszol: fővárosa X, lakosainak száma N, területe T, GDP-je G… azaz ezek együtt jellemzik az országot. Az adathalmaz megalkotás és „nevesítése”: megtalálandó az a legszűkebb halmaz, amely az adathoz illik  megtalálandó az a „szó”, amely az adat ezen vonását legtökéletesebben fejezi ki. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

15 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Chomsky [Ch/15] értelemben már a specifikáció is nyelv. Ui.: „… nyelvnek tekintem a mondatok valamely (véges vagy végtelen) halmazát; minden egyes mondat véges hosszúságú, és elemek véges halmazából épül fel. … valamely formalizált matematikai rend-szer „mondatai” is nyelvnek tekinthetők.” E nyelv „szintaktikájának” ismerete csupán annyira feltétele a nyelv ismeretének, amennyire egy termé-szetes nyelv esetében az írás (a „formális” nyelvtan) ismerete (v.ö. specifikációs analfabetizmus). Ennek a nyelvnek az „absztrakt” (értsd: lényegi) szintaxisa a fontos (vagyis, hogy „miről kell általa nyilatkozni”), nem pedig a „konkrét” (azaz formálisan szabályozott) szitaxis. … a középiskolás progra-mozó is legyen képes vála-szolni a kérdésekre: mi a be-menet?, mi a kimenet? … A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

16 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Tervezés – mint „nyelvi absztrahálás”. (A korábbi dián S2.) A tervezés valamely „szabványos” leírónyelven tör-ténik, pl.: blokkdiagram struktogram pszeudókód stb. A lényegük: alkalmasak a jellegzetes és elegendő (tevé-kenység-) struktúrák lejegyzésére, és kellően rugalma-sak, de egyértelműek. } „rajzos” nyelv „szöveges” nyelv „… jellegzetes és elegendő …”: a programozási nyelv-osztályhoz (programozási paradigmához) illeszkedő tevékenységi struktúrák (algoritmikus esetén: szekvencia, elágazások, ciklusok) közül minimális számú „… rugalmas, de egyértelmű …” ne korlátozza feleslegesen a nyelv az alkalmazás szabadságát; korlát: az EMBERI olvasó számára egyértelműség A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

17 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
A tervezés során alkalmazott nyelvi absztrakciós szintek: Utasítás-szint + Finomítás-szint [l. Dekompozíciónál!] A nyelv szavai = utasítások + finomítások A nyelv struktúrai = előre definiáltak + finomításdefiníciók Programozási tételek szintje A nyelv szavai = utasítás-szint A nyelv struktúrái = tétel-finomítások + utasítás-szint Modularizálás szintje A nyelv szavai = programozási tételek szintje A nyelv struktúrai = programozási tételek szintje + modulok ad Programozási tételek szintje: az utasítás szint mellé társulnak a definiált tételsablonok, amelyeket akár mint makrókat, akár mint függvényeket képes használni (s ez esetben mint előredefiniált finomításokra hivatkozik a programozó) ad Modularizálás szintje: a „szerszámkészítés” szintje, azt kell jól látni, h. a „szerszám” (pl. a típus) miként lesz kényelmesen, hatékonyan, de biztonságosan felhasználható a mindenkori programozó számára; az „eszköz-funkció-univerzum” gyártás szintje; ennek során a mindenkori programozó elvonatkoztatására épít a modell-programozó A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

18 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Ad hoc (nem rögzített szintaxisú) grafikus nyelvi prak-tikák is („margószéli firkák”), amelyeket a pillanat prob-lémája ihlet. Pl. a beillesztéses rendezés egy lényegi lépéséhez: A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

19 A programfejlesztés didaktikája
3. A programozás gondolkozási eszköztára – nyelvi absztrakció tj-1ti+1 , tj>ti+1 t 1. j. i. i.+1 növekvően rendezett Ugyanez lépésenként: tj-1ti+1 , tj>ti+1 t 1. j. i. i.+1 növekvően rendezett A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

20 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Érdemes itt Pólya Györgyöt [PGyG/71] idézni: „Az ilyen típusú feladat beható elemzését azzal kezdjük, hogy felrajzolunk egy olyan ábrát, amely tartalmazza az ismeretlent és az adatokat, mégpedig olyan elrendezésben, ahogy azt a feladat kikötése előírja. Ahhoz, hogy a feladatot világosan megértsük, minden adatot, a kikötés minden egyes részét külön-külön szem-ügyre kell vennünk; akkor azután egyetlen képbe egyesítjük az összes részleteket, a kikötést mint egészet vizsgáljuk meg, és meg-próbáljuk együtt látni a feladat által előírt különféle összefüggése-ket. Mindezeket a részleteket papirosra felrajzolt ábra nélkül aligha tudnánk kézben tartani, szétválasztani és ismét összerak-ni.” A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

21 3. A programozás gondolkozási eszköztára – nyelvi absztrakció
Kódolás – mint „nyelvi absztrahálás”. (A korábbi dián S4.) Abszurd állítás: itt már kevés nyelvi absztrakcióra van szükség. (Feltétel: a helyes programozási stílus, azaz, ha az algoritmus kész.) Ok: elegendőek jól kidolgozott kódolási szabályok, amelyek mellett „kvázi” mechanikus az átírás. Annyira jelent nyelvi absztrakciós tevékenységet, amennyire egy primitív szintaxisú nyelvpár közötti fordítói tevékenység. Érdemes ennél az absztrakciós szintnél újra felidézni a tervezés során idézett szinteket (16. dia), és feltenni a kérdést: mennyire támogatja az adott választott programozási nyelv az egyes szinteket! (utasítás szint – általában nem probléma; prTételek szintje – makrósan [paraméterezhetők-e a makrók], függvényesen [típus mint paraméter?]; modul-szint – van-e modulfogalom, generic fogalom? Itt válik fontossá a választott programozási nyelv „tipikussága” = közelisége az algoritmikus nyelvhez A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

22 3. A programozás gondolkozási eszköztára – analógia
Az analógiás feladatmegoldás sémája: rokon feladat keresés + kapcsolódás felderítés + rokon feladat megoldásának (=rokon megoldás) felidézése + rokon megoldás aktualizálása. Rokon feladat: azonos a problémafelvetés (absztrahálás útján ilyenek gyűjthetők, csoportosíthatók) Rokon megoldás: szerkezetileg azonos algoritmus (algoritmikus nyelvi elemek és struktúrák; l. nyelvi absztr.) ad „Az analógiás…” A paraméterek felismerése: absztrakció (l. a specifikálásnál)! Rokonsági „mérték”: feladat-rokonfeladat „paraméterszám” és szerep, valamint kapcsolat illeszkedés (amik közül a „fontosságuk” szerint szűrök – absztrahálok ismét!). ad „Rokon feladat” Az „azonos problémafelvetés”-t jelezheti (Pólya után) a kérdőszó. De figyeljünk rá, mert csalóka lehet! Pl. Melyik (kiválasztás)  hányadik (kiválasztás)   Melyik (maximum kiválasztás) Ugye mennyire másról van szó! A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

23 3. A programozás gondolkozási eszköztára – analógia
Módszertani kérdés: az analóg feladat-, megoldásbázis saját tapasztalatokon alapuljon-e, vagy irányított (preparált) legyen? Mérlegelés: irányított kevesebb időigény (lexikális) saját tapasztalatokon alapuló mélyebb rögzülés (kreativitást fejlesztő) A Programozásmódszertan tárgyunkban egy közbülső, kompromisszumos megoldást követtünk: Előadáson 4-5 konkrét példafeladat, majd az absztrakt feladat  absztrakt megoldás ( konkrét megoldások). Gyakorlaton kapcsolódó konkrét feladatok gyűjteménye  (többé-kevésbé) egyénileg megoldva. A didaktikával kapcsolatban érdemes itt idézni Pólya Györgyöt az általa „származtatási elv”-nek nevezett elvet: „… A származtatási elv szerint a tanulónak azt az utat kell követnie, amelyiken az igazi feltalálók járnak. A tanulónak –az aktív tanulás elve szerint– annyit kell felfedeznie az anyagból, amennyit csak képes. A két elv összekapcsolása mutat arra, hogy a tanulónak újból kell felfedeznie azt, amit meg kell tanulnia.” [PGyP/II. kötet 143.o.] Az idő szűke  kreativitás fejlődése. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

24 3. A programozás gondolkozási eszköztára – algoritmikus absztrakció
Algoritmikus absztrakció – gondolati (nem nyelvi!) absztrahálódás folyamata: konkrét feladatokhoz konkrét programmegoldások  absztrakt utasítás-/adatfajták (szekv.,elág.,cik./típus)  ezek „rekonkretizálódása”  „konkretizálódott” utasítás-/adatfajtákkal absztrakt program-sablonok/típuskonstrukciók (programozási tételek/modulok)  „konkretizálódott” tételek absztrahálódása adatszinten (tömbsorozat/halmaz), ill. leképezéssé lényegülése, ill. …  alkalmazás: tételkombinálás=függvénykombinálás  … Kiváló párhuzam lehet a fentihez a programozási nyelvekbeli típus lényegi metamorfózisai. Érdemes belegondolni! [lógia Szilánkok 1: Értéktípus fejlődése algoritmikus nyelvekben.] Ez a folyamat azonban nem informatika specifikus, pláne nem programozáshoz kötött. Sokkal általánosabb gondolkodásbeli folyamat. L. Fényes Imre: A fizika eredete c. 18. o. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

25 3. A programozás gondolkozási eszköztára – algoritmikus absztrakció
Elemi algoritmikus absztrakcióhoz: „felülről lefelé tervezés” + „lépésenkénti finomítás” elve  finomítás finomítás = algoritmikus nyelv bővítése (gondolati síkon) a finomítás és a kezdő programozó („kódrövidítő” szerep, csak később ébred rá: paraméterezhetőség  „absztrakciós eszköz”)  absztrahálás  absztrahálás ad „finomítás = algoritmikus nyelv bővítése”: Dahl-Hoare-Dijkstra fogalom-hierarchiáról beszél. ad „csak később ébred rá: paraméterezhetőség”: Ez ismerhető föl, amikor a programozó elkezdi gyűjteni a saját rutinkészletét. Példamutatással siettethető (l. SzP „AltRutin.inc”-e). ad „feladatáltalánosítás”: Érdekes szituációra példa, amikor egy elvet (jelen esetben a szóban forgót) egy eszköz kiforratlansága, bénasága (a statikus tömb fogalma) segít elfogadtatni. Konkrétan: a tömb-szerkezet statikussága miatt célszerűnek látszik bevezetni a maximális méretet megtestesítő konstanst… belátható okok miatt nevesítve… lehetővé téve az ilyen értelmű általánosítást. Ezzel kapcsolatos programozói típushiba rávilágít azonban ezen absztrakció meg nem értésére: a tényleges és maximális méretet jelentő konstans és változó összecserélése. Még egy absztrakció: a „feladatáltalánosítás” elve („belső”, látens paraméterek definiálá-sa: konstansok, típusok; „fordítási paraméterek”) A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

26 3. A programozás gondolkozási eszköztára – algoritmikus absztrakció
Magasabb szintű absztrakcióhoz – rokonfeladatok absztrakciója: a programozási tételek (absztrakt feladat + absztrakt algoritmus + bizonyítás; l. példa) Praktikusan: ezek memóriakímélők „Nyelvi” vetületek a gondolatisághoz: A tételek fejsorának problémamegoldást segítő szerepe: „illesztési mintaként” szolgál. (Ez már több, mint csak „beszélt” nyelvismeret.) „ NN, XH* ” vagy „ NN, XHN ”? Sorozat-nyelv vagy halmaz-nyelv? ad „* vs. N”: A „*” alkalmazása 1. felhívja a figyelmet a tömbök maximális és aktuális méretének –esetleges– különbözőségére. 2. az előfeltételbeli összekapcsolása a beolvasás kontrollálásában információforrás. ad „Sorozat-nyelv vagy halmaz-nyelv?”: Informatika Tanárszak vagy Programozó szak [F] Programozásmódszertan tárgy felépítése eltérő matematikai alapokon. [A bolognai rendszer előtti állapotra utalás.] Az utóbbi kettő a specifikáció és a tervezés kapcsolatát feszegetik. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

27 3. A programozás gondolkozási eszköztára – algoritmikus absztrakció
A programozási tétel része Példa Absztrakt feladat – specifikáció: Eldöntés(H*,F(H,L)):L Bemenet: NÎN, XÎH*, T:H®L Kimenet: VANÎL Előfeltétel: N=Hossz(X) Utófeltétel: VAN º $iÎ[1..N] : T(xi) Absztrakt megoldás: Konstans MaxN:Egész(???) Típus THk=Tömb(1..MaxN:TH) TTul=Függvény(H):Logikai Eljárás Eldöntés(Konstans N:Egész, X:THk, T:TTul, Változó VAN:Logikai): Változó i:Egész i:=1 Ciklus amíg iN és nem T(X(i)) i:+1 Ciklus vége Van:=iN Eljárás vége. Bizonyítás: Ezt most hosszadalmassága miatt elhagyom. Megtalálható többek közt: az [SzPPrSp] irodalomban a oldalon. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

28 3. A programozás gondolkozási eszköztára – dekompozíció, szuperpozíció
A dekomponálás: a komplex probléma elemibb problémák együttesére bontása. A szuperponálás: a komplex probléma elemi feladatokból való felépítése. Dekomponálás = „felülről lefelé” tervezés; szuperponálás = „alulról felfelé” tervezés. programfejlesztés eszközfejlesztés A „felülről lefelé” tervezés = „oszd meg és uralkodj” elv. Pszichológusok szerint: 5-7 sémát tud az ember „egyszerre” kezelni. (Itt a „séma” = „programegység”.) ad A „felülről lefelé” tervezés = „oszd meg és uralkodj” elv : Cormen et al. [CLR/10] : „Az oszd meg és uralkodj paradigma a rekurzió minden szintjén három lépést vesz igénybe: Felosztja a problémát több alproblémára. Uralkodik az alproblémákon rekurzív módon való megoldásukkal. … Összevonja az alproblémák megoldásait az eredeti probléma megoldásává.” ad Pszichológusok…: Ebből az „5-7”-es elvből következik, hogy az a jó algoritmus, amely 5-7 elemibb egységből tevődik össze (akár fentről-lefelé, akár fordítva hozta létre a programozó). Emiatt kárhoztatható a monolitikus programozás, már a programozástanítás kezdetétől! A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

29 3. A programozás gondolkozási eszköztára – dekompozíció, szuperpozíció
A program „finomítási fá”-jához: Kb. Log7(dbu) lépésben (szinttel) „finomul”, ahol a dbu az elemi utasítások száma (a legalsóbb szinten). A programstruktúra kiválasztásához kapaszkodót a „struktúra szerinti feldolgozás” elv nyújt. Kapcsolat a bonyo- lultsággal. (Mélységi, absztrakciós bonyolult- ság.) ad „Kb. Log …”: Természetesen ez a becslés a csak kivételesen elérhető „ideális” programra igaz. ad „Kapcsolat…”: Világos, hogy a megértés (pszichológiai) szempontjából a P program bonyolultsága a fában található Pi pontok számától lineárisan (egyedi bonyolultságuktól additíve) függ. Addig pl. a mélységi bonyolultság multiplikatíve (sőt exponenciálisan) függ az alkotók bonyolultságától. Az elvárásokhoz az absztrakciós bonyolultság közelebb áll. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

30 3. A programozás gondolkozási eszköztára – információ-konverzió
Cél: minél több információt kinyerni az előző programkészítési lépésben kapottból. Kapcsolatok: Specifikáció  adatleírás (l. példa) Specifikáció  algoritmus – programozási tételek Adatleírás  a kódbeli adatdeklaráció – kódtranszformáció Algoritmus  kódtörzs – program-, kódtranszformáció Specifikáció  kódtörzs – kódtranszformáció ad Kapcsolatok: a programozási tételek, a „kódtranszformációk” … – sablonok a kapcsolat létrehozásához, kivitelezéshez Csak „beszélt” esetben a feladatszöveg (kérdőszók) A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

31 3. A programozás gondolkozási eszköztára – információ-konverzió
Specifikációbeli példa Adatleírásbeli példapárja NN , VANL Változó N:Egész; L:Logikai MagR* Konstans MaxN:Egész(???) Típus TMag=Tömb(1..MaxN:Valós) Változó Mag:TMag NyilvTart(NévNemSzülIdő)*, Név=S, Nem=(Ffi,Nő), SzülIdő=ÉvHóNap, Év,Hó,Nap=N Konstans MaxN:Egész(???) Típus TNév=Szöveg, TNem=(Ffi,Nő) TÉv=Egész, THó=Egész, TNap=Egész TSzülIdő=Rekord( Év:TÉv,Hó:THó,Nap:TNap) TNyilvTart=Rekord( Név:TNév, Nem:TNem, SzülIdő:TSzülIdő) TNyilvTartK=Tömb(1..MaxN: TNyilvTart) Változó NyilvTart:TNyilvTartK A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

32 3. A programozás gondolkozási eszköztára – információ-konverzió
A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

33 3. A programozás gondolkozási eszköztára – információ-konverzió
? ? ? ? ? ? ? ? ? ? ? ? TípusAlgebrai TípusExport TípusModul Adat kódolás adat-szerkezeti döntés adat-szerkezeti döntés Típus/Adat- környezet Típus/Adat- környezet Adatok=Állapottér Tevékenységek= Állapottér-transzformáció Feladat L: Lógia Szilánkok 11 Generálandó: Szlávi P.: „On the correctness of object classes”, 6th International Conference on Applied Informatics, Eger, Hungary, January , 2004 Szabályozott: Szlávi P.: „Programozási tételek szerepe a gyakorlati programozásban”, Spec. Interface Algoritmus Ellenőrizendő vagy generálandó Szabályozott kapcsolat Jelölések: Az árnyék 1-nél nagyobb multiplicitásra utal. Szlávi Péter: „A programkészítés didaktikája”

34 3. A programozás gondolkozási eszköztára – intuíció
Lénárd Ferenc szerint [L/85] Az intuíció lényege: „…intuícióról akkor beszélhetünk, ha a gondolkodó úgy jut valamely igazsághoz, hogy a hozzávezető lépések számára nem tudatosak. … Intuíció csak annál léphet fel, aki a problémával intenzí-ven foglalkozik, és ezért rendelkezik mindazokkal az isme-retekkel, amelyek a probléma megoldásához szükségesek.” Az idézet Lénárd Ferenctől származik, és így folytatódik: „Sok anekdota-ízű példát ismerünk az intuíció szerepére tudományos felfedezéseknél. Ilyenek: Newton a lehulló alma nyomán jutott el a gravitációs törvény felfedezéséhez, Wattot a teafőző fedőjének megemelkedése juttatta a gőzerő felhasználásának gondolatához. Kekule felfedezése, ti. a szénatomok nyílt láncának gyűrűvé zárása, kétféleképpen is jut intuíciószerű magyarázathoz. Az egyik értelmezés szerint Kekule a londoni omnibusz tetején majmokat látott egy ketrecben. Ezek élő gyűrűt alkottak egymásba csimpaszkodva. Farkaik pedig a benzolgyűrű szén­atomjainak szabad vegyértékeire emlékeztette. A másik értelmezés szerint álmában saját farkába harapó kígyót látott és ez juttatta felfedezéséhez.” [L/85] Lagrange: „… ilyen … csak azzal történik, aki ezt megérdemli…” [PGyI/71] A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

35 3. A programozás gondolkozási eszköztára – intuíció
1. példa: Egy mágnesszalag legfeljebb egymillió húszbites egész számot tartalmaz véletlenszerű sorrendben. Keresnünk kell egy olyan húszbites egész számot, ami nem szerepel a szalagon… Probléma: kicsi a memória – „minden 20 biteshez 1 bit” … 1. megoldás: Kiválasztás(i: ,Eldöntés(File(j),j=i))  borzasztó sok „fájlból olvasás” (≤220*106≈1012 elemolvasás) 220 = A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

36 3. A programozás gondolkozási eszköztára – intuíció
2. megoldás: „halovány ötlet” a logaritmikus keresés  probléma: nem rendezett és nem közvetlen elérésű 3. megoldás: „halovány ötlet” a logaritmikus „hozzáállás”  e:=0; u:=220-1 Ciklus amíg e<u k:=(e+u) Div 2 db:=Megszámlálás(File(j),e≤j≤k)) Ha db<u-k+1 akkor u:=k-1 különben e:=k+1 Ciklus vége  elviselhető számú „fájlból olvasás” (≤20*106= 2*108 elemolvasás)  ~5*104-szeres javulás A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

37 3. A programozás gondolkozási eszköztára – intuíció
2. példa: … memóriabeli (nagy) szótárban való hatékony keresés … 1. megoldás: lineáris, esetleg logaritmikus keresés 2. megoldás: ötlet: ahogy az ember keres a szótárban  interpolációs keresés. A keresés hatékonysága: sikeres esetben: log2(log2(N)) sikertelen esetben: log2(N) A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

38 3. A programozás gondolkozási eszköztára – intuíció
3. példa: … rendezés tömbben , minél hatékonyabban … 1. megoldás: egy „hagyományos” rendezés  O(N2) az elvi O(Nlog2N) helyett 2. megoldás (Floyd): ötlet: a menetközben megszerzett információk hatékonyabb újra-felhasználása + egy „részben rendezett” elemekből álló bináris fa  heap + heapsort A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

39 3. A programozás gondolkozási eszköztára – intuíció
Összefoglalva a fentieket: a felfedező szinte mindig azzal jut el meglepő gon-dolatig, hogy látszólag össze nem illő dolgokat képes „gátlástalanul” összekapcsolni. Egy „definíció” szerint alkalmazhatatlan algoritmust erőltet sikerrel, vagy egy hétköznap beváló hozzáállást valósít meg számí-tástechnikai problémakörnyezetben, vagy egy, a feladathoz egyáltalán „nem illő (=meglepő) kép” köré építi föl algoritmikus gondolatait. a definíció szerint alkalmazhatatlan – a logaritmikus keresés a hétköznapi hozzáállás – a szótárban keresés a meglepő képtársítás – bináris fa A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

40 3. A programozás gondolkozási eszköztára – variáció
A variálás: a program valamely „kellékének” több-féleképpen való megfogalmazása és beépítése a ké-szülő programba. Mit variálunk? („Kellék – célterek”) Adatok – típusok (pl. k db tömb, v. k-mezős rekordok tömbje…) Programozási tétel-kombinációk – algoritmusok Mi célból variálunk? problémamegoldás („vissza az ősökhöz” elv) hatékonyságnövelés kedvéért... A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

41 3. A programozás gondolkozási eszköztára – variáció
Lénárd Ferenc írja [L/62]: „A különböző problémák, feladatok megoldása során a variálások lehetővé teszik, hogy pontosabban ismerjük meg ezeket a problémákat, feladatokat. E nélkül nem ta-láljuk meg a megoldáshoz vezető úton a lehetőségeket, amelyekkel élve eredményhez is jutunk.” Biológiai párhuzam: A gondolatvariálás célja: a gondolat újabb, „életreva-lóbb” változatának létrehozása, amely a gondolatszelek-ció során megméretik a többi, ugyanazt célzó gondolattal, azaz az erősebb, a problémához jobban illő kiszorítja a satnyábbakat. A gondolatvariáció és a gondolatszelekció két, ily módon egymást támogató tényezője a gondolatevolúciónak. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

42 4. A gondolkozási eszközök használat közben – absztrakció
Az absztrakcióhoz A keresés általánosítása: Új fogalom Magyarázat LÎH* lehetségesek sorozata az eredeti X egy alkalmasan választott rész-sorozata (LÍX) ║.║: H*® N hossz sorozat hossza (elemszáma) s: H*® H* sorozatszűkítés "LÎH*: s(L)=L’ LL’  ║L║>║L’║ e: H*® N elemindex-kiválasztás "LÎH*: e(L)Î[1..║X║] L:=X Ciklus amíg ║L║>0 és nem T(X(ε(L))) L:=(L) Ciklus vége Van:=║L║>0 Ha Van akkor Sorsz:=ε(L) ad : LH*: (L)[1..║X║] – nincs tévedés, nem ez: LH*: (L)[1..║L║], gondoljunk csak a logaritmikus keresésre:  az X egy „közbülső” intervallumából választ. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

43 4. A gondolkozási eszközök használat közben – absztrakció
Az általánosított keresésből származtathatók: Lineáris keresés Lineáris keresés rendezettben Logaritmikus keresés Backtrack-alapú keresés Listával ábrázolt sorozatban keresések Az általánosítás továbbhasznosításai A többi tétel absztrahálása … … és ezek specializálásai Általánosítás egyik haszna: a memóriakímélés! A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

44 Lexikalitás kontra kreativitás
A programozás során alkalmazott lexikális ismeret: kis szókincsű, de nagy variabilitású nyelvek, programozási tételek, programtranszformációk, kódolási szabályok. Kérdés: Nem súlyosbítjuk a programozás ezen elkép-zelés szerinti erőltetésével a tanulók képességfejlő-dés terén tapasztalt, és –többek közt– a PISA-je-lentés által feltárt negatív helyzetet? Csupa lexi-kális ismeret, hol a kreativitás? A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

45 Lexikalitás kontra kreativitás
William James pszichológus-filozófus [KGy/62]: „…az egész nevelés szempontjából döntő jelentőségű, hogy ideg-rendszerünket szövetségesünkké tegyük, és ne ellenségünkké. El kell érnünk, hogy gyümölcsözően befektethessük és töké-letesíthessük megszerzett tudásunkat, hogy azután kényelme-sen élhessünk e tőke kamataiból. Éppen ezért minél előbb automatikussá és megszokottá kell tennünk annyi hasznos cselekvést, amennyit csak lehet. Minél több hétköznapi ten-nivalónkat bonyolítjuk le automatikusan, megerőltetés nélkül, annál több magasabb szellemi képességet lehet a csak ezek segítségével elvégezhető tevékenységek számára felszabadítani. ” A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

46 Lexikalitás kontra kreativitás
A programozáshoz kapcsolódó fogalmak bemago-lása olyan instrumentumokat ad a tanulók ke-zébe, amelyek segítségével kreativitásukat nem apró-cseprő megfogalmazási vagy algoritmikus részletkérdésekre kell elfecsérelniük, hanem az igazi problémák megoldására összpontosíthat-nak. Vagyis ezen alapokra támaszkodva a kreati-vitás magasabb fokon, a problémamegoldás fel-sőbb színterén tud kibontakozni. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

47 Lexikalitás kontra kreativitás
Világos veszélyt jelent a beállítódás: a „sablonok megcsontosodása”. Lábos Elemér figyelmeztetése [Lá/61]: „A beállítódás azért különösen érdekes belső mechanizmus, mert két, a gondolkodási folyamatban szerepet játszó dologra utal. A gondolkodás során ismételt feladatokra kész prog-ramok kerülnek aktív állapotba, és gyorsítják a megoldást, de ugyanakkor más programok előhívását gátolják.” A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

48 Programozás – modellezés
Programozás előnyei: Szisztematikus gondolkodásra késztet. Kialakítja, megerősíti az absztraháló képességet. Egy univerzális modellező eszközhöz juttat. Szisztematikus gondolkodás: Szigorú és tudatos, analitikus (elemző) és szintetikus (összeállító) gondolkodás. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

49 Programozás – modellezés
2. Absztraháló képesség: Modell lényeges és lényegtelen vonásainak meg-különböztetése. Formalizált gondolkodás. 3. Univerzális modellező eszköz: Témája tetszőleges tantárgyból vehető. Modellbonyolódás csak „lineárisan” növekszik az idealizáció fokának csökkentésével. A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

50 A programfejlesztés didaktikája
Irodalom [Be] Bentley,J.: „A programozás gyöngyszemei”, Műszaki Könyvkiadó, 1988 [Ch] Chomsky,N.: „Mondattani szerkezetek – Nyelv és elme”, Osiris Kiadó, 1999 [CLR] Cormen,T.–Leiserson,Ch.–Rivest,R.: „Algoritmusok”, Műszaki Könyvkiadó, 1997 [DDH] Dahl,O.–Dijkstra,E.–Hoare,C.: „Strukturált programozás”, Műszaki Könyvkiadó, 1978 [F] Fóthi Á.: „Bevezetés a programozáshoz”, Tankönyvkiadó, 1983 [Kn] Knuth,D.: „A számítógép-programozás művészete 1.,3.”, Műszaki Könyvkiadó, A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”

51 A programfejlesztés didaktikája
Irodalom [L] Lénárd F.:A gondolkodás hétköznapjai”, Akadémiai Kiadó,1982 [ML] Mérő L.: „A mesterséges intelligencia és a kognitív pszichológia kapcsolata”, Tankönyvkiadó, 1989 [PGyG] Pólya Gy.: „A gondolkodás iskolája”, Gondolat, 1977 [PGyI] Pólya Gy.: „Indukció és analógia”, Gondolat, 1988 [KGy] Kepes Gy.: „A látás nyelve”, Gondolat, 1979 [Lá] Lábos E.: „Természetes és mesterséges értelem”, Lábos Elemér, 1979 A teljesebb anyag: Szlávi: „A programkészítés didaktikai kérdései”, A programfejlesztés didaktikája Szlávi Péter: „A programkészítés didaktikája”


Letölteni ppt "A programkészítés didaktikája"

Hasonló előadás


Google Hirdetések