A tényleges mérőszám függ az adat méretétől, illetve a feltétel összetettségétől.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "A tényleges mérőszám függ az adat méretétől, illetve a feltétel összetettségétől."

Átírás

1 HATÉKONYSÁGVIZSGÁLAT 1. A HATÉKONYSÁG FOGALMA A specifikációnak megfelelően elkészített, működőképes programjaink általában sok szempontból még nem tökéletesek. A legtöbb kész program javítható, pl. - gyorsabbá tehető - memóriaigénye csökkenthető - programkódja egyszerűbbé tehető. A programok ilyen szempontból történő vizsgálatát hatékonyságvizsgálatnak nevezzük. A hatékonyabbra írás alapfeltétele a program helyes működése, hiszen egy rosszul működő program esetében nincs értelme hatékonyságról beszélni. A hatékonyságvizsgálat már az algoritmuskészítés idején megjelenik, de gyakran az elkészült forráskód hatékonysága is javítható. A hatékonyság vizsgálata több szempontból is fontos, pl. - szűkös erőforrások esetén - költségkímélés céljából - a gyakorlati használhatóság miatt 2. A HATÉKONYSÁGVIZSGÁLAT SZEMPONTJAI 2.1 Végrehajtási idő - Mérése: o a tényleges programfutási idővel. Ez gép, illetve nyelvfüggő lehet! o absztrakt időegységben. Különböző időegységeket rendelhetünk a jellemző műveletekhez: aritmetikai műveletek, értékadás, feltételek kiértékelése. Általában az értékadást, és a feltétel kiértékelést tekintjük időigényes műveletnek. A tényleges mérőszám függ az adat méretétől, illetve a feltétel összetettségétől. Ugyanazon program (tényleges, ill. absztrakt) végrehajtási ideje az egyes futások alkalmával különböző lehet, pl. egy rendezési algoritmus futási ideje általában függ az adatok előrendezettségétől. Ezért beszélhetünk minimális, maximális, ill. átlagos futási időről. 2.2 Helyfoglalás (memóriában, háttértárakon) Két formáját vizsgáljuk: - A program által használt adatok helyfoglalása - A forráskód, illetve a lefordított programkód, futtatható állomány mérete. 1

2 Sokak szerint a helyfoglalás problémája kevésbé lényeges, hiszen memória és háttértár van bőven. Ennek azonban gyakran ellentmond a mindennapok tapasztalata. 2.3 Bonyolultság Fajtái: - Logikailag bonyolult a program, ha a feladat megoldásához speciális ismeretek is szükségesek (pl. grafikában: mátrix-számítás, interpolációk stb.) - Szerkezetileg bonyolult a program, ha sok döntési csomópontot, illetve egymásba ágyazott struktúrát, esetleg többszörös rekurziót tartalmaz. A szerkezeti bonyolultság jól mérhető (pl. a döntési csomópontok száma, egymásba ágyazott struktúrák mélysége) - Adatszerkezetileg bonyolult a program, ha töbszörösen egymásba ágyazott típusdefiníciókat tartalmaz. Fontos tudnunk, hogy a hatékonyság három említett dimenziója általában egymás ellen dolgozik, azaz mindegyik egyszerre nem javítható. Gyakran az időbeli hatékonyság növekedéséért memóriával, vagy bonyolultabb kóddal fizetünk. 3. A HATÉKONYSÁGVIZSGÁLAT SZINTJEI 3.1 Globális hatékonyság A globális hatékonyság növelése az algoritmus hatékonyabbá tételét jelenti, ez tehát valójában a programtervezés része. Egy program tényleges hatékonyságát alapvetően a globális hatékonyság határozza meg. 3.2 Lokális hatékonyság A programkód egyszerű transzformációit jelenti, általában a program működésének megértése nélkül, mechanikusan is elvégezhető. Jelentősége kisebb, mint a globális hatékonyságé, de nem elhanyagolható. A továbbiakban ezért elsősorban a globális hatékonyságot javító módszerekkel foglalkozunk. 2

