Összetett programozási tételek

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

Egyszerű programozási tételek

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

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

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

Összetett programozási tételek 2.

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

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

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

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

Rekurzív algoritmusok

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

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

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

Egyszerű programozási tételek

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

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

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ás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

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

Algoritmusok, adatszerkezetek, objektumok

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

Objektumorientált Programozás VI.

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

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

PROGRAMOZÁSI TÉTELEK

Objektumorientált Programozás VI.

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

Programozási segédlet

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

Egyszerű programozási tételek

Programozás II. előadás

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

Algoritmusok és adatszerkezetek I. 4. 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.

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

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

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

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

Algoritmusok és adatszerkezetek I. 1. előadás

AAO 3. Csink László 2007

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

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

Visszalépéses kiválogatás

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

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

Megyei matematikaverseny évfolyam 2. forduló

Multihalmaz, intervallumhalmaz

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

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

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

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

Programozási alapismeretek 3. előadás

Adatszerkezetek II. 10. előadás

Számelmélet, műveletek, egyenletek, algebrai kifejezések, egyéb

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

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

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

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

Felvételi tematika INFORMATIKA

PROGRAMOZÁSMÓDSZERTAN

Bevezetés az informatikába

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

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

Halmaz típus Értékhalmaz:

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

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

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

Visszalépéses keresés korlátozással

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek 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

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

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

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

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

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

Informatikai tehetséggondozás:

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

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

Programozási módszertan. Mohó algoritmusok

Visszalépéses keresés

HALMAZOK TULAJDONSÁGAI,

Informatikai tehetséggondozás:

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Gyakorló feladatok az 1. nagy zárthelyire

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

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








<... < s n. Írjuk le a megoldási módszert, és adjunk meg egy megjegyzésekkel ellátott Pascal-programot. A bemeneti adatokat helyesnek tekintjük.

Átírás:

Összetett programozási tételek 3. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 19. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 1 / 37

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) AAO 03 2011. szeptember 19. 2 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 3 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 4 / 37

Másolás Típusfeladatok 1 Egy osztály tanulóinak átlageredménye alapján határozzuk meg, hogy bizonyítványukba jeles, jó, közepes vagy elégséges kerül-e. (Tegyük fel, hogy bukott tanuló nincs.) Sergyán (OE NIK) AAO 03 2011. szeptember 19. 5 / 37

Másolás Típusfeladatok 1 Egy osztály tanulóinak átlageredménye alapján határozzuk meg, hogy bizonyítványukba jeles, jó, közepes vagy elégséges kerül-e. (Tegyük fel, hogy bukott tanuló nincs.) 2 Egy szöveg minden magánhangzóját cseréljük ki az e betűre. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 5 / 37

Másolás Típusfeladatok 1 Egy osztály tanulóinak átlageredménye alapján határozzuk meg, hogy bizonyítványukba jeles, jó, közepes vagy elégséges kerül-e. (Tegyük fel, hogy bukott tanuló nincs.) 2 Egy szöveg minden magánhangzóját cseréljük ki az e betűre. Közös jellemzők Az eredmény ugyanannyi elemszámú mint a bemenet Sergyán (OE NIK) AAO 03 2011. szeptember 19. 5 / 37

Másolás Típusfeladatok 1 Egy osztály tanulóinak átlageredménye alapján határozzuk meg, hogy bizonyítványukba jeles, jó, közepes vagy elégséges kerül-e. (Tegyük fel, hogy bukott tanuló nincs.) 2 Egy szöveg minden magánhangzóját cseréljük ki az e betűre. Közös jellemzők Az eredmény ugyanannyi elemszámú mint a bemenet Az eredmény i. elemét a bemenet i. eleméből lehet meghatározni Sergyán (OE NIK) AAO 03 2011. szeptember 19. 5 / 37

Másolás Bemenet X : Feldolgozandó tömb N: Tömb elemeinek száma Sergyán (OE NIK) AAO 03 2011. szeptember 19. 6 / 37

