Algoritmusok, adatszerkezetek, objektumok

Hasonló dokumentumok
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.

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

Összetett programozási tételek

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

Egyszerű programozási tételek

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

Algoritmusok. Dr. Iványi Péter

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

Objektumorientált paradigma és a programfejlesztés

Bevezetés az informatikába

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Programozás alapjai (ANSI C)

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

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

Rekurzív algoritmusok

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

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

Objektumorientált paradigma és programfejlesztés Bevezető

Programozási alapismeretek 1. előadás

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

A C# programozási nyelv alapjai

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

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

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

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

Programozás II. előadás

Java programozási nyelv

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

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

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

Felvételi tematika INFORMATIKA

Objektumorientált Programozás VI.

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

Web-programozó Web-programozó

Objektum Orientált Programozás VII.

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

AZ ALGORITMUS. az eredményt szolgáltatja

Függvények növekedési korlátainak jellemzése

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

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

Már megismert fogalmak áttekintése

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

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

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

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

Bevezetés a programozásba I.

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Gyakorló feladatok az 1. nagy zárthelyire

Webprogramozás szakkör

Programozási nyelvek 6. előadás

Interfészek. PPT 2007/2008 tavasz.

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

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

Optimalizációs stratégiák 1.

RESIDENT EVIL CODENAME: NIK

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

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

Dr. Schuster György február / 32

Algoritmusok tervezése

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

Információtartalom vázlata

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Bevezetés a programozásba I.

Adatszerkezetek 2. Dr. Iványi Péter

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

Az informatika kulcsfogalmai

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

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

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

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

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

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Programozási alapismeretek 3. előadás

Objektumorientált Programozás III.

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

Adatstruktúrák Algoritmusok Objektumok

Rekurzió. Dr. Iványi Péter

Bevezetés a programozásba

Operációs rendszerek gyak.

Szoftvertervezés és -fejlesztés I.

Adatszerkezetek 1. előadás

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

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

C++ programozási nyelv

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

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

B I T M A N B I v: T M A N

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

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Objektumelvű programozás

Átírás:

Algoritmusok, adatszerkezetek, objektumok 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 14. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 1 / 33

Tantárgy célja 1 Algoritmikus gondolkodás kialakítása, egyszerű algoritmusok megismerése 2 Az objektumorientált programozási paradigma alapjainak megismerése Sergyán (OE NIK) AAO 01 2011. szeptember 14. 2 / 33

Tananyag felépítése 1 Algoritmus, algoritmus leírási módjai 2 Strukturált programozás, vezérlési szerkezetek 3 Programozási tételek 4 Objektum orientált programozás 1 Osztály, objektum 2 Mező, metódus 3 Konstruktor, destruktor 4 Egységbezárás, láthatóság 5 Statikus tagok 5 Rendezési algoritmusok 6 Logaritmikus keresés 7 Halmazműveletek 8 Rekurzió 9 További algoritmusok Sergyán (OE NIK) AAO 01 2011. szeptember 14. 3 / 33

Aláírás feltétele Zárthelyi írása az utolsó előadáson >= 40% esetén aláírás <= 20% esetén letiltás egyébként pótlási lehetőség a vizsgaidőszak elején Sergyán (OE NIK) AAO 01 2011. szeptember 14. 4 / 33

Vizsgajegy Aláírás birtokában lehet vizsgára jelentkezni Ponthatárok Teljesítmény % Érdemjegy 88 100 jeles (5) 76 87 jó (4) 64 75 közepes (3) 51 63 elégséges (2) 0 50 elégtelen (1) Sergyán (OE NIK) AAO 01 2011. szeptember 14. 5 / 33

Ajánlott irodalom Cormen, Leiserson, Rivest, Stein: Új algoritmusok. Scolar Kiadó, 2003 http://nik.uni-obuda.hu/sergyan/aao Sergyán (OE NIK) AAO 01 2011. szeptember 14. 6 / 33

Mi az az algoritmus? 1957 előtt nem lehetett megtalálni az algorithm szót a Webster s szótárban. Az algorism szó volt a szótárban, melynek jelentése: aritmetikai eljárások elvégzése arab számokkal. Az első algoritmus, amivel találkozhatunk, az Euklideszi algoritmus volt. Mai deficíció Jól meghatározott számítási eljárás, amelynek bemenete egy bizonyos érték vagy értékhalmaz, és amely létrehoz valamilyen értéket vagy értékhalmazt kimenetként. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 7 / 33

