Objektumorientált Programozás VI.

Hasonló dokumentumok
Objektum Orientált Programozás VII.

Objektumorientált Programozás VI.

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 I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Objektumorientált Programozás III.

Objektum Orientált Programozás IV.

Objektumorientált Programozás IV.

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

Egyszerű programozási tételek

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Összetett programozási tételek

Programozási nyelvek Java

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Szoftvertervezés és -fejlesztés I.

OOP #14 (referencia-elv)

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozási segédlet

Objektumorientált programozás C# nyelven

Objektumorientált Programozás V.

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Programozási nyelvek Java

Programozás I. Első ZH segédlet

Osztályok. 4. gyakorlat

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Pénzügyi algoritmusok

Objektumorientált programozás C# nyelven

BME MOGI Gépészeti informatika 5.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

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

OOP III. A C# nyelv alapelemei

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

Informatika terméktervezőknek

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Objektum Orientált Programozás V.

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Maximum kiválasztás tömbben

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

A JavaScript főbb tulajdonságai

Bevezetés a programozásba I.

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

Programozási tételek. Dr. Iványi Péter

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

OOP: Java 8.Gy: Abstract osztályok, interfészek

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

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

Java és web programozás

BME MOGI Gépészeti informatika 8.

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

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

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

Java II. I A Java programozási nyelv alapelemei

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

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Bevezetés a programozásba. 9. Előadás: Rekordok

Vizuális, eseményvezérelt programozás XI.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

3. Gyakorlat Ismerkedés a Java nyelvvel

BME MOGI Gépészeti informatika 4.

Java és web programozás

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

Java és web programozás

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozási nyelvek Java

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

és az instanceof operátor

Szoftvertechnológia alapjai Java előadások

Objektumorientált programozás C# nyelven

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.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Alprogramok, paraméterátadás

Objektumorientált programozás IX. Osztályok, objektumok

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Eljárások, függvények

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

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

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

Objektumorientált programozás C# nyelven

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

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

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

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

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Alkalmazott Modul III 3. előadás. Procedurális programozás: alprogramok, kivételkezelés. Alprogramok Szükségessége

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

Átírás:

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 1

Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. ÓE-NIK, 2011 2

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 3

Metódusok A metódus egy kódblokk, amely utasítások sorozatát tartalmazza. A program azáltal futtatja ezeket az utasításokat, hogy "meghívja" a metódust és megszabja a szükséges paramétereit. C#-ban minden futtatandó utasítás egy metódusban helyezkedik el. Eddigi programjainkat a Main() metódusba írtuk A többször használt kódrészeket írjuk metódusba. Copy-Paste helyett Célszerű a hosszú metódusok feldarabolása az egyszerűbb értelmezés céljából ÓE-NIK, 2011 4

Metódusok Séma: visszatérési_típus metódusnév(paraméterek) {metódustörzs} paraméterek metódus visszatérési érték ÓE-NIK, 2011 5

Metódusok típusa A típus a visszaadott érték típusa vagy "void", ha nem adunk vissza semmit. Egy metódusnak legfeljebb egy visszatérési értéke van. de az lehet pl. tömb is A visszatérési típus előtt állhatnak különféle módosítók. Pl. static, abstract, override, new, láthatóságot jelző kulcsszavak. Részletesen később. Ezek nem a visszatérési típusra, hanem a metódusra vonatkoznak ÓE-NIK, 2011 6

Metódustörzs A metódushoz tartozó utasítások, amelyek használhatják a metódusnak átadott paramétereket. A metódus visszatérési értékét a "return" kulcsszó után adjuk meg. Ennek hatására a metódusból azonnal visszatérünk a hívóhoz akkor is, ha még lennének további utasítások a return után. Ha a metódus több ágon érhet véget, akkor mindegyik ág végére szükséges return! Visszatérési érték nélküli (void) metódusnál ha a program mindig a metódustörzs fizikai végénél fejeződik be a return utasítás nem kötelező. ÓE-NIK, 2011 7

