Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

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

Egyszerű programozási tételek

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

Összetett programozási tételek

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

Programozási tételek. PPT 2007/2008 tavasz.

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

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.

ELEMI PROGRAMOZÁSI TÉTELEK

Programozási segédlet

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

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

Informatikai tehetséggondozás:

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

Objektum Orientált Programozás VII.

PROGRAMOZÁSI TÉTELEK

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

Objektumorientált Programozás VI.

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

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

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

Rekurzív algoritmusok

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

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

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

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

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

Bevezetés a programozásba I.

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

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

Algoritmusok, adatszerkezetek, objektumok

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

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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

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

Haladó rendezések. PPT 2007/2008 tavasz.

Felvételi tematika INFORMATIKA

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

Programozás alapjai (ANSI C)

Informatikai tehetséggondozás:

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

Webprogramozás szakkör

Programozás II. előadás

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

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

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

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

Sorozat érték típusú programozási tételek

Térinformatikai algoritmusok Elemi algoritmusok

Amortizációs költségelemzés

Programozási tételek feladatok

Bevezetés a programozásba

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

Térinformatikai algoritmusok Elemi algoritmusok

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

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

INFORMATIKAI ALAPISMERETEK

Gyakorló feladatok az 1. nagy zárthelyire

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Bevezetés az informatikába

Visszalépéses keresés

1. beadandó feladat: Programozási tételek alkalmazása. Közös követelmények:

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

Informatikai tehetséggondozás:

Programozás I. zárthelyi dolgozat

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

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

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

Objektumorientált Programozás VI.

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

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

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

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

Informatikai tehetséggondozás:

Multihalmaz, intervallumhalmaz

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

Programozási alapismeretek 3. előadás

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmusok és adatszerkezetek gyakorlat 07

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Számelmélet

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

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Logika és informatikai alkalmazásai

Web-programozó Web-programozó

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

Számelmélet Megoldások

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

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

Átírás:

Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 21. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 1 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 2 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 3 / 49

Programozási tételek A programozási tételek jól megválasztott, egyszerű feladatok megoldásai Segítségükkel a gyakorlatban előforduló feladatok jelentős része megoldható Helyességük egyszerűen bizonyítható Használatuk célszerű, hiszen (mások által is) jól áttekinthető kódot eredményeznek Egy lehetséges csoportosításuk Egyszerű programozási tételek Egy sorozathoz egy értéket rendelő feladatok Összetett programozási tételek Egy sorozathoz egy sorozatot rendelő feladatok Egy sorozathoz több sorozatot rendelő feladatok Több sorozathoz egy sorozatot rendelő feladatok Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 4 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 5 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 6 / 49

Sorozatszámítás Típusfeladatok 1 Egy osztály N darab tanulójának osztályzata alapján adjuk meg az osztály átlagát! 2 Egy M elemű betűsorozat betűit fűzzük össze egyetlen szöveg típusú változóba! 3 Készítsünk algoritmust, amely egy autóversenyző körönkénti ideje alapján meghatározza a versenyző egy kör megtételéhez szükséges átlagidejét! 4 A Balaton mentén K darab madarász végzett megfigyeléseket. Mindegyik megadta, hogy milyen madarakat látott. Készítsünk algoritmust, amely a megfigyelések alapján megadja a Balatonon előforduló madárfajokat! 5 Adjuk meg az első N darab pozitív egész szám szorzatát! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 7 / 49

Sorozatszámítás Feladat Egy tömb minden eleme között akarunk egy adott műveletet (pl. összeadás) elvégezni. Eredményül a tömbelemek között az adott művelet által szolgáltatott értéket adjuk vissza. Megvalósítás Létrehozunk egy változót, amiben a műveleti eredményt tároljuk el. Ennek kezdeti értéket is adunk. Számlálós ciklussal végigmegyünk a tömb összes elemén. A műveleti eredményhez az adott művelettel hozzákapcsoljuk (pl. hozzáadjuk) az aktuális tömbelemet. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 8 / 49

Sorozatszámítás Pszeudokód Bemenet: x T tömb, n egész (tömb mérete) Kimenet: érték T függvény Sorozatszámítás(x, n) érték érték 0 ciklus i 1-től n-ig érték érték x[i] ciklus vége vissza érték függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 49

