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

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

Hasonló előadás


Az előadások a következő témára: "1 Hol volt… …hol nem volt… vanRossum. …van egyszer egy Rossum. Szögletes glória informatikusoknak."— Előadás másolata:

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

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

3 3 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

4 4 Első programunk print("Helló, világ!") Na, mi hiányzik innen? „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

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

6 6

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

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

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

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

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

12 12 >>> 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. Lagzi Hetedhétországban szeletelés jobbról nyílt intervallum! szeparátor híján szóköz lenne a : előtt lista adattípus ? számláló

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

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

15 15 Generátor (kiválogatás!) Részletesen:

16 16 def valami(név, szül_dátum, anyja_neve="", volt_katona=False, gyerekek=None, *args, **kwargs): … return a, b, c 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 Sem a paraméterek, sem a visszaadott érték típusa nincs feltüntetve – dinamikus. Függvénydefiníció Közös: if után hamisat adnak. Több érték (tuple zárójel nélkül) Példa nem kötelezőre a Rendezés dián.Rendezés

17 17 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 for forgiveness than permission (elágazás kivételkezeléssel: hatékony és pythonos)

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

19 19 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” Adatszerkezetek 2.

20 20 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

21 21 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!)

22 22 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

23 23 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

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

25 25 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 egy 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.

26 26 A Python jellemzői 1. Szabad szoftver (GPL-kompatibilis) Egyformán működik Linuxon, Windowsban, MacOS 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

27 27 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”)

28 28 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

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

30 30 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. - is-python-a- good-language-for-beginning-programmers

31 31 Rendezés Ez a tuple szerkezet A lista beépített.sort() metódusa helyben rendez sorted függvény: másolat 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)lambdafüggvénnyel Rendezés visszafelé

32 32 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 PowerPointra számítottak: Guido van Rossum Az FSF-díjas Guido van Rossum is ppt-ket használ

33 33 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)kiválogatás generátorraleldöntés számlálóval Keressünk tételeket a kidolgozott érettségi feladatokban! (Ajánlott sorrend: Telek  Anagramma  Lottó)a kidolgozott érettségi feladatokban

34 34 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ágos- e a C-programozókkal szemben a vizsgán?) Milyenek legyenek a feladatok?

35 35 Személyes nosztalgia 1984: első levelemhez előbb megírtam a szövegszerkesztőt. (HT-1080Z) Í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.

36 36 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ű

37 37 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 SuliPython wikiben

38 38 A csodálatos VPython 3D 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

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

40 40 A verziók kérdése Két párhuzamos stabil verzió van: 2.7, Részletek: felismerése és átalakítása felismerése és átalakítása

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

42 42 Érdekel. Hogyan tovább? A SuliPython wiki: Az Informatika levelezőlista: Mailman!

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


Letölteni ppt "1 Hol volt… …hol nem volt… vanRossum. …van egyszer egy Rossum. Szögletes glória informatikusoknak."

Hasonló előadás


Google Hirdetések