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

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

Függvények Függvények

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

Python tanfolyam Python bevezető I. rész

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

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Programozási nyelvek Python

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

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

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

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Excel 2010 függvények

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

2018, Funkcionális programozás

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

Python bevezető foglalkozás Python bevezető foglalkozás

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Az alábbi feladatok közül a megadottat készítse el objektum-orientált módszerrel. Fontos, hogy objektum-orientált módon gondolkozzon és úgy is

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

Programozás I gyakorlat

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

Generikus Típusok, Kollekciók

Már megismert fogalmak áttekintése

Rekurzió. Dr. Iványi Péter

Lekérdezések az SQL SELECT utasítással

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Választó lekérdezés létrehozása

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

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

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

INFORMATIKA javítókulcs 2016

A pillangóval jelölt feladatok mindenki számára könnyen megoldhatók. a mókussal jelölt feladatok kicsit nehezebbek, több figyelmet igényelnek.

2018, Diszkrét matematika

Programozási nyelvek Java

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

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

Gyakorló feladatok Gyakorló feladatok

A C programozási nyelv III. Pointerek és tömbök.

SZÁMÍTÁSOK A TÁBLÁZATBAN

Algoritmusok és adatszerkezetek 2.

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Komputeralgebra Rendszerek

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

A C programozási nyelv III. Pointerek és tömbök.

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

8. gyakorlat Pointerek, dinamikus memóriakezelés

Komputeralgebra Rendszerek

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

3. Osztályok II. Programozás II

