Python
Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt változhat.
Változók Változó neve: ált.ban betűvel (angol abc) kezdődik, és betűvel vagy számmal, egyéb jelekkel folytatódhat. Pl.: X1, abc12, 3D -nem jó Értékadás: Értékadás bal oldalán a változó címét veszi figyelembe a program, jobb oldalon szereplő változó az értékét képviseli X=2; 2=X; X=Z; X = X + 1; változó címe = érték
Beolvasás a billentyűzetről adat = input ( Kérem az adatot ) Feladat: Kérjünk be két számot, és írjuk ki, mennyi az összegük: a = input ( Írja be az első számot ) b = input ( Írja be a másik számot ) print (a + b ) Miért nem működik jól a program?
Beolvasás a billentyűzetről Az input midig szöveges adatot olvas be! 2 megoldás lehet (számmá alakítjuk, vagy kiértékeljük): szam = int ( input ( Írjon be egy számot ) ) -egész szám szam = float ( input ( Írjon be egy számot ) ) -tizedestört szam = eval ( input ( Írjon be egy számot ) ) -kiértékelés Az eval() fv. kiértékel egy kifejezést írhatunk műveletet is: adat = input ( "Írjon be egy műveletet: " ) print(adat," értéke: ", eval ( adat ) )
Kiírás print (..) print (..,end = \n ) print (a, és, b, összege:,a+b) Formázott kiírás: print ( %s és %s összege: %s % (a, b, a+b) ) A string után nincs vessző!
Feladat Kérjük be egy háromszög három oldalának mérőszámát a felhasználótól, és írjuk ki a háromszög kerületét és területét. Használjuk a: t²=s*(s-a)*(s-b)*(s-c) összefüggést, a gyökvonáshoz a math.sqrt( n ) függvényt Szükség lesz a math eszközkészletre: import math
Szintaxis A program nyelvi helyességét értjük Szintaktikai hibák elírásból, hiányzó jelekből (zárójel, kettőspont, stb.) erednek Pl.: print ( x pritn (x) Nem szintaktikai hiba a program hibátlan, de nem az csinálja, amit kellene szemantikai hiba
Vezérlési szerkezetek Böhm Jacopini sejtés (Mills tétel) 3 vezérlési szerkezettel minden struktúrált program felírható: Szekvencia (sor) Szelekció (elágazás) Iteráció (ciklus)
Elágazás szintaktikája IF logikai feltétel: utasítás1 utasítás2 utasítás -ez már nem tartozik a szerkezetbe behúzás (ident) fontos IF logikai feltétel: utasítás1 utasítás2 ELSE: utasítás1 utasítás2
Logikai kifejezések == egyenlő!= nem egyenlő && -és -vagy IF a==20 && b>=20: IF a!=20 b!=20:
Ciklusok Feltételes ciklus A ciklus addig fut, amíg egy feltétel teljesül. Ha a feltétel nem teljesül, a ciklus leáll Ciklus amíg: nem ütnek egy billentyűt Ciklus amíg: x értéke 1000-nél kisebb Ciklus, amíg el nem értük a fájl végét
Ciklusok Előírt lépésszámú ciklus: A ciklus kezdetekor meghatározható, hogy hányszor fut le a ciklus magja Pl.: számok 1-től 120-ig Feltételes ciklus Egy feltételtől függően áll meg Pl.: addig, amíg Entert nem ütnek
Ciklus részei Ciklusfej: ez határozza meg a feltételeket, kezdőértéket, stb. (A while vagy a for utáni rész) Ciklusmag: ez a programrészlet ismétlődik (a behúzott rész) Ciklusváltozó: csak előírt lépésszámú ciklusnál van, ebben számoljuk a lépéseket minden ismétlődésnél változik
Vezérlési szerkezet szintaktikája for változó in range(x,y,z): ciklusmag utasítás ciklusmag utasítás ez már nem a for-hoz tartozik if (feltétel/logikai érték): utasítás utasítás else: utasítás
Feladat Számok 1- től 100-ig For i in range (1,101): print(i)
Feladat Kérjünk be egy számot, írjuk ki az osztóit! Mekkora lehet a legnagyobb osztó? Hogyan tudjuk megállapítani egy számról, hogy osztója-e egy másiknak.
Feladat Készítsük el az alábbi feladat algoritmusát: A gép kitalál egy véletlen egész számot 1-100 között A felhasználó beírja a tippjét Ha kitalálta a számot a program megáll Egyébként: a gép megadja, hogy a gondolt szám kisebb v. nagyobb
Sztringek a= dfg dg dg d print(a[2:5]) print(len(a)) print(a[0,10,2]) print(a[::-1]) print( dg in a)
Feladat Kérjünk be 2 szöveget, és állapítsuk meg, hogy a hosszabb tartalmazza-e a rövidebbet Döntsük el, hogy 2 szó anagramma-e (azonos betűkből áll) Tipp: a sorted() fv.-t használjuk rendezésre!
Halmaz A halmaz minden eleme egyszer fordul elő A sorrend lényegtelen Műveletek: Metszet: a&b Unió: a + b
Feladat Kérjünk be egy szöveget, írjuk ki a benne lévő betűket abc rendbe!
Feladat Kérjünk be egy szöveget, írjuk ki, hány szóból áll Használjuk a sztring split() metódusát! Metódus OOP fogalom, egy objektum eljárása
Feladat Vicces nevek: Kérjük be a felhasználó nevét, és cseréljük meg a vez. Név és keresztnév első 2 betűjét, így írassuk ki: Hogyan cserélnénk fel a az első szótagot? (feltételezzük, hogy nem rendhagyó szót adtak meg, az első szótag a második mgh-ig, vagy az azt megelőző betűig tart ki-et-len, al-ma, kont-ra) Ötlet: Hozzunk létre egy magánhangzó halmazt!
Nevezetes algoritmusok Eldöntés, Kiválasztás, Leválogatás Összegzés Minimum / maximum Megszámlálás Kereső és rendező algoritmusok (ezt nem vesszük)
Eldöntés, Kiválasztás, Leválogatás Egy n elemű adathalmazban lévő, egy adott tulajdonsággal rendelkező elemek közül kiválasztunk egyet, leválogatjuk az összeset, vagy csak eldöntjük, hogy van-e ilyen Algoritmus eldöntés letezik = hamis Ciklus i=1-től n-ig Ha tulajdonság ( elem( i ) ) == igaz letezik = igaz Ciklus vége Ki: letezik Algoritmus vége
Megszámlálás Megszámoljuk, hogy egy n elemű adathalmazban hány darab adott tulajdonságú elem létezik Algoritmus megszámlálás Darab = 0 Ciklus i=1-től n-ig Ha tulajdonság ( elem( i ) ) == igaz darab = darab +1 Ciklus vége Ki: darab Algoritmus vége
Összegzés Összeadjuk, egy n elemű adathalmazban lévő számok értékét Algoritmus összegzés Összeg = 0 Ciklus i=1-től n-ig Összeg = összeg + elem (i) Ciklus vége Ki: összeg Algoritmus vége
Feladat Olvassunk be egy számot, és számoljuk meg, hány osztója van Határozzuk meg az osztók összegét! Állapítsuk meg, hogy tökéletes számot adtak-e meg!
Feladat Készítsünk a korábbi feladat algoritmusa alapján egy programot: A gép kitalál egy véletlen egész számot 1-100 között A felhasználó beírja a tippjét Ha kitalálta a számot a program megáll Egyébként: a gép megadja, hogy a gondolt szám kisebb v. nagyobb
Eseményvezérlés A program események bekövetkezésekor tesz vmit. (reagál egy eseményre) Milyen eseményeket kezelhetünk? Oldal betöltődik (pl.: reklámok) Oldalt elhagyjuk Klikkelünk egy objektumon Egér egy objektum felé megy (onmouseover) Stb.