Példa (1) Kávéautomata 1 Válaszd ki, amit inni akarsz! 2 Dobj be pénzt! 3 Ha nem elég a bedobott pénz, akkor menj a 2. lépésre! 4 Várd amíg elkészül a kávé! 5 Vedd el a kávét! 6 Vedd el a visszajáró pénzt! Sergyán (OE NIK) AAO 01 2011. szeptember 14. 8 / 33

Példa (2) Nem indul a motor 1 Ellenőrizd a benzintankot. Ha nincs benne benzin, akkor töltsd tele. 2 Ha még mindig nem indul, akkor ellenőrizd az akkumulátort. Ha nincs megfelelően feltöltve, akkor töltsd fel. 3 Ha még mindig nem indul, ellenőrizd a gyertyát. Ha szükséges, cseréld ki. 4 Ha még mindig nem indul, vidd el szerelőhöz. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 9 / 33

Példa (3) Euklideszi algoritmus Bemenet: Két pozitív egész szám: m és n. Kimenet: A legnagyobb egész szám, amely m-nek és n-nek is osztója. Algoritmus 1 Osszuk el m-et n-nel és legyen r az osztási maradék. 2 Ha r = 0, akkor véget ér és n a kimenet. 3 Egyébként m = n és n = r. m n r 120 48 24 48 24 0 4 Ugrás az 1. lépésre. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 10 / 33

Az algoritmusokkal szembeni elvárások Végesség: Véges számú lépést követően véget kell érnie az algoritmusnak. Meghatározottság: Az algoritmus minden egyes lépését minden lehetséges esetre precízen definiálni kell. Bemenet: Egy algoritmusnak nulla vagy annál több bemenete lehet, amik az algoritmus kezdetekor ismertek. Kimenet: Egy algoritmusnak egy vagy több kimenete van, amelyek meghatározott viszonyban vannak az algoritmus bemeneteivel. Hatékonyság: Egy számítógép által végrehajtott algoritmustól elvárt, hogy gyorsabban működjön mintha számítógép nélkül hajtottuk volna végre. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 11 / 33

Algoritmus leíró eszközök 1 Mondatok 2 Blokkdiagram 3 Struktogram 4 Jackson ábra 5 Pszeudokód 6 Programnyelv Sergyán (OE NIK) AAO 01 2011. szeptember 14. 12 / 33

Blokkdiagram Sergyán (OE NIK) AAO 01 2011. szeptember 14. 13 / 33

Struktogram Sergyán (OE NIK) AAO 01 2011. szeptember 14. 14 / 33

Pszeudokód Be: m, n r := m mod n Ciklus amíg r 0 m := n n := r r := m mod n Ciklus vége Ki: n Sergyán (OE NIK) AAO 01 2011. szeptember 14. 15 / 33

Vezérlési szerkezetek 1 Szekvencia 2 Elágazás 3 Ciklus Sergyán (OE NIK) AAO 01 2011. szeptember 14. 16 / 33

Szekvencia (1) Egy utasítást közvetlenül egy másik után végzünk el. Jelölése blokkdiagramban: Sergyán (OE NIK) AAO 01 2011. szeptember 14. 17 / 33

Szekvencia (2) Jelölése struktogramban: Jelölése pszeudokódban: S 1 S 2 Sergyán (OE NIK) AAO 01 2011. szeptember 14. 18 / 33

Elágazás (1) Adott 2 darab feltétel-program páros, az igaz feltételekhez tartozó programok végrehajtása Jelölése blokkdiagramban: Sergyán (OE NIK) AAO 01 2011. szeptember 14. 19 / 33

Elágazás (2) Jelölése struktogramban: Jelölése pszeudokódban: Ha L akkor S 1 különben S 2 Elágazás vége Sergyán (OE NIK) AAO 01 2011. szeptember 14. 20 / 33

Ciklus (1) Megadott feltétel teljesülése esetén egy program (ciklusmag) többszöri végrehajtása Jelölése struktogramban: Sergyán (OE NIK) AAO 01 2011. szeptember 14. 21 / 33

Ciklus (2) A programozás nyelvek általában többféle ciklust ismernek, ennek megfelelően a pszeudokódban is többfélét használunk. Elöltesztelős ciklus Hátultesztelős ciklus Számlálós ciklus Ciklus amíg L S Ciklus vége Ciklus S Ciklus amíg L Ciklus i = i 0 -tól i 1 -ig S(i) Ciklus vége Sergyán (OE NIK) AAO 01 2011. szeptember 14. 22 / 33

