Függvények Függvények

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

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

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.

Gyakorló feladatok Gyakorló feladatok

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

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

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

Imperatív programozás

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 7.o Az algoritmus fogalma (ismétlés)

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

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

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

Python tanfolyam Python bevezető I. rész

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozási nyelvek 1. előadás

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

1. Alapok. #!/bin/bash

PYTHON. Avagy hosszú az út a BioPythonig

2018, Diszkrét matematika

Rekurzió. Dr. Iványi Péter

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

ROZGONYI-BORUS FERENC DR. KOKAS KÁROLY. Informatika. Számítástechnika és könyvtárhasználat munkafüzet 6., JAVÍTOTT KIADÁS MOZAIK KIADÓ SZEGED, 2013

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

Programozás C++ -ban 2007/7

Írd le ezt a programot, és ellenőrizd annak helyes (elvárt) viselkedését.

Programozás I. 5. Előadás: Függvények

Informatika terméktervezőknek

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Közönséges differenciálegyenletek megoldása Mapleben

BME MOGI Gépészeti informatika 15.

Szkriptnyelvek. 1. UNIX shell

2018, Diszkrét matematika

SCILAB programcsomag segítségével

Oktatási segédlet 2014

Imagine Logo Tanmenet évfolyam

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

Függvények ábrázolása

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

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


BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

BASH SCRIPT SHELL JEGYZETEK

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Webprogramozás szakkör

I. Internetes keresési feladatok (ajánlott idő: 20 perc)

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

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

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés a programozásba. 8. Előadás: Függvények 2.

A C programozási nyelv II. Utasítások. A függvény.

MATLAB alapismeretek II.

9.fejezet: Függvények és külső eljárások

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

Lemez 05 gyakorló feladat

Java programozási nyelv

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

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:

Mathematica automatikusan dolgozik nagy pontossággal, például 3 a 100-dik hatványon egy szám 48 tizedes jeggyel:

Informatika óravázlat 4. osztály oldal 15

Internet programozása. 3. előadás

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

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

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

INFORMATIKA tétel 2019

Bevezetés a programozásba I.

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

6. fejezet: Ciklusok

Bevezetés a programozásba I.

Programozási nyelvek Python

8. gyakorlat Pointerek, dinamikus memóriakezelés

IV. LEGO Robotprogramozó Országos Csapatverseny

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

7. gyakorlat Sorozatok, Fájlkezelés

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

mintásfal mintásfal :m :sz :dbjobbra :dbfel

A programozás alapjai

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

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

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

C programozási nyelv

Operációs Rendszerek II. labor. 2. alkalom

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

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

Programozási nyelvek 4. előadás

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozási nyelvek 2. előadás

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Matematikai programok

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

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

INFORMATIKA javítókulcs 2016

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

Átírás:

teknőc parancsok ismétlése függvények fogalma, használata grafikon rajzoló program Reversi játékprogram függvények lokális változói rekurzió és fraktál-szerű ábrák rajzolása

Emlékeztető töbszörös elágazás (if-elif-else) kilépés while ciklusból (break), ciklus folytatása (continue), és a while ciklus feltételéhez tartozó else ág a for ciklus és a range() függvény teknőc grafika (turtle modul) 2

Turtle modul és függvényei teknőc parancsok elérése: from turtle import * háttérszín, tollszín, és tollméret: bgcolor(... ), pencolor(... ), pensize(...) toll letétele és toll felemelése: pendown(), penup() mozgás előre, fordulás jobbra és balra: forward(...), right(...), left(...) 3

Turtle modul és függvényei kör és pont rajzolás: circle(...), dot(...) terület beszínezése: fillcolor(... ) begin_fill();...; end_fill() teknőc sebessége: speed(...) (speed(0) a leggyorsabb) rajzolás befejezése: done() 4

Példa from turtle import * bgcolor("blue") pencolor("red") pensize(10) for i in range(12): begin_fill() right(90) forward(150) left(120) forward(150) left(120) forward(150) end_fill() forward(150) done() 5

