Programozás alapjai. 8. előadás

Hasonló dokumentumok
Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

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

Programozás alapjai. 7. előadás

Programozás alapjai GEIAL 312BL. Wagner György Általános Informatikai Tanszék. Programozás alapjai (C)

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

Programozás alapjai. 5. előadás

Programozás alapjai GEIAL316G, GEIAL312B-BP

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

Programozás alapjai GEIAL316G, GEIAL312B-BP

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

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

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

Programozás alapjai. 10. előadás

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

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)

Algoritmuselmélet 2. előadás

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Adatszerkezetek 1. előadás

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Programozás II. előadás

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

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

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

Egyirányban láncolt lista

10. előadás Speciális többágú fák

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

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Adatbázis rendszerek Gy: Algoritmusok C-ben

Táblázatok fontosabb műveletei 1

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

Programozás alapjai. 2. előadás

Adatszerkezetek I. 6. előadás

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

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

A programozás alapjai

Adatbáziskezelés. Indexek, normalizálás NZS 1

19. Hasításos technikák (hash-elés)

Adatszerkezetek I. 1. előadás

Programozási segédlet

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Elemi adatszerkezetek

Algoritmusok vektorokkal keresések 1

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

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

Alprogramok, paraméterátadás

Informatikai tehetséggondozás:

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

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

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

II. év. Adatbázisok és számítógépek programozása

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

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

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

Occam 1. Készítette: Szabó Éva

14. Mediánok és rendezett minták

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.

Programozási nyelvek (ADA)

Tartalomjegyzék Algoritmusok - pszeudókód

Adatszerkezetek 7a. Dr. IványiPéter

Tájékoztató. Használható segédeszköz: -

Tuesday, March 6, 12. Hasító táblázatok

INFORMATIKA ÉRETTSÉGI VIZSGAKÖVETELMÉNYEK AZ ÉRETTSÉGI VIZSGA RÉSZLETES TEMATIKÁJA

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

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

Problémaosztályok, algoritmusok. Rendezés, keresés

Java II. I A Java programozási nyelv alapelemei

Számítógépes döntéstámogatás. Genetikus algoritmusok

Algoritmusok és adatszerkezetek 2.

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

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

Operációs rendszerek. UNIX fájlrendszer

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

Adatszerkezetek 1. Dr. Iványi Péter

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

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

Számláló rendezés. Példa

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

INFORMATIKA ÉRETTSÉGI VIZSGA ÁLTALÁNOS KÖVETELMÉNYEI

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

C programozás. 1 óra Bevezetés

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

Algoritmusok - pszeudókód... 1

Adatszerkezetek 2. Dr. Iványi Péter

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

Dr. Schuster György október 14.

Adatstruktúrák Algoritmusok Objektumok

Bevezetés a Python programozási nyelvbe

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

Bevezetés a programozásba Előadás: Fordítási egység

Önszervező bináris keresőfák

Adatbázis rendszerek. dr. Siki Zoltán

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Átírás:

8. előadás Wagner György Általános Informatikai Tanszék

Azonosítók érvényességi köre Kiindulási alap: a blokkszerkezetű programozási nyelvek (C, FORTRAN, PASCAL, ) Egy program szerkezete: Fejléc Deklarációsrész Fejléc Deklarációsrész Fejléc Deklarációsrész Utasításrész Utasításrész Utasításrész

Azonosítók érvényességi köre (2) Minden egyes blokk tehát újabb blokko(ka)t tartalmazhat

Azonosítók érvényességi köre (3) A blokk deklarációs részében azonosítókat lehet deklarálni. Az azonosítók és a blokkok viszonyától függően háromféle érvényességi kört különböztetünk meg. Var i : Integer ; Procedure Csere ;

Azonosítók érvényességi köre (4) Lokális: a, b Globális: Láthatatlan:... c, d a, d b c De!! A globális azonosítókat NEM szeretjük!! Átláthatatlanná teszik a programot. c

