Változók és adattípusok Változók és adattípusok

Hasonló dokumentumok
Python bevezető foglalkozás Python bevezető foglalkozás

Gyakorló feladatok Gyakorló feladatok

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

Scratch bevezető foglalkozás Scratch bevezető foglalkozás

Animáció készítése Scratch-ben

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

A C# programozási nyelv alapjai

Interaktív alkalmazások készítése Scratch-ben

Szoftvertervezés és -fejlesztés I.

1. Alapok. #!/bin/bash

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

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

Webprogramozás szakkör

Imperatív programozás

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

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

BASH SCRIPT SHELL JEGYZETEK

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

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

1. Jelölje meg az összes igaz állítást a következők közül!

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

Imperatív programozás

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozási nyelvek Python

Függvények Függvények

Python tanfolyam Python bevezető I. rész

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Informatika terméktervezőknek

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Bevezetés a programozásba I.

Szkriptnyelvek. 1. UNIX shell

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

Programozás I. gyakorlat

2018, Diszkrét matematika

AWK programozás Bevezetés

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

A Python programozási nyelv

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Vezérlési szerkezetek

2016, Diszkrét matematika

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

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

INFORMATIKA javítókulcs 2016

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba I.

A C# PROGRAMOZÁSI NYELV

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:

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

6. fejezet: Ciklusok

Bevezetés a Python programozási nyelvbe

PYTHON. Avagy hosszú az út a BioPythonig

3 A C programozási nyelv szintaktikai egységei

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

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Mintavételes szabályozás mikrovezérlő segítségével

A Python programozási nyelv

Objektumorientált Programozás III.

2018, Diszkre t matematika. 8. elo ada s

Programozási segédlet

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

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

Java II. I A Java programozási nyelv alapelemei

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

Bevezetés a programozásba

LibreOffice Makró Basic

Programozási alapismeretek 3. előadás

INFORMATIKA tétel 2019

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozás alapjai. 2. előadás

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Java programozási nyelv

Készítette: Nagy Tibor István

A C programozási nyelv I. Bevezetés

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

A C programozási nyelv I. Bevezetés

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Algoritmizálás és adatmodellezés tanítása 1. előadás

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

Felvételi tematika INFORMATIKA

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

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

Matematikai programok

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Komputeralgebra Rendszerek

Vezérlési szerkezetek. Szelekció Ciklusok

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Bevezetés a programozásba I.

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

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.

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

Átírás:

előző foglalkozás összefoglalása, ismétlő gyakorlatok változók elnevezése, értékadás, többszörös értékadás műveletek egész és tört számokkal, string-ekkel logikai változók és logikai műveletek típusátalakítás, néhány beépített függvény

Mi a program? utasítások sorozata valamilyen feladat megoldására amit egy számítógép hajt végre 2

Mi a programozás? programok készítése, mely általában a következő tevékenységeket jelenti: 1. feladat megértése 2. tervezés 3. kódolás 4. tesztelés 5. hibák javítása 6. továbbfejlesztés 3

Mi a programozási nyelv? programok írására szolgáló mesterséges nyelv utasításkészlet ( szótár ) szintaktikai szabályok ( nyelvtan ) sokféle programozási nyelv létezik pl. Scratch, Python, JavaScript, PHP, Java, C, Ada... 4

A Python nyelv és az IDLE környezet Python könnyen elsajátítható és használható sok előre megírt modult tartalmaz modul = hasznos programocskák halmaza nagy cégek is használják Google, Pixar, NASA,... IDLE (Integrated Development and Learning Environment) integrált fejlesztő és tanuló környezet alkalmas Python programok írására és futtatására 5

IDLE ablakok File New File vagy CTRL-N terminálablak (ebben fut a program) kódablak (ebben írjuk a programot) 6

IDLE ablakok terminálablak (ebben fut a program) Run Run Module vagy F5 kódablak (ebben írjuk a programot) Futtatás előtt az IDLE szeretné elmenteni a programot. Hozz létre egy könyvtárat, amibe Python programjaidat mented! A Python programok neve bármi lehet, a kiterjesztésük általában.py (például HelloWorld.py) 7