Másolás Bemenet X : Feldolgozandó tömb N: Tömb elemeinek száma Kimenet Y : Eredmény tömb Sergyán (OE NIK) AAO 03 2011. szeptember 19. 6 / 37

Másolás Bemenet X : Feldolgozandó tömb N: Tömb elemeinek száma Kimenet Y : Eredmény tömb Pszeudokód Eljárás Másolás(N, X, Y ) Ciklus i := 1-től N-ig Y [i] := művelet X [i] Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 6 / 37

Másolás Megjegyzések Az eredmény mindig ugyanannyi elemszámú mint a bemenet Sergyán (OE NIK) AAO 03 2011. szeptember 19. 7 / 37

Másolás Megjegyzések Az eredmény mindig ugyanannyi elemszámú mint a bemenet A művelet segítségével az egyszerű másoláson túl az egyes elemekkel egy-egy elemi műveletet is el lehet végezni (pl. másoljuk át a számok abszolutértékeit) Sergyán (OE NIK) AAO 03 2011. szeptember 19. 7 / 37

Másolás Megjegyzések Az eredmény mindig ugyanannyi elemszámú mint a bemenet A művelet segítségével az egyszerű másoláson túl az egyes elemekkel egy-egy elemi műveletet is el lehet végezni (pl. másoljuk át a számok abszolutértékeit) Nem lehet az elemek közötti összefüggést kihasználni Sergyán (OE NIK) AAO 03 2011. szeptember 19. 7 / 37

Másolás Magánhangzók e-re cserélése Eljárás Másolás(N, X, Y ) Ciklus i := 1-től N-ig Ha magánhangzó(x [i]) akkor Y [i] := e különben Y [i] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 8 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 9 / 37

Kiválogatás Típusfeladatok 1 Egy személyzeti nyilvántartásban emberek neve és személyi száma szerepel, adjuk meg a 20 évnél fiatalabb lányokat. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 10 / 37

Kiválogatás Típusfeladatok 1 Egy személyzeti nyilvántartásban emberek neve és személyi száma szerepel, adjuk meg a 20 évnél fiatalabb lányokat. 2 Adjuk meg egy természetes szám összes osztóját. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 10 / 37

Kiválogatás Típusfeladatok 1 Egy személyzeti nyilvántartásban emberek neve és személyi száma szerepel, adjuk meg a 20 évnél fiatalabb lányokat. 2 Adjuk meg egy természetes szám összes osztóját. 3 Adjuk meg egy osztály azon tanulóit, akik jeles átlagúak. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 10 / 37

Kiválogatás Típusfeladatok 1 Egy személyzeti nyilvántartásban emberek neve és személyi száma szerepel, adjuk meg a 20 évnél fiatalabb lányokat. 2 Adjuk meg egy természetes szám összes osztóját. 3 Adjuk meg egy osztály azon tanulóit, akik jeles átlagúak. Közös jellemzők Hasonĺıtanak a feladatok a keresésre, mert adott tulajdonságú elem(ek)et kell megadni, de nem csak egyet. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 10 / 37

Kiválogatás Típusfeladatok 1 Egy személyzeti nyilvántartásban emberek neve és személyi száma szerepel, adjuk meg a 20 évnél fiatalabb lányokat. 2 Adjuk meg egy természetes szám összes osztóját. 3 Adjuk meg egy osztály azon tanulóit, akik jeles átlagúak. Közös jellemzők Hasonĺıtanak a feladatok a keresésre, mert adott tulajdonságú elem(ek)et kell megadni, de nem csak egyet. Hasonĺıtanak a megszámlálásra is, de nem megszámolni kell az elemeket, hanem megadni/másolni. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 10 / 37

Kiválogatás Bemenet X : Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Sergyán (OE NIK) AAO 03 2011. szeptember 19. 11 / 37

Kiválogatás 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 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 11 / 37

