Objektum Orientált Programozás VII.

Hasonló dokumentumok
Objektumorientált Programozás VI.

Összetett programozási tételek

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ási tételek. PPT 2007/2008 tavasz.

Objektumorientált Programozás III.

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

Objektum Orientált Programozás IV.

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

Egyszerű programozási tételek

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

Objektumorientált Programozás IV.

Ö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.

Egyszerű programozási tételek

Informatikai tehetséggondozás:

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

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

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

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

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.

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

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Az összetett programozási tételek is egy tőről fakadnak

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

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

PROGRAMOZÁSI TÉTELEK

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

Összetett programozási tételek 2.

Algoritmizálás és adatmodellezés 2. előadás

Objektumorientált programozás C# nyelven

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

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

Objektumorientált Programozás V.

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

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Objektum Orientált Programozás V.

Bevezetés a programozásba I.

Informatikai tehetséggondozás:

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

Programozási segédlet

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Hatékonyság 1. előadás

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

JAVA SE/ME tanfolyam tematika

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


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

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Szoftvertervezés és -fejlesztés I.

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

C# feladatok gyűjteménye

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

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Egyszerű programozási tételek

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

PROGRAMOZÁSMÓDSZERTAN

Programozás alapjai 9.Gy: Struktúra 2.

Rekurzív algoritmusok

OOP: Java 1.Gy: Java alapok

Gyakorló feladatok az 1. nagy zárthelyire

Algoritmusok, adatszerkezetek, objektumok

A C# programozási nyelv alapjai

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

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

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

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

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

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

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

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

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

Bevezetés a programozásba I.

10. gyakorlat Tömb, mint függvény argumentum

ÉVFOLYAM ZH PRÓBA. Feladat (projekt- és exe-név: miki; tömörített fájl neve: EHA-kód)

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

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

Statisztika 1. Tantárgyi útmutató

Java II. I A Java programozási nyelv alapelemei

PROGRAMOZÁS ALAPFELADATOK

Programozás alapjai 1.Gy: Algoritmizálás P R O

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Adatszerkezetek II. 10. előadás

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

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

Algoritmizálás, adatmodellezés 1. előadás

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

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

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:)!

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

Programozás II. előadás

Láncolt listák. PPT 2007/2008 tavasz.

Átírás:

Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok Ó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

Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 3

Másolás (sorozat->sorozat) Bemenet: X: Feldolgozandó tömb N: Tömb elemeinek száma Kimenet: Y: Eredmény tömb Eljárás Másolás(X, N, Y) Ciklus i := 1-től N-ig Y[i] := művelet X[i] Ciklus vége Eljárás vége ÓE-NIK, 2011 4

