PyS60....avagy Python a mobilon

Hasonló dokumentumok
Ismerkedés a Python programnyelvvel. és annak micropython változatával

A Python programozási nyelv

Imperatív programozás

Hálózatok építése és üzemeltetése

A Python programozási nyelv

Python tanfolyam Python bevezető I. rész

Java II. I A Java programozási nyelv alapelemei

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Imperatív programozás

Python I. Vincze Dávid Miskolci Egyetem, IIT

Komputeralgebra Rendszerek

Programozási nyelvek Python

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

A C# programozási nyelv alapjai

PYTHON. Avagy hosszú az út a BioPythonig

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

A JavaScript főbb tulajdonságai

Szoftvertechnológia alapjai Java előadások

Imperatív programozás

Számítógépes Hálózatok. 1. Gyakorlat

Java II. I A Java programozási nyelv alapelemei

.Net adatstruktúrák. Készítette: Major Péter

Készítette: Nagy Tibor István

Bevezetés a Python programozási nyelvbe

Apple Swift kurzus 3. gyakorlat

Programozási nyelvek JAVA EA+GY 1. gyakolat

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Smalltalk 2. Készítette: Szabó Éva

Informatika terméktervezőknek

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Bevezetés a C++ programozási nyelvbe

Forráskód formázási szabályok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

OOP: Java 8.Gy: Abstract osztályok, interfészek

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Kifejezések. Kozsik Tamás. December 11, 2016

JAVA PROGRAMOZÁS 2.ELŐADÁS

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Komputeralgebra Rendszerek

C++ programozási nyelv Konstruktorok-destruktorok

Számítógépes Hálózatok. 1. gyakorlat

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

BASH script programozás II. Vezérlési szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

és az instanceof operátor

Komputeralgebra Rendszerek

Programozás II. 2. Dr. Iványi Péter

Szkriptnyelvek II. Perl programok

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek Java

AWK programozás, minták, vezérlési szerkezetek

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Bevezetés a programozásba Előadás: A const

Magas szintű programozási nyelvek 2 Előadás jegyzet

Java programozási nyelv

2016, Diszkrét matematika

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Szoftvertervezés és -fejlesztés I.

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

OOP #14 (referencia-elv)

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Occam 1. Készítette: Szabó Éva

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

AWK programozás, minták, vezérlési szerkezetek

3 A C programozási nyelv szintaktikai egységei

3. Osztályok II. Programozás II

A C# PROGRAMOZÁSI NYELV

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Java programozási nyelv 4. rész Osztályok II.

2018, Diszkre t matematika. 8. elo ada s

Delphi programozás IV.

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Objective-C PPKE-ITK

117. AA Megoldó Alfréd AA 117.

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Szkriptnyelvek. 1. UNIX shell

Programozási nyelv Java

Programozási nyelvek Java

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Algoritmizálás + kódolás C++ nyelven és Pascalban

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozás I gyakorlat

2018, Diszkrét matematika

Listák, szótárak, fájlok Listák, szótárak, fájlok

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Átírás:

PyS60...avagy Python a mobilon

1. rész: Python alapok 2

Áttekintés A nyelv törtt rténete Alapvető tudnivalók Szintaxis Néhány egyszerű példa 3

Áttekintés A nyelv törtt rténete Alapvető tudnivalók Szintaxis Néhány egyszerű példa 4

A nyelv törtt rténete Guido van Rossum, CWI (Centrum voor Wiskunde en Informatica), Amszterdam, Hollandia 1989. december implementáci ció kezdete 1990. nem publikus kiadások (CWI) 1991. február 0.9.0 (első publikus verzió) 1994. január 1.0.0 2000. október 2.0.0 2008. december 3.0.0 2011. február 3.2 (legfrissebb) 5

Az Alkotó Benevolent Dictator for Life (BDFL) 6

Implementáci ciók CPython Jython (Java Virtual Machine) IronPython (.NET Common Language Runtime) Pyjamas (Javascript) PyS60 (Symbian Series 60) PythonCE (Windows CE) stb. 7

A nyelv elnevezése 8

Áttekintés A nyelv törtt rténete Alapvető tudnivalók Szintaxis Néhány egyszerű példa 9

A Python... általános célú, c magas szintű, objektumorientált, többféle programozási paradigmát t támogatt mogató, platformfüggetlen...programozási nyelv. 10

