Szgletes glria informatikusoknak Hol volt hol nem volt

  • Slides: 43
Download presentation
Szögletes glória informatikusoknak Hol volt… …hol nem volt… …van egyszer egy Rossum. van 1

Szögletes glória informatikusoknak Hol volt… …hol nem volt… …van egyszer egy Rossum. van 1

Tanítsunk programozást Pythonban! Válas Péter Támogató: Toldy Ferenc Gimnázium (Budapest) 20. Info Éra konferencia

Tanítsunk programozást Pythonban! Válas Péter Támogató: Toldy Ferenc Gimnázium (Budapest) 20. Info Éra konferencia (Füzesgyarmat, 2010. november 26. ) 2

A nyelv, • amelyen az MIT-n tanítják a programozást az első években • amely

A nyelv, • amelyen az MIT-n tanítják a programozást az első években • amely nem csak oktatásra jó – például a Google számos feladatát oldja meg • amely a Monthy Pythonról kapta a nevét, hogy jókedvünk legyen a közelében • amely Windowsban, Linuxon, Macen egyformán működik, és szabad szoftver 3

Első programunk Na, mi hiányzik innen? print("Helló, világ!") „A Python használata során a tanulók

Első programunk Na, mi hiányzik innen? print("Helló, világ!") „A Python használata során a tanulók csak azt a kódot látják, ami csinál is valamit : ). ” Vida Tamás 4

Minden a behúzásokon múlik! 5

Minden a behúzásokon múlik! 5

6

6

Futtatható állomány! Azonos ékezetkezelés GUI-n és konzolon! 7

Futtatható állomány! Azonos ékezetkezelés GUI-n és konzolon! 7

IDLE: vidám színek Kétféle import, kétféle névtér Elágazás=többszörös elágazás; listatagság, utolsó karakter/elem=s[-1] Keressük: <td>2010.

IDLE: vidám színek Kétféle import, kétféle névtér Elágazás=többszörös elágazás; listatagság, utolsó karakter/elem=s[-1] Keressük: <td>2010. nov. 25. 16: 45</td> Kivételkezelés 8

Ékezetes azonosító A végső válasz global kulcsszó: 4 szóközös behúzás (nincs tabulátor!) a kívül

Ékezetes azonosító A végső válasz global kulcsszó: 4 szóközös behúzás (nincs tabulátor!) a kívül definiált változó módosításához Elegáns felső szint Kevésbé vidám színek + sorszám, szóköz, tab 9

Súgó az IDLE-ben gépelés közben Nincs inputváltozó! A dinamikus típus tréfája Hátul nyílt intervallum!

Súgó az IDLE-ben gépelés közben Nincs inputváltozó! A dinamikus típus tréfája Hátul nyílt intervallum! osztás, padlós osztás Feltételes kifejezés, mint a ? : a C-ben Automatikus indent a : után és unindent a break után …csupa egyszínű felirattal ellátott dia 10 Kísérletezési lehetőség a shellben

Ami még fontos lesz: ez egy klasszikus eldöntési tétel. Bizonyos ponton azt hihetnénk, hogy

Ami még fontos lesz: ez egy klasszikus eldöntési tétel. Bizonyos ponton azt hihetnénk, hogy a Pythonban nem kellenek tételek – íme a példa. 11

Lagzi Hetedhétországban lista adattípus >>> a=['Piripócs', 'Hencida', 'Nekeresd', 'Ibafa', 'Bonchida', 'Kispirics'] >>> for falu

Lagzi Hetedhétországban lista adattípus >>> a=['Piripócs', 'Hencida', 'Nekeresd', 'Ibafa', 'Bonchida', 'Kispirics'] >>> for falu in a[a. index('Hencida'): a. index('Bonchida')+1]: . . . print(falu, ": foly a bor. ", sep="") . . . Hencida: foly a bor. Nekeresd: foly a bor. Ibafa: foly a bor. Bonchida: foly a bor. ? számláló szeletelés jobbról nyílt intervallum! szeparátor híján szóköz lenne a : előtt 12