3 4. A VÉGREHAJTÁSI IDŐ CSÖKKENTÉSE A program végrehajtási idejét lényegében a ciklusok, illetve a rekurzív eljárások határozzák meg. Azok a programsorok, amelyek csak egyszer kerülnek végrehajtásra, nem sokban befolyásolják a program futási idejét. Ezért a legfontosabb feladat a ciklusok végrehajtási idejének a csökkentése, amely történhet - a ciklusmag végrehajtási számának, illetve - a ciklusmag végrehajtási idejének a csökkentésével. 4.1 A ciklusmag végrehajtási számának a csökkentése, módszerek A ciklus által vizsgált sorozat elemszámának a csökkentése Példa: Döntsük el egy pozitív egész számról, hogy prím-e! A megoldást az eldöntés tételének alkalmazásával adjuk meg Megfeleltetés: [m..n]<->[2..n-1] T(I) <-> I osztója N-nek Függvény Prim(N:egész):logikai I:=2 Ciklus amíg (I<=N-1) és nem (I osztója N-nek) I:=I+1 Prim:=(I>N-1) Függvény vége A megoldás időben sokkal hatékonyabbá tehető, ha felismerjük, hogy elég N feléig, sőt N gyökéig vizsgálni. A hatékonyabbra írt megoldás: Függvény Prim(N:egész):logikai I:=2 Ciklus amíg (I*I<=N) és nem (I osztója N-nek) I:=I+1 Prim:=(I*I>N) Függvény vége Megjegyzés: Az I*I <=N feltétel egyenértékű az I <= Gyök(N) feltétellel, de lokálisan hatékonyabb, mert a szorzás gyorsabb művelet, mint a gyökvonás A vizsgált sorozat(ok) speciális tulajdonságainak a kihasználása Gyakran hatékonyabb megoldáshoz vezet, ha kihasználjuk a vizsgált, ill. feldolgozandó sorozat(ok) valamely speciális tulajdonságát, pl. rendezettségét. - Rendezett sorozatban lineáris keresés helyett alkalmazhatjuk a logaritmikus keresést. - Rendezett sorozatok unióját, metszetét az egyszerű unió, metszet algoritmus helyett öszszefuttatással végezhetjük 3

4 Mindkét esetben lényegesen csökken a ciklusok végrehajtásának száma. (A ciklusmagokban minden esetben két-két elem összehasonlítása történik) A bemenő adatok átrendezése a feldolgozás igényeinek megfelelően Gyakoriság szerinti keresés. Ha egy sorozatban többször kell lineárisan keresnünk, akkor javíthatjuk a keresések átlagos végrehajtási idejét, ha a már keresett elemeket a sorozatban előre léptetjük, azaz minden keresés után megcseréljük az előtte lévővel. Sok keresés után a gyakran keresett elemeket így szinte azonnal megtaláljuk Ciklus indexeléssé transzformálása (eldöntés, keresés esetén) - Prímeldöntés feladata: vegyünk fel egy logikai értékeket tartalmazó P vektort, amely a prím sorszámok esetén igaz, egyébként hamis értékeket tartalmaz. (Ezt elvégezhetjük pl. az Eratosztenészi-szita módszerével) Ekkor Prim(N)=P(N). Akkor célszerű alkalmazni, ha egy feladatban sokszor kell a prímeldöntést elvégeznünk. - Tegyük fel, hogy egy osztály tanulóit úgy osztották be, hogy az ABC minden betűjével pontosan egy név kezdődjön, pl. Adorján, Ábel, Bakos, Czipauer stb. Ekkor a tanulók adatait tartalmazó vektorban a név szerinti keresés rendkívül egyszerű: a Nev nevű tanuló sorszáma: Pos(Nev[1],MagyarABC), tehát minden létező név 1 lépésben megtalálható Matematikai összefüggések felhasználása 1. Példa: határozzuk meg két pozitív egész szám legnagyobb közös osztóját! 1. megoldás: elvégezzük a számok prímtényezős felbontását, majd a közös prímtényezőket az előforduló kisebbik hatványon összeszorozzuk. Hatékonysága nem jó, mivel a prímtényezős felbontás hosszadalmas. 2. megoldás: Euklideszi algoritmussal lényegesen csökkenthető a lépések száma Pl DIV 2940 = 5 (Maradék 150) 2940 Div 150 =19 (Maradék 90) 150 Div 90 = 1 (Maradék 60) 90 Div 60 = 1 (Maradék 30) 60 Div 30 = 2 (Maradék 0) Tehát a legnagyobb közös osztó az utolsó nem 0 maradék: Példa: Adjuk össze az egész számokat A és B között. Hatékony megoldás: összegzés tétel helyett alkalmazzuk a számtani sorozat összegképletét. 4