Másolás: példa Állítsuk elő egy int tömb elemeinek négyzetét. static int[] négyzet(int[] tömb) { int[] négyzetek = new int[tömb.length]; for (int i = 0; i < tömb.length; i++) { négyzetek[i] = tömb[i] * tömb[i]; return négyzetek; ÓE-NIK, 2011 5

Kiválogatás (sorozat -> sorozat) Bemenet: X: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: Y: Eredmény tömb DB: Tömb elemeinek száma Eljárás Kiválogatás(X, N, T, Y, DB) DB := 0 Ciklus i := 1-től N-ig Ha (X[i] teljesíti T-t) akkor DB := DB + 1 Y[DB] := X[i] Elágazás vége Ciklus vége Eljárás vége ÓE-NIK, 2011 6

Kiválogatás: példa Válogassuk ki egy szövegből a benne szereplő számjegyeket. static string számjegyek(string szöveg) { string számok = ""; for (int i = 0; i < szöveg.length; i++) { if (Char.IsDigit(szöveg[i])) számok += szöveg[i]; return számok; ÓE-NIK, 2011 7

Szétválogatás Bemenet: X: Feldolgozandó tömb N: Tömb elemeinek száma T: Tulajdonság függvény Kimenet: Y: Egyik eredmény tömb Z: Másik eredmény tömb DBY: Y elemeinek száma DBZ: Z elemeinek száma Eljárás Szétválogatás(X, N, T, Y, DBY, Z, DBZ) DBY := 0; DBZ := 0 Ciklus i := 1-től N-ig Ha (X[i] teljesíti T-t) akkor Különben Elágazás vége Ciklus vége DBY := DBY + 1 Y[DBY] := X[i] DBZ := DBZ + 1 Z[DBZ] := X[i] Változatok: Sorozat -> sorozatok Sorozat -> sorozat Helyben Eljárás vége ÓE-NIK, 2011 8

Szétválogatás: példa Válogassuk szét egy int tömb elemeit egy új tömbbe úgy, hogy a párosak az elejére, a páratlanok a végére kerüljenek. static int[] válogat(int[] tömb) { int[] újtömb = new int[tömb.length]; int páros = 0; int páratlan = tömb.length - 1; for (int i = 0; i < tömb.length; i++) { if (tömb[i] % 2 == 0) { újtömb[páros] = tömb[i]; páros++; else { újtömb[páratlan] = tömb[i]; páratlan- -; return újtömb; ÓE-NIK, 2011 9

Metszet (sorozatok -> sorozat) Eljárás Metszet(X, N, Y, M, Z, DB) DB := 0 Ciklus i := 1-től M-ig j := 1 Ciklus amíg (j N) és (X[i] Y[j]) Ciklus vége j := j+ 1 Ha j N akkor Elágazás vége Ciklus vége Eljárás vége DB := DB + 1 Z[DB] := X[i] Bemenet: X: Egyik feldolgozandó tömb Y: Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Kimenet: Z: Eredmény tömb DB: Z elemeinek száma ÓE-NIK, 2011 10

Metszet: példa Gyűjtsük ki a magánhangzókat egy megadott szövegből. static string magánhangzók(string szöveg) { string mgh = "aáeéiíoóöőuúüű"; string magánhangzó = ""; for (int i = 0; i < szöveg.length; i++) { int j = 0; while (j < mgh.length && szöveg[i]!= mgh[j]) j++; if (j < mgh.length) magánhangzó += szöveg[i]; return magánhangzó; ÓE-NIK, 2011 11

Egyesítés (unió) (sorozatok -> sorozat) Eljárás Egyesítés(X, N, Y, M, Z, DB) Z := X DB := M Ciklus j := 1-től N-ig i := 1 Ciklus amíg (i M) és (X[i] Y[j]) Ciklus vége i := i+ 1 Ha i > M akkor Elágazás vége Ciklus vége Eljárás vége DB := DB + 1 Z[DB] := Y[j] Bemenet: X: Egyik feldolgozandó tömb Y: Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Kimenet: Z: Eredmény tömb DB: Z elemeinek száma ÓE-NIK, 2011 12

Unió: példa static int[] egyesít(int[] tömb1, int[] tömb2) { int[] újtömb=new int[tömb1.length+tömb2.length]; tömb1.copyto(újtömb, 0); int db = tömb1.length; for (int j = 0; j < tömb2.length; j++) { int i = 0; while (i < tömb1.length && tömb1[i]!= tömb2[j]) i++; if (i == tömb1.length) { újtömb[db] = tömb2[j]; db++; int[] unió = new int[db]; for (int i = 0; i < unió.length; i++) unió[i] = újtömb[i]; return unió; ÓE-NIK, 2011 13

Összefuttatás (rendezettek uniója) (sorozatok -> sorozat) Eljárás Összefuttatás(M, X, N, Y, DB, Z) i := 1; j := 1; DB := 0 Ciklus amíg (i M) és (j N) DB := DB + 1 Elágazás Ciklus vége X[i ] < Y[j ] esetén Z[DB] := X[i ]; i := i + 1 X[i ] = Y[j ] esetén Z[DB] := X[i ]; i := i + 1; j := j + 1 X[i ] > Y[j ] esetén Z[DB] := Y[j ]; j := j + 1 Elágazás vége Ciklus amíg i M Ciklus vége DB := DB + 1; Z[DB] := X[i ]; i := i + 1 Ciklus amíg j N Ciklus vége Eljárás vége DB := DB + 1; Z[DB] := Y[j ]; j := j + 1 Bemenet: X: Egyik feldolgozandó tömb Y: Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Kimenet: Z: Eredmény tömb DB: Z elemeinek száma ÓE-NIK, 2011 14

Összefuttatás: példa static int[] összefuttat(int[] tömb1, int[] tömb2) { int[] újtömb = new int[tömb1.length + tömb2.length]; int i = 0, j = 0, db = 0; while (i < tömb1.length && j < tömb2.length) { if (tömb1[i] < tömb2[j]) { újtömb[db] = tömb1[i]; i++; else if (tömb1[i] > tömb2[j]) { újtömb[db] = tömb2[j]; j++; else { újtömb[db] = tömb1[i]; i++; j++; db++; while (i < tömb1.length) { újtömb[db] = tömb1[i]; i++; db++; while (j < tömb2.length) { újtömb[db] = tömb2[j]; j++; db++; int[] unio = new int[db]; for (int x = 0; x < unio.length; x++) unio[x] = újtömb[x]; return unio; ÓE-NIK, 2011 15

Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 16

Programozási tételek összeépítése Összetettebb programok esetén szintén használhatjuk a programozási tételeket, ilyenkor gyakran szükség van az egymásba építésükre. Gyakori megvalósítások tételek egymás után tételek egymásba ágyazva egyéb (optimalizált) megoldások ÓE-NIK, 2011 17

Egy példa az összeépítésre Megszámlálás-eldöntés Egy A tömbben van-e legalább K darab T tulajdonságú elem? Eljárás SzámolásÉsEldöntés(A, N, T, K, VAN) i := 1; DB := 0 Ciklus amíg (i N) és (DB < K) Ha (A[i] teljesíti T-t) akkor DB := DB + 1 Elágazás vége i := i + 1 Ciklus vége VAN := (DB = K) Eljárás vége ÓE-NIK, 2011 18

További példák Megszámolás-kiválasztás pl. hol van a K-adik T tulajdonságú elem? Megszámolás-keresés pl. van-e K darab T tulajdonságú elem, és ha igen, hol található a sorozatban a K-adik? Maximumkiválasztás-megszámlálás pl. hány darab maximális elem van a listában? Maximumkiválasztás-kiválogatás pl. melyek a maximális elemek a listában? (értelemszerűen az indexeket várjuk) Kiválogatás-sorozatszámítás pl. adjuk össze az összes T tulajdonságú elemet! ÓE-NIK, 2011 19

További példák Kiválogatás-maximumkiválasztás pl. keressük meg a T tulajdonságú elemek közül a maximálisat! Kiválogatás-másolás pl. másoljuk le a sorozat T tulajdonságú elemeit, úgy, hogy végezzünk rajtuk valamilyen elemi műveletet is! Másolás-sorozatszámítás pl. adjuk meg a sorozat elemeinek négyzetösszegét! Másolás-maximumkiválasztás pl. adjuk meg a sorozat elemei közül azt, amelyiknek maximális az abszolút értéke! Egyéb összeépítések ÓE-NIK, 2011 20

Feladatok Adottak egy tömbben a hallgatók zh-pontszámai. Adjuk meg az indexét a 10-edik elégtelen dolgozatnak Mondjuk meg, van-e 10 db elégtelen dolgozat, és ha igen, adjuk meg a 10-ediknek az indexét Mondjuk meg, hány maxpontos zh van Adjuk vissza a maxpontos zh-k sorszámait egy tömbben Adjuk meg az elégtelen dolgozatok átlagpontszámát Adjuk meg az elégtelent elért hallgatók pontszámai közül a legmagasabbat Adjuk vissza az 51-89 pont közötti pontszámot jegyeit Adjuk meg a jegyek átlagát Adjuk meg a legjobb jegyet ÓE-NIK, 2011 21

Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 22

Gyakorló feladatok Egy felhasználó által megadott, tetszőleges szövegre oldjuk meg az alábbi feladatokat! Határozza meg a szöveg szótagszámát! (Tipp: ahány magánhangzó, annyi szótag.) Válogassa ki a szövegből a nagybetűket! (Tipp: Char. IsUpper() metódus) Van-e a szövegben legalább három 'a' betű? Ha igen, hol van a harmadik? Másolja le a szöveget úgy, hogy minden benne található kis 'x'-et nagy 'X'-re cserél! ÓE-NIK, 2011 23

Gyakorló feladatok Egy véletlenszámokkal feltöltött int tömbre oldjuk meg az alábbi feladatokat! Határozza meg, hány db van a minimális, és hány db a maximális elemből! Összegezze a tömbben található páros számokat! Válogassa ki a tömbben található prímeket! Válogassa szét a tömb elemeit aszerint, hogy kisebbek vagy nagyobbak a tömbátlagnál. ÓE-NIK, 2011 24

Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 25

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 26

ÓE-NIK, 2011 27

ÓE-NIK, 2011 28