Strukturált programozás Strukturált programnak tekintjük azokat a programokat, amelyek csak a megengedett elemi programokat tartalmazzák a megengedett programkonstrukciók (vezérlési szerkezetek) alkalmazásával. Elemi programok üres program értékeadás (állapot változtatás) Megengedett konstrukciók szekvencia elágazás ciklus Bizonyítható, hogy a fenti szabályok megtartásával minden algoritmussal megoldható feladatra adható megoldás. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 23 / 33

Moduláris programozás Az elkészítendő programot egyetlen utasítással szeretnénk megoldani. Ha ez nem sikerül, akkor több utasítással próbálkozunk, melyek egyes részfeladatokat valósítanak meg. Addig folytatjuk ezt a részfeladatokra bontást, míg minden részfeladatot sikerül megvalósítani elemi utasítások felhasználásával. Összefoglalva: A teljes feladatot részekre bontjuk, majd ezeket a visszavezetés módszerével megoldjuk. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 24 / 33

Moduláris programozás A moduláris programozást az alábbi Jackson ábra szemlélteti. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 25 / 33

Moduláris programozás megvalósítása A moduláris programozást pl. függvények (illetve eljárások) hívásával tudjuk megvalósítani. A függvények önálló részprogramok, melyeknek lehetnek bemenetei és visszatérési értékei. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 26 / 33

Változók Az algoritmusok megvalósításához változókra van szükségünk (ld. Euklideszi algoritmus) Az egyes változóknak az algoritmusok számítógépes implementációjánál típust kell megfeleltetni. Sok esetben az alkalmazott változó típustól függ, hogy milyen algoritmussal oldható meg egy probléma. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 27 / 33

Elemi változó típusok Egész típusok Hány bájton ábrázolva? Előjeles/előjel nélküli? Lebegőpontos típusok Hány bájton ábrázolva? Vigyázat! Nem ábrázolható minden valós szám! Karakter típus(ok) Logikai típus Sergyán (OE NIK) AAO 01 2011. szeptember 14. 28 / 33

Összetett típusok Tömbök Stringek Struktúrák Halmazok Objektumok... Sergyán (OE NIK) AAO 01 2011. szeptember 14. 29 / 33

Változók jellemzői Élettartam Statikus/dinamikus Konstans/változtatható Hatókör (lokális/globális) Függvény paramétereként érték/cím szerint átadott Sergyán (OE NIK) AAO 01 2011. szeptember 14. 30 / 33

Algoritmus lépésszáma Egy algoritmus lépésszáma alatt azt értjük, hogy hány elemi műveletet (értékadás, összehasonĺıtás, beolvasás, kiiratás, stb.) kell végrehajtani adott bemenet mellett. Egy algoritmus futási ideje függ az algoritmust megvalósító programtól, a programozási nyelvtől, a számítógéptől, stb. Algoritmuselméletben a futási időt a lépésszámmal jellemezzük. A lépésszám bemenettől függő jellemzésére használatos a nagy ordó (O) jelölés. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 31 / 33

Nagy ordó Legyenek f (x) és g(x) egyváltozós függvények. f (x) = O(g(x)) akkor és csak akkor, ha léteznek olyan M és x 0 pozitív valós számok, hogy minden x > x 0 esetén f (x) M g(x). Sergyán (OE NIK) AAO 01 2011. szeptember 14. 32 / 33

Feladatok 1 Írjuk le a másodfokú egyenlet megoldási algoritmusát folyamatábrával, struktogrammal és pszeudokóddal. 2 Adott két síkbeli pont: P 1 (x 1, y 1 ) és P 2 (x 2, y 2 ). Keressük a P 1 -en és P 2 -n áthaladó egyenesen az x 0 abszisszájú pont y 0 koordinátáját. Adjon algoritmust a feladat megoldására. 3 Készítsen algoritmust, mely eldönti, hogy egy adott év szőkőév-e vagy sem. 4 Készítsen algoritmust, mely megadja, hogy egy adott év adott hónapja hány napból áll. 5 Készítsen algoritmust, amely egy pozitív egész számról eldönti, hogy prím-e vagy sem. 6 Készítsen algoritmust, amely bekéri egy tankör zh eredményeit, majd kiszámítja azok átlagát. Sergyán (OE NIK) AAO 01 2011. szeptember 14. 33 / 33