Kiválogatás 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 Pszeudokód Eljárás Kiválogatás(N, X, DB, Y ) DB := 0 Ciklus i := 1-től N-ig Ha T (X [i]) akkor DB := DB + 1 Y [DB] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 11 / 37

Kiválogatás Megjegyzések Az eredmény tömb elemszámát nem lehet előre pontosan meghatározni, de biztos, hogy nincs több eleme mint a bemeneti tömbnek. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 12 / 37

Kiválogatás Megjegyzések Az eredmény tömb elemszámát nem lehet előre pontosan meghatározni, de biztos, hogy nincs több eleme mint a bemeneti tömbnek. X [i] helyett néha csak i-t másoljuk Y -ba, azaz a feltételnek megfelelő elemek indexét tároljuk Sergyán (OE NIK) AAO 03 2011. szeptember 19. 12 / 37

Kiválogatás Ha a bemeneti sorozatra már nincs szükség a későbbiekben, akkor a kiválogatás eredménye a bemeneti sorozat elejére is kerülhet. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 13 / 37

Kiválogatás Ha a bemeneti sorozatra már nincs szükség a későbbiekben, akkor a kiválogatás eredménye a bemeneti sorozat elejére is kerülhet. Ebben az esetben kevesebb memóriát kell lefoglalnunk. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 13 / 37

Kiválogatás Ha a bemeneti sorozatra már nincs szükség a későbbiekben, akkor a kiválogatás eredménye a bemeneti sorozat elejére is kerülhet. Ebben az esetben kevesebb memóriát kell lefoglalnunk. Pszeudokód Eljárás Kiválogatás(N, X, DB) DB:=0 Ciklus i := 1-től N-ig Ha T (X [i]) akkor DB := DB + 1 X [DB] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 13 / 37

Kiválogatás Lehetséges megvalósítás az is, ha a kihagyandó elemeket megjelöljük valamilyen módon. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 14 / 37

Kiválogatás Lehetséges megvalósítás az is, ha a kihagyandó elemeket megjelöljük valamilyen módon. Ebben az esetben is elveszítjük az eredeti sorozatot. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 14 / 37

Kiválogatás Lehetséges megvalósítás az is, ha a kihagyandó elemeket megjelöljük valamilyen módon. Ebben az esetben is elveszítjük az eredeti sorozatot. Pszeudokód Eljárás Kiválogatás(N, X ) Ciklus i := 1-től N-ig Ha (T (X [i])) akkor X [i] := speciális érték Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 14 / 37

Kiválogatás Jeles átlagú tanulók neve Eljárás Kiválogatás(N, X, DB, NEV ) DB := 0 Ciklus i := 1-től N-ig Ha X [i].atlag 4.71 akkor DB := DB + 1 NEV [DB] := X [i].nev Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 15 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 16 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. 2 Az osztály tanulóit névsoruk alapján válogassuk szét lányokra és fiúkra. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. 2 Az osztály tanulóit névsoruk alapján válogassuk szét lányokra és fiúkra. 3 Az osztály tanulóinak félévi átlageredményei alapján válogassuk szét jelesekre, jókra, közepesekre, elégségesekre, valamint elégtelenekre. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. 2 Az osztály tanulóit névsoruk alapján válogassuk szét lányokra és fiúkra. 3 Az osztály tanulóinak félévi átlageredményei alapján válogassuk szét jelesekre, jókra, közepesekre, elégségesekre, valamint elégtelenekre. Közös jellemzők Egy sorozathoz több sorozatot rendelünk Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. 2 Az osztály tanulóit névsoruk alapján válogassuk szét lányokra és fiúkra. 3 Az osztály tanulóinak félévi átlageredményei alapján válogassuk szét jelesekre, jókra, közepesekre, elégségesekre, valamint elégtelenekre. Közös jellemzők Egy sorozathoz több sorozatot rendelünk Lényegében egymás után kettő (vagy több) kiválogatással megoldhatók a feladatok Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Típusfeladatok 1 Adott N darab különböző természetes szám, válogassuk szét a párosakat és a páratlanokat. 2 Az osztály tanulóit névsoruk alapján válogassuk szét lányokra és fiúkra. 3 Az osztály tanulóinak félévi átlageredményei alapján válogassuk szét jelesekre, jókra, közepesekre, elégségesekre, valamint elégtelenekre. Közös jellemzők Egy sorozathoz több sorozatot rendelünk Lényegében egymás után kettő (vagy több) kiválogatással megoldhatók a feladatok Két kiválogatással megvalósítani viszont felesleges, mert amely elemeket nem választunk ki a kiválogatásnál az egyik csoportba, azok tartoznak a másik csoportba Sergyán (OE NIK) AAO 03 2011. szeptember 19. 17 / 37