Változók egy változóra gondolhatsz úgy, mint egy névvel ellátott tárhelyre a változóban valamilyen értéket tárolhatsz (pl. egy számot vagy egy szöveget) szam = 6 print(szam) masikszam = 2*szam print(masikszam) szam = 18 print(szam) a tárolt értéket a változó nevének leírásával hívhatod elő a változó értékét bármikor felülírhatod 8

Adattípusok egyszerű beépített adattípusok egész szám (integer) tört (float) szöveg (string): "..." vagy '...' igaz/hamis (Boolean): True, False a = 5 b = 6.5 c = "szöveg" d = 'ez is szöveg' e = True c = -10 egy változó típusát nem kell előre megmondani, akkor dől el, amikor értéket kap! 9

Konzol input és output nev = input("hogy hívnak? ") kor = input("hány éves vagy? ") print("hello " + nev + "!") print("biztos jó " + kor + " évesnek lenni.") 10

Feltételes elágazás egy programrész végrehajtását feltételhez kötheted az if utasítással (az if jelentése magyarul ha) az if párja az else (jelentése egyébként); az else utáni programrész akkor hajtódik végre, ha az if feltétele nem teljesül Figyeld meg a behúzásokat! szam = int(input("írj be egy számot! ")) if (szam > 100): print("ez egy nagy szám.") else: print("ez egy kicsi szám.") Ügyelj a kettőspontra! 11

Feltételes elágazás Az azonos méretű behúzással rendelkező, egymás utáni sorok egy összetartozó blokkot alkotnak if <feltétel>: else: A <feltétel> egy kifejezés, melynek értéke igaz (True) vagy hamis (False) lehet Ez az utasításblokk hajtódik végre ha a <feltétel> igaz Ez az utasításblokk hajtódik végre ha a <feltétel> hamis 12

Feltételes elágazás if <feltétel>: igen <feltétel> igaz? nem else: 13

Ismétlés while ciklussal sokszor előfordul, hogy egy programrész végrehajtását addig kell ismételni, amíg valamilyen feltétel fennáll ezt a célt szolgálja a while ciklus (a while jelentése amíg): szam = 0 while (szam <= 100): szam = int(input("írj be egy 100-nál nagyobb számot! ")) print("köszönöm!") 14

Ismétlés while ciklussal while <feltétel>: A <feltétel> egy kifejezés, melynek értéke igaz (True) vagy hamis (False) lehet Itt is a behúzás jelzi a while-hoz tartozó, ismételendő utasításblokkot Ez az utasításblokk mindaddig újra és újra végrehajtódik amíg a <feltétel> igaz 15

Ismétlés while ciklussal while <feltétel>: igen <feltétel> igaz? nem 16

Gondoltam egy számra! Házi feladat Olyan programot kezdtünk el írni, mely kisorsol egy véletlen számot 1 és 100 között, majd arra kéri a felhasználót, hogy találja ki a sorsolt számot. A program úgy segíti a felhasználót, hogy annak minden tippje után kiírja, hogy a sorsolt szám nagyobb vagy kisebb, mint a felhasználó tippje. A program mindaddig kéri a felhasználó tippjeit, amíg a felhasználó ki nem találja a sorsolt számot. Egészítsd ki a hiányos programot! 17

Gondoltam egy számra! from random import randint szam = randint(1, 100) print("gondoltam egy számra 1 és 100 között.")... while (...): tipp =... if (...): print("nem, ennél kisebbre gondoltam.") else: if (...): print("nem, ennél nagyobbra gondoltam.") else: print("igen, eltaláltad!") 18

Gondoltam egy számra! from random import randint szam = randint(1, 100) print("gondoltam egy számra 1 és 100 között.") tipp = 0 while (szam!= tipp): tipp = int(input("melyik számra gondoltam? ")) if (tipp > szam): print("nem, ennél kisebbre gondoltam.") else: if (tipp < szam): print("nem, ennél nagyobbra gondoltam.") else: print("igen, eltaláltad!") 19

