Hol volt… …hol nem volt…

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Weblapkészítési tudnivalók 2: Útmutató az elnevezésekhez Pék Ágnes © 2009.
Programozási tételek, és „négyzetes” rendezések
 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
SZENT ISTVÁN EGYETEM GAZDASÁG- ÉS TÁRSADALOMTUDOMÁNYI KAR TUDOMÁNYOS DIÁKKÖRI KONFERENCIA NOVEMBER 25. AUTO-SZŰRŐ FEJLESZTÉSE OLAP JELENTÉSEK UTÓLAGOS,
Piacképes programozói tudás a középiskolában
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozási feladatok az érettségin
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
3. előadás (2005. március 1.) Utasítások, tömbök
Gyakori hibák C# programozásban
JavaScript.
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
ISZAM III.évf. részére Bunkóczi László
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Tömbök és programozási tételek
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
PHP oktatási tapasztalatok
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Java programozási nyelv Vezérlési szerkezetek
Objektum orientált programozás
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
A Visual Basic nyelvi elemei
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
C Programozási alapok.
Mobil alkalmazások fejlesztése Vonalkód leolvasó Symbian alapú mobiltelefonra Készítette: Tóth Balázs Viktor.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Szöveg beírásához kattintson ide A SCRATCH környezet bemutatása szakköri tapasztalatok alapján Gödöny Péter Budapesti Műszaki Szakképzési Centrum Pataky.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Programozási alapismeretek
Gépészeti informatika (BMEGEMIBXGI)
Programozási nyelvek típusossága.
Script nyelvek előadás
Excel programozás (makró)
A CLIPS keretrendszer
Változók.
Script nyelvek előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Függvénysablonok használata
Előadás másolata:

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

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

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

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

Minden a behúzásokon múlik!

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

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. 25. 16:45</td> Kivételkezelés

É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

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

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.

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

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!

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

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

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.

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)

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

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”

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

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

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

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

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.

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.

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

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

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

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ó

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/py3k/faq/general.html - is-python-a-good-language-for-beginning-programmers

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)

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  http://www.python.org/doc/essays/ppt/

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

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?

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.

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

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

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 http://hu.sulipython.wikia.com/wiki/VPython

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

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 http://hu.sulipython.wikia.com/wiki/Verziók felismerése és átalakítása

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

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

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