Eljárások, függvények

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

Alprogramok, paraméterátadás

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

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

Eljárások és függvények

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Pénzügyi algoritmusok

Programozás alapjai 8.Gy: Program struktúra

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

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

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

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

Java programozási nyelv

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

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.

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

A programozás alapjai

Bevezetés a programozásba I.

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Osztályok. 4. gyakorlat

Objektumorientált Programozás VI.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Egyszerű példaprogramok gyakorláshoz

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Bevezetés, a C++ osztályok. Pere László

Programozási nyelvek Java

8. gyakorlat Pointerek, dinamikus memóriakezelés

A JavaScript főbb tulajdonságai

Algoritmusok. Dr. Iványi Péter

Szkriptnyelvek. 1. UNIX shell

OOP #14 (referencia-elv)

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

Delphi programozás III.

Programozási nyelvek (ADA)

Megoldott feladatok. Informatika

Informatika terméktervezőknek

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

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

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

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.

Programozási alapismeretek 4.

Vezérlési szerkezetek

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

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

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

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

Kivételkezelés a C++ nyelvben Bevezetés

Java II. I A Java programozási nyelv alapelemei

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

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

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

C++ programozási nyelv Konstruktorok-destruktorok

Programozási nyelvek Java

Érdekes informatika feladatok

C++ programozási nyelv

Programozási nyelvek Java

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

Közismereti informatika 2.zh T-M szakirány

Apple Swift kurzus 3. gyakorlat

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

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

Programozási nyelvek (ADA)

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

Programozási módszertan. Mohó algoritmusok

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

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

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

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

Dinamikus programozás - Szerelőszalag ütemezése

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

14. Mediánok és rendezett minták

500. AA Megoldó Alfréd AA 500.

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

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

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

Dr. Schuster György február / 32

Webprogramozás szakkör

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Az első fájlos program

Objektum-orientált programozás

A feladat. A főprogram

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

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

Demográfiai modellek (folytatás)

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Java és web programozás

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

ISA szimulátor objektum-orientált modell (C++)

Átírás:

Eljárások, függvények Tartalomjegyzék Az alprogramok...2 Kérdések, feladatok...2 Kérdések, feladatok...3 Eljárások...3 Kérdések, feladatok...4 Érték és cím szerinti paraméterátadás...5 Kérdések, feladatok...6 Függvények...6 Kérdések, feladatok...8 Készítette: Gál Tamás Creative Commons -Nevezd meg!-ne add el!-így add tovább! 2.5 Magyarország licenc alatt használható GT Eljárások, függvények 1

Az alprogramok A strukturált programozás egyik fontos eszköze az alprogramok használata. Magas szintű programozási nyelvekben két típusát különböztetjük meg: 1. Eljárások 2. Függvények Az alprogramok használata megkönnyíti az összetettebb programok elkészítését. Segítségükkel jól áttekinthető, könnyen javítható vagy módosítható strukturált programszerkezetet alakíthatunk ki. Az eljárás tulajdonképpen egy névvel ellátott kódrészlet, így tekinthető a programozási nyelv utasítás készletét kibővítő eszköznek is. Az eljárásoknak nincs visszatérési értékük. Az elkészített eljárásra nevével hivatkozhatunk. A függvényeknek viszont visszatérési értékük. Ha nincs mellékhatásuk, akkor a függvényeket a programozási nyelvben használható operátorok körét kibővítő eszközként is felfoghatjuk. Nem minden magas szintű programozási nyelv teszi lehetővé eljárások készítését. Ilyenkor void típusú függvényeket írhatunk, amelynek nincs visszatérési értéke. Az objektum orientált programozási nyelvekben metódusok határozzák meg az objektumok működését. Szerepük hasonló az eljárásokéhoz és a függvényekéhez. Kérdések, feladatok Mi a különbség az eljárások és függvények között? Mit nevezünk alprogramnak? Mi az előnye az alprogramok használatának? Tervezési módszerek Felülről lefele (top-down) tervezési módszer lényege, lépésenként finomítjuk a programot. A programot előbb nagyobb egységere bontjuk, majd minden lépést finomítunk. Egy-egy nagyobb programozási feladat kisebb részfeladatokra alprogramokra bontható. Az alprogramok további alprogramokból épülhetnek fel. Felülről lefelé haladva a legbonyolultabb algoritmust is, a használt programozási nyelv utasítás készletével könnyen megvalósítható kis alprogramokra bonthatjuk, amelyek külön-külön elkészíthetők és tesztelhetők. Később pedig újra felhasználhatók. Alulról felfelé (down-top) tervezési módszer a téglánkénti építkezés elvén alapul. Ahogy a legóban külön elkészül egy-egy ház vagy autó, majd ezeket elrendezve egy város, programozásnál a programozási nyelv utasítás készletéből kiindulva a programozó saját alprogramokat készít, amelyekből később még összetettebb alprogramokat hoz létre, amíg végül a saját alprogramok összeillesztésével elkészül a teljes program. Az alulról felfelé építkezés esetén sem úszható meg a feladat átfogó vizsgálata. Az elemzés (analízis) és tervezés lépéseinek kihagyásakor az elkészült alprogramok nem fognak megfelelően kapcsolódni, nem állítható össze belőlük a kész program. Sok programozási nyelvhez elérhetők plusz függvénykönyvtárak, amelyek a gyakran előforduló feladatok megoldásához adnak kész elemeket, a a programozási nyelv utasítás készletének és a felhasználható operátorok körének kibővítse révén. Ezek használata meggyorsítja a programozást. A programozó is készíthet saját függvénykönyvtárakat, amelyekben az általa készített függvényeket gyűjti össze és a későbbi munkáiban is felhasználhatja azokat változatlan, vagy a feladatra igazított formában. GT Eljárások, függvények 2