Szétválogatás Bemenet X : Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Sergyán (OE NIK) AAO 03 2011. szeptember 19. 18 / 37

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 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 18 / 37

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 Pszeudokód Eljárás Szétválogatás(N, X, DBY, Y, DBZ, Z) DBY := 0 DBZ := 0 Ciklus i := 1-től N-ig Ha T (X [i]) akkor DBY := DBY + 1 Y [DBY ] := X [i] különben DBZ := DBZ + 1 Z[DBZ] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 18 / 37

Szétválogatás Megjegyzések Y és Z elemszáma nem határozatható meg előre, így N elemű tömböknek foglalunk helyet a memóriában Sergyán (OE NIK) AAO 03 2011. szeptember 19. 19 / 37

Szétválogatás Az eredmények egyetlen tömbbe is helyezhetők úgy, hogy a T tulajdonságúak az elején, a többi pedig a végén lesznek Sergyán (OE NIK) AAO 03 2011. szeptember 19. 20 / 37

Szétválogatás Az eredmények egyetlen tömbbe is helyezhetők úgy, hogy a T tulajdonságúak az elején, a többi pedig a végén lesznek Pszeudokód Eljárás Szétválogatás(N, X, DBY, Y ) DBY := 0 INDZ := N + 1 Ciklus i := 1-től N-ig Ha T (X [i]) akkor DBY := DBY + 1 Y [DBY ] := X [i] különben INDZ := INDZ 1 Y [INDZ] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 20 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 1 U = 11 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = informatika Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 2 U = 11 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = anformatika Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 2 U = 10 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = anformatikn Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 3 U = 9 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = aiformatikn Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 3 U = 8 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = aiformatfkn Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 4 U = 7 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = aiaormatfkn Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 5 U = 6 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = aiaormrtfkn Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Az elemek helyben, azaz a bemeneti tömbben történő szétválogatása is megoldható Pszeudokód E = 5 U = 5 Eljárás Szétválogatás(N, X, DB) E := 1; U := N; seged := X [E] Ciklus amíg E < U Ciklus amíg E < U és (T (X [U])) U := U 1 Ha E < U akkor X [E] := X [U]; E := E + 1 Ciklus amíg E < U és T (X [E]) E := E + 1 Ha E < U akkor X [U] := X [E]; U := U 1 Elágazás vége Elágazás vége X [E] := seged Ha T (X [E]) akkor DB := E különben DB := E 1 Elágazás vége Eljárás vége seged = i X = aiaoimrtfkn DB = 5 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 21 / 37

Szétválogatás Páros-páratlan szétválogatás Eljárás Szétválogatás(N, X, DB, Y ) DB := 0 IND := N + 1 Ciklus i := 1-től N-ig Ha páros(x [i]) akkor DB := DB + 1 Y [DB] := X [i] különben IND := IND 1 Y [IND] := X [i] Elágazás vége ciklus vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 22 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 23 / 37

Metszet Típusfeladatok 1 Adjuk meg két természetes szám osztóinak ismeretében az összes közös osztójukat. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 24 / 37