Conway életjátéka (Conway' s Game of Life)

az Excel for Windows programban

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi;

Szkriptnyelvek. 1. UNIX shell

Szövegek C++ -ban, a string osztály

Készítette: Nagy Tibor István

Programozási nyelvek Java

Szkriptnyelvek II. Perl programok

Kereső függvények és használatuk a Microsoft Excel programban. dr. Nyári Tibor

1. Alapok. #!/bin/bash

Programozás C++ -ban 2007/7

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

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

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

Programozási nyelvek II. JAVA

Osztályok. 4. gyakorlat

FUNKCIONÁLIS PROGRAMOZÁS

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

Webprogramozás szakkör

A C programozási nyelv I. Bevezetés

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.

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

A C programozási nyelv I. Bevezetés

Kirakós játék. Döntő február 22. Alakzatok (katalógus) DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2013/2014

EGYSZERŰ SZÁMÍTÁSOK TÁBLÁZATKEZELÉS ELINDULÁS SZE INFORMATIKAI KÉPZÉS 1

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

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

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

Láncolt listák Témakörök. Lista alapfogalmak

Apple Swift kurzus 3. gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat


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

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

A félév során előkerülő témakörök

Java II. I A Java programozási nyelv alapelemei

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Átírás:

függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2

Emlékeztető a függvények lényegében mini-programok, melyek egy nagyobb feladat egy-egy részfeladatát végezik el ezekből a mini-programokból bonyolult programokat építhetünk a függvények nagyon hasznosak ahhoz, hogy bonyolultabb programoknak áttekinthetőbb szerkezetet adjunk 2

Emlékeztető egy függvénynek van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk leírjuk a nevét megadjuk a bemeneti paraméterek értékét felhasználjuk a visszatérési értékét 3

Emlékeztető egy függvénynek lehetnek lokális változói, amik csak a függvényen belül ismertek érdekességek: különböző függvényeknek lehetnek azonos nevű lokális változói (ezeket a program különböző változóként kezeli) függvény bemeneti paramétere lehet egy másik függvény neve a függvény definíciója hivatkozhat magára a függvényre (rekurzió) 4

Emlékeztető klasz dolgokat készítettünk! 5

Lista a lista egy összetett adattípus egy lista elemek sorozatából áll, ahol az elemek bármilyen típusú adatok lehetnek (akár listák is!) például: = ["János", 16, True] ['János', 16, True] 6

létrehozása 1. az elemeket szögletes zárójelek között, vesszővel elválasztva felsoroljuk (lásd előbbi példát) 2. a list() függvénnyel, melynek argumentuma olyan dolog, melynek elemei felsorolhatók 3. [ kifejezés for elem in objektum ] = ["János", 16, True] ['János', 16, True] = list(range(5)) [0, 1, 2, 3, 4] = list("helló!") ['H', 'e', 'l', 'l', 'ó', '!'] = [x**2 for x in range(5)] [0, 1, 4, 9, 16] 7

Műveletek listákkal a karakterláncokhoz hasonlóan listákat összeadhatunk és számmal szorozhatunk alkalmazhatjuk a len() függvényt alkalmazhatjuk az in és a not in operátorokat >>> [0] + [1, 2, 3] + [4, 5, 6] [0, 1, 2, 3, 4, 5, 6] >>> ['A']*5 ['A', 'A', 'A', 'A', 'A'] = [0, 1, 2, 3, 4] >>> len(l) 5 >>> 1 in L True >>> 10 in L False >>> 10 not in L True 8

Műveletek listákkal append() elem hozzáadása a lista végéhez extend() másik lista hozzáfűzése a lista végéhez insert() elem beszúrása a lista tetszőleges helyére = [1, 2, 3].append(4) [1, 2, 3, 4].extend([5, 6]) [1, 2, 3, 4, 5, 6].insert(0, 0) [0, 1, 2, 3, 4, 5, 6].insert(3, 'közepe') [0, 1, 2, 'közepe', 3, 4, 5, 6] 9

Műveletek listákkal pop() adott indexű elem eltávolítása a listából remove() eltávolítja az argumentum-ként adott elemet a listából (az első előfordulást keresi) index() visszaadja azt a pozíciót, ahol először elődordul egy adott elem a listában = [1, 2, 3, 4, 5].pop(2) 3 [1, 2, 4, 5] >>>.remove(2) [1, 4, 5].index(4) 1 10

Műveletek listákkal count() visszaadja, hogy egy adott elem hányszor fordul elő a listában reverse() megfordítja a lista elemeinek sorrendjét sort() növekvő (vagy csökkenő) sorba rendezi a lista elemeit = [1, 2, 3, 4, 5, 5].count(5) 2.count(6) 0.reverse() [5, 5, 4, 3, 2, 1] = [1, 3, 5, 2, 4].sort() [1, 2, 3, 4, 5].sort(reverse=True) [5, 4, 3, 2, 1] 11

Listaelem elérése és lista szeletelése a karakterláncokhoz hasonlóan egy lista egy adott elemére az elem indexének [ ]-be írásával hivatkozhatunk ha az x. és y. elemek közötti elemekre akarunk hivatkozni, akkor [x:y]-t írunk = [0, 1, 2, 3, 4, 5] [0] 0 [3] 3 [-1] 5 [-2] 4 [1:4] [1, 2, 3] [2:] [2, 3, 4, 5] [:-2] [0, 1, 2, 3] 12

Többdimenziós lista ha a lista elemei is listák, akkor többdimenziós listákat kapunk: 0 = [1, 2, 3] 1 = [4, 5, 6] 2 = [7, 8, 9] 3 = ['*', 0, '#'] = [L0, L1, L2, L3] [[1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#']] [1][2] 6 [-1][1] 0 13

Game of Life (életjáték) A Game Of Life egy celluláris automata működését illusztrálja: egy 2D rácson sejtek helyezkednek el, melyek egyszerű szabályok alapján szaporodnak vagy halnak meg. Az automata futtatásával élettel telik meg a játéktér. További információ és illusztráció: https://bitstorm.org/gameoflife/ Próbáld ki! 14

Game of Life (életjáték) A sejtek állapotát (él / nem él) egy 2D listában tárolhatjuk, melynek minden eleme 1 (él) vagy 0 (nem él) lehet. A szabályok a következők: ha egy sejt él, akkor a következő iterációban: életben marad, ha az élő szomszédainak száma 2 vagy 3 egyébként meghal ha egy sejt nem él, akkor a következő iterációban: újjászületik, ha az élő szomszédainak száma 3 egyébként halott marad. 15

Game of Life (életjáték) Induljunk ki a megadott lifegame-1.py programból, mely megrajzolja a játékteret, és amivel sejteket tutunk elhelyezni vagy törölni! Egészítsük ki ezt a programot az állapot tárolásával és újraszámolásával! A következő függvényeket írjuk meg: init_state() állapot inicializálása next_state() új állapot számolása draw_next_state() új állapot kirajzolása És hívjuk meg ezeket megfelelően a jobb vagy a bal egérgomb lenyomásakor! 16

másolása Próbáld ki! Mit tapasztalsz? 1 = ['alma', 'körte', 'szilva'] 1 ['alma', 'körte', 'szilva'] 2 = L1 2 ['alma', 'körte', 'szilva'] 2[0] = 'barack' 2 ['barack', 'körte', 'szilva'] 1 ['barack', 'körte', 'szilva'] Vesd össze ezzel! >>> A = 12 >>> A 12 >>> B = A >>> B 12 >>> B = 14 >>> B 14 >>> A 12 17

másolása 1 = ['alma', 'körte', 'szilva'] 1 ['alma', 'körte', 'szilva'] 2 = L1 2 ['alma', 'körte', 'szilva'] 2[0] = 'barack' 2 ['barack', 'körte', 'szilva'] 1 ['barack', 'körte', 'szilva'] L1 L2 alma barack körte szilva 18

Alapszintű másolás (shallow copy) Próbáld ki! Mit tapasztalsz? 1 ['barack', 'körte', 'szilva'] >>> import copy 3 = copy.copy(l1) 3 ['barack', 'körte', 'szilva'] 3.append('alma') 3 ['barack', 'körte', 'szilva', 'alma'] 1 ['barack', 'körte', 'szilva'] 19

Alapszintű másolás (shallow copy) Próbáld ki! Mit tapasztalsz? 0 = [1, 2, 3] 1 = ['alma', 'körte', L0] 1 ['alma', 'körte', [1, 2, 3]] 2 = copy.copy(l1) 2 ['alma', 'körte', [1, 2, 3]] 2[2].remove(3) 2 ['alma', 'körte', [1, 2]] 1 ['alma', 'körte', [1, 2]] 20

Alapszintű másolás (shallow copy) 0 = [1, 2, 3] 1 = ['alma', 'körte', L0] 1 ['alma', 'körte', [1, 2, 3]] 2 = copy.copy(l1) 2 ['alma', 'körte', [1, 2, 3]] 2[2].remove(3) 2 ['alma', 'körte', [1, 2]] 1 ['alma', 'körte', [1, 2]] L1 alma körte L0 1 2 3 L2 alma körte 21

Teljes körű másolás (deep copy) Próbáld ki! Mit tapasztalsz? 0 = [1, 2, 3] 1 = ['alma', 'körte', L0] 1 ['alma', 'körte', [1, 2, 3]] 2 = copy.deepcopy(l1) 2 ['alma', 'körte', [1, 2, 3]] 2[2].remove(3) 2 ['alma', 'körte', [1, 2]] 1 ['alma', 'körte', [1, 2, 3]] 22

Teljes körű másolás (deep copy) 0 = [1, 2, 3] 1 = ['alma', 'körte', L0] 1 ['alma', 'körte', [1, 2, 3]] 2 = copy.deepcopy(l1) 2 ['alma', 'körte', [1, 2, 3]] 2[2].remove(3) 2 ['alma', 'körte', [1, 2]] 1 ['alma', 'körte', [1, 2, 3]] L1 L2 alma körte alma körte L0 1 2 3 1 2 3 23

Összefoglalás egy lista elemek sorozatából áll, ahol az elemek bármilyen típusú adatok lehetnek (akár listák is!) listát létrhozhatunk úgy, hogy [ ]-ek között felsoroljuk az elemeit, vagy a list() függvénnyel 24

Összefoglalás műveletek listákkal: listák összeadása, len(), in, not in append(), extend(), insert(), pop(), remove() index(), count(), reverse(), sort() lista elem elérése és listák szeletelése: L[x], L[x:y] listák másolása: alapszintű másolás: copy.copy() teljes körű másolás: copy.deepcopy() 25

Reversi játék 2. verzió Egészítsük ki a korábbi Reversi játékot úgy, hogy a program magától fordítsa meg a korongokat, mikor lehelyezünk egy korongot! Ehhez tároljuk a tábla állapotát egy 2D listában (pl. kék korong esetén a mező állapota legyen 1, piros korong esetén -1, üres mező állapota pedig legyen 0)! A tárolt állapot alapján számoljuk ki, mely mezők állapotát kell változtatni egy korong lehelyezésekor! 26

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