Alapvető tudnivalók A Java-hoz hasonlóan an köztes k kódot k (bytekódot) futtat az interpreter. A standard kódkk dkönyvtár r számos megvalósított funkciót t tartalmaz (+ neten találhat lható megoldások!). A nyelvet előszeretettel használj lják k prototípus pus fejlesztésre sre (gyors, egyszerű). Python Software Foundation License (GNU GPL kompatibilis, FSF és s OSI által elismert) 11

Modern, OO eszközök Osztályok, objektumok Öröklődés Automatikus szemétgy tgyűjtés s (garbage collection) Dinamikus típusmeghatt pusmeghatározás s (late binding) Kivételkezel telkezelés Unicode támogatt mogatás 12

Áttekintés A nyelv törtt rténete Alapvető tudnivalók Szintaxis Néhány egyszerű példa 13

Szintaxis Eltérés s az eddig megszokott nyelvektől: l: nincs szüks kség g a változv ltozók k deklarálására ra a sorok végén v n nincs pontosvessző a blokkok szervezése se behúzásalap salapú (nincs kapcsoszárójel!) minden változv ltozó egy adott objektumra mutató referencia értékadás, paraméter terátadás s nem mindig a megszokott módon m működik! m 14

Tokenek Whitespace karakterrel elválasztva lasztva Fajtái: azonosító,, kulcsszó,, operátor, delimiter, literál Az azonosító kezdődhet dhet betűvel vagy alulvonással, szerepelhet benne számjegy is, a kis- és s nagybetűket megkülönb nböztetjük Lefoglalt kulcsszavak pl.: assert, exec, lambda, pass, raise, yield 15

Típusok és s változv ltozók Típusok: számok, stringek, n-esek n (tuple), listák, szótárak (dictionary) Null érték k neve: None Logikai értékként minden típus t használhat lható (0, None, üres string, nulla elemű gyűjtem jtemény => False) Értékadás: = Összehasonlítás: s: == 16

Típusok és s változv ltozók k (folytatás) Változó-objektum objektum összerendelés megszüntet ntetése: del Globális lis és s lokális lis változv ltozók (függv ggvényben felvett változv ltozó alapértelmezetten lokális!) lis!) 17

Számok Decimális Oktális (bevezető 0) Hexadecimális (bevezető 0x) Lebegőpontos (x.yez => x,y * 10 z ) String szám m konverzió: string', int('string', sz számrendszer) 18

Szekvenciák stringek "szöveg"" vagy ' 'szöveg ' Unicode string: u"szöveg" n-esek (vektor) ('a', 'b', 'c') vagy akár r ('a', "szia", 3) tuple('abc') ( ) 19

Szekvenciák listák ['a', 'b', 'c'] vagy akár r ['a', "szia", 3] list('abc') [ ] rendezett szekvencia 20

A listák k függvf ggvényei index(e) 'e' első előfordul fordulásának indexe append(e) 'e' hozzáfűzése a lista végéhezv insert(i,e) 'e' beszúrása sa az i-edik i helyre remove(e) 'e' első előfordul fordulásának törlt rlése pop([i]) az i-edik i elemet kiveszi a listából és visszaadja az értékét stb. 21

Listák k generálása A range függvf ggvény segíts tségével törtt rténik. range(tól, ig, lépéskl sköz) Példák: range(3) => [0, 1, 2] range(1,3) => [1, 2] range(1,6,2) => [1, 3, 5] 22

Szótárak "Kulcsokkal azonosított elemek rendezetlen halmaza." {1: 'a', 2: 'b', 4: 'd'} Függvényei: haskey(k) get(k), get(k,x) items(), keys(), values() iteritems(), iterkeys(), itervalues() 23

Elágaz gazás A blokkokat csak behúzással jelölj ljük, nincs zárójel! Példa: if szam>0: elif szam<0: else:... 24

Ciklusok "for" szerkezet "foreach" jellegű szintaktika Példák: for x in lista: print x for kulcs, ertek in szotar.items(): print kulcs, ' - ', ertek A "klasszikus" for ciklus: for i in xrange(tól, ig, lépéskl sköz): print i, ', ' 25

Ciklusok (folytatás) "while" szerkezet A megszokott logika szerint működik. m Példa: i=0 while i<3: print i i=i+1 26

Fibonacci sorozat a, b = 0, 1 while b < 10: print b a, b = b, a+b 27

Függvények "def" kulcsszó Egy visszatérési si érték, de visszaadhat n-eseket n is. Példa: def hello(): print "Hello World!" return 28

Lambda függvf ggvények "On the fly" függvf ggvények, akár r név n v nélkn lkül l is. Nincs "return"!!! Egyetlen kifejezés s lehet a törzse. t Mindig kell legyen visszatérési si értéke. 29