Metszet Típusfeladatok 1 Adjuk meg két természetes szám osztóinak ismeretében az összes közös osztójukat. 2 Nyáron és télen is végeztünk madármegfigyeléseket a Balatonon. Ismerjük, hogy nyáron, illetve télen mely madárfajok fordultak elő. Állapítsuk meg ezek alapján, hogy melyek a nem költöző madarak. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 24 / 37

Metszet Típusfeladatok 1 Adjuk meg két természetes szám osztóinak ismeretében az összes közös osztójukat. 2 Nyáron és télen is végeztünk madármegfigyeléseket a Balatonon. Ismerjük, hogy nyáron, illetve télen mely madárfajok fordultak elő. Állapítsuk meg ezek alapján, hogy melyek a nem költöző madarak. 3 Négy ember heti szabad estéi ismeretében állapítsuk meg, hogy a héten melyik este mehetnek el együtt moziba. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 24 / 37

Metszet Típusfeladatok 1 Adjuk meg két természetes szám osztóinak ismeretében az összes közös osztójukat. 2 Nyáron és télen is végeztünk madármegfigyeléseket a Balatonon. Ismerjük, hogy nyáron, illetve télen mely madárfajok fordultak elő. Állapítsuk meg ezek alapján, hogy melyek a nem költöző madarak. 3 Négy ember heti szabad estéi ismeretében állapítsuk meg, hogy a héten melyik este mehetnek el együtt moziba. Közös jellemzők Több sorozathoz egyet rendelünk Sergyán (OE NIK) AAO 03 2011. szeptember 19. 24 / 37

Metszet Típusfeladatok 1 Adjuk meg két természetes szám osztóinak ismeretében az összes közös osztójukat. 2 Nyáron és télen is végeztünk madármegfigyeléseket a Balatonon. Ismerjük, hogy nyáron, illetve télen mely madárfajok fordultak elő. Állapítsuk meg ezek alapján, hogy melyek a nem költöző madarak. 3 Négy ember heti szabad estéi ismeretében állapítsuk meg, hogy a héten melyik este mehetnek el együtt moziba. Közös jellemzők Több sorozathoz egyet rendelünk Két sorozat elemei közül azokat kell kiválogatnunk, amelyek mindkettőben előfordulnak Sergyán (OE NIK) AAO 03 2011. szeptember 19. 24 / 37

Metszet Megvalósítási ötlet Válogassuk ki az egyik sorozat (X ) azon elemeit, amelyek a másikban (Y ) is előfordulnak Sergyán (OE NIK) AAO 03 2011. szeptember 19. 25 / 37

Metszet Megvalósítási ötlet Válogassuk ki az egyik sorozat (X ) azon elemeit, amelyek a másikban (Y ) is előfordulnak Ehhez egy kiválogatás és egy eldöntés tételt kell egymásba építeni Sergyán (OE NIK) AAO 03 2011. szeptember 19. 25 / 37

Metszet Bemenet X : Egyik feldolgozandó tömb Y : Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Sergyán (OE NIK) AAO 03 2011. szeptember 19. 26 / 37

Metszet 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 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 26 / 37

Metszet 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 Pszeudokód Eljárás Metszet(M, X, N, Y, DB, Z) DB := 0 Ciklus i := 1-től M-ig j := 1 Ciklus amíg j N és X [i] Y [j] j := j + 1 Ha j N akkor DB := DB + 1 Z[DB] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 26 / 37

Metszet Megjegyzések Kis módosítással a metszet tétel nem csak két sorozat közös elemeinek meghatározására alkalmazható Sergyán (OE NIK) AAO 03 2011. szeptember 19. 27 / 37

Metszet Megjegyzések Kis módosítással a metszet tétel nem csak két sorozat közös elemeinek meghatározására alkalmazható Eldöntés: van-e két sorozatnak közös eleme? Sergyán (OE NIK) AAO 03 2011. szeptember 19. 27 / 37