5 4.2 A ciklusmag végrehajtási idejének a csökkentése, módszerek E módszerek lényege: a ciklusmagban lévő időigényes műveleteket gyorsabb műveletekre cseréljük Elágazás indexeléssé transzformálása Például - Betűszámlálás szövegben: 26 irányú elágazás helyett: Inc(DB[C])+1]), karakter típusú index: DB: Tömb[ A.. Z ]:egész - Korosztályok szerinti számlálás: 0-6, 6-14, 14-18, 18-24: 4 irányú elágazás helyett: Inc(Db[Kor[I] div 2+1]), a végén az első 3 rekesz összege adja a 6 évesig terjedő korosztályba tartozók számát, a második 4 rekesz összege a 6-14 évesek számát, stb Kivételes eset kiküszöbölése 1. példa: Keressük egy vektor első T tulajdonságú elemét! Alapmegoldás: lineáris keresés Hatékonyabban: A feladatot megoldhatjuk kiválasztással is, ha az utolsó elem után elhelyezünk egy T tulajdonságú elemet. Ha a kiválasztás a hozzáfűzött elemet adja meg, akkor az eredeti vektorban nincs T tulajdonságú elem. Így egyszerűbb bentmaradási feltételt kell vizsgálni a ciklusban, tehát egy ciklusmag végrehajtási ideje csökken. 2. példa: adott egy M*N-es mátrix, 0, és 1 elemekkel feltöltve. Határozzuk meg, hogy A[I,J]- nek hány egyes szomszédja van! Hatékony megoldás: a mátrixot körbevesszük 0-kal, így nem kell a szélen lévő elemek esetében időigényes vizsgálatokat végeznünk. Két egymásba ágyazott ciklussal összeadjuk az A[I,J]-t körbevevő 3*3-as részmátrix elemeit, majd kivonjuk belőle A[I,J]-t Ciklus szétválasztása Ciklus i:=1-től N-ig Ha I<=K akkor B[I]:=X-A[I] különben B[I]:=X+A[I] Elágazás vége Hatékonyabban: a ciklusban lévő feltétel alapján kettéoszthatjuk az 1..N intervallumot, ezért a ciklus ketté választható úgy, hogy a ciklusmagok már ne tartalmazzanak feltételt. Ciklus i:=1-től K-ig B[I]:=X-A[I] 5

6 Ciklus i:=k+1-től N-ig B[I]:=X+A[I] Adatok előfeldolgozása Feladat: Rendezzük egy mátrix sorait a sorösszeg szerint növekvően! 1. megoldás: pl. minimumkiválasztásos rendezéssel: Ciklus I:=1-től M.Sor-1-ig Ind:=I Ciklus J:=I+1-től M.Sor-ig Ha SorOsszeg(M,J)<SorOsszeg(M,Ind) Akkor Ind:=J Elágazás vége Ha Ind>I akkor SorCsere(M,I,Ind) Hibája, hogy feleslegesen, többször is kiszámolja ugyanazt a sorösszeget! Hatékonyabb megoldás: rendezés előtt meghatározzuk mindegyik sor összegét egy S vektorban, a feltétel így SorOsszeg(M,J)<SorOsszeg(M,Ind) helyett S[J]<S[Ind] lesz. Ekkor a SorCsere mellett az S megfelelő elemeit is cserélni kell! Az adatmozgások számának a csökkentése Példa: Beillesztéses rendezés esetén az elemek cseréje helyett léptetünk Az adatmozgások kiküszöbölése 1. Példa. Kiválogatás: ha a kiválogatott elemekre később nincs szükség, nem tároljuk őket, hanem azonnal feldolgozzuk. 2. Példa: Az előző mátrixos feladat megoldása még hatékonyabbá tehető, ha a sorok cseréjét csak adminisztráljuk, egy mutató tömbben. (Indexvektoros rendezés) Ciklus I:=1-től M.Sor-ig S[I]:=SorOsszeg(M,I) H[I]:=I Cv. 6