Változók hatóköre Egy blokkban deklarált változók csak a deklarálástól kezdve a blokk végéig elérhetőek. Következmény: az egyik metódusban deklarált x változó nem ugyanaz, mint a másik metódusbeli x változó. A hívó környezet változói nem érhetőek el a metódusban. Ezért szükséges a paraméter átadás és a visszatérési érték. Közös adat használható: globális változók, használatuk nem javasolt ÓE-NIK, 2011 8

Feladat A felhasználó minden lépésével kiválaszt egy mezőt. Ekkor a mező és annak szomszédjai az ellentettjükre módosulnak. Használjunk paraméter nélküli metódusokat! ÓE-NIK, 2011 9

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 10

Egyszerű példa Feladat: téglalap területének számítása metódussal static int terület(int a, int b) // paraméterek átadása { return a * b; } static void Main(string[] args) { int egyikoldal = 5; int másikoldal = 7; Console.WriteLine("A téglalap területe: " + terület(egyikoldal, másikoldal)); Console.ReadLine(); } ÓE-NIK, 2011 11

Metódusok paraméterei A paramétereknél megadandó a típus és az a név, amelyen a metódustörzsben a paraméterre hivatkozunk. A paraméter átadásnak kétféle módja van: érték szerinti és cím szerinti. Érték szerinti: a paraméterként megadott változóról másolat készül, a metódusban ezzel a másolattal dolgozunk. Tehát ha a metódusban megváltoztatjuk a paraméter értékét, az az eredetire nincs hatással, a hívó környezetben nem érvényesül. Cím szerinti: egy referenciát adunk át a paraméterként megadott változóra, nem készül másolat, tehát a metódusban változtatható a paraméter értéke, és ez a hívó környezetben is érvényesül. ÓE-NIK, 2011 12

Metódusok paraméterei Az érték szerinti paraméter átadás az alapértelmezett. Referencia típusú változóknál az érték szerinti paraméter átadás azt jelenti, hogy a változóban tárolt cím másolódik le és adódik át, azaz ha a metódusban módosítjuk a referencia által hivatkozott objektumot, annak a hatása kívül is látszik. Ha érték típusú paramétert szeretnénk cím szerint átadni (hogy a metódusban megváltoztatható legyen az értéke), arra a ref vagy az out kulcsszó használatával van lehetőség. DE: két fajta változótípus van: érték és referenciatípus 4 fajta paraméterátadási mód ÓE-NIK, 2011 13

Értéktípusok érték szerinti paraméterátadása static void novel(int bemenet) { bemenet++; } static void csere(int elso, int masodik) { int temp = elso; elso = masodik; masodik = temp; } ÓE-NIK, 2011 14

Értéktípusok érték szerinti paraméterátadása static void Main(string[] args) { int a = 42, b = 23; novel(a); csere(a, b); } A híváskor a két változó értékéről másolat képződik, és a másolat kerül át paraméterként a hívott eljárásokba A hívott eljárásokban a paraméterek módosítása semmilyen hatással nincs ezen változók értékére ÓE-NIK, 2011 15

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 int a=42; ÓE-NIK, 2011 16

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 int a=42; novel(a); cím2 bemenet 42 ÓE-NIK, 2011 17

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 int a=42; novel(a); bemenet++; cím2 bemenet 43 ÓE-NIK, 2011 18

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 int a=42, b=23; cím2 b 23 ÓE-NIK, 2011 19

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím4 masodik cím3 elso 42 23 int a=42, b=23; csere(a,b); ÓE-NIK, 2011 20

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím4 masodik cím3 elso 42 23 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; ÓE-NIK, 2011 21

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím4 masodik cím3 elso 23 23 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; elso=masodik; ÓE-NIK, 2011 22

Értéktípusok érték szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím4 masodik cím3 elso 23 42 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; elso=masodik; masodik=temp; ÓE-NIK, 2011 23

