Programkészítés és Programkészítés és gondolkodásgondolkodás
Szlávi PéterSzlávi PéterELTE IKELTE IK
[email protected]@elte.hu
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
2/26
Tartalom
1. A programkészítés eszköztára2. Nyelvi absztrakció3. Dekompozíció4. Információ-konverzió5. Összefoglalás helyett
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
3/26
1. A programkészítés eszköztára
A programozás:a feladat egyre fino-mabb modelljeinek sorozata, amiben ad-dig kell eljutni, ahol már a választott prog-ramozási nyelv szó-kincse jelenti a modell alapját.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
5/26
S1=Spec.SS
22=Alg..
S3=
Fin
..
S4=Kód.
S3
M0
M1 M2
M3M3 S3M3
M4
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, Kód
1. A programkészítés eszköztára
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
6/26
1. A programkészítés eszköztára
A programozó gondolkodási műveletei:• nyelvi absztrakció• analógiás gondolkodás• algoritmikus absztrakció• dekompozíció, szuperpozíció • információ-konverzió• intuíció• variáció
A programozó gondolkodási műveletei:• nyelvi absztrakció• analógiás gondolkodás• algoritmikus absztrakció• dekompozíció, szuperpozíció • információ-konverzió• intuíció• variáció
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
7/26
2. Nyelvi absztrakció
Specifikálás – mint nyelvi absztrakció. (A korábbi dián S1.)
A lényeg kiszűrése – mik a• kiinduló adatok,• meghatározandók, • összefüggések a kiinduló adatok
között, • összefüggések a kiinduló ás
eredményadatok között.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
8/26
2. Nyelvi absztrakció
• A következő absztrakciós lépés:a konkrét adatok adathalmazokká lényegítése.
• Nyelvi absztrakció:néhány alaphalmazra visszavezetés néhány halmazkonstrukció felhasználásával.• Alaphalmazok:
Z (Egészek) R (Valósak) K (Karakterek) S (Szövegek)…
• Halmazkonstrukciók: (Egyesítés) (Direktszorzás) * (Iterálás) = (Definiálás)
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
9/26
2. Nyelvi absztrakció
• Chomsky é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 any-nyira feltétele a nyelv ismeretének, amennyire egy természetes nyelv esetében az írás (a nyelvtan) ismerete (v.ö. specifikációs analfabetizmus).
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
10/26
2. Nyelvi absztrakció
Tervezés – mint nyelvi absztrakció. (A korábbi dián S2.)
• A tervezés egy leírónyelven történik, pl.:– blokkdiagram– struktogram – pszeudókód – stb.
A lényegük: alkalmasak a jellegzetes és elegendő struk-túrák lejegyzésére, és kellően rugalmasak, de egy-értelműek.
„rajzos” nyelv„szöveges” nyelv
}
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
11/26
2. 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ásokA nyelv struktúrai = előre definiáltak + finomítások
• Programozási tételek szintjeA nyelv szavai = utasítás-szint + tételekA nyelv struktúrai = (tétel-finomítások+) utasítás-szint
• Modularizálás szintjeA nyelv szavai = programozási tételek szintjeA nyelv struktúrai = programozási tételek szintje + modulok
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
12/26
2. Nyelvi absztrakció
• Ad hoc (nem rögzített szintaxisú) grafikus nyelvi praktikák is, amelyeket a pillanat problémája ihlet. Pl. a beillesztéses rendezés egy lényegi lépéséhez:
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
14/26
2. Nyelvi absztrakció
• Érdemes itt Pólya Györgyöt 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.”
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
15/26
2. Nyelvi absztrakció
Kódolás – mint nyelvi absztrakció. (A korábbi dián S4.)
Abszurd állítás: itt már kevés nyelvi absztrakció szükséges. (Feltétel: helyes programozási stílus mellett, azaz, ha az algoritmus kész.)
Ok: elegendők jól kidolgozott kódolási szabályok, amelyek mellett „kvázi” mechanikus az átírás.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
16/26
3. Dekompozíció
Dekomponálás: a komplex probléma elemibb problémák együttesére bontása.
Szuperponálás: a komplex probléma elemi feladatokból való felépítése.
Emberi korlát: a rövid távú memóriában egy idő-ben tartható sémák maximális száma kb. 72. (Mérő)
A korlát következménye: a felülről lefelé tervezés elve
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
17/26
3. Dekompozíció
Dekomponálás alkalmazása: 1. a feladatot egyre finomodó
műveletkészlet se-gítségével fogalmazzuk újra, amíg elemi utasítá-sokig el nem jutunk.
2. Minden szint a feladatot teljesen megoldja, de a szint egy-egy finomítása csak kb. 5-9 még ele-mibb finomításra, vagy már definiált műveletre bomlik.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
18/26
3. Dekompozíció
A probléma-alproblémák viszonyai (alg.-összetételi módok):
• szekvencia – több alprobléma adott sorrendben kerül egymással mellérendelő viszonyba, amelyek mindegyike végrehajtandó;
• elágazás – több, önálló feltételtől függő alprobléma, amelyek közül az igaz-feltételű hajtandó végre, az elágazás egé-széhez képest az említett alproblémák alárendelt vi-szonyban állnak;
• ciklus – egy „feltételtől függő számszor” hajtódjék végre a ciklus törzsét alkotó alprobléma, a ciklus egészéhez ké-pest az alprobléma alárendelt viszonyban áll.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
19/26
3. Dekompozíció
Az alá-/mellérendelés kapcsolata a• programtechnológiával (a leírási móddal) –
(helyes programírási stílus esetén) a viszony tükröződik magán az algoritmikus (és adat-) szerkezet leírásán
• pszichológiával (a megértés hatékonyságával) –a mellérendelés „additíve” (lineárisan), az alárendelés „multiplikatíve” (hatványozottan) növeli az algoritmus bonyolultságát (a megértés hatékonyságát).
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
20/26
3. Dekompozíció
A ’struktúra szerinti feldolgozás’ elve:
1.meghatározzuk a feladathoz tartozó bemeneti és kime-neti szuperstruktúrát,
2.egyiket kiválasztjuk „vezérlő” adatszerkezetnek,
3.megfeleltetjük az elv felkínálta adatszerkezetek egyiké-vel, és
4.kiválasztjuk az elv szerint hozzátartozó algoritmus-szerkezetet.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
21/26
3. Dekompozíció
Az alproblémák és specifikációik viszonya a „felülről lefelé tervezés” elv alkalmazása közben:
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
22/26
4. Információ-konverzióKiinduló pont: ismerjük föl, melyek azok a
korábbi modellbeli fogalmak, objektumok, amelyek mechani-kusan konvertálhatók a készülő új modellbe.
Információ-továbbvitel „csatornái”:1. Specifikáció adatleírás,2. Specifikáció algoritmus – programozási
tételek,programtranszformációk
3. Adatleírás a kód adatdeklarációja – kódtransz-formáció,
4. Algoritmus kódtörzs – kódtranszformáció,5. Specifikáció + adatleírás kódtörzs –
kódtransz-formáció.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
23/26
4. Információ-konverzióSpecifikációadatleírás –
megfeleltetési példák
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
24/26
4. Információ-konverzióInformáció-konverziók:
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
25/26
5. Összefoglalás helyett
A „kimaradt” gondolkodási eszközök rövid jellem-zése:
• Szuperpozíció – moduláris programozás; alapelemekből, bonyolultabb manipulációs „esz-közöket” (pl. típusokat, típuskonstrukciós eszkö-zöket)
• Algoritmikus absztrakció – a feladat részfela-datokra bontása során keletkező eljárások, függ-vények
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
26/26
5. Összefoglalás helyett
• Analógiás gondolkodás – ismert feladatok között a megoldandóhoz hasonló keresése; kapcsolat-feltérképezés; aktualizálás
• Variálás – út a legéletrevalóbb megoldás megta-lálásához
• Intuíció legfőbb sajátossága a megfoghatatlan-sága, a „józanészből” való levezethetetlensége; jellemzője az eredetiség, váratlanság.
2008. augusztus 27.
Informatika a felsőoktatásban'2008 Szlávi: Programkészítés és gondolkodás
27/26
Köszönöm szíves figyelmüket!
Az anyag letölthető:http://digo.inf.elte.hu/~szlavi/Public/
ProgramkeszitesGondolkodas.pdfhttp://digo.inf.elte.hu/~szlavi/Public/
ProgramkeszitesGondolkodas.pptEgy teljesebb változat:
http://digo.inf.elte.hu/~szlavi/InfoOkt/ProgramDidaktika.ppt