Adatszerkezetek I. 1. előadás

Hasonló dokumentumok
Algoritmizálás és adatmodellezés tanítása 4. előadás

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

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

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

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

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

Prmea2_ Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. Például:

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

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

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

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

Struktúra nélküli adatszerkezetek

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)

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Multihalmaz, intervallumhalmaz

Programozási tételek általánosítása 2. Szlávi Péter 2015

Halmaz típus Értékhalmaz:

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

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

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

Dinamikus modellek szerkezete, SDG modellek

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

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

ADATSZERKEZETEK TANTÁRGY, 1. FÉLÉV 2. ELŐADÁS 2009 (VÁZLAT)

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

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

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Egyirányban láncolt lista

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

Adatszerkezetek 1. előadás

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

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

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

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

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

Adatszerkezetek II. 1. előadás

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

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

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

C++ programozási nyelv Konstruktorok-destruktorok

Bevezetés az informatikába

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

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

Térinformatikai algoritmusok Elemi algoritmusok

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

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

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

Adatszerkezetek és algoritmusok

Térinformatikai algoritmusok Elemi algoritmusok

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

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

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

Adatszerkezetek II. 10. előadás

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

Programozási nyelvek (ADA)

5. Gyakorlat. struct diak {

Programozás alapjai (ANSI C)

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

kész OraHalmazProgram.exe programot a OraHalmaz_Keret.zip kicsomagolása után!

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

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

Felvételi tematika INFORMATIKA

PROGRAMOZÁSMÓDSZERTAN 2. ELADÁS 2005 (VÁZLAT)

A C programozási nyelv I. Bevezetés

Programozás I gyakorlat. 10. Stringek, mutatók

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

Mutatók és mutató-aritmetika C-ben március 19.

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

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

Tartalomjegyzék Algoritmusok - pszeudókód

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

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

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

A C programozási nyelv I. Bevezetés

Az informatika kulcsfogalmai

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Bevezetés a C++ programozási nyelvbe

Web-programozó Web-programozó

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

és az instanceof operátor

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

1.előadás Tornai Kálmán

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

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

Egyszerű programozási tételek

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

Adatszerkezetek 2. Dr. Iványi Péter

Átírás:

Adatszerkezetek I. 1. előadás

Adatok jellemzői ismétlés 1. Azonosító Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. 2. Hozzáférési jog Adatokat módosítani, illetve értéküket lekérdezni, használni lehet. 3. Kezdőérték A születéskor hozzárendelt érték. Változóknál deklarációban kaphat értéket, vagy eleve van típushoz rendelt kezdőérték, esetleg speciális nem definiált érték, s így akkor mód van hivatkozás ellenőrzésre is. 2013.09.11. 2

Adatok jellemzői ismétlés 4. Hatáskör A programszöveg azon tartománya, amelyben az adathoz a hozzáférés lehetséges. 5. Élettartam A futási időnek az az intervalluma, amelyben az adat azonosítója mindvégig ugyanazt az objektumot jelöli. 2013.09.11. 3

Adatok jellemzői ismétlés 6. Értéktípus Az adatoknak az a tulajdonsága, hogy értékei mely halmazból származnak (értékhalmaz) és tevékenységeknek (eljárások, függvények, operátorok) mely készlete, amely létrehozza, felépíti, lerombolja és részekre bontja, alkalmazható rá (asszociált műveletek). 2013.09.11. 4

Típusok osztályozása Összetettség (strukturáltság) szempontjából: skalár (vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási módok Keresztszorzat AxB Unió A B Sokaság sok azonos típusú elem 2013.09.11. 5

Típusok osztályozása Sokaság osztályozása rákövetkezés szerint Halmaz: nincs rákövetkezési reláció Sorozat: minden elemet egy elem követ és egy előz meg (kivéve esetleg a két szélső elemet) Hierarchikus struktúra: minden elemet egy előz meg, de több is követhet Hálós struktúra: minden elemet több előzhet meg és több is követhet 2013.09.11. 6

Típusok osztályozása Sokaságtípusok megjelenése Halmaz: halmaz, multihalmaz, intervallumhalmaz, táblázat, diszjunkt halmazfelbontás Sorozat: tömb, verem, sor, prioritási sor, lista Hierarchikus struktúra: bináris fa, nem bináris fa Hálós struktúra: irányítatlan gráf, irányított gráf 2013.09.11. 7

Típusok műveletei A típusműveletek osztályozása: értékadás (azonos típusúak közötti adatmozgatás) konstrukciós műveletek (strukturált érték létrehozása) szelekciós műveletek (strukturált érték részei kiválasztása) azonosság és más relációk számosság-függvény Min és Max típusoperátor Sorszám- (vagy Rend-) függvény transzformációs (a típuson értelmezett, a típusra képező függvények) 2013.09.11. 8

Elemi típusok 1. Egész típusok (előjeles, előjel nélküli, különböző méretben) 2. Valós típusok (különböző méretben és pontossággal) 3. Logikai típus 4. Karakter típus (értékhalmaz problémák) 5. Felsorolás típus 6. (Rész)intervallum típus 7. Mutató típusok 2013.09.11. 9

Mutató típusok Tulajdonságok: A mutató típus memóriacímek, illetve azokon a címeken levő értékek kezelésére szolgál. Az ilyen típusú változók (ti. amire a mutató típus mutat) automatikusan nem születnek meg (nem kerülnek be a memóriába) és nem is szűnnek meg erről magunknak kell gondoskodni. 2013.09.11. 10

Mutató típusok Tetszőleges (többnyire összetett) típushoz, mint bázistípushoz (TB) szervesen tartozhat egy-egy ilyen típus. Egy konkrét mutató típusú objektum csak egyfajta (nevezetesen TB-típusú) elemek kezdőcímeit hordozhatja. Kezdőérték: Sehova Műveletek: Lefoglal(m), illetve Lefoglal(m,e) Felszabadít(m) tartalom(m) 2013.09.11. 11

Mutató típusok Példa: Rendezzünk ábécé-sorendbe N szöveget! Alapmegoldás: Ciklus i=1-től N 1-ig Ciklus j=i+1-től N-ig Ha S(j)<S(i) akkor Csere(S(i),S(j)) Ciklus vége Ciklus vége Eljárás vége. Probléma: Szöveg cseréje hosszú szövegek esetén sokáig tarthat. 2013.09.11. 12

Mutató típusok Példa: Rendezzünk ábécé-sorendbe N szöveget! Ötlet: Vezessünk be N mutató típusú változót és beolvasáskor a szövegeknek foglaljunk helyet! Beolvasás: Ciklus i=1-től N-ig Be: S; Lefoglal(M(i),S) Ciklus vége Eljárás vége. 2013.09.11. 13

Mutató típusok Példa: Rendezzünk ábécé-sorendbe N szöveget! Mutatós megoldás: Ciklus i=1-től N 1-ig Ciklus j=i+1-től N-ig Ha tartalom(m(j))<tartalom(m(i)) akkor Csere(M(i),M(j)) Ciklus vége Ciklus vége Eljárás vége. Itt tehát nem a hosszú szövegeket cserélgetjük, hanem a rövid mutatókat. 2013.09.11. 14

Összetett típusok 1. Rekord 2. Halmaz (+multihalmaz, intervallumhalmaz) 3. Tömb (vektor, mátrix) 4. Szekvenciális file (input, output) 5. Verem 6. Sor 7. Prioritási sor 2013.09.11. 15

Sorozattípus műveletei Üres Létrehoz Üres?/Teli? ElemSzám Beilleszt Kihagy Első/Utolsó Létrehoz, elemek nélkül. Létrehoz, struktúrától függő elemekkel. Ellenőrzi, hogy van-e eleme / bővíthető lenne-e? Hány eleme van? Struktúrától függő helyre új elemet illeszt. Struktúrától függő helyről elemet hagy el. Első / utolsó elemének értékét adja. Elejéről/Végéről Leválasztja a sorozat első / utolsó elemét, értékét is visszaadja. ElsőUtániak/UtolsóElőttiek Eldobja az első / utolsó elemet. 2013.09.11. 16

Sorozattípus műveletei Elejére/Végére Elem ElemMódosít Elsőre/Utolsóra A sorozat első eleme elé / utolsó eleme mögé illeszt egy újat. Struktúrától függően meghatározott elemének értékét adja vissza. Struktúrától függően meghatározott elemének új értéket ad. A struktúra első / utolsó elem lesz az aktuális (ha volt ilyen). Előzőre/Következőre A struktúra aktuális eleme (ha volt ilyen) legyen az eddigit megelőző / követő. 2013.09.11. 17

Sorozattípusok fajtái Típuskonstrukció Tömb Lista Sor Prioritási sor Verem InputSzekvenciálisFile OutputSzekvenciálisFile DirektFile AsszociatívFile Tevékenységhalmaz (Létrehoz, ElemSzám,) Elem, ElemMódosít Üres, Üres?, Teli?, Beilleszt, Kihagy, Elsőre, Utolsóra, Előzőre, Következőre, Elem, ElemMódosít Üres, Üres?, Teli?, ElemSzám, Első, Elejéről, Végére Üres, Üres?, Teli?, ElemSzám, Első, Elejéről, Üres, Üres?, Teli?, ElemSzám, Első, Elejére, Elejéről Létrehoz, Üres?, Elejéről Üres, Üres?, Teli?, Végére Üres, Létrehoz, Üres?, Teli?, ElemSzám, Elem, ElemMódosít Üres, Üres?, Teli?, ElemSzám, Elem, ElemMódosít 2013.09.11. 18

Modul - típusmegvalósítás Típus értékhalmaz művelethalmaz Típusmegvalósítás modul (fordítási egység) specifikáció reprezentáció implementáció 2013.09.11. 19

Modul - típusmegvalósítás Specifikáció exportmodul ExportModul TípusModulNév(InputParaméterek): Típus Tip Konstans Konst1,Konst2,... Függvény Fv1(FormParam): FvTip1 Eljárás Elj1(FormParam) Operátor Op1(FormParam): OpTip1... Modul vége. 2013.09.11. 20

Modul - típusmegvalósítás Reprezentáció és implementáció Modul TípusModulNév(InputParaméterek): Reprezentáció Típus Tip=típuskonstrukció... Implementáció Eljárás Elj1(FormParam):... Eljárás vége.... Modul vége. 2013.09.11. 21

Modul - típusmegvalósítás A modul Pascalban a modul önálló fordítási egység nincs modulparaméter nincs külön exportmodul a specifikáció és a reprezentáció nem választható szét a modul tartalmazhat inicializáló részt 2013.09.11. 22

Modul - típusmegvalósítás Unit TípusModulNév; Uses más modulok; Interface... {specifikáció és reprezentáció} Implementation... {műveletek megvalósítása} Begin... {kezdőértékek beállítása, ha szükséges} End. 2013.09.11. 23

Kumulatív összegzés Algoritmusok kumulatív összegzés Adott egy N elemű számsorozat, adjuk meg a sorozat azon [a,b] intervallumát, ahol az elemek összege maximális! Be: N: Egész, X: Tömb(1..N,Egész) Ki: a,b: Egész Ef: n>0 Uf: 1 p q N 1 a b n és p, q : b i a q X i X i p i 2013.09.11. 24

Algoritmusok kumulatív összegzés Alapmegoldás: MaxÉrt:=- Ciklus i=1-től N-ig Ciklus j=i-től N-ig s:=összeg(i,j) Ha s>maxért akkor MaxÉrt:=s; a:=i; b:=j Ciklus vége Ciklus vége Eljárás vége. összeg(i,j): S:=0 Ciklus k=i-től j-ig S:=S+X(k) Ciklus vége összeg:=s Függvény vége. 2013.09.11. 25

Algoritmusok kumulatív összegzés i Kumulatív összegzés: i 0 i N : s i s(0):=0; MaxÉrt:=- x j j 1 Ciklus i=1-től N-ig i 1 i N s i s i 1 x i, s 0 0 s(i):=s(i-1)+x(i) b Ciklus vége xi s b s a 1 Ciklus i=1-től N-ig i a Ciklus j=i-től N-ig Ha s(j)-s(i-1)>maxért akkor MaxÉrt:=s(j)-s(i-1) a:=i; b:=j Ciklus vége Ciklus vége Eljárás vége. 2013.09.11. 26

Algoritmusok kumulatív összegzés A megoldások összehasonlítása Alapmegoldás: 3 egymásba ágyazott ciklus O(N 3 ) Kumulatív összegzés: 2 egymásba ágyazott ciklus O(N 2 ) Meggondolandók ez az elv milyen struktúrákra alkalmazható? ez az elv milyen feladattípusokra alkalmazható? 2013.09.11. 27

Adatszerkezetek I. 1. előadás vége