25
Programkészítés és Programkészítés és gondolkodás gondolkodás Szlávi Péter Szlávi Péter ELTE IK ELTE IK [email protected] [email protected]

Programkészítés és gondolkodás

  • Upload
    nerice

  • View
    38

  • Download
    0

Embed Size (px)

DESCRIPTION

Programkészítés és gondolkodás. Szlávi Péter ELTE IK [email protected]. Tartalom. A programkészítés eszköztára Nyelvi absztrakció Dekompozíció Információ-konverzió Összefoglalás helyett. 1.A programkészítés eszköztára. - PowerPoint PPT Presentation

Citation preview

Page 1: Programkészítés és gondolkodás

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

Page 2: Programkészítés és gondolkodás

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

Page 3: Programkészítés és gondolkodás

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.

Page 4: Programkészítés és gondolkodás

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

Page 5: Programkészítés és gondolkodás

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ó

Page 6: Programkészítés és gondolkodás

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.

Page 7: Programkészítés és gondolkodás

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)

Page 8: Programkészítés és gondolkodá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).

Page 9: Programkészítés és gondolkodás

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

}

Page 10: Programkészítés és gondolkodás

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

Page 11: Programkészítés és gondolkodás

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:

Page 12: Programkészítés és gondolkodás

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.”

Page 13: Programkészítés és gondolkodás

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.

Page 14: Programkészítés és gondolkodá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

Page 15: Programkészítés és gondolkodás

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.

Page 16: Programkészítés és gondolkodás

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.

Page 17: Programkészítés és gondolkodás

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).

Page 18: Programkészítés és gondolkodás

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.

Page 19: Programkészítés és gondolkodás

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:

Page 20: Programkészítés és gondolkodás

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ó.

Page 21: Programkészítés és gondolkodás

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

Page 22: Programkészítés és gondolkodás

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:

Page 23: Programkészítés és gondolkodás

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

Page 24: Programkészítés és gondolkodás

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.