Lépésenkénti végrehajtás Próbáld ki! Indítsd el a Debugger-t a terminálablakban! (Debug Debugger) A kinyíló Debug Control ablakban lépésenként futtathatod a programot, miután a szokásos módon elindítottad (pl. F5 billentyűvel). A Step és az Over gombokkal léptetheted a programot utasításról utasításra. A Step minden függvénybe belép, az Over átlépi a függvényhívásokat. Figyeld meg a változók (szam és tipp) értékét a futás során! Ellenőrizd a feltételek teljesülését az if/else és while utasítások végrehajtásánál! 20

Ismétlő gyakorlatok Írj programot! Írj programot, mely kiírja a 7-tel osztható számokat 1-től 70-ig! Módosítsd a programot úgy, hogy azok mellé a számok mellé egy *-ot is kiírjon, amiben van 7-es számjegy! Írj programot! Írj programot, mely kiírja 2 hatványait 1-től 1000-ig! A számokat írjuk egy sorba, pontosvesszővel elválasztva! Azaz, ilyen kimenetet várunk: 1; 2; 4; 8;... 21

Ismétlő gyakorlatok n = 7 while (n <= 70): print(n) n = n + 7 n = 7 while (n <= 70): if ((n == 7) or (n == 70)): print(n, "*") else: print(n) n = n + 7 22

Ismétlő gyakorlatok sor = "" n = 1 while (n <= 1000): sor = sor + str(n) + "; " n = 2*n print(sor) n = 1 while (n <= 1000): print(n, end="; ") n = 2*n 23

Változók elnevezése a változók nevét a programozó választja egy változónév nem lehet foglalt Python kulcsszó, mint pl. if, else, while, def, and,... a változónevek betűket és számokat is tartalmazhatnak, de... nem kezdődhetnek számmal nem lehet bennük szóköz vagy olyan speciális karakter, mint #, &, $,... a változó nevek tartalmazhatnak _ (aláhúzás) karaktert 24

Változók elnevezése válasszunk rövid, de kifejező neveket! pl. egy háromszög magassága lehet magassag vagy néha egyszerűen csak m pl. egy bekért név és életkor lehet nev és kor ha mégis hosszabb nevet kell választani, akkor kövessünk egységes elnevezési mintát bármilyen mintát használhatnánk, de a Python programozók az alábbi mintát követik: haromszog_magassag, kor_sugar,... 25

Változók elnevezése Melyik helytelen? Az alábbi változónevek közül melyik helytelen? Melyik az, ami helyes, de kerülendő? És melyik az, ami nem python-os? oldal_a szam#1 elso_betu qwert tablaoszlop12 _spec teglalap_atlo 2.sor szoveghossz 3osztoi korsugar else gombmegsehatterszin $200 osszeg eger_pozicio_y sebesseg_x 26

Változók elnevezése oldal_a szam#1 elso_betu qwert tablaoszlop12 _spec teglalap_atlo 2.sor szoveghossz 3osztoi korsugar else gombmegsehatterszin $200 osszeg eger_pozicio_y sebesseg_x 27

Értékadás az értékadás az = jellel történik az első értékadással hozzuk létre a változót további értékadással változtathatjuk a változóban tárolt értéket az értékadás meghatározza a változó típusát is szam = 6 szam2 = 5*(szam+1) szam = 12 szam = szam + 1 szam += 1 n = 15 pi = 3.1415 msg = "Hello!" n = pi 28

Többszörös értékadás a Pythonban egyszerre több változóhoz is rendelhetünk értéket: a, b, c = 1, 2, 3 ennek segítségével kényelmesen cserélhetjük fel két változó értékét: x, y = 1, 2 x, y = y, x 29

Műveletek egész számokkal alapműveletek: +, -, *, / további hasznos műveletek: hatványozás: ** egész osztás: // maradékos osztás: % >>> 2**64 18446744073709551616 >>> 15/2 7.5 >>> 15//2 7 >>> 15%2 1 30

Műveletek tört számokkal alapműveletek: +, -, *, / próbáljuk ki ezeket is: hatványozás: ** egész osztás: // maradékos osztás: % >>> 2.5**10 9536.7431640625 >>> 15.5/2 7.75 >>> 15.5//2 7.0 >>> 15.5%2 1.5 31

