Egyszerű programozási tételek



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

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

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

Összetett programozási tételek

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

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

Informatikai tehetséggondozás:

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

Objektum Orientált Programozás VII.

Programozási segédlet

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

PROGRAMOZÁSI TÉTELEK

Objektumorientált Programozás VI.

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

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

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

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

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

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

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

Rekurzív algoritmusok

Programozás II. előadás

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

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

Bevezetés a programozásba I.

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

Informatikai tehetséggondozás:

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

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

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

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

Algoritmusok, adatszerkezetek, objektumok

Térinformatikai algoritmusok Elemi algoritmusok

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

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

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

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

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

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

Bevezetés a programozásba. 5. Előadás: Tömbök

Térinformatikai algoritmusok Elemi algoritmusok

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

Felvételi tematika INFORMATIKA

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

Egyszerű programozási tételek

INFORMATIKAI ALAPISMERETEK

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

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

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

Programozási tételek feladatok

Programozás alapjai (ANSI C)

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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


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

Gyakorló feladatok az 1. nagy zárthelyire

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

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

Összetett programozási tételek 2.

Adatszerkezetek 1. Dr. Iványi Péter

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

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

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

Web-programozó Web-programozó

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

Objektumorientált Programozás VI.

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

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

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

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

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

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

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

Informatikai tehetséggondozás:

Pontműveletek. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar február 20.

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

INFORMATIKAI ALAPISMERETEK

Informatikai tehetséggondozás:

Programozási alapismeretek 3. előadás

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

Webprogramozás szakkör

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

INFORMATIKAI ALAPISMERETEK

Rendezések. Összehasonlító rendezések

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

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

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

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

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

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

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Struktúra nélküli adatszerkezetek

Morfológia. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia Intézet

Adatszerkezetek II. 10. előadás

Átírás:

Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15. 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 02 2011. szeptember 15. 2 / 37

Programozási tételek A programozási tételek jól megválasztott, egyszerű feladatok megoldásai Segítségükkel a gyakorlatban szükséges 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 Egy sorozathoz egy értéket rendelő feladatok Egy sorozathoz egy sorozatot rendelő feladatok Egy sorozathoz több sorozatot rendelő feladatok Több sorozathoz egy sorozatot rendelő feladatok Feldolgozandó intervallum alapján megkülönböztetünk Rögzített intervallumos programozási tételeket Feltételig tartó programozási tételeket (ezeket a változatokat nem tárgyaljuk) Sergyán (OE NIK) AAO 02 2011. szeptember 15. 3 / 37

Tömbök Azonos típusú adatokat tárolunk egymás mellett Tömböt alkotó adatok az elemek Az elemekre a tömb indexével hivatkozunk Jelölés: A[i] Ha a tömbnek egy indexe van, akkor egydimenziós tömb: vektor Ha a tömbnek két indexe van, akkor két dimenziós tömb: mátrix Index egész számok sorozata (nullától) vagy egytől Tárolás sorfolytonosan, elemek egymást követően Sergyán (OE NIK) AAO 02 2011. szeptember 15. 4 / 37

Tömbök feldolgozása A tömbök feldolgozása általában ciklusokkal történik Ha a tömb minden egyes elemét feldolgozzuk: számláló ciklus Ha a tömb elemein valamilyen tulajdonság meglétét vizsgáljuk: előlvagy hátultesztelő ciklus Sergyán (OE NIK) AAO 02 2011. szeptember 15. 5 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 6 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 7 / 37

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 természetes szám szorzatát. Sergyán (OE NIK) AAO 02 2011. szeptember 15. 8 / 37

Sorozatszámítás Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma Kimenet R: Művelet eredménye Pszeudokód Eljárás Sorozatszámítás(A, N, R) R := R 0 Ciklus i := 1-től N-ig R := R művelet A[i] Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 9 / 37

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 függvények sorozatára Az induláskor használt nullértéket értelemszerűen a kérdéses függvény (esetleg a feladat) alapján kell megválasztani összegzés faktoriális elemek uniója R 0 0 1 { } művelet R := R + A[i] R := R A[i] R := R A[i] Sergyán (OE NIK) AAO 02 2011. szeptember 15. 10 / 37

Sorozatszámítás Összegzés Eljárás Összegzés(N, X, S) S := 0 Ciklus i = 1-től N-ig S := S + X [i] Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 11 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 12 / 37

Eldöntés Típusfeladatok 1 Döntsük el egy számról, hogy prímszám-e. 2 Döntsük el egy szóról a hónapnevek sorozata alapján, hogy egy hónap neve-e. 3 Döntsük el egy tanuló év végi osztályzatai alapján, hogy kitűnő tanuló-e. 4 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. Sergyán (OE NIK) AAO 02 2011. szeptember 15. 13 / 37

Eldöntés Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Kimenet VAN: Logikai változó Pszeudokód Eljárás Eldöntés(A, N, T, VAN) i := 1 Ciklus amíg (i N) és (A[i] teljesíti T -t) i := i + 1 Ciklus vége VAN := (i N) Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 14 / 37

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

Eldöntés Prím teszt Eljárás Eldöntés(N, PRIM) i := 2 Ciklus amíg (i N 1) és (i osztója N-nek) i := i + 1 Ciklus vége PRIM := (i > N 1) Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 16 / 37

