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

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

Algoritmusok, adatszerkezetek, objektumok

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

Összetett programozási tételek

Programozás alapjai (ANSI C)

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

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

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

Egyszerű programozási tételek

Bevezetés az informatikába

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

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

Algoritmusok. Dr. Iványi Péter

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

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

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

Felvételi tematika INFORMATIKA

Bevezetés a programozásba I.

A C# programozási nyelv alapjai

Rekurzív algoritmusok

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

Programozási alapismeretek 1. előadás

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

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

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

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

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

Algoritmusok tervezése

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

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

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

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

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

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

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

Java programozási nyelv

AZ ALGORITMUS. az eredményt szolgáltatja

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

Bevezetés a programozásba I.

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

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

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

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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

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

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

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

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

Programozás II. előadás

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

Dr. Schuster György február / 32

Webprogramozás szakkör

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

Bevezetés a programozásba

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

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

Számelméleti alapfogalmak

I. Egyenlet fogalma, algebrai megoldása

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

Programozási nyelvek 6. 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.

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

Programozási alapismeretek 3. előadás

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

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. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

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

Szoftvertervezés és -fejlesztés I.

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

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.

Web-programozó Web-programozó

Gyakorló feladatok az 1. nagy zárthelyire

Rekurzió. Dr. Iványi Péter

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

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

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

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

ELEMI PROGRAMOZÁSI TÉTELEK

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

INFORMATIKA javítókulcs 2016

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldá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).

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

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

Analízis előadás és gyakorlat vázlat

NULLADIK MATEMATIKA ZÁRTHELYI

Algoritmuselmélet 2. előadás

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

7. gyakorlat Sorozatok, Fájlkezelés

Bevezetés a programozásba I.

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

Átírás:

Programozás I. 1. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 10. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 1 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 2 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 3 / 50

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 definíció Jól meghatározott utasítások véges sorozata, 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) Programozás I. 2012. szeptember 10. 4 / 50

Algoritmus készítésének lépései A folyamatot elemi lépésekre bontjuk Figyelembe vesszük az összes felmerülő lehetőséget Ügyelünk, hogy az algoritmus véges sok lépésben véget érjen Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 5 / 50

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ént, 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) Programozás I. 2012. szeptember 10. 6 / 50

Példa (2) Nem indul a motor 1 Ellenőrizd a benzintankot! 2 Ha nincs benne benzin, akkor töltsd tele! 3 Ha elindul a motor, akkor VÉGE. 4 Ellenőrizd az akkumulátort! 5 Ha nincs megfelelően feltöltve, akkor töltsd fel! 6 Ha elindul a motor, akkor VÉGE. 7 Ellenőrizd a gyertyát! 8 Ha szükséges, cseréld ki! 9 Ha elindul a motor, akkor VÉGE. 10 Vidd el a szerelőhöz! Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 7 / 50

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 m n r 120 48 24 48 24 0 1 Osszuk el m-et n-nel és legyen r az osztási maradék. 2 Ha r = 0, akkor véget ér az algoritmus és n a kimenet. 3 Egyébként m n és n r. 4 Ugrás az 1. lépésre. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 8 / 50

Példa (4) Adjuk meg egy szó szótárban történő keresésének algoritmusát! Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 9 / 50

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 nulla vagy annál 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 annál, mintha számítógép nélkül hajtottuk volna végre. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 10 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 11 / 50

Megengedett vezérlési szerkezetek Szekvencia: Egy utasítást közvetlenül egy másik után végzünk el. Elágazás: Adott (legalább) 2 darab feltétel-program páros. A teljesülő feltételhez tartozó programrész (utasítások) végrehajtása. Ciklus: Megadott feltétel teljesülése esetén egy programrész (ciklusmag) többszöri végrehajtása. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 12 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 13 / 50

Algoritmus leíró eszközök Mondatok Blokkdiagram Struktogram Jackson ábra Pszeudokód Programnyelv Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 14 / 50