7 Ciklus I:=1-től M.Sor-1-ig Ind:=I Ciklus J:=I+1-től M.Sor-ig Ha S(H[J])<S(H[Ind]) Akkor Ind:=J Elágazás vége Ha Ind>I akkor Csere(H[I],H[Ind]) /Csak az indexeket cseréljük! 4.3 Más alapelvű megoldás keresése Gyakran hatékonyabb megoldáshoz jutunk, ha egy feladatot más alapelven kísérelünk megoldani. Példa. - Bin(n,k) : Fakt(N)/(Fakt(K)*(Fakt(N-K)) helyett rekurzív képlettel is megoldható (ld. a rekurziónál) Hatékonysági észrevételek: - Az eredeti képlet csak kis N esetén működik, mert a Fakt függvény gyorsan nő - A képletnek egyszerűsíthető: N*(N-1)* (N-K+1)/Fakt(K)-ra. - A új képlet kiszámításakor a szorzásokat és az osztásokat felváltva és valós típussal célszerű elvégeznünk, emiatt a számítás lassú Hatékonyabb megoldás: (más elven) - Rekurzív függvény gondolata alapján a részeredmények tárolásával hatékony nemrekurzív algoritmus írható. (ld. rekurzió témaköre) 7

8 5. A HELYFOGLALÁS CSÖKKENTÉSE 5.1 Az adatok mennyiségének a csökkentése Az indexes változók (vektor, mátrix) kiküszöbölése Példa: Fibonacci sorozat N. elemének kiszámolása (N>=2 esetén) Függvény Fib(N:egész):egész Változó F:Tömb[1..Max]:egész F[0]:=0 F[1]:=1 Ciklus I:=2-től N-ig F[I]:=F[I-1]+F[I-2] Fib:=F[N] Függvény vége Hatékonyabban: vektor helyett 3 segédváltozóval Függvény Fib(N:egész):egész Változó F0,F1,FI:egész F0:=0 F1:=1 Ciklus I:=2-től N-ig FI:=F0+F1 FI:=F1 F1:=F0 Fib:=FI Függvény vége Adatok speciális tulajdonságainak a kihasználása - Szimmetrikus mátrix esetén elég a mátrix főátló feletti részét, és a főátlót tárolni. (Pl. sorfolytonosan, vektorban. Pl Tárolása vektorban:

9 Ekkor az elem sorszámából ki kell számolnunk, hogy hányadik sor hányadik elem, pl.. 5. sorszámú elem, a -2 a 2. sor 2. eleme. (Kell írnunk egy címkiszámító függvényt, ami az időbeli hatékonyságot rontja) Hasonlóan valósítható meg a háromszögmátrixok tárolása is. (Valamely átló alatt/fölött csupa 0 elemet tartalmazó mátrixok.) - Hézagosan kitöltött struktúrák, pl. olyan mátrix, amelynek csak a főátlójában van 0-tól különböző elem. (Diagonális mátrix) Tárolása: vektorban Adatterületek megosztása Példa. - Szétválogatás helyben, ill. egy vektorban. A T tulajdonságú elemeket a vektor elejére, a nem T tulajdonságúakat a vektor végére tesszük. - Ha egy algoritmus egyszerre két vermet használ, akkor a két verem (statikus megvalósítás) esetén egy vektorban is ábrázolható. Akkor érdemes ezt csinálni, ha az egyik veremből kivett elemet gyakran tesszük át a másik verembe, azaz az összes tárolandó elem száma nagyjából állandó. Lehetséges megoldása: az egyik veremmutató kezdőértéke 0, a másiké N+1, és amikor az egyik nő, akkor a másik csökken. - Egy alsó és egy felső háromszög mátrix tárolása egy négyzetes mátrixban Helytakarékos típusok használata - Nevek tárolása esetén string helyett pl. string[40] - Nemek (illetve bármely két állapotú érték tárolása) esetén szövegkonstans ( férfi, nő ), ill. számkód (1, 2) helyett logikai érték. - Szöveges állományban az ismétlődő szóközök helyett Tab karakter. - Hónapok neve helyett elég a sorszám tárolása. - Számítható adatok elhagyása: pl. egy személyi adatokat tartalmazó vektorban nem kell egyszerre tárolni a születési dátumot, és az életkort (redundancia kiküszöbölése) Természetesen, amennyiben helytakarékosság céljából az eredeti adatot kisebb helyigényű adattal helyettesítjük, meg kell oldanunk a kódolás-dekódolás problémáját, pl. a hónap sorszámából elő kell tudnunk állítani a nevét, és viszont Rekurzió átírása iterációvá A rekurzív algoritmusok gyakran többszörösen hajtanak végre egy-egy számítást, illetve tevékenységet, ezáltal a részeredemények veremben történő tárolása miatt az ilyen algoritmusok rejtett memóriaigénye nagy. Ezt kiküszöbölhetjük, ha átírjuk az algoritmust iteratívvá. 9

10 5.1.6 Dinamikus memóriakezelés A dinamikus memóriakezelés alkalmazásával megoldható, hogy a használt adatok menynyiségével arányos mértékben foglaljuk le a memóriát. Pl. egy dinamikusan megvalósított lista adatszerkezet átlagos memóriaigénye (beleértve a mutatók tárolásához szükséges helyet is) kisebb, mint az ugyanolyan típusú elemeket tároló statikus lista memóriaigénye. 5.2 A programkód méretének a csökkentése A forráskód, ezáltal a futtatható állomány méretének a csökkentése - Többszöri kódleírás helyett alkalmazzunk függvényt. (-> Időben ez kevésbé hatékony; a meghívás és a paraméterátadások miatt). - Adatok előzetes feldolgozása. Ha egy programrészben többször kell ugyanazt a számítást elvégeznünk, akkor előre kiszámítjuk, és a továbbiakban az eredményt tároló változót használjuk fel. A kód méretének csökkentése mellett a végrehajtási időt is csökkenti. - Programkód adattá transzformálása. o A felhasználónak szánt szövegeket, üzeneteket fájlban tárolhatjuk (<-> Időbeli hatékonyság) o Az ábrákat programból történő rajzolása helyett előre megrajzoljuk, fájlban tároljuk. (-> Időben is hatékonyabb) A lefordított kód méretének a csökkentése: - DLL-ek alkalmazása esetén a programhoz dinamikusan (futási időben) szerkesztődnek hozzá bizonyos rutinok, ezzel az EXE mérete csökken. Ugyanazt a DLL állományt több program is használhatja. 6. BONYOLULTSÁG CSÖKKENTÉSE 6.1 Az algoritmus bonyolultságának a csökkentése Szerkezeti bonyolultság csökkentése: a feltételek, ill. struktúrák számának és öszszetettségének a csökkentése. - Kivételes esetek kiküszöbölése. Már tárgyalt módszer. A végrehajtási idő mellett a bonyolultságot is csökkenti. Példa: szavak (azaz, szókezdetek) számlálása esetén kivételes eset az első szó. Megoldás: egy szóköz fűzése a szöveg elejére. (-> Elhagyhatjuk az első karaktert vizsgáló feltételeket) - Funkciók elhagyása. Sokszor a programozási tételekkel megadott megoldás nem a leghatékonyabb, mert ezek nem veszik figyelembe az adott feladat specialitásait. 10

11 Példa: kiválogatás esetén gyakran nem kell tárolnunk az eredményt, csak ki kell íratnunk. Ezzel (az idő, helyfoglalás mellett) bonyolultság szempontjából is hatékonyabb megoldást kapunk, ugyanis nincs külön ciklus a válogatásra, ill. a kiírásra Logikai bonyolultság csökkentése: - Típusabsztrakció. Ha egy algoritmusban valamely részlet visszavezethető valamely speciális adatszerkezet alkalmazására, akkor a logikai bonyolultságot csökkenthetjük. Példa: a Hanoi-tornyai feladatban a tornyok vermeknek felelnek meg, és egy korong áthelyezése egy egyszerű Veremből, ill. Verembe műveletet jelent. 6.2 Az adatszerkezet bonyolultságának a csökkentése - Pl. sok vektor helyett rekordot tartalmazó vektor alkalmazása. - Típusdefiníciók esetén ne alkalmazzunk túlságosan mély egymásba ágyazást! - Típusabsztrakcióval (új típusok bevezetésével) az adatszerkezet bonyolultsága is csökkenthető, hiszen így elrejtjük a programozó elől az adott típus kezelésének a részleteit. 7. LOKÁLIS HATÉKONYSÁG NÖVELÉSE - Gyorsabb adattípusok használata, pl. valós helyett egész. - Helytakarékos típus választása: pl. integer helyett shortint. - Gyorsabb műveletek választása: o Szorzás helyett összeadás: pl. 2*a helyett a+a o Függvényhívás helyett művelet: I<=gyök(n) helyett I*I<=N o Kifejezés egyszerűsítése: pl. ½*a helyett 0.5*a - Nyelv lehetőségeinek alkalmazása: pl. többirányú elágazás helyett érték szerinti elágazás - A programkód egyszerű transzformációi: o Ciklustól független utasítások kiemelése a ciklusból. Példa: Ciklusba írt SetColor(Red) o Elágazás minden ágán szereplő utasítások kiemelése. Ha minden ág ugyanúgy kezdődik (végződik), akkor az ismétlődő sorokat ki lehet emelni az elágazás elé (mögé). o Azonos szerkezetű ciklusok összevonása Jellemzően számlálós ciklussal, a tesztelős ciklus esetében körültekintően kell alkalmazni. o Azonos feltételű elágazások összevonása 11

ELEMI PROGRAMOZÁSI TÉTELEK

ELEMI PROGRAMOZÁSI TÉTELEK ELEMI PROGRAMOZÁSI TÉTELEK 1. FELADATMEGOLDÁS PROGRAMOZÁSI TÉTELEKKEL 1.1 A programozási tétel fogalma A programozási tételek típusalgoritmusok, amelyek alkalmazásával garantáltan helyes megoldást adhatunk

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

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

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek Adatbázis és szoftverfejlesztés elmélet Témakör 8. 1. Egy sorozathoz egy érték hozzárendelése Az összegzés tétele Összefoglalás Programozási tételek Adott egy számsorozat. Számoljuk és írassuk ki az elemek

Részletesebben

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

Hatékonyság 2. előadás Hatékonyság 2. előadás Alapelv: a tárolt elemek száma vagy egy elemének mérete kevesebb legyen! Helyfoglalás=memória (kód+adat) + háttértár (kód+adat) 2.1 Sorozatok hosszcsökkentése 2.1.1 Sorozat kiküszöbölése

Részletesebben

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

Hatékonyság 1. előadás Hatékonyság 1. előadás Mi a hatékonyság Bevezetés A hatékonyság helye a programkészítés folyamatában: csak HELYES programra Erőforrásigény: a felhasználó és a fejlesztő szempontjából A hatékonyság mérése

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek 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.

Részletesebben

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

Programozási tételek. Dr. Iványi Péter Programozási tételek Dr. Iványi Péter 1 Programozási tételek A programozási tételek olyan általános algoritmusok, melyekkel programozás során gyakran találkozunk. Az algoritmusok általában számsorozatokkal,

Részletesebben

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

Algoritmusok és adatszerkezetek I. 1. előadás Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási

Részletesebben

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.

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 Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

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

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 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Rekurzív algoritmusok

Rekurzív algoritmusok Rekurzív algoritmusok 11. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. november 14. Sergyán (OE NIK) AAO 11 2011. november 14. 1 / 32 Rekurzív

Részletesebben

Összetett programozási tételek

Összetett programozási tételek Ö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

Részletesebben

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok. Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

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

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

REKURZIÓ. Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát.

REKURZIÓ. Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát. 1. A REKURZIÓ FOGALMA REKURZIÓ Rekurzív: önmagát ismétlő valami (tevékenység, adatszerkezet stb.) Rekurzív függvény: függvény, amely meghívja saját magát. 1.1 Bevezető példák: 1.1.1 Faktoriális Nemrekurzív

Részletesebben

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): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió és iteráció Balrekurzió Ha az eljárás első utasításaként szerepel a rekurzív hívás, akkor a rekurzió lényegében az első nem

Részletesebben

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

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

Részletesebben

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu 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

Részletesebben

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

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24. Rendezések 8. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. október 24. Sergyán (OE NIK) AAO 08 2011. október 24. 1 / 1 Felhasznált irodalom

Részletesebben

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

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán

Részletesebben

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

Algoritmizálás, adatmodellezés 1. előadás Algoritmizálás, adatmodellezés 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az induló élből

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

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

Ö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. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

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

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

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

Algoritmizálás, adatmodellezés tanítása 1. előadás Algoritmizálás, adatmodellezés 1. előadás Az algoritmus fogalma végrehajtható (van hozzá végre-hajtó) lépésenként hajtható végre a lépések maguk is algoritmusok pontosan definiált, adott végre-hajtási

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

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

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.

Részletesebben

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

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

Algoritmizálás és adatmodellezés 2. előadás Algoritmizálás és adatmodellezés 2 előadás Összetett típusok 1 Rekord 2 Halmaz (+multialmaz, intervallumalmaz) 3 Tömb (vektor, mátrix) 4 Szekvenciális fájl (input, output) Pap Gáborné, Zsakó László: Algoritmizálás,

Részletesebben

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

Algoritmizálás és adatmodellezés tanítása 2. előadás Algoritmizálás és adatmodellezés tanítása 2. előadás Tartalom Összegzés vektorra, mátrixra Megszámolás vektorra, mátrixra Maximum-kiválasztás vektorra, mátrixra Eldöntés vektorra, mátrixra Kiválasztás

Részletesebben

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai 1. feladat: Repülők (20 pont) INFORMATIKA II. (programozás) kategória Ismerünk városok közötti repülőjáratokat.

Részletesebben

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

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

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

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 9. ÖSSZETETT FELADATOK...111 9.1. ELEMI ALGORITMUSOK ÖSSZEÉPÍTÉSE...111 9.2. ÖSSZEFOGLALÁS...118 9.3. GYAKORLÓ FELADATOK...118

Részletesebben

Web-programozó Web-programozó

Web-programozó Web-programozó Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,

Részletesebben

PROGRAMOZÁSI TÉTELEK

PROGRAMOZÁSI TÉTELEK PROGRAMOZÁSI TÉTELEK Összegzés tétele Adott egy N elemű számsorozat: A(N). Számoljuk ki az elemek összegét! S:=0 Ciklus I=1-től N-ig S:=S+A(I) Megszámlálás tétele Adott egy N elemű sorozat és egy - a sorozat

Részletesebben

10. gyakorlat Struktúrák, uniók, típusdefiníciók

10. gyakorlat Struktúrák, uniók, típusdefiníciók 10. gyakorlat Struktúrák, uniók, típusdefiníciók Házi - (f0218) Olvass be 5 darab maximum 99 karakter hosszú szót úgy, hogy mindegyiknek pontosan annyi helyet foglalsz, amennyi kell! A sztringeket írasd

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

Visszalépéses kiválogatás

Visszalépéses kiválogatás elépő a tudás közösségébe Informatika szakköri segédanyag Heizlerné akonyi iktória, Horváth Győző, Menyhárt László, Szlávi Péter, Törley Gábor, Zsakó László Szerkesztő: Abonyi-Tóth Andor, Zsakó László

Részletesebben

Programozási alapismeretek 3. előadás

Programozási alapismeretek 3. előadás Programozási alapismeretek 3. előadás Tartalom Ciklusok specifikáció+ algoritmika +kódolás Egy bevezető példa a tömbhöz A tömb Elágazás helyett tömb Konstans tömbök 2/42 Ciklusok Feladat: Határozzuk meg

Részletesebben

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

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I. Számelmélet I. DEFINÍCIÓ: (Osztó, többszörös) Ha egy a szám felírható egy b szám és egy másik egész szám szorzataként, akkor a b számot az a osztójának, az a számot a b többszörösének nevezzük. Megjegyzés:

Részletesebben

5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá)