Műveletek precedenciája sorrend 1. ** 2. *, /, //, % 3. +, - ha valami nem egyértelmű, használjunk zárójeleket! >>> 5+10/2 10.0 >>> 5*4**2 80 >>> 10/2*5 25.0 >>> 10/2+5*6**4-2 6483.0 >>> 10/2+5*6**(4-2) 185.0 32

Beépített függvények minimum és maximum min(), max() kerekítés round() >>> min(5, 10, 15) 5 >>> max(5, 10, 15) 15 >>> max(5.4, 6.25, 8.9) 8.9 >>> round(15.2) 15 >>> round(15.6) 16 33

Stringek egy szöveg karakterek sorozatából áll az ilyen karakterláncokat string-eknek nevezzük a stringet jelölhetjük a "..." vagy a '...' jelekkel msg = "Hello!" msg = 'Hello!' msg = "Ez egy 'A' betű." msg = 'Ez egy "idézet".' 34

String-kezelés szöveg hosszának megállapítása len() szöveg átalakítása kis- vagy nagybetűssé lower(), upper() keresés szövegben find() előfordulás számlálása count() >>> s = "Hello!" >>> len(s) 6 >>> s.upper() 'HELLO!' >>> s.lower() 'hello!' >>> s.find('o') 4 >>> s.find('b') -1 >>> s.count('l') 2 >>> s.count('b') 0 35

Típusátalakítás sokszor szükség van egy változóban tárolt érték típusának átalkítására str(): egész és tört számokból csinál string-et int() és float(): egészet és törtet csinál string-ből mi történik, ha a float() bemenete egy egész? mi történik, ha az int() bemenete egy tört? >>> str(12) '12' >>> str(15.6) '15.6' >>> int('12') 12 >>> float('15.6') 15.6 >>> float(12) 12.0 >>> int(15.6) 15 36

Egy mese tanulságai Egészítsd ki! Egészítsd ki az alábbi programot értelemszerűen! Ügyelj arra, hogy a volt szó minden előfordulását megszámolja a program, a kis- és nagybetűsöket egyaránt! szoveg = "Egyszer volt, hol nem volt, volt egyszer egy király. Volt ennek a királynak három fia." print("a szöveg hossza: " + ) print("a 'volt' szó ennyiszer fordul elő: " + ) print("a 'volt' szó első előfordulásának helye: " + ) print("a 'király' szó ennyiszer fordul elő: " + ) print("a 'király' szó első előfordulásának helye: " + ) 37

Egy mese tanulságai szoveg = "Egyszer volt, hol nem volt, volt egyszer egy király. Volt ennek a királynak három fia." szoveg = szoveg.lower() print("a szöveg hossza: " + str(len(szoveg))) print("a 'volt' szó ennyiszer fordul elő: " + str(szoveg.count('volt'))) print("a 'volt' szó első előfordulásának helye: " + str(szoveg.find('volt'))) print("a 'király' szó ennyiszer fordul elő: " + str(szoveg.count('király'))) print("a 'király' szó első előfordulásának helye: " + str(szoveg.find('király'))) 38

Logikai műveletek Boolean típusú (logikai) változók csak True (igaz) vagy False (hamis) értéket vehetnek fel ilyen változókkal logikai műveleteket végezhetünk: 1. not (negáció) 2. and (és) 3. or (vagy) >>> True and False False >>> True or False True >>> not True False 39

Logikai műveletek A B A and B F F F F T F T F F T T T A B A or B F F F F T T T F T T T T A F T not A T F 40

Feltételek kiértékelése Mit ír ki? Mit ír ki ez a program? X, Y, Z = 100, 25, 70 if ((X > Y) or (Y > Z)): print("alma") else: print("körte") if ((Z < X) and not(z > Y)): print("banán") else: print("narancs") 41

Összefoglalás változók elnevezése értékadás és többszörös értékadás műveletek egész és tört számokkal beépített függvények min(), max(), round() string-ek és string-kezelés len(), lower(), upper(), find(), count() típusátalakítás str(), int(), float() logikai műveletek and, or, not 42