Algoritmus leíró eszközök Mondatok Blokkdiagram Struktogram Jackson ábra Pszeudokód Programnyelv Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 14 / 50

Blokkdiagram Teendők és kérdések összekötése nyilakkal Euklideszi algoritmus Be: m, n r m mod n i r = 0 n m n n r Ki: n Megjegyzés Fontos különbség van az értékadás jele és az összehasonĺıtó egyenlőség jele között Értékadást jelöljük vele. A bal oldalon mindig egy változó áll, ami értékül kapja a jobb oldali kifejezés aktuális értékét. = Összehasonĺıtó egyenlőséget jelölünk vele. Igaz ha a két oldalán kifejezés megegyezik egymással, egyébként pedig hamis. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 15 / 50

Szekvencia ábrázolása blokkdiagramon Utasítás1 Utasítás2 Utasítás3 Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 16 / 50

Elágazás ábrázolása blokkdiagramon i Feltétel n Utasítás1 Utasítás2 Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 17 / 50

Ciklus ábrázolása blokkdiagramon Nincs külön jelölés a ciklusra, elágazással viszont ábrázolható. Utasítás i Feltétel Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 18 / 50

Problémák a blokkdiagrammal Nyilak és vonalak kesze-kusza rendszere Teljesen ad-hoc elrendezésű, két ugyanolyan algoritmus leírása a rajzoló kénye-kedve szerint akár teljesen más elrendezésű is lehet Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 19 / 50

Struktogram Teendők és kérdések strukturáltan kötött, mindig téglalap alakú képi reprezentációja Euklideszi algoritmus Be: m, n r m mod n Amíg r 0 m n n r r m mod n Ki: n Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 20 / 50

Szekvencia ábrázolása struktogramon Utasítás1 Utasítás2 Utasítás3 Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 21 / 50

Elágazás ábrázolása struktogramon Utasítás1 Feltétel Utasítás2 Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 22 / 50

Ciklus ábrázolása struktogramon Feltétel Utasítás Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 23 / 50

Problémák a struktogrammal Nehezen módosítható Az elkészítése és az értelmezése olykor nehézkes Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 24 / 50

Pszeudokód Teendők és kérdések kötött kifejezésekkel való szöveges leírása Nagy mértékű hasonlóságot mutat a programnyelvek sturktúrájához Euklideszi algoritmus 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) Programozás I. 2012. szeptember 10. 25 / 50

Szekvencia megadása pszeudokóddal Utasítás1 Utasítás2 Utasítás3 Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 26 / 50

Elágazás megadása pszeudokóddal Ha feltétel akkor Utasítás1 különben Utasítás2 Elágazás vége Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 27 / 50

Többirányú elágazás megadása pszeudokóddal Elágazás Feltétel1 esetén Utasítás1 Feltétel2 esetén Utasítás2 Feltétel3 esetén Utasítás3 különben Utasítás4 Elágazás vége Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 28 / 50

Ciklus megadása pszeudokóddal Előltesztelős ciklus Ciklus amíg feltétel Utasítás Ciklus vége Akkor lépünk be, illetve addig maradunk a ciklusban, amíg a feltétel igaz Hátultesztelős ciklus Ciklus Utasítás Ciklus amíg feltétel Addig maradunk a ciklusban, amíg a feltétel igaz Számlálós ciklus Ciklus i i 0 -tól i 1 -ig Utasítás Ciklus vége Az i ciklusváltozó értéke minden ciklusban 1-gyel növekszik. Akkor lépünk ki a ciklusból, ha i értéke már meghaladja az i 1 értéket. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 29 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 30 / 50

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ékadás (állapot változtatás) jele: Megengedett konstrukciók szekvencia elágazás ciklus Bizonyítható, hogy a fenti szabályok megtartásával minden algoritmussal megoldható feladatra adható is megoldás. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 31 / 50

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) Programozás I. 2012. szeptember 10. 32 / 50