5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá) 5. Rekurzió és iteráció (Rekurzív programok átírása nemrekurzívvá) Az elõzõekben megbarátkoztunk a rekurzióval, mint egy problémamegoldási stratégiával, sõt megvizsgáltunk néhány programozási nyelvet a

Részletesebben

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): Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása

Részletesebben

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

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

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

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19. Programkészítés Megrendelői igények begyűjtése Megoldás megtervezése (algoritmuskészítés)

Részletesebben

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

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

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 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 /

Részletesebben

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok és programozási tételek

Részletesebben

Követelmény a 7. évfolyamon félévkor matematikából

Követelmény a 7. évfolyamon félévkor matematikából Követelmény a 7. évfolyamon félévkor matematikából Gondolkodási és megismerési módszerek Elemek halmazba rendezése több szempont alapján. Halmazok ábrázolása. A nyelv logikai elemeinek helyes használata.

Részletesebben

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Érdekes informatika feladatok

Érdekes informatika feladatok A keres,kkel és adatbázissal ellátott lengyel honlap számos díjat kapott: Spirit of Delphi '98, Delphi Community Award, Poland on the Internet, Golden Bagel Award stb. Az itt megtalálható komponenseket

Részletesebben

A programozás alapjai 1 Rekurzió

A programozás alapjai 1 Rekurzió A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder

