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

Hol volt… …hol nem volt…

Hasonló előadás


Az előadások a következő témára: "Hol volt… …hol nem volt…"— Előadás másolata:

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!

6

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!


Letölteni ppt "Hol volt… …hol nem volt…"

Hasonló előadás


Google Hirdetések