Eldöntés Monoton növekedés Eljárás Eldöntés(N, X, MONOTON) i := 1 Ciklus amíg (i N 1) és (X [i] X [i + 1]) i := i + 1 Ciklus vége MONOTON := (i > N 1) Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 17 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 18 / 37

Kiválasztás Típusfeladatok 1 Ismerjük egy hónap nevét, a hónapnevek sorozata alapján mondjuk meg a 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) AAO 02 2011. szeptember 15. 19 / 37

Kiválasztás Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Kimenet SORSZ: Első T tulajdonságú elem indexe Pszeudokód Eljárás Kiválasztás(A, N, T, SORSZ) i := 1 Ciklus amíg (A[i] teljesíti T -t) i := i + 1 Ciklus vége SORSZ := i Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 20 / 37

Kiválasztás Megjegyzések Az eldöntéssel ellentétben ez visszaadja az első T tulajdonságú elem sorszámát A tétel feltételezi, hogy biztosan van legalább egy ilyen 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ó) Sergyán (OE NIK) AAO 02 2011. szeptember 15. 21 / 37

Kiválasztás Legjobb barát névnapja Eljárás Kiválasztás(N, X, BARAT, NAP) i := 1 Ciklus amíg (X [i].nev BARAT ) i := i + 1 Ciklus vége NAP := X [i].nevnap Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 22 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 23 / 37

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) AAO 02 2011. szeptember 15. 24 / 37

Lineáris keresés Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Kimenet VAN: Logikai változó SORSZ: Első T tulajdonságú elem indexe Pszeudokód Eljárás Keresés(A, N, T, VAN, SORSZ) i := 1 Ciklus amíg (i N) és (A[i] teljesíti T -t) i := i + 1 Ciklus vége VAN := (i N) Ha VAN akkor SORSZ := i Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 25 / 37

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 T tulajdonságú elem a sorozatban, és ha van, akkor visszaadja a sorszámát is Értelemszerűen így nem feltételezi, hogy biztosan van ilyen elem a listában. Ha nincs, akkor a VAN változó értéke hamis, ilyenkor a SORSZ változó nem kap értéket. Sergyán (OE NIK) AAO 02 2011. szeptember 15. 26 / 37

Lineáris keresés Nem nyereséges nap Eljárás Keresés(K, B, N, VAN, SORSZ) i := 1 Ciklus amíg (i N) és (B[i] K[i] > 0) i := i + 1 Ciklus vége VAN := (i N) Ha VAN akkor SORSZ := i Elágazás vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 27 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 28 / 37

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) AAO 02 2011. szeptember 15. 29 / 37

Megszámlálás Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma T : Tulajdonság függvény Kimenet DB: T tulajdonságú elemek száma Pszeudokód Eljárás Megszámlálás(A, N, T, DB) DB := 0 Ciklus i := 1-től N-ig Ha (A[i] teljesíti T -t) akkor DB := DB + 1 Elágazás vége Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 30 / 37

Megszámlálás Megjegyzések Amennyiben nincs T tulajdonságú elem a listában, akkor értelemszerűen 0 kerül a DB változóba Valójában egy sorozatszámítás, amely minden T tulajdonságú elem esetén 1-et hozzáad a DB értékéhez Sergyán (OE NIK) AAO 02 2011. szeptember 15. 31 / 37

Megszámlálás Olimpiai indulási szintet teljesítők százalékos aránya Eljárás Megszámlálás(N, ID, SZINT, SZAZ) DB := 0 Ciklus i := 1-től N-ig Ha (ID[i] SZINT ) akkor DB := DB + 1 Elágazás vége Ciklus vége SZAZ := Kerekit(100 DB/N) Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 32 / 37

Egyszerű programozási tételek 1 Sorozatszámítás 2 Eldöntés 3 Kiválasztás 4 Lineáris keresés 5 Megszámlálás 6 Maximumkiválasztás Sergyán (OE NIK) AAO 02 2011. szeptember 15. 33 / 37

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) AAO 02 2011. szeptember 15. 34 / 37

Maximumkiválasztás Bemenet A: Feldolgozandó tömb N: Tömb elemeinek száma Kimenet MAX : Maximális elem indexe Pszeudokód Eljárás Maximumkiválaztás(A, N, MAX ) MAX := 1 Ciklus i := 2-től N-ig Ha A[i] > A[MAX ] akkor MAX := i Elágazás vége Ciklus vége Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 35 / 37

Maximumkiválasztás Megjegyzések Reláció megfordításával értelemszerűen minimumkiválasztás lesz a tétel célja 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 azonnal meghatározható) Feltételezzük, hogy legalább egy elem létezik a listában Több maximális elem esetén az elsőt adja vissza Sergyán (OE NIK) AAO 02 2011. szeptember 15. 36 / 37

Maximumkiválasztás Névsorban legelső tanuló Eljárás Minimumkiválaztás(X, N, MIN, NEV ) MIN := 1 Ciklus i := 2-től N-ig Ha X [MIN] > X [i] akkor MIN := i Elágazás vége Ciklus vége NEV := X [MIN] Eljárás vége Sergyán (OE NIK) AAO 02 2011. szeptember 15. 37 / 37