Részletesebben

Gauss-Seidel iteráció

Gauss-Seidel iteráció Közelítő és szimbolikus számítások 5. gyakorlat Iterációs módszerek: Jacobi és Gauss-Seidel iteráció Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor London András Deák Gábor jegyzetei alapján 1 ITERÁCIÓS

Részletesebben

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

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

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

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 3. gyakorlat PLanG: 2011.09.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

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

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 I. ALAPALGORITMUSOK 1. Prímszámvizsgálat Adott egy n természetes szám. Írjunk algoritmust, amely eldönti, hogy prímszám-e vagy sem! Egy számról úgy fogjuk eldönteni, hogy prímszám-e, hogy megvizsgáljuk,

Részletesebben

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 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 /

Részletesebben

Informatikai tehetséggondozás:

Informatikai tehetséggondozás: Ég és Föld vonzásában a természet titkai Informatikai tehetséggondozás: isszalépéses kiválogatás TÁMOP-4.2.3.-12/1/KON isszalépéses kiválogatás 1. Az összes lehetséges sorrend Sokszor előfordul feladatként,

Részletesebben

A PhysioBank adatmegjelenítő szoftvereinek hatékonysága

A PhysioBank adatmegjelenítő szoftvereinek hatékonysága A PhysioBank adatmegjelenítő szoftvereinek hatékonysága Kaczur Sándor kaczur@gdf.hu GDF Informatikai Intézet 2012. november 14. Célok, kutatási terv Szabályos EKG-felvétel: P, Q, R, S, T csúcs Anatómiai

