Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Hol volt… …hol nem volt…
Szögletes glória informatikusoknak Hol volt… …hol nem volt… …van egyszer egy Rossum.
2
Tanítsunk programozást Pythonban!
Válas Péter Toldy Ferenc Gimnázium (Budapest) Info Éra konferencia (Füzesgyarmat, november 26.) Támogató:
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
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
Minden a behúzásokon múlik!
7
Futtatható állomány! Azonos ékezetkezelés GUI-n és konzolon!
8
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; lista-tagság, utolsó karakter/elem=s[-1] Keressük: <td>2010. nov :45</td> Kivételkezelés
9
Ékezetes azonosító A végső válasz global kulcsszó: a kívül definiált változó módosításához 4 szóközös behúzás (nincs tabulátor!) Elegáns felső szint Kevésbé vidám színek + sorszám, szóköz, tab
10
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 …csupa egyszínű felirattal ellátott dia Kísérletezési lehetőség a shellben
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
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
13
A Python for ciklusa Pythonos megoldás (~ foreach a Perlben vagy a C#-ban) 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] Nem pythonos megoldás (felesleges számláló) Számláló híján a programozási tételek alakja megváltozik!
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
Generátor (kiválogatás!)
Részletesen:
16
Függvénydefiníció 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. 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.
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
Adatszerkezetek 1. logikai: True, False None
int (egyféle, bármekkora, dinamikus!) float komplex Unicode string (megváltoztathatatlan) bytes, bytearray (egybyte-os értékeknek)
19
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”
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
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
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
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
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
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
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
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
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
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
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
Rendezés Ez a tuple szerkezet
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)
32
Közbevetett vigasztalás a szabad szoftver híveinek, akik az FSF
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: Az FSF-díjas Guido van Rossum is ppt-ket használ
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) Keressünk tételeket a kidolgozott érettségi feladatokban! (Ajánlott sorrend: Telek Anagramma Lottó)
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
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
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
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
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
További érdekes alkalmazások
Teknőcgrafika: turtle modul, PythonTurtle környezet Mobiltelefonos fejlesztések Pendrive-ra telepíthető Python
40
A verziók kérdése Két párhuzamos stabil verzió van: 2.7, 3.1.2
Részletek: felismerése és átalakítása
41
Folyamatban van: Érettségi szoftverlista: Javaslat
Ubuntu érettségi projekt: (majd edu.fsf.hu?)
42
Érdekel. Hogyan tovább? A SuliPython wiki: Az Informatika levelezőlista: Mailman!
43
A prezentáció letölthető lesz:
Külön köszönet Zsakó László tanár úrnak!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.