Unit-ok A problémák: amennyiben valaki a szubrutinokra építve összeállít egy jó, hasznos szubrutin gyűjteményt, akkor azt egy következő programjában csak úgy tudja felhasználni, ha átmásolja az egészet abba. egy nagy program esetén könnyen előfordulhat, hogy túl nagy programot ír. Akkorát, amekkorát egyben már nem lehet ( > 64 Kb) A megoldás: MODULÁRIS programozás.

Egy futtatható program előállításának menete Forráskód (fv-ek.c) Compiler Tárgykód (fv-ek.obj) Lib Tárgykód könyvtár (fv-ek.lib) Forráskód (valami.c) Compiler Tárgykód (valami.obj) Linker Linker Futtatható program (valami.exe)

Unit-ok (3) Egy forrásnyelvű állományt modulnak nevezünk. Egy modul tartalmazhat: egy szubrutint egy feladatkörre irányuló szubrutinokat minden szubrutinunkat Általában a második a bevált módszer A Free Pascal-ban a modul fordítása után az ún. UNIT keletkezik. Típusa:.TPU A Unit-ban levő szubrutinokat, sőt konstansokat, típusokat, változókat használhatjuk másik programban.

Felépítése: Unit (4) Fejléc: Unit Sajat ; Interfész rész: Interface Implementációs rész: Implementation Inicializációs rész: {konstansok, típusok, változók, valamint eljárások és fv-ek fejlécei} {konstansok, típusok, változók, eljárások, fv-ek} Begin End....

Unit (5) Unit Sajat; Interface Procedure Csere(Var a, b : Real); Implementation Procedure Csere(Var a, b : Real); Var s : Real; Begin s := a; a := b; b := s; End; Begin WriteLn('hip-hip-hurra'); End. Program Pelda; Uses Sajat; Var x, y : Real; Begin x := 5; y := 7; Csere (x, y); WriteLn(x, y); End.

Unit (6) Minden egyes Unit max 64 Kb kódot tartalmazhat A Unit-ok egymás szubrutinjait is hívhatják Vannak előre elkészített Unit-ok: System (szabványos eljárások, fv-ek: WriteLn, ) Crt (billentyűzet, display, hang, ) Graph (nagyfelbontású grafika) Dos (Operációs rendszer megszakítások, ) Overlay (Átlapolásos programozás technika) Turbo3 (TP 3.0-val való kompatibilitás miatt) Graph3 (TP 3.0 grafikájával való kompatibilitás miatt)

Keresések Általános feltétel: N rekordból álló halmazból a rekordok egyikének lokalizálása. További feltétel: Minden rekord tartalmazzon egy kulcsmezőt. Feladat: Megtalálni azt a rekordot, amelynek kulcsa megegyezik a keresett kulccsal. Két eset: A keresés sikeres vagy sikertelen lehet.

Szekvenciális keresések 1. Adott az R 1, R 2,, R n rekordok halmaza, ahol K 1, K 2,, K n jelöli a megfelelő kulcsokat. Feltétel: n 1 Megoldás: az első rekord kulcsának összehasonlítása a keresett kulccsal. Ha megegyezik, a keresésnek sikeresen vége. Ha nem egyezik meg, vizsgálat a file végére. Ha vége, a keresésnek sikertelenül van vége. Ha nincs vége, akkor a következő rekord kulcsának a vizsgálata...

Szekvenciális keresések (2) 2. Gyors szekvenciális keresés: Elv: az előző algoritmusban 2 vizsgálat történik: kulcs egyezés van-e? file vége van-e? Ha az egyik feltétel elvethető, akkor a keresés felgyorsul. Megoldás: egy fiktiv (ál)rekord a file végére R n+1 -ként, amelyre nézve K n+1 = K. Így a file vége vizsgálat kimaradhat.

Szekvenciális keresések (3) 3. Javított gyors szekvenciális keresés: Elv: Megpróbálni egy cikluslépésen belül két rekordot megvizsgálni. Megoldás: továbbra is a fiktív rekordot felvenni R n+1 rekordként, majd a ciklust i = 1-ről indítva, és a ciklusváltozót kétszer növelve (Inc(i); Inc(i);) összehasonlítani az R i, R i+1 rekordok K i, K i+1 kulcsait K-val. Eredmény: az 1. algoritmushoz képest kb. 30 %-kal gyorsabb!