Részletesebben

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c

Részletesebben

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan

Részletesebben

NUMERIKUS MÓDSZEREK I. TÉTELEK

NUMERIKUS MÓDSZEREK I. TÉTELEK NUMERIKUS MÓDSZEREK I. TÉTELEK Szerkesztette: Balogh Tamás 014. január 19. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add el! - Így

Részletesebben

Gyakorló feladatok Gyakorló feladatok

Gyakorló feladatok Gyakorló feladatok Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó

Részletesebben

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

Rekurzió. Működése, programtranszformációk. Programozás II. előadás.   Szénási Sándor. Rekurzió Működése, programtranszformációk előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Rekurzió Rekurzió alapjai Rekurzív

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 31. Városok közötti távolság Feladat: két város nevének beolvasása, városok közötti távolság megjelenítése. Kilépés azonos városok

Részletesebben

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

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

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

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje 1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt

Részletesebben

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió

Részletesebben

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Programozási tételek, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj Divide & Conquer (,,Oszd meg és uralkodj ) paradigma Divide: Osszuk fel az adott problémát kisebb problémákra. Conquer: Oldjuk meg a kisebb

Részletesebben

Az informatika kulcsfogalmai

Az informatika kulcsfogalmai Az informatika kulcsfogalmai Kulcsfogalmak Melyek azok a fogalmak, amelyek nagyon sok más fogalommal kapcsolatba hozhatók? Melyek azok a fogalmak, amelyek más-más környezetben újra és újra megjelennek?