Metszet Megjegyzések Kis módosítással a metszet tétel nem csak két sorozat közös elemeinek meghatározására alkalmazható Eldöntés: van-e két sorozatnak közös eleme? Kiválasztás: adjuk meg a két sorozat egyik közös elemét (ha tudjuk, hogy van ilyen) Sergyán (OE NIK) AAO 03 2011. szeptember 19. 27 / 37

Metszet Megjegyzések Kis módosítással a metszet tétel nem csak két sorozat közös elemeinek meghatározására alkalmazható Eldöntés: van-e két sorozatnak közös eleme? Kiválasztás: adjuk meg a két sorozat egyik közös elemét (ha tudjuk, hogy van ilyen) Keresés: ha van, akkor adjuk meg a két sorozat egyik közös elemét Sergyán (OE NIK) AAO 03 2011. szeptember 19. 27 / 37

Metszet Megjegyzések Kis módosítással a metszet tétel nem csak két sorozat közös elemeinek meghatározására alkalmazható Eldöntés: van-e két sorozatnak közös eleme? Kiválasztás: adjuk meg a két sorozat egyik közös elemét (ha tudjuk, hogy van ilyen) Keresés: ha van, akkor adjuk meg a két sorozat egyik közös elemét Megszámolás: hány közös eleme van a két sorozatnak? Sergyán (OE NIK) AAO 03 2011. szeptember 19. 27 / 37

Metszet Keressük meg X egyik olyan elemét, amely benne van Y -ban is. Közös elem keresése Eljárás MetszetbeliElem(M, X, N, Y, VAN, E) i := 1 VAN :=hamis Ciklus amíg i M és VAN j := 1 Ciklus amíg j N és X [i] Y [j] j := j + 1 Ha j N akkor VAN :=igaz E := X [i] különben i := i + 1 Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 28 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 29 / 37

Egyesítés (unió) Típusfeladatok 1 Két szám prímosztóinak ismeretében adjuk meg legkisebb közös többszörösük prímosztóit. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 30 / 37

Egyesítés (unió) Típusfeladatok 1 Két szám prímosztóinak ismeretében adjuk meg legkisebb közös többszörösük prímosztóit. 2 Egy iskola két földrajztanára órarendjének ismeretében adjuk meg azokat az órákat, amikor valamelyikük tud egy órát helyettesíteni. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 30 / 37

Egyesítés (unió) Típusfeladatok 1 Két szám prímosztóinak ismeretében adjuk meg legkisebb közös többszörösük prímosztóit. 2 Egy iskola két földrajztanára órarendjének ismeretében adjuk meg azokat az órákat, amikor valamelyikük tud egy órát helyettesíteni. Közös jellemzők Két sorozathoz egy sorozatot rendel Sergyán (OE NIK) AAO 03 2011. szeptember 19. 30 / 37

Egyesítés (unió) Típusfeladatok 1 Két szám prímosztóinak ismeretében adjuk meg legkisebb közös többszörösük prímosztóit. 2 Egy iskola két földrajztanára órarendjének ismeretében adjuk meg azokat az órákat, amikor valamelyikük tud egy órát helyettesíteni. Közös jellemzők Két sorozathoz egy sorozatot rendel Azokat az elemeket keressük, amelyek a két sorozatból legalább az egyikben benne vannak Sergyán (OE NIK) AAO 03 2011. szeptember 19. 30 / 37

Egyesítés (unió) Bemenet X : Egyik feldolgozandó tömb Y : Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Sergyán (OE NIK) AAO 03 2011. szeptember 19. 31 / 37

Egyesítés (unió) 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 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 31 / 37

Egyesítés (unió) 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 Pszeudokód Eljárás Egyesítés(M, X, N, Y, DB, Z) Z := X DB := M Ciklus j := 1-től N-ig i := 1 Ciklus amíg i M és X [i] Y [j] i := i + 1 Ha i > M akkor DB := DB + 1 Z[DB] := Y [j] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 31 / 37

Egyesítés (unió) Kis módosítással készíthetünk olyan algoritmust, amely egy sorozatból halmazt készít, azaz egy sorozatot úgy alakít át, hogy az azonos elemek csak egyszer szerepeljenek. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 32 / 37