Sorozatszámítás Megjegyzések Adatok sorozatához egy értéket rendelő függvényt helyettesít Minden olyan esetben használható, ha ezt a függvényt felbonthatjuk értékpárokon kiszámított műveletek ( ) sorozatára Az induláskor használt nullértéket értelemszerűen a kérdéses művelet (esetleg a feladat) alapján kell megválasztani összegzés faktoriális elemek uniója érték 0 0 1 { } érték érték + x[i] érték érték x[i] érték érték x[i] Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 10 / 49

Sorozatszámítás Pszeudokód függvény Sorozatszámítás(x, n) érték érték 0 ciklus i 1-től n-ig érték érték x[i] ciklus vége vissza érték függvény vége Futási idő A műveletet minden ciklusban egyszer végezzük el és az eredményt eltároljuk az érték-ben. A futási idő n-nel arányos: T (n) = O (n) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 11 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 13 / 49

Eldöntés Típusfeladatok 1 Döntsük el egy szóról a hónapnevek sorozata alapján, hogy egy hónap neve-e! 2 Döntsük el egy tanuló év végi osztályzata alapján, hogy kitűnő tanuló-e! 3 Júniusban minden nap délben megmértük, hogy a Balaton Siófoknál hány fokos. Döntsük el a mérések alapján, hogy a víz hőfoka folyamatosan emelkedett-e! 4 Döntsük el egy számról, hogy prímszám-e! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 14 / 49

Eldöntés Feladat El akarjuk dönteni, hogy egy tömbben (x) van-e legalább egy adott tulajdonságú (P) elem. Eredményül egy logikai értéket adunk vissza, mely pontosan akkor igaz, ha találtunk legalább egy P tulajdonságú elemet az x-ben. Megvalósítás A tömböt bejárjuk az elejétől a vége felé haladva. A bejárást akkor hagyjuk abba, ha végigmentünk az összes elemen és nem találtunk egyetlen P tulajdonságú elemet sem; ha az aktuális elem P tulajdonságú. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 49

Eldöntés Pszeudokód Bemenet: x T tömb, n egész (tömb mérete), P logikai (tulajdonság) Kimenet: van logikai függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 ciklus vége van (i n) vissza van függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 49

Eldöntés Pszeudokód függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 ciklus vége van (i n) vissza van függvény vége Futási idő A P tulajdonság függvényt legalább egyszer és legfeljebb n-szer értékeljük ki. Az index növeléshez legrosszabb esetben n-szer kerül a vezérlés. A futási idő: T (n) = O (n) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 17 / 49

Eldöntés Megjegyzések A P tulajdonság helyes megválasztásával a tétel sokféle szituációban alkalmazható. A minden elem P tulajdonságú feladatot egyszerűen visszavezethetjük az eldöntésre a P tulajdonság tagadásával. A sorozatszámításnál megismert módszerrel ellentétben ez az algoritmus az első P tulajdonságú elem megtalálása után már nem folytatja a keresést. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 19 / 49