Értéktípusok cím szerinti paraméterátadása static void novel(ref int bemenet) { bemenet++; } static void csere(ref int elso, ref int masodik) { int temp = elso; elso = masodik; masodik = temp; } ÓE-NIK, 2011 24

Értéktípusok cím szerinti paraméterátadása static void Main(string[] args) { int a = 42, b = 23; novel(ref a); csere(ref a, ref b); } A híváskor a két változó CÍMÉRŐL másolat képződik, és a CÍM kerül át paraméterként a hívott eljárásokba A hívott eljárásokban a paraméterek módosítása gyakorlatilag ezen változók módosítását jelenti ÓE-NIK, 2011 25

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 42 int a=42; ÓE-NIK, 2011 26

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 42 int a=42; novel(a); cím2 bemenet cím1 ÓE-NIK, 2011 27

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 43 int a=42; novel(a); bemenet++; cím2 bemenet cím1 ÓE-NIK, 2011 28

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 42 int a=42, b=23; cím2 b 23 ÓE-NIK, 2011 29

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím3 elso cím1 cím4 masodik cím2 int a=42, b=23; csere(a,b); ÓE-NIK, 2011 30

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 42 cím2 b 23 cím3 elso cím1 cím4 masodik cím2 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; ÓE-NIK, 2011 31

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 23 cím2 b 23 cím3 elso cím1 cím4 masodik cím2 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; elso=masodik; ÓE-NIK, 2011 32

Értéktípusok cím szerinti paraméterátadása Memória cím1 a 23 cím2 b 42 cím3 elso cím1 cím4 masodik cím2 cím5 temp 42 int a=42, b=23; csere(a,b); int temp; temp=elso; elso=masodik; masodik=temp; ÓE-NIK, 2011 33

Ref.típusok érték szerinti paraméterátadása static void tombkez1(int[] arr) { arr[1] = 42; } static void tombkez2(int[] arr) { arr = new int[3] { 23, 23, 23 }; } ÓE-NIK, 2011 34

Ref.típusok érték szerinti paraméterátadása static void Main(string[] args) { int[] t = { 3, 4, 5 }; tombkez1(t); tombkez2(t); } Az elv ugyanaz: híváskor a változó értékéről másolat képződik, és az érték kerül át paraméterként a hívott eljárásba de most az érték egy cím! A hívott eljárásokban a nem lehet módosítani ezt a változót de a hivatkozott memóriaterületet IGEN ÓE-NIK, 2011 35

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím2 3 4 5 int[] t= {3, 4, 5}; ÓE-NIK, 2011 36

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím2 cím2 3 4 5 int[] t= {3, 4, 5}; tombkez1(t); ÓE-NIK, 2011 37

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím2 cím2 3 42 5 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; ÓE-NIK, 2011 38

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím2 cím2 3 42 5 cím4 23 23 23 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; tombkez2(t); arr=new int[3] { 23, 23, 23}; ÓE-NIK, 2011 39

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím4 cím2 3 42 5 cím4 23 23 23 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; tombkez2(t); arr=new int[3] { 23, 23, 23}; ÓE-NIK, 2011 40

Ref.típusok cím szerinti paraméterátadása static void tombkez1(ref int[] arr) { arr[1] = 42; } static void tombkez2(ref int[] arr) { arr = new int[3] { 23, 23, 23 }; } ÓE-NIK, 2011 41

Ref.típusok cím szerinti paraméterátadása static void Main(string[] args) { int[] t = { 3, 4, 5 }; tombkez1(ref t); tombkez2(ref t); } Az elv ugyanaz: híváskor a változó CÍMÉRŐL másolat képződik, és a CÍM kerül át paraméterként a hívott eljárásokba Referenciára mutató referencia A hívott eljárásokban ezt a változót és a hivatkozott memóriaterületet is lehet módosítani ÓE-NIK, 2011 42

Ref.típusok cím szerinti paraméterátadása Memória cím1 t cím2 cím2 3 4 5 int[] t= {3, 4, 5}; ÓE-NIK, 2011 43