A Python for ciklusa for piece in food: Pythonos megoldás (~ foreach a Perlben

A Python for ciklusa for piece in food: Pythonos megoldás (~ foreach a Perlben print piece vagy a C#-ban) for i in range(len(food)): print food[i] Nem pythonos megoldás (felesleges számláló) Számláló híján a programozási tételek alakja megváltozik! 13

Vezérlési szerkezetek • while (elöltesztelő) • while True: #hátul- vagy középen tesztelő utasítások while

Vezérlési szerkezetek • while (elöltesztelő) • while True: #hátul- vagy középen tesztelő utasítások while True: if kiugrási_feltétel: line = f. readline() if not line: break további utasítások #feldolgozás • for elem in sokaság • if /elif / else • try / except / finally • ciklusban: else, break, continue 14

Generátor (kiválogatás!) Részletesen: http: //hu. sulipython. wikia. com/wiki/Generátor 15

Generátor (kiválogatás!) Részletesen: http: //hu. sulipython. wikia. com/wiki/Generátor 15

Függvénydefiníció def valami(név, szül_dátum, anyja_neve="", volt_katona=False, gyerekek=None, *args, **kwargs): Közös: if után hamisat adnak.

Függvénydefiníció def valami(név, szül_dátum, anyja_neve="", volt_katona=False, gyerekek=None, *args, **kwargs): Közös: if után hamisat adnak. … return a, b, c Több érték (tuple zárójel nélkül) kötelező paraméterek (híváskor sorrendben adjuk meg) nem kötelező paraméterek alapértelmezett értékkel (más sorrendben vagy egyenként is megadhatjuk, névvel) további, előre meg nem határozott számú paraméterek args: tuple kwargs: szótár Példa nem kötelezőre a Rendezés dián. Sem a paraméterek, sem a visszaadott érték típusa nincs feltüntetve – dinamikus. 16

szótár adattípus (vessző az utolsó után is lehet) kulcs érték string formázott kiírás, szeletelés

szótár adattípus (vessző az utolsó után is lehet) kulcs érték string formázott kiírás, szeletelés sortörés, feltételes kifejezés nagybetű a mai fiatalok kedvéért (OOP!) Két ekvivalens megoldás: LBYL=Look before you leap (elágazás if-fel) EAFP=Easier to ask forgiveness than permission (elágazás kivételkezeléssel: hatékony és pythonos) 17

Adatszerkezetek 1. • logikai: True, False • None • int (egyféle, bármekkora, dinamikus!) •

Adatszerkezetek 1. • logikai: True, False • None • int (egyféle, bármekkora, dinamikus!) • float • komplex • Unicode string (megváltoztathatatlan) • bytes, bytearray (egybyte-os értékeknek) 18

Adatszerkezetek 2. • lista (megváltoztatható, bármilyen típusú elemek váltakozhatnak benne, szeletelhető – tömbök, rekordok,

Adatszerkezetek 2. • lista (megváltoztatható, bármilyen típusú elemek váltakozhatnak benne, szeletelhető – tömbök, rekordok, verem és sor helyett) • tuple (rendezett n-es, megváltoztathatatlan – rekordok, alternatív rekordok helyett) • range • szótár (asszociatív tömb) • halmaz, „fagyott halmaz” 19

Adatszerkezetek 3. • Minden adattípus objektumosztály • Lásd a fenti példákat: line. decode(), input("…").

Adatszerkezetek 3. • Minden adattípus objektumosztály • Lásd a fenti példákat: line. decode(), input("…"). capitalize(), gyerek[2]. startswith() vagy lentebb a nevek. sort() • Bővíthető, testreszabható, lecserélhető Guido van Rossum példája: saját szótártípus alapértelmezett értékkel, amely soha nem ad kulcshibát 20

Típusosság – összefoglalás A Python • erősen típusos (kötelező explicit konverzió!) • dinamikusan típusos

Típusosság – összefoglalás A Python • erősen típusos (kötelező explicit konverzió!) • dinamikusan típusos (az értéknek van típusa, ami futásidőben derül ki) • objektumorientált még a típusokban is • kacsatípusos • dinamikusan kezeli a memóriát (kényelmes!) 21

Filozófia • A programkód olvashatósága • A programfejlesztés gyorsasága • A futási sebesség nem

Filozófia • A programkód olvashatósága • A programfejlesztés gyorsasága • A futási sebesség nem elsődleges • “Python fits in your brain” • TOOWTDI (There’s Only One Way To Do It – The Zen of Python) TMTOWTDI • bővíthetőség OOP 22

Sebesség • Értelmezős nyelv (gyors fejlesztés) • Dinamikus memóriakezelés, szemétgyűjtés • Op. rendszert, HW-közeli

Sebesség • Értelmezős nyelv (gyors fejlesztés) • Dinamikus memóriakezelés, szemétgyűjtés • Op. rendszert, HW-közeli játékot ne írjunk • Alkalmazásfejlesztésre találták ki • Pl. egy webkiszolgálón nem probléma • Az iskolában nem probléma • „A sebesség nem probléma addig, amíg nem probléma” – a Python filozófiája • Jól együttműködik a C-vel és a C++-szal 23

Volt egyszer egy Vadnyugat… • Volt egyszer egy BASIC… • Volt egyszer egy Pascal…

Volt egyszer egy Vadnyugat… • Volt egyszer egy BASIC… • Volt egyszer egy Pascal… • …ami volt, az elmúlt. De lesz-e trónkövetelő? • A problémát nem én vetem fel, hanem a szoftverlista. • A sokszínűség lehetősége jó dolog. De van előnye a főcsapásnak is. 24

Mi bajom a C++-szal? (szubjektív!) • Sok az include, amit meg kell jegyezni a

Mi bajom a C++-szal? (szubjektív!) • Sok az include, amit meg kell jegyezni a vizsgára • Lassú fordítás – fejlesztés közben zavaró • char s[10]; s[20]='c'; indefinit eredmény • Túl sokféle eszköz ugyanarra, más include, más viselkedés, más függvények (pl. szövegkezelés) • A mutatók kerülgetése a nyelv szelleme ellen való • Bonyolult egyszerű magyar szó kiírása • Bátorítja a rossz stílusokat (pl. write-only, tagolás ) • Ezek nem a nyelv hibái! Csak az iskoláról beszélek. 25

A Python jellemzői 1. • Szabad szoftver (GPL-kompatibilis) • Egyformán működik Linuxon, Windowsban, Mac.

A Python jellemzői 1. • Szabad szoftver (GPL-kompatibilis) • Egyformán működik Linuxon, Windowsban, Mac. OS X-en • Közösségi fejlesztés, széles körű támogatás • Nincsenek nyelvjárásai • Unicode-alapú szövegkezelés, magyar betűk • Erős és dinamikus típusok, rugalmas adatszerkezetek 26

A Python jellemzői 2. • Értelmezős nyelv, gyors futtatás • Kikényszeríti a kód helyes

A Python jellemzői 2. • Értelmezős nyelv, gyors futtatás • Kikényszeríti a kód helyes tagolását • Bátorítja a szép és olvasható kódolást • Határozottan megmutatja a megfelelő eszközt • A nyelv magja megjegyezhető és erős, érettségi szinten nem nagyon kell importálni • Gazdag standard könyvtár („batteries included”) 27

A Python jellemzői 3. • Több fejlesztői környezet is van hozzá (de igazából egy

A Python jellemzői 3. • Több fejlesztői környezet is van hozzá (de igazából egy jó szerkesztő is elég) • Objektumorientált, de nem erőszakosan (több paradigmát is támogat) • Használhatunk ékezetes változóneveket is • Kéznél van a dokumentáció a vizsgán is! dir és help függvény, teljes offline súgó • Professzionális fejlesztésre is használják 28

A Python jellemzői 4. • Nagyon magas szintű, általános célú nyelv • A gyakori

A Python jellemzői 4. • Nagyon magas szintű, általános célú nyelv • A gyakori feladatokat egyszerű megoldani (rendezés, összegzés, ciklusok stb. ) • A lényeges kódot látjuk, csomagolás nélkül • C és C++-támogatás • Van hozzá shell is • Bővíthető (modulok, OOP) • Könnyen tanulható és tanítható 29

For a student who has never programmed before, using a statically typed language seems

For a student who has never programmed before, using a statically typed language seems unnatural. It presents additional complexity that the student must master and slows the pace of the course. The students are trying to learn to think like a computer, decompose problems, design consistent interfaces, and encapsulate data. While learning to use a statically typed language is important in the long term, it is not necessarily the best topic to address in the students’ first programming course. http: //docs. python. org/py 3 k/faq/general. html - is-python-agood-language-for-beginning-programmers 30

Rendezés A lista beépített. sort() metódusa helyben rendez Rendezés visszafelé sorted függvény: másolat Ez

Rendezés A lista beépített. sort() metódusa helyben rendez Rendezés visszafelé sorted függvény: másolat Ez a tuple szerkezet Rendezés a második kulcs szerint segédfüggvénnyel Rendezés a második kulcs szerint lambdafüggvénnyel (az előzővel ekvivalens, tömörebb, nem érettségi anyag) 31

Közbevetett vigasztalás a szabad szoftver híveinek, akik az FSF. hu-ról töltik le ezt a

Közbevetett vigasztalás a szabad szoftver híveinek, akik az FSF. hu-ról töltik le ezt a prezentációt, és nem Power. Pointra számítottak: Az FSF-díjas Guido van Rossum is ppt-ket Rossum használ • http: //www. python. org/doc/essays/ppt/ 32

Programozási tételek • Elsősorban a rendezés és az összegzés egyszerűsödik le szemérmetlenül. • Más

Programozási tételek • Elsősorban a rendezés és az összegzés egyszerűsödik le szemérmetlenül. • Más tételek megmaradnak, pl. eldöntés, maximumkiválasztás. • Mindegyik egyszerűsödik a számláló hiánya miatt (ld. : kiválogatás generátorral, de: eldöntés számlálóval) • Keressünk tételeket a kidolgozott érettségi feladatokban! (Ajánlott sorrend: Telek Anagramma Lottó) 33

Mi lesz veletek, programozási tételek? • Cél vagy eszköz? Rendezni kell tudni vagy a

Mi lesz veletek, programozási tételek? • Cél vagy eszköz? Rendezni kell tudni vagy a rendezési tételeket? • A beépített rendezés 2010 -ben nem luxus! • Találjunk ki rá feladatokat? • Mit fog csinálni a többi nyelv? • Valószínűleg vitát fog kiváltani (igazságose a C-programozókkal szemben a vizsgán? ) Milyenek legyenek a feladatok? 34

Személyes nosztalgia • 1984: első levelemhez előbb megírtam a szövegszerkesztőt. (HT-1080 Z) • Írtunk

Személyes nosztalgia • 1984: első levelemhez előbb megírtam a szövegszerkesztőt. (HT-1080 Z) • Írtunk rajzolót és monitort. • Még tervezni(!) és programozni kellett az ékezetes karaktereket. • Nem bánom, hogy most beépítik a programozási tételeket. Már nincs 1984. 35

Hátrányok, problémák • Futási sebesség (nem igazi probléma) • Egyelőre angol nyelvű a környezet

Hátrányok, problémák • Futási sebesség (nem igazi probléma) • Egyelőre angol nyelvű a környezet • Az IDLE nem számozza a sorokat (Eclipse? ) • Sok 2. x-es mintaprogram a neten és a könyvekben, kevesebb a 3. x-es • Túl könnyű 36

Javaslat • Kerüljön fel a Python a szoftverlistára • Használjuk minél többen kezdő nyelvként

Javaslat • Kerüljön fel a Python a szoftverlistára • Használjuk minél többen kezdő nyelvként • Cseréljünk tapasztalatokat az Informatika levelezőlistán vagy a Suli. Python wikiben 37

A csodálatos VPython • 3 D animációk alapszintű programozási tudással • Jól használható a

A csodálatos VPython • 3 D animációk alapszintű programozási tudással • Jól használható a természettudományos és a matematikaórákon • Jól használható szimulációra • http: //hu. sulipython. wikia. com/wiki/VPython 38

További érdekes alkalmazások • Teknőcgrafika: turtle modul, Python. Turtle környezet • Mobiltelefonos fejlesztések •

További érdekes alkalmazások • Teknőcgrafika: turtle modul, Python. Turtle környezet • Mobiltelefonos fejlesztések • Pendrive-ra telepíthető Python 39

A verziók kérdése • Két párhuzamos stabil verzió van: 2. 7, 3. 1. 2

A verziók kérdése • Két párhuzamos stabil verzió van: 2. 7, 3. 1. 2 • Részletek: http: //hu. sulipython. wikia. com/wiki/Verziók felismerése és átalakítása 40

Folyamatban van: • Érettségi szoftverlista: Javaslat • Ubuntu érettségi projekt: (majd edu. fsf. hu?

Folyamatban van: • Érettségi szoftverlista: Javaslat • Ubuntu érettségi projekt: (majd edu. fsf. hu? ) 41

Érdekel. Hogyan tovább? • A Suli. Python wiki: http: //hu. sulipython. wikia. com/ •

Érdekel. Hogyan tovább? • A Suli. Python wiki: http: //hu. sulipython. wikia. com/ • Az Informatika levelezőlista: http: //lista. sulinet. hu/mailman/listinfo/informatika Mailman! 42

A prezentáció letölthető lesz: • http: //64. hu/ • http: //fsf. hu/ Külön köszönet

A prezentáció letölthető lesz: • http: //64. hu/ • http: //fsf. hu/ Külön köszönet Zsakó László tanár úrnak! 43