Kérdések, feladatok Mutasd be a top-down tervezési módszert! Mutasd be a down-top tervezési módszert! Mi a különbség down-top és a top-down tervezési módszer között? Miért használunk függvénykönyvtárakat. Eljárások Gyakran előfordul, hogy a programunkban egy programrészt többször végrehajtunk. Ekkor célszerű az eljárások használata. Eljárások készítésének előnye, hogy a programban egy többször végrehajtásra kerülő programrészt: - egyszer kell megírni, - egy helyen lehet módosítani. Az eljárások átgondolt használatával jól áttekinthető, könnyen módosítható vagy javítható program készíthető. Mondatszerű leírás: Eljárás Eljárásnév(formális paraméterek) utasítások Eljárás vége. Formális paraméterek: azok a változók és konstansok, amelyeket az eljáráson belül használhatunk. Nevük eltérhet a hívó programrészben használt névtől. 1. példa: Program Osszead; var sz1, sz2: integer; procedure OsszegKi(a, b: integer); writeln(a+b); sz1 := 1; sz2 := 2; OsszegKi(sz1,sz2); Mondatszerű leírás Eljárás OsszegKi(változó a, b:egész) KI: a+b Eljárás vége Program Osszead Változó sz1, sz2:egész sz1 = 1 sz2 = 2 OsszegKi(sz1,sz2) Program vége GT Eljárások, függvények 3

2. példa: Program Osszead; var sz1, sz2: integer; // GLOBÁLIS változók procedure OsszegKi(a, b: integer); var Osszeg: integer; // LOKÁLIS változók Osszeg := a+b; writeln(osszeg); sz1 := 1; sz2 := 2; OsszegKi(sz1,sz2); Mondatszerű leírás Eljárás OsszegKi(változó a, b:egész) Változó Osszeg:Egész Osszeg = a+b KI: Osszeg Eljárás vége Program Osszead Változó sz1, sz2:egész sz1 = 1 sz2 = 2 OsszegKi(sz1,sz2) Program vége A globális változók: a program bármely pontján elérhetők, a program futási ideje alatt végig foglalják a szükséges memóriaterületet, összetett programok esetén könnyen előfordulhat, hogy a program nem azt az értéket találja benne, amire számít, mert a program egy másik része felülírta. A lokális változók: csak az adott utasításblokkban, eljáráson vagy függvényen belül érhető el, csak addig foglalja a memóriát, amíg adott eljárás vagy függvény kerül végrehajtásra, jól kézben tartható a tartalma. Kérdések, feladatok Készítsd el a példaprogramok folyamatábráját! Mit nevezünk egy eljárás formális paramétereinek? Mi a különbség a lokális és a globális változók között? GT Eljárások, függvények 4