Egyesítés (unió) Kis módosítással készíthetünk olyan algoritmust, amely egy sorozatból halmazt készít, azaz egy sorozatot úgy alakít át, hogy az azonos elemek csak egyszer szerepeljenek. Halmazfelsorolás készítés Eljárás HalmazfelsorolásKészítés(N, X, DB, Z) DB := 0 Ciklus i := 1-től N-ig j := 1 Ciklus amíg j DB és X [i] Z[j] j := j + 1 Ha j > DB akkor DB := DB + 1 Z[DB] := X [i] Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 32 / 37

Összetett programozási tételek 1 Másolás 2 Kiválogatás 3 Szétválogatás 4 Metszet 5 Egyesítés 6 Összefuttatás Sergyán (OE NIK) AAO 03 2011. szeptember 19. 33 / 37

Összefuttatás (rendezettek uniója) Típusfeladatok 1 Egy osztály lány-, illetve fiú tanulóinak névsora alapján álĺıtsuk elő az osztálynévsort. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 34 / 37

Összefuttatás (rendezettek uniója) Típusfeladatok 1 Egy osztály lány-, illetve fiú tanulóinak névsora alapján álĺıtsuk elő az osztálynévsort. 2 Egy iskolában négy szakörre járnak tanulók (van aki többre is). A szakkörnévsorok alapján álĺıtsuk el a szakkörre járó tanulók névsorát. Sergyán (OE NIK) AAO 03 2011. szeptember 19. 34 / 37

Összefuttatás (rendezettek uniója) Típusfeladatok 1 Egy osztály lány-, illetve fiú tanulóinak névsora alapján álĺıtsuk elő az osztálynévsort. 2 Egy iskolában négy szakörre járnak tanulók (van aki többre is). A szakkörnévsorok alapján álĺıtsuk el a szakkörre járó tanulók névsorát. Közös jellemzők Az általános egyesítéshez képest itt specialitás, hogy mindegyik sorozat rendezett Sergyán (OE NIK) AAO 03 2011. szeptember 19. 34 / 37

Összefuttatás (rendezettek uniója) Bemenet X : Egyik feldolgozandó tömb Y : Másik feldolgozandó tömb M: X elemeinek száma N: Y elemeinek száma Sergyán (OE NIK) AAO 03 2011. szeptember 19. 35 / 37

Összefuttatás (rendezettek uniója) 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 Sergyán (OE NIK) AAO 03 2011. szeptember 19. 35 / 37

Összefuttatás (rendezettek uniója) 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 Pszeudokód 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 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 DB := DB + 1; Z[DB] := X [i]; i := i + 1 Ciklus amíg j N DB := DB + 1; Z[DB] := Y [j]; j := j + 1 Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 35 / 37

Összefuttatás (rendezettek uniója) Ha X [M] = Y [N], akkor az utolsó két ciklusra nincs szükség. Ezt a helyzetet magunk is előidézhetjük. Pszeudokód Eljárás Összefuttatás(M, X, N, Y, DB, Z) i := 1; j := 1; DB := 0 X [M + 1] := + ; Y [N + 1] := + Ciklus amíg (i < M + 1) vagy (j < N + 1) DB := DB + 1 Elágazás 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 Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 36 / 37

Összefuttatás (rendezettek uniója) Ha nincs a két sorozatban azonos elem, akkor a megvalósítás még egyszerűbb. Pszeudokód Eljárás Összefuttatás(M, X, N, Y, DB, Z) i := 1; j := 1; DB := 0 X [M + 1] := + ; Y [N + 1] := + Ciklus amíg (i < M + 1) vagy (j < N + 1) DB := DB + 1 Ha X [i] < Y [j] akkor Z[DB] := X [i]; i := i + 1 különben Z[DB] := Y [j]; j := j + 1 Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 03 2011. szeptember 19. 37 / 37