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

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.

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.

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

ELEMI PROGRAMOZÁSI TÉTELEK

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.

Programozási segédlet

Informatikai tehetséggondozás:

Objektum Orientált Programozás VII.

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

PROGRAMOZÁSI TÉTELEK

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

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. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Rekurzív algoritmusok

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

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

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

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

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

Bevezetés a programozásba I.

Algoritmusok, adatszerkezetek, objektumok

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

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

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

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

Felvételi tematika INFORMATIKA

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

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

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

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

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

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

Programozás alapjai (ANSI C)

Webprogramozás szakkör

Egyszerű programozási tételek

Programozás II. előadás

Informatikai tehetséggondozás:

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

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

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

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

INFORMATIKAI ALAPISMERETEK

Térinformatikai algoritmusok Elemi algoritmusok

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

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érinformatikai algoritmusok Elemi algoritmusok

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

Gyakorló feladatok az 1. nagy zárthelyire

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

Programozási tételek feladatok

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

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

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

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

Informatikai tehetséggondozás:

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

Bevezetés az informatikába

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

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

Visszalépéses keresés

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

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

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

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

Web-programozó Web-programozó

Objektumorientált Programozás VI.

Logika és informatikai alkalmazásai

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

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

Számelmélet Megoldások

Multihalmaz, intervallumhalmaz

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

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

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

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

Programozási alapismeretek 3. előadás

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

Algoritmusok és adatszerkezetek gyakorlat 07

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

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

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

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

Programozás I. zárthelyi dolgozat

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

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

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

Á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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 8 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 8 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 8 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 8 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 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) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 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] Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 9 / 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] vissza érték 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] vissza érték Futási idő A műveletet minden ciklusban egyszer végezzük el és az eredményt eltároljuk az érték-ben. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 11 / 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] vissza érték 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

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 Kimenet érték : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 3 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 3 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 9 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 9 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 10 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 10 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 18 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 18 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 i Kimenet érték : 22 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 49

Sorozatszámítás Példa Adjuk össze egy tömb elemeit. 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] vissza érték x: 3 6 1 8 4 Kimenet érték : 22 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 12 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 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; Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 15 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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]) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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 van (i n) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 16 / 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 van (i n) vissza van 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 van (i n) vissza van Futási idő A P tulajdonság függvényt legalább egyszer és legfeljebb n-szer értékeljük ki. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 17 / 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 van (i n) vissza van 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 17 / 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 van (i n) vissza van 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 Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 i Kimenet van : igaz Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 49

Eldöntés Feladat Van-e páros szám a tömbben? függvény Eldöntés(x, n, P) i 1 ciklus amíg (i n) P(x[i]) i i + 1 van (i n) vissza van x: 3 7 1 4 5 8 Kimenet van : igaz Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 18 / 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 van (i > n) vissza van 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: 6: prím (i > N) 7: vissza pr ím 8: 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: 6: rendezett (i > n 1) 7: vissza rendezett 8: Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 22 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 i i + 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 i i + 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 i i + 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 i i + 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 i i + 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 49

Növekvő rendezettség vizsgálat Példa x: 1 3 6 10 15 21 Kimenet rendezett : igaz i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 23 / 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: 6: idx i 7: vissza idx 8: 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: 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: Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 30 / 49

Páros elem keresése Példa x: 3 9 4 1 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 31 / 49

Páros elem keresése Példa x: 3 9 4 1 8 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 31 / 49

Páros elem keresése Példa x: 3 9 4 1 8 Kimenet van : igaz, idx : 3 i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 31 / 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: 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: 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 36 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 36 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 36 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 36 / 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) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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 elágazás vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 37 / 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 vissza db 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 vissza db Futási idő A P tulajdonság teljesülését minden elemre meg kell vizsgálni. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 38 / 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 vissza db 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 38 / 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 vissza db 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 Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 Kimenet db : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 0 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 1 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 2 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 2 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 2 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 i Kimenet db : 3 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 49

Megszámlálás Példa Határozzuk meg, hogy hány darab páros elem van a tömbben. 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 vissza db x: 3 6 1 8 4 Kimenet db : 3 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 39 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 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.) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 43 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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) Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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 elágazás vége Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 44 / 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 vissza max 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 vissza max Futási idő Az összehasonĺıtást (n 1)-szer végezzük el. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 45 / 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 vissza max 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. Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 45 / 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 vissza max 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 Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max i Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 49

Maximumkiválasztás Példa Válasszuk ki a tömb legnagyobb elemét. 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 vissza max x: 2 1 6 5 8 3 max Sergyán (OE NIK) Programozás I. 2015. szeptember 21. 46 / 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