Érték és cím szerinti paraméterátadás Érték szerinti paraméterátadás A hívó eljárás az átadandó adatokról másolatot készít, a program vermébe ahonnan a hívott eljárás kiveszi az adatokat.. Az érték szerint átadott paraméterek értékét lehet ugyan módosítani, de a módosítás nem marad érvényes a hívott eljáráson kívül. Cím szerinti paraméterátadás A hívó eljárás az adat címét adja át a hívott eljárásnak. A hívott eljárás más néven is jelölheti az átvett paramétert, de az átadott és átvett paraméterek típusának ugyanazoknak kell lennie. A paraméter értékének megváltozása az eredeti változó értékének módosítását is eredményezi. Példa: Program CsereBere; var sz1, sz2: integer; procedure CsereE(a, b: integer); // Érték szerinti paraméterátadás var temp: integer; temp := a; b := temp; procedure CsereC(var a, b: integer); // Cím szerinti paraméterátadás var temp: integer; temp := a; b := temp; sz1 := 1; sz2 := 2; writeln('a:',sz1,' b:',sz2); CsereE(sz1,sz2); writeln('a:',sz1,' b:',sz2); CsereC(sz1,sz2); writeln('a:',sz1,' b:',sz2); Mondatszerű leírás Eljárás CsereE(változó a, b:egész) temp := a; b := temp; Eljárás vége Eljárás CsereC(változó a, b:egész - cím szerint) temp := a; b := temp; Eljárás vége Program Osszead... Program vége GT Eljárások, függvények 5

Kérdések, feladatok Készítsd el a példaprogram folyamatábráját! Mi az érték és a cím szerinti paraméterátadás között? Függvények Felépítésük és működésük megegyezik az eljárásokéval. A különbség csupán, hogy visszatérési értékkel rendelkeznek. Mondatszerű leírás: Függvény Függvénynév(formális paraméterek):függvényérték típusa utasítások Függvénynév := kifejezés // vagy return kifejezés Függvény vége Példa: program Fgv; const n=20; // konstans var t: array[1..n] of integer; // Globális tömb function Veletlen: integer; var i, van, szam:integer; // lokális változók repeat szam:=random(30); i:=1; while (i<=n) and (T[i] <> szam) do i := i + 1; until i>n; Veletlen:= szam; procedure Feltolt; for i:=1 to n do t[i]:=veletlen; procedure Kiir; for i:=1 to n do write(t[i],', '); randomize; Feltolt; Kiir; GT Eljárások, függvények 6

Összetett példa: program EljarasFgv; const n=20; {a tömb elemeinek a száma} var t: array[1..n] of integer; function Veletlen: integer; var i, van, szam:integer; repeat szam:=random(30)+1; i:=1; while (i<=n) and (T[i] <> szam) do i := i + 1; //Ha nincs még, akkor i=n+1 until i>n; //Ha van akkor újra Veletlen:= szam; procedure Feltolt1; for i:=1 to n do t[i]:=veletlen; procedure Feltolt; for i:=1 to n do t[i]:=random(30)+1; procedure Kiir; for i:=1 to n do write(t[i],', '); procedure Csere(var a, b: integer); // cím szerinti paraméterátadás var tmp:integer; tmp := a; b := tmp; procedure Rendez; var i, j:integer; writeln('rendezés'); for i:=n-1 downto 1 do for j:=1 to i do if t[j]>t[j+1] then Csere(t[j],t[j+1]); procedure Menu; Feltolt; repeat writeln(); writeln('lehetosegek- 1:Feltölt 2:kiír 3:Rendez 0:Kilép'); readln(i); Case i of 1: Feltolt1; 2: Kiir; 3: Rendez; until i=0; randomize; Menu; GT Eljárások, függvények 7

Kérdések, feladatok Készítsd el az összetett példaprogram mondatszerű leírását és folyamatábráját! A Veletlen nevű függvényben melyik programozási tételt használjuk? A Csere nevű eljárásban milyen paraméterátadást használunk? GT Eljárások, függvények 8