Részletesebben

Informatikai tehetséggondozás:

Informatikai tehetséggondozás: Ég és Föld vonzásában a természet titkai Informatikai tehetséggondozás: isszalépéses keresés TÁMOP-4.2.3.-12/1/KON A visszalépéses keresés (backtrack) a problémamegoldás igen széles területén alkalmazható

Részletesebben

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz 2018/2019 ősz Elérhetőségek Előadó: (safaro@math.bme.hu) Fogadóóra: hétfő 9-10 (H épület 3. emelet 310-es ajtó) A pontos tárgykövetelmények a www.math.bme.hu/~safaro/kalkulus oldalon találhatóak. A mátrix

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA MATEmATIkA I 6 VI KOmPLEX SZÁmOk 1 A komplex SZÁmOk HALmAZA A komplex számok olyan halmazt alkotnak amelyekben elvégezhető az összeadás és a szorzás azaz két komplex szám összege és szorzata

Részletesebben

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

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

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít

Részletesebben

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

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 Oktatási Hivatal 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 Kérjük a tisztelt tanár kollégákat, hogy a

Részletesebben

Programozas 1. Strukturak, mutatok

Programozas 1. Strukturak, mutatok Programozas 1 Strukturak, mutatok Strukturak Tömb: több egyforma típusú változó együttese Struktúra: több különböző típusú de logikailag egybetartozó változó együttese, amelyet az egyszerű kezelhetőség

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

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

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat 9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:

Részletesebben

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

Részletesebben

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Rekurzió Klasszikus példák Faktoriális n! n * n 1! ha n 0 1 ha n 0 Fibonacci-számok Fib n 0 ha n 0 1 ha n 1 Fib n 1 Fib n 2 ha n 1 A

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14. Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a

Részletesebben

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

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált

Részletesebben

ALGEBRAI KIFEJEZÉSEK, EGYENLETEK

ALGEBRAI KIFEJEZÉSEK, EGYENLETEK ALGEBRAI KIFEJEZÉSEK, EGYENLETEK AZ ALGEBRAI KIFEJEZÉS FOGALMÁNAK KIALAKÍTÁSA (7-9. OSZTÁLY) Racionális algebrai kifejezés (betűs kifejezés): betűket és számokat a négy alapművelet véges sokszori alkalmazásával

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

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

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom 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

Részletesebben