Moduláris programozás A moduláris programozást az alábbi Jackson ábra szemlélteti Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 33 / 50

Moduláris programozás A moduláris programozás 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) Programozás I. 2012. szeptember 10. 34 / 50

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) Programozás I. 2012. szeptember 10. 35 / 50

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) Programozás I. 2012. szeptember 10. 36 / 50

Összetett típusok Tömbök Stringek Struktúrák Halmazok Objektumok. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 37 / 50

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) Programozás I. 2012. szeptember 10. 38 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 39 / 50

Előadásra járó hallgatók számának meghatározása Hányan vannak itt a teremben? Hogyan tudnánk ezt hatékonyan megszámolni? Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 40 / 50

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. Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 41 / 50

Sorozat rendezése Bemenet: egy számsorozat: < a 1, a 2,..., a n > Kimenet: növekvő módon rendezett sorozat: < a 1, a 2,..., a n >, ahol a 1 a 2... a n Javított beszúró rendezés pszeudokódja: Ciklus j 2-től n-ig k A[j] i j 1 Ciklus amíg i > 0 és A[i] > k A[i + 1] A[i] i i 1 Ciklus vége A[i + 1] k Ciklus vége Szükséges lépésszám egy sorozat rendezéséhez? Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 42 / 50

Sorozat rendezése A futási idő függ a bemeneti sorozattól (rendezett, majdnem rendezett, fordítva rendezett, stb.) A futási idő függ a bemeneti sorozat méretétől A futási időt felülről szeretnénk becsülni, tehát felső korlátot akarunk meghatározni Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 43 / 50

Futási idő anaĺızisének fajtái Legrosszab eset anaĺızis T (n): a maximális futási idő, amely bármely n elemű sorozat esetén a rendezéshez legfeljebb szükséges Átlagos eset anaĺızis T (n): a várható futási idő, amely az n elemű sorozatok rendezéséhez szükséges Legjobb eset anaĺızis Magunkat verjük át, ha ezzel foglalkozunk Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 44 / 50

Sorozat rendezés Lépésszám meghatározása Rendezett eset: 3 (n 1) darab értékadás és n 2 darab összehasonĺıtás. Így a lépésszám (n 2 esetén): T (n) = 3 (n 1) + (n 2) = 4n 5 Fordítva rendezett eset: (n+2)(n 1) 2 + n(n 1) 2 darab összehasonĺıtás és 3 (n 1) + 2 n(n 1) 2 értékadás. Így a lépésszám: T (n) = (2n + 2)(n 1) 2 + (n + 3)(n 1) Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 45 / 50

Sorozat rendezés Megjegyzés A pontos lépésszám meghatározás persze függ attól, hogy a gép minden értékadást ugyanannyi idő alatt (ugyanannyi elemi lépéssel) hajt végre? (pl. i j 1 vs. k A[j]) a gép minden összehasonĺıtást ugyanannyi elemi lépéssel valósít meg? (pl. i > 0 vs. A[i] > k) egy értékadás és egy összehasonĺıtás ugyanannyi elemi lépés? Ezek viszont csak valamilyen konstans együtthatóval való szorzást jelentenek az egyes tagoknál. (Az együttható nem függ n-től!) Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 46 / 50

Nagy ordó jelölés 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) Programozás I. 2012. szeptember 10. 47 / 50

Szó keresése szótárban Hogyan tudunk hatékonyan szót keresni egy szótárban? Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 48 / 50

Tartalom 1 Algoritmus 2 Vezérlési szerkezetek 3 Algoritmus leíró eszközök Blokkdiagram Struktogram Pszeudokód 4 Strukturált programozás 5 Algoritmusok hatékonysága 6 Feladatok Sergyán (OE NIK) Programozás I. 2012. szeptember 10. 49 / 50

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 abszcisszá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) Programozás I. 2012. szeptember 10. 50 / 50