Egy szám osztói Feladat Írj programot, mely bekér egy pozitív egész számot, majd kiszámolja és kiírja annak osztóit! Az osztók egy sorban, pontosvesszővel elválasztva jelenjenek meg! A program várt működése pl. a következő: Írj be egy pozitív egész számot: 15 15 osztói: 1; 3; 5; 15 43

Egy szám osztói Megoldási terv Kérd be a számot, és azonnal alakítsd át egész számmá! Hozz létre egy változót, amiben a kiírandó osztókat gyűjtöd majd! Mivel az 1 minden számnak osztója, ezért a változó kezdő értéke lehet 1. Ehhez fűzöd majd a további osztókat. Minden n számra 2-től a megadott szám feléig, vizsgáld meg, hogy n osztója-e a számnak! Ha igen, akkor n-et fűzd hozzá az osztókat tároló változó értékéhez! Végül fűzd hozzá az osztókhoz magát a számot, és írd ki az osztókat tároló változó értékét! 44

Egy szám osztói Ötletek n osztója egy X számnak, ha X-et n-nel elosztva 0 maradékot kapunk. Ezt így tesztelheted a programodban: if (X%n == 0): Meg kell vizsgálnod minden n számra 2-től a megadott szám feléig, hogy n osztója-e a számnak. Ezt egy while ciklussal lehet megoldani. A ciklus belsejében ne felejtsd el n aktuális értékének vizsgálata után n értékét megnövelni eggyel. Különben a programod végtelen ciklusba kerül, és soha nem áll le. 45

Tökéletes számok Feladat Egy pozitív egész számot tökéletesnek nevezünk, ha a szám megegyezik az önmagánál kisebb osztóinak összegével. Pl. a 6 tökéletes szám, mert az önmagánál kisebb osztói az 1, 2, 3, és ezek összege pont 6. Az előző feladat mintájára, írj programot, mely bekér egy pozitív egész számot, majd megállapítja, hogy az tökéletes szám-e vagy nem! A program várt működése pl. a következő: Írj be egy pozitív egész számot: 6 Tökéletes szám! Írj be egy pozitív egész számot: 12 Nem tökéletes szám. 47

Tökéletes számok Megoldási terv Kérd be a számot, és azonnal alakítsd át egész számmá! Hozz létre egy változót, amiben az osztók összegét tárolod majd! Mivel az 1 minden számnak osztója, ezért a változó kezdő értéke lehet 1. Ehhez adod majd hozzá a további osztókat. Minden n számra 2-től a megadott szám feléig, vizsgáld meg, hogy n osztója-e a számnak! Ha igen, akkor n-et add hozzá az osztók összegét tároló változó értékéhez! Végül ellenőrizd, hogy az osztók összege megegyezik-e a számmal, és az ellenőrzés eredményétől függően írd ki a megfelelő üzenetet a képernyőre! 48

Tökéletes számok keresése Feladat Az előző feladatban készített programmal megpróbálhatsz tökéletes számokat keresni, de hamar rájössz majd, hogy ez kézzel elég hosszadalmas. Írj programot, mely egy megadott felső határig az összes számot megvizsgálja, és kiírja a tökéletes számokat! A program várt működése pl. a következő: Tökéletes szám keresésének felső határa: 100 Ezeket a tökéletes számokat találtam: 6 28 50

Tökéletes számok keresése Megoldási ötlet Lényegében az előző programodat kell beletenni egy while ciklus belsejébe, mely az összes számon végigmegy 6-tól (tudjuk, hogy 6-nál nincs kisebb tökéletes szám) a bekért felső határig. 51

További anyagok on-line: https://www.python.org/ https://docs.python.org/3/ https://www.python.org/downloads/ http://python.hu/ http://python.hu/magyar-nyelvu-dokumentaciok http://python.hu/peldaprogramok http://harp.pythonanywhere.com/python_doc/tutorial/index.html 53

További anyagok könyvek Gérard Swinnen, Tanuljunk meg programozni Python nyelven, 2005 http://mek.oszk.hu/08400/08435/08435.pdf Koós Antal, Python a gépben, TypoTeX 2016 http://www.interkonyv.hu/konyvek/koos_antal_python_a_gepben 54

Készítette: Buttyán Levente Levente.Buttyan@gmail.com CoderDojo Szentendre 2017 55