Ref.típusok cím szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím1 cím2 3 4 5 int[] t= {3, 4, 5}; tombkez1(t); ÓE-NIK, 2011 44

Ref.típusok cím szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím1 cím2 3 42 5 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; Teljesen mindegy, hogy hány referencián keresztül van az értékadás, mindig a megfelelő értékre történik a hivatkozás! ÓE-NIK, 2011 45

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím2 cím3 arr cím1 cím2 3 42 5 cím4 23 23 23 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; tombkez2(t); arr=new int[3] { 23, 23, 23}; ÓE-NIK, 2011 46

Ref.típusok érték szerinti paraméterátadása Memória cím1 t cím4 cím3 arr cím1 cím2 3 42 5 cím4 23 23 23 int[] t= {3, 4, 5}; tombkez1(t); arr[1]=42; tombkez2(t); arr=new int[3] { 23, 23, 23}; ÓE-NIK, 2011 47

Példa out-ra static void bekér(out int szám) { System.Console.Write("Kérek egy számot: "); szám=int.parse(system.console.readline()); } static void Main(string[] args) { int x; bekér(out x); System.Console.WriteLine("A megadott szám: "+x); System.Console.ReadLine(); } Kimenő paraméter ÓE-NIK, 2011 48

Példa a parancssori paraméterek feldolgozására Paraméter static void Main(string[] args) { for (int i = 0; i < args.length; i++) System.Console.Write(args[i] + " "); System.Console.ReadLine(); } Stringek száma Paraméter stringek ÓE-NIK, 2011 49

Overloading Metódus "felüldefiniálás" több azonos nevű metódus A metódusok szignatúrája egyedi az osztályon belül. Szignatúra = metódusnév + paraméterek száma, típusa és sorrendje Azaz: írhatunk több azonos nevű metódust, ám ezek paraméterlistája különböző kell legyen! ÓE-NIK, 2011 50

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 51

Programozási tételek Egy adott feladatosztályba tartozó összes feladatra megoldást adó algoritmus. pl.: a keresés tétel bármilyen elemsorozatban bármilyen feltételnek megfelelő elemek keresésére használható ÓE-NIK, 2011 52

Sorozatszámítás Bemenet: A: Feldolgozandó tömb N: Tömb elemeinek száma Kimenet: R: Művelet eredménye Eljárás Sorozatszámítás(A, N, R) R := R 0 Ciklus i := 1-től N-ig R := R művelet A[i] Ciklus vége Eljárás vége Figyelem! Indexelés 1-től N-ig! ÓE-NIK, 2011 53

Sorozatszámítás: példa Számítsuk ki egy int tömb elemeinek összegét. (Indexelés 0-tól (N-1)-ig!) static int szumma(int[] tömb) { int összeg = 0; for (int i = 0; i < tömb.length; i++) összeg += tömb[i]; return összeg; } ÓE-NIK, 2011 54

Eldöntés Bemenet: A: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: VAN: Logikai változó Eljárás Eldöntés(A, N, T, VAN) i := 1 Ciklus amíg (i N) és (A[i] teljesíti T-t) i := i + 1 Ciklus vége VAN := (i N) Eljárás vége ÓE-NIK, 2011 55

Eldöntés: példa Döntsük el, hogy egy int tömb elemei között található-e öttel osztható szám! static bool öttel_osztható(int[] tömb) { int i = 0; while (i < tömb.length && tömb[i] % 5!= 0) i++; return i < tömb.length; } ÓE-NIK, 2011 56

Kiválasztás Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: SORSZ: Első T tulajdonságú elem indexe Eljárás Kiválasztás(A, N, T, SORSZ) i := 1 Ciklus amíg (A[i] teljesíti T-t) i := i + 1 Ciklus vége SORSZ := i Eljárás vége ÓE-NIK, 2011 57

Kiválasztás: példa Adjuk meg a megadott e-mail címben a @ jel pozícióját (IndexOf() használata nélkül)! static int holakukac(string email) { int poz = 0; while (email[poz]!= '@') poz++; return poz; } ÓE-NIK, 2011 58