előfordul, hogy ugyanazt az utasítássorozatot többször is végre kell hajtani, de nem feltétlenül egymás után sokszor ismételve pl. képernyő törlése a játék elején és mikor új játékot kezdünk az ilyen utasítássorozatot elnevezhetjük, és a nevének leírásával bármikor végrehajtathatjuk ezeket az elnevezett utasítássorozatokat függvényeknek hívjuk 6

egy függvénynek lehetnek bemeneti paraméterei (argumentumai) és visszatérési értéke például: ez a függvény neve a def kulcsszóval definiáljuk a függvényt def kör_kerület(r): kerület = 2*r*pi return kerület a visszatérési értéket a return utasítással adjuk vissza az argumentumokat zárójelben adjuk meg; ha több is van, akkor vesszővel választjuk el őket 7

Ügyelj a helyesírásra is! a függvény törzse beljebb kezdődik def kör_kerület(r): kerület = 2*r*pi return kerület Ne felejtsd el a kettőspontot! 8

egy függvényre gondolhatsz úgy, mint egy mini-programra: bemenetek függvény belül egy mini-program feldolgozza a bemeneteket és előállítja a kimenetet kimenet 9

például: def kör_kerület(r): kerület = 2*r*pi return kerület a kör sugara kör_kerület belül egy mini-program kiszámolja a kör kerületét a bementként kapott sugárból a kör kerülete 10

miután egy függvényt definiáltunk, használhatjuk (meghívhatjuk) egy függvényt a nevének leírásával és az argumentumok értékeinek megadásával lehet meghívni a visszatérési értékét elmenthetjük egy változóba, vagy átadhatjuk más függvényeknek, mint bemeneti paraméter 11

például: egy k változóban tároljuk a kiszámolt kerületet (azaz a visszatérési értéket) from math import pi def kör_kerület(r): kerület = 2*r*pi return kerület k = kör_kerület(10) print(k) # print(kör_kerület(10)) így hívjuk meg a függvényt; most 10-et adtunk meg bemeneti paraméterként, azaz egy 10 sugarú kör kerületét szeretnénk meghatározni így is csinálhattuk volna; ekkor a visszatérési értéket egyből átadjuk a print() függvénynek bemenetként 12

függvényeket már eddig is használtunk pédául: print( Helló! ) str(16) right(90) penup()... ezeket mások definiálták mostmár saját függvényeket is tudunk csinálni 13

Gyakoroljunk! Készíts függvényt az alábbi feladatok ellátására! kör sugarának kiszámítása téglalap kerületének kiszámítása téglalap átlójának kiszámítása egy szövegben található kis e és nagy E betűk megszámlálására Írj programokat, melyekben meghívod a fenti függvényeket valamilyen bemeneti érték(ek)kel! 14

Grafikon rajzoló program grafikon rajzolásnál sokszor kell ismételni ugyanazokat a műveleteket: minden lehetséges x-re ki kell számolni az ábrázolni kívánt matematikai függvény értékét és ki kell rajzolni a képernyőre a kiszámolt értékhez tartozó pontot 15

Grafikon rajzoló program Készíts egy parabola rajzoló programot! A parabola képlete az y = x 2 egyenlet. Egy olyan programot szeretnénk készíteni, ami egy x_min és egy x_max érték között kinyomtatja a parabola pontjait a képernyőre. Ehhez az alábbi függvényekre lesz szükség: négyzetre emelés elvégzése koordináta rendszer kirajzolása pont kirajzolása tetszőleges helyre parabola kirajzolása adott x_min és x_max értékek közötti x értékekre A programot elkezdtük megírni, de nem fejeztük be. A parabola.py fájlban találod ami eddig kész van. Segíts befejezni! 16

Grafikon rajzoló program (2. verzió) Alakítsd át a parabola rajzoló programot úgy, hogy más matematikai függvényeket is ki tudjon rajzolni! Elkezdtük megírni a programot, de nem fejeztük be. A math_functions.py fájlban találod, ami eddig elkészült. Segíts befejezni! Megjegyzés: Figyeld meg, hogy a görbe() függvény egyik bemeneti paramétere egy függvénynév! Így egyetlen görbe rajzoló függvénnyel több matematikai függvényt is ki tudunk rajzolni, csak a megfelelő nevet kell átadni paraméterként. 17