Eldöntés: minden elem P tulajdonságú-e? Pszeudokód Bemenet: x T tömb, n egész (tömb mérete), P logikai (tulajdonság) Kimenet: van logikai függvény Eldöntés Minden(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 ciklus vége van (i > n) vissza van függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 20 / 49

Prímteszt Pszeudokód Bemenet: N egész (N 2) Kimenet: pr ím logikai 1: függvény PrímTeszt(N) 2: i 2 3: ciklus amíg (i N) Osztója(i, N) 4: i i + 1 5: ciklus vége 6: prím (i > N) 7: vissza pr ím 8: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 21 / 49

Növekvő rendezettség vizsgálat Pszeudokód Bemenet: x T tömb, n egész; ahol T összehasonĺıtható Kimenet: rendezett logikai 1: függvény Rendezett E(x, n) 2: i 1 3: ciklus amíg (i n 1) (x[i] x[i + 1]) 4: i i + 1 5: ciklus vége 6: rendezett (i > n 1) 7: vissza rendezett 8: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 22 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 24 / 49

Kiválasztás Típusfeladatok 1 Ismerjük egy hónap nevét. A hónapnevek sorozata alapján mondjuk meg a hónap sorszámát! 2 Adjuk meg egy egynél nagyobb természetes szám legkisebb, 1-től különböző osztóját! 3 A naptárban található névnapok alapján adjuk meg a legjobb barátunk névnapját! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 25 / 49

Kiválasztás Pszeudokód Bemenet: x T tömb, n egész, P logikai Kimenet: idx egész 1: függvény Kiválasztás(x, n, P) 2: i 1 3: ciklus amíg P (x[i]) 4: i i + 1 5: ciklus vége 6: idx i 7: vissza idx 8: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 26 / 49

Kiválasztás Megjegyzések Az eldöntéssel ellentétben ez visszaadja az első P tulajdonságú elem sorszámát A tétel feltételezi, hogy biztosan van legalább egy P tulajdonságú elem Sorszám helyett visszaadhatjuk az elem értékét is, de célszerűbb a sorszám használata (ez alapján az elem is egyszerűen meghatározható) Az algoritmus működése és futási ideje hasonló az eldöntéshez Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 27 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 28 / 49

Lineáris keresés Típusfeladatok 1 Ismerjük egy üzlet egy havi forgalmát: minden napra megadjuk, hogy mennyi volt a bevétel és mennyi a kiadás. Adjunk meg egy olyan napot ha van, amelyik nem volt nyereséges! 2 A Budapest-Nagykanizsa vasúti menetrend alapján két adott állomáshoz adjunk meg egy olyan vonatot, amellyel el lehet jutni átszállás nélkül az egyikről a másikra! 3 Egy tetszőleges (nem 1) természetes számnak adjuk meg egy osztóját, ami nem az 1 és nem is önmaga! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 29 / 49

Lineáris keresés Pszeudokód Bemenet: x T tömb, n egész, P logikai Kimenet: van logikai, idx egész 1: függvény LineárisKeresés(x, n, P) 2: i 1 3: ciklus amíg (i n) P (x[i]) 4: i i + 1 5: ciklus vége 6: van (i n) 7: ha van akkor 8: idx i 9: vissza (van, idx) 10: különben 11: vissza van 12: elágazás vége 13: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 30 / 49

Lineáris keresés Megjegyzések Tekinthető az eldöntés és a kiválasztás tétel ötvözetének is: választ ad arra, hogy van-e P tulajdonságú elem a sorozatban, és ha van, akkor visszaadja a sorszámát is. Értelemszerűen nem feltételezi, hogy biztosan van P tulajdonságú elem a sorozatban. Ha nincs, akkor a van értéke hamis, ilyenkor az idx változó nem kap értéket. Az algoritmus működése és futási ideje hasonló az eldöntéshez. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 32 / 49

Adott érték keresése Pszeudokód Bemenet: x T tömb, n egész, érték T Kimenet: van logikai, idx egész 1: függvény LineárisKeresés(x, n, érték) 2: i 1 3: ciklus amíg (i n) (x[i] érték) 4: i i + 1 5: ciklus vége 6: van (i n) 7: ha van akkor 8: idx i 9: vissza (van, idx) 10: különben 11: vissza van 12: elágazás vége 13: függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 33 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 34 / 49

Megszámlálás Típusfeladatok 1 Családok létszáma, illetve jövedelme alapján állapítsuk meg, hogy hány család él a létminimum alatt! 2 Egy futóverseny időeredményei alapján határozzuk meg, hogy a versenyzők hány százaléka teljesítette az olimpiai induláshoz szükséges szintet! 3 Adjuk meg egy szöveg magánhangzóinak számát! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 35 / 49

Megszámlálás Feladat Egy tömbben (x) szeretnénk az adott tulajdonságú (P) elemek számát meghatározni. Kimenetként a x tömb P tulajdonságú elemeinek számát adjuk vissza. Megvalósítás Az x tömb minden elemét meg kell vizsgálni, hogy P tulajdonságú-e. Emiatt számlálós ciklussal bejárjuk az egész tömböt. Ha az aktuális tömbelem (x[i]) P tulajdonságú, akkor egy számláló (db) értékét eggyel növeljük. A db számlálónak kezdetben nullának kell lennie. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 36 / 49

Megszámlálás Pszeudokód Bemenet: x T tömb, n egész (tömb mérete), P logikai (tulajdonság) Kimenet: db egész (darabszám) függvény Megszámlálás(x, n, P) db 0 ciklus i 1-től n-ig ha P (x[i]) akkor db db + 1 elágazás vége ciklus vége vissza db függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 49

Megszámlálás Pszeudokód függvény Megszámlálás(x, n, P) db 0 ciklus i 1-től n-ig ha P (x[i]) akkor db db + 1 elágazás vége ciklus vége vissza db függvény vége Futási idő A P tulajdonság teljesülését minden elemre meg kell vizsgálni. Csak akkor növeljük db értékét, ha a P (x[i]) igaz volt. A futási idő arányos a tömb méretével: T (n) = O (n) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 38 / 49

Megszámlálás Megjegyzések Amennyiben nincs P tulajdonságú elem a sorozatban, akkor értelemszerűen 0 kerül a db változóba. Valójában egy sorozatszámítás, amely minden P tulajdonságú elem esetén 1-et hozzáad a db értékéhez. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 40 / 49

Tartalom 1 Programozási tételek 2 Egyszerű programozási tételek Sorozatszámítás Eldöntés Kiválasztás Lineáris keresés Megszámlálás Maximumkiválasztás Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 41 / 49

Maximumkiválasztás Típusfeladatok 1 Egy kórházban megmérték minden beteg lázát. Adjuk meg, hogy ki a leglázasabb! 2 Egy család havi bevételei és kiadásai alapján adjuk meg, hogy melyik hónapban tudtak a legtöbbet megtakarítani! 3 Egy osztály tanulóinak nevei alapján adjuk meg a névsorban legelső tanulót! Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 42 / 49

Maximumkiválasztás Feladat Adott egy tömb (x), melynek elemei összehasonĺıthatóak. Keressük meg, hogy melyik elem a legnagyobb a tömbben. Megvalósítás Tekintsük először a tömb első elemét a legnagyobbnak. A legnagyobb elem indexét tároljuk el a max változóban. (Ez kezdetben 1.) Egy számlálós ciklussal járjuk be a tömböt a második elemtől az utolsóig. Ha az aktuális tömbelem (x[i]) nagyobb, mint az eddig legnagyobb elem (x[max]), akkor tekintsük az aktuális elemet a legnagyobbnak, azaz az aktuális elem indexek legyen a max. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 49

Maximumkiválasztás Pszeudokód Bemenet: x T tömb, n egész (tömb mérete); ahol T összehasonĺıtható Kimenet: max egész függvény Maximumkiválasztás(x, n) max 1 ciklus i 2-től n-ig ha x[i] > x[max] akkor max i elágazás vége ciklus vége vissza max függvény vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 49

Maximumkiválasztás Pszeudokód függvény Maximumkiválasztás(x, n) max 1 ciklus i 2-től n-ig ha x[i] > x[max] akkor max i elágazás vége ciklus vége vissza max függvény vége Futási idő Az összehasonĺıtást (n 1)-szer végezzük el. Az értékadáshoz legfeljebb (n 1)-szer, de lehet, hogy egyszer sem kerül a vezérlés. A futási idő arányos a tömb méretével: T (n) = O (n) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 45 / 49

Maximumkiválasztás Megjegyzések Reláció megfordításával értelemszerűen minimumkiválasztás lesz a tétel célja. Index helyett visszaadhatjuk az elem értékét is, de célszerűbb az index használata (ez alapján az elem is azonnal meghatározható). Feltételezzük, hogy legalább egy elem létezik a tömbben. Több maximális elem esetén az elsőt adja vissza. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 47 / 49

Gyakorló feladat Kirándulás során 100 méterenként feljegyeztük a tengerszint feletti magasság értékeket. 1 Volt a kirándulás során olyan szakasz, amikor sík terepen haladtunk? 2 Hány olyan száz méteres szakasz volt, amikor emelkedőn haladtunk? 3 Mekkora volt a kirándulás során a teljes szintemelkedés? (És a szintcsökkenés?) 4 Hányszor 100 méteres volt az a leghosszabb szakasz, ahol folyamatosan emelkedőn haladtunk? 5 Mekkora volt a 100 méter alatt megtett legnagyobb szintemelkedés? Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 48 / 49

Felhasznált irodalom Szlávi Péter, Zsakó László: Módszeres programozás: Programozási tételek (Mikrológia 19). ELTE TTK, 2002 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 49 / 49