Szekvenciális keresések (4) 4. Rendezett táblában szekvenciálisan keresni: Elv: Az előző algoritmusok csak akkor tudták eldönteni a sikertelen keresést, ha a file végére értek. Egy rendezett táblában ha a K j kulcs nagyobb K-nál, akkor belátható, hogy a keresett rekord nincs a táblában. Eredmény: sikertelen keresés esetén átlagosan kétszer gyorsabb!

Szekvenciális keresések (5) 5. A tábla rendezettségi szempontját megváltoztatni: Elv: feltehető, hogy a kulcsokra nem egyforma gyakorisággal hivatkozunk. Ekkor: K i kulcs p i valószínűséggel fordul elő, ahol: Megoldás: p 1 + p 2 + + p n = 1 (100 %) Azokat a rekordokat előre tenni a táblában, melyeknek a gyakorisága nagyobb.

Alapelvek: Rendezések Beszúró rendezés: egyesével tekinti a rendezendő számokat, és mindegyiket beszúrja a már rendezett elemek közé. (Kártyalapok rendezése). Cserélő rendezés: ha két elem nem a megfelelő sorrendben követi egymást, akkor felcserélésre kerülnek. Ez az eljárás ismétlődik mindaddig, míg további cserére már nincs szükség. Kiválasztó rendezés: először a legkisebb (vagy legnagyobb) elemet határozzuk meg, és a többitől valahogy elkülönítjük. Majd a következő legkisebbet választjuk ki, stb Leszámoló rendezés: minden elemet összehasonlítunk minden elemmel. Az adott elem végső helyét a nála kisebb elemek száma határozza meg.

Rendezések Javasolt irodalom: D. E. Knuth: A számítógép programozás művészete III. kötet

Algoritmusok Leszámoló: (nincs) Beszúró: közvetlen beszúrás bináris beszúrás Shell rendezés lista beszúró rendezése címszámító rendezés Cserélő: buborék rendezés Batcher párhuzamos módszere gyorsrendezés (Quick sort) számjegyes cserélés aszimptotikus módszerek Kiválasztó: közvetlen kiválasztás finomítása elágazva kiválasztó rendezés kupacrendezés legnagyobb be, első ki összefésülő rendezés szétosztó rendezés

Általános cél Adott R 1, R 2,, R n rekordokat K 1, K 2,, K n kulcsaik nem csökkenő sorrendjébe kell rendezni lényegében egy olyan p(1), p(2),, p(n) permutáció megkeresésével, amelyre K p(1) <= K p(2) <= <= K p(n) fennáll. Ideiglenes feltétel: Tekintsünk olyan halmazt, amelynek rendezése a memóriában megvalósítható.

Célszerű adatszerkezetek 1. Ha a rekordok mindegyike több szót foglal el a tárban, akkor célszerű a rekordokra mutató láncolt címek új táblázatának létrehozása és ezeknek a kezelése a rekordok mozgatása helyett. Ez a CÍMTÁBLÁZATOK rendezése. R e k o r d 89 37 41 R S O Kiegészítő D T E információk Rendezés előtt Kisegítő táblázat Rendezés után

Célszerű adatszerkezetek (2) 2. Ha a kulcs rövid, de a rekord kiegészítő információja hosszú, akkor a nagyobb sebesség elérése érdekében a kulcs a láncoló címmel együtt tárolható. Ez a KULCSOK rendezése.

Célszerű adatszerkezetek (3) 3. Ha a láncoláshoz az egyes rekordokhoz csatolt segédmezőt alkalmaznak úgy, hogy a rekordok együtt egy lineáris listát alkotnak, amelyben minden láncoló cím a következő rekordra mutat, akkor az a LISTA rendezése. 89 37 41 R S O D T E Lista feje