Lineáris keresés Bemenet: A: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: VAN: Logikai változó SORSZ: Első T tulajdonságú elem indexe Eljárás Keresés(A, N, T, VAN, SORSZ) i := 1 Ciklus amíg (i N) és (A[i ] teljesíti T-t) i := i + 1 Ciklus vége VAN := (i N) Ha VAN akkor SORSZ := i Eljárás vége ÓE-NIK, 2011 59

Keresés: példa Keressük meg egy int tömbben a 42 számot, ha nem szerepel benne, adjunk vissza -1-et! static int negyvenkettő(int[] tömb) { int i = 0; while (i < tömb.length && tömb[i]!= 42) i++; if (i == tömb.length) return -1; else return i; } ÓE-NIK, 2011 60

Megszámlálás Bemenet: A: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: DB: T tulajdonságú elemek száma Eljárás Megszámlálás(A, N, T, DB) DB := 0 Ciklus i := 1-től N-ig Ha (A[i] teljesíti T-t) akkor DB := DB + 1 Elágazás vége Ciklus vége Eljárás vége ÓE-NIK, 2011 61

Megszámlálás: példa Állapítsuk meg egy adott mondatban a nagybetűk számát! static int nagybetű(string mondat) { int db = 0; for (int i = 0; i < mondat.length; i++) { if (Char.IsUpper(mondat[i])) db++; } return db; } ÓE-NIK, 2011 62

Maximumkiválasztás Bemenet: A: Feldolgozandó tömb N: Tömb elemeinek száma Kimenet: MAX: Maximális elem indexe Eljárás Maximumkiválasztás(A, N, MAX) MAX := 1 Ciklus i := 2-től N-ig Ha A[i] > A[MAX] akkor MAX := i Elágazás vége Ciklus vége Eljárás vége ÓE-NIK, 2011 63

Maximumkiválasztás: példa Tudjuk egy cég havi kiadásait. Az adott félév hanyadik hónapjában költöttek a legtöbbet? static int legköltségesebb(double[] költségek) { int max = 0; for (int i = 1; i < költségek.length; i++) { if (költségek[i] > költségek[max]) max = i; } return max; } ÓE-NIK, 2011 64

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 65

Gyakorló feladatok Adottak egy tankör zárthelyi pontszámai, 100 pont a maximum. (Tároljuk el ezeket egy tömbben.) Oldja meg az alábbi feladatokat! Határozza meg a csoport átlagpontszámát! Állapítsa meg, volt-e bukás! (Teljesített-e valaki 51 pont alatt?) Hány pontos volt a leggyengébb teljesítmény? Hány hallgató kapott ötöst a tankörben? (90% vagy afölötti pontszám) ÓE-NIK, 2011 66

Gyakorló feladatok Egy meteorológiai állomáson mérik a napi középhőmérséklet-értékeket egy hónapon keresztül. (Tároljuk el ezeket egy tömbben.) Oldja meg az alábbi feladatokat külön-külön metódusok segítségével! Határozza meg a havi átlaghőmérsékletet! Állapítsa meg, fagyott-e ebben a hónapban! Adjon meg egy olyan napot, amikor 5 C-nál hidegebb volt! Hány olyan nap volt a hónapban, amikor a hőmérséklet a havi átlag alatt volt? Hány C volt a hónap leghidegebb napján? ÓE-NIK, 2011 67

Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 68

Irodalom, feladatok Kotsis-Légrádi-Nagy-Szénási: Többnyelvű programozástechnika, PANEM, Budapest, 2007 Zsakó-Szlávi: Mikrológia 19. Faraz Rasheed: C# School, Synchron Data, 2006 http://www.programmersheaven.com/2/csharpbook Reiter István: C# jegyzet, DevPortal, 2010, http://devportal.hu/content/csharpjegyzet.aspx ÓE-NIK, 2011 69

ÓE-NIK, 2011 70

ÓE-NIK, 2011 71