Lambda függvf ggvények 2. Példák: lambda a, b: a+b negyzet = lambda x: x**2 print negyzet(8) lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print filter(lambda x: x % 3 == 0, lista) 30

Lambda függvf ggvények 3. Egy összetett példa: p def make_incrementor(n): return lambda x: x + n f = make_incrementor(2) print f(10) Mi is törtt rténik itt? Mit fog kiírni a print függvf ggvény? 31

Osztályok class osztályn lynév (ősosztályok): osztályt lytörzs Többszörös öröklődés s van, interfészek nincsenek! Az osztály metódusainak kötelezk telező paramétere a this). self (szerepe, mint a this). Speciális metódus: a konstruktor. bbi_paraméterek): def init (self, többi_param... 32

Osztályok attribútumai tumai Attribútumot tumot adhatunk az osztályhoz és közvetlenül l az egyes objektum példp ldányokhoz is. Ha egy osztály adott attribútum tumát megváltoztatjuk, az hatással lesz az összes olyan példp ldány adott attribútum tumára, ahol azt még g nem változtattuk v meg példp ldány szinten. 33

Kivételkezel telkezelés Logikája a megszokott. Nem kötelezk telező megadni a kivétel típust pusát. Opcionálisan következhet k egy "else" és s egy "finally" ág g is. Példa: try: 1/0 except ZeroDivisionError: print "Nullával nem osztunk!" 34

Egyebek Megjegyzések: # (a sor végéig v érvényes) Több soros utasítások sok Sor végén v n '\'' ' (backslash) Ha nem zártuk z be a nyitott zárójelet, z a következk vetkező sort automatikusan folytató sornak veszi. 35

Áttekintés A nyelv törtt rténete Alapvető tudnivalók Szintaxis Néhány egyszerű példa 36

print "Hello World!" Hello World!

For ciklus szotar = {1:"egyik", 2:"masik", 3:"harmadik"} for kulcs, ertek in szotar.items(): print kulcs, "-"," ", ertek for szam in xrange(1,21): print szam,

While ciklus, kivételek try: while i<10: print i, i=i+2 except: print "Hiba!"

While ciklus, kivételek try: i=0 while i<10: print i, i=i+2 except: print "Hiba!"

Lista szűrése, se, lambda függvények lista = range(1,21) print filter(lambda x: x % 4 == 0, lista)

Lambda függvf ggvény def make_increment(n): return lambda x: x+n f = make_increment(5) g= make_increment(3) print f(10) print g(10)

Feladat Készítsünk oszthatóságot vizsgáló függvényt. Generáljunk egy 1-től 1 l 50-ig terjedő számlist mlistát, t, szűrj rjük k ki az elkész szített függvf ggvény segíts tségével a hárommal / néggyel n / öttel / héttel h / kilenccel osztható számokat.

def oszthatosag(mivel): Megoldás return lambda n: n % mivel ==0 lista = range(1,51) print "3-mal:", filter(oszthatosag(3),lista) print "4-gyel:", filter(oszthatosag(4),lista) print "5-tel:", filter(oszthatosag(5),lista) print "7-tel:", filter(oszthatosag(7),lista) print "9-cel:", filter(oszthatosag(9),lista)

Minimalista megoldás def oszthatosag(mivel): return lambda n: n % mivel ==0 for i in [3,4,5,7,9]: print i,":", filter(oszthatosag(i),range(1,51)) 45

Abszolút t minimalista megoldás for i in [3,4,5,7,9]: print i,":", filter(lambda lambda n: n % i ==0,, range(1,51)) 46

Feladat2 Generálj 20 db véletlenszv letlenszámot 0 és s 10 között! k Írd ki, melyik számb mból l hány h darab van a listában! # véletlenszv letlenszám m generálás: random modul 47

Megoldás import random lista=[] for i in xrange(20): lista.append(random.randint(0,10)) print lista for i in xrange(10): print i, :,, lista.count(i) # vagy: print i, :,, len(filter(lambda x: x==i, lista)) 48

További anyagok http://www.python.org/ http://opensource.nokia.com/projects/python fors60 http://mobilenin.com/pys60/menu.htm http://www.forum.nokia.com/tools_docs_an d_code/tools/runtimes/python_for_s60/ 49

További anyagok Könyvek: Mark Pilgrim: Dive Into Python Forstner-Ekler Ekler-Kelényi: Bevezetés s a mobilprogramozásba 50