A grafikon rajzoló program rajzai 18

A grafikon rajzoló program rajzai 19

A grafikon rajzoló program rajzai 20

Reversi játék Készíts egy Reversi játékprogramot! A Reversi egy izgalmas táblajáték. A leírását itt találod meg a neten: https://meszaros-mihaly.hu/reversi-othello/ Készítsünk együtt egy programot, amivel két játékos Reversi-t tud játszani egymással! A programot lépésről lépésre készítjük el. Kövesd a foglalkozásvezető utasításait! 21

lokális változói a függvényen belül létrehozott változók csak a függvényen belül ismertek (lokális változók) akár azonos nevű lokális változóink is lehetnek különböző függvényekben, ezek különböző változók lesznek a főprogramban létrehozott változók mindenhol ismertek (globális változók) 22

Lokális változók Próbáld ki! Mit tapasztalsz? def jonatán(): alma = "jonatán függvény almája" print(alma) def idared(): alma = "idared függvény almája" print(alma) jonatán() idared() 23

Lokális változók Próbáld ki! Mit tapasztalsz? alma = "főprogram almája" def jonatán(): alma = "jonatán függvény almája" print(alma) def idared(): alma = "idared függvény almája" print(alma) jonatán() idared() print(alma) 24

Lokális változók Próbáld ki! Mit tapasztalsz? alma = "főprogram almája" def jonatán(alma): alma = "jonatán függvény almája" print(alma) def idared(alma): alma = "idared függvény almája" print(alma) jonatán(alma) idared(alma) print(alma) 25

Lokális változók Próbáld ki! Mit tapasztalsz? alma = "főprogram almája" def jonatán(alma): print(alma) alma = "jonatán függvény almája" print(alma) jonatán(alma) print(alma) 26

Lokális változók Próbáld ki! Mit tapasztalsz? alma = "főprogram almája" def jonatán(): global alma print(alma) alma = "jonatán függvény almája" print(alma) jonatán() print(alma) 27

Rekurzió a függvény definíciója hivatkozhat magára a függvényre dehát ez őrültség! vagy mégsem? def oldal(hossz, mélység): if mélység == 0: forward(hossz) else: oldal(hossz/3, mélység-1) right(60) oldal(hossz/3, mélység-1) left(120) oldal(hossz/3, mélység-1) right(60) oldal(hossz/3, mélység-1) 28

Próbáld ki! from turtle import * def oldal(hossz, mélység): if mélység == 0: forward(hossz) else: oldal(hossz/3, mélység-1) right(60) oldal(hossz/3, mélység-1) left(120) oldal(hossz/3, mélység-1) right(60) oldal(hossz/3, mélység-1) penup() setpos(-200, 0) pendown() speed(0) oldal(180, 3) left(120) oldal(180, 3) left(120) oldal(180, 3) penup() setpos(-400, 300) 29

Fa Elemzd és írd át ezt a programot, hogy olyan szép fát rajzoljon, mint az ábrán látható! from turtle import * def fa(ág_hossz): forward(ág_hossz) if ág_hossz > 10: left(45) fa(0.6*ág_hossz) right(90) fa(0.6*ág_hossz) left(45) backward(ág_hossz) left(90) fa(100) 30

Hogyan varázsolnád be ennek a plusz ágnak a kirajzolását a programodba? 31

Házi feladat A jobb oldalon látható programban az összeg_for(n, N) függvény egy for ciklus segítségével adja össze a számokat n-től N-ig. Meg tudnád oldani ugyanezt a feladatot rekurzióval (for és while ciklus nélkül)? Nevezd a függvényedet összeg_rec(n, N)-nek, és hasonlítsd össze a visszaadott eredményt a másik függvény eredményével! def összeg_for(n, N): összeg = 0 for i in range(n, N+1): összeg += i return összeg print(összeg_for(10,20)) def összeg_rec(n, N):... print(összeg_rec(10,20)) 32

Összefoglalás 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 33

Összefoglalás 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 34

Összefoglalás 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ó) 35

Összefoglalás klasz dolgokat készítettünk! 36

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