algoritmizálás és adatmodellezés tanítása 4....

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

Upload: others

Post on 20-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Algoritmizálás és adatmodellezés

tanítása

4. előadás

Page 2: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Típusok osztályozása

Összetettség (strukturáltság) szempontjából:

skalár (más szóval elemi vagy strukturálatlan)

összetett (más szóval strukturált)

Strukturálási módok

Keresztszorzat AxB

Unió AB

Sokaság sok azonos típusú elem

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 2/34

Page 3: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 3/34

Page 4: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Típusok osztályozása

Sokaságtípusok néhány megjelenése

Halmaz: halmaz, multihalmaz, intervallumhalmaz, táblázat,

diszjunkt halmazfelbontás

Sorozat: tömb, verem, sor, prioritási sor, listák, szekvenciális

fájlok, függvény

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, programgráf,

háló

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 4/34

Page 5: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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) 2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 5/34

Page 6: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 6/34

Page 7: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Egész típus

Értékhalmaz: –231..+ 231 -1 (Min'Egész..Max'Egész)

Problémái: túlcsordulás ( asszociativitás, disztributivitás sértés)

Műveletek: +, – , *, Div (egészosztás), ^ (pozitív egészkitevős

hatványozás), Mod (osztási maradék), – (unáris mínusz)

Relációk: =, <, , , , >

Ábrázolás: kettes komplemens kódú

Változatai: méret és előjel szerint sokfélék

Pascal: byte, shortint, smallint, word,

integer, longint, longword, int64

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 7/34

Page 8: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Egész típus

Kettes komplemens ábrázolás:

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 8/34

Page 9: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Valós típus

Értékhalmaz: ????..???? (Min'Valós..Max'Valós nem definiáltak, vagy implementáció­függőek)

Problémái: túlcsordulás, alulcsordulás ( asszociativitás, disztributivitás sértés, egyenlőség kérdése)

Műveletek: +, –, *, /, ^, – (unáris mínusz)

Relációk: =, <, , , , >

Ábrázolás: lebegőpontos ábrázolás (pontosabb lenne, ha e típust racionálisnak neveznénk, mert csak racionális számot képes ábrázolni)

Pascal: real, single, double, extended

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 9/34

Page 10: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Valós típus

Lebegőpontos ábrázolás:

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 10/34

Page 11: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Logikai típus

Értékhalmaz: Hamis..Igaz (Min'Logikai..Max'Logikai: Hamis, illetve Igaz)

Műveletek: nem, és, vagy, kizáró vagy (a szokásos logikai

műveletek)

Relációk: =, <, , , , >

Ábrázolás: 0B = Hamis, –1B = Igaz (esetleg: 1B = Igaz)

… ahol xB=x érték „bináris egészként” ábrázolva

Megjegyzés: a rendezésnek nem nagy a gyakorlati jelentősége.

Pascal: Boolean

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 11/34

Page 12: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Karakter típus

Értékhalmaz: 0..255 - kódú jelek – ASCII (Min'Karakter..Max'Karakter: a 0, illetve a 255 kódú karakter)

Műveletek: karakter-specifikus nincs (esetleg a Kód:KarakterEgész függvény, és inverze a

Karakter:EgészKarakter függvény, amelyek a belső ábrázolással

hozza kapcsolatba)

Relációk: =, <, , , , > (a belső ábrázolásuk alapján → nem ABC-sorrend!)

Pascal: char

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 12/34

Page 13: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Részintervallum típus

Értékhalmaz: konstans1..konstans2

A származtatás által meghatározott bázistípus adott részhalmaza,

helyesebben részintervalluma.

Műveletek: a bázistípus műveletei

Relációk: a bázistípus relációi

Példa: Típus hónap=1..12

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 13/34

Page 14: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Felsorolás típus

Értékhalmaz: (konstans1, konstans2, ... , konstansN)

Műveletek: Következő(kifejezés), Előző(kifejezés),

Rend(kifejezés).

Példa: Típus Hét=(hétfő,kedd,szerda,csütörtök,péntek,

szombat,vasárnap)

Munkanap=hétfő..péntek

Változó tegnap, ma, holnap, h : Hét; i: egész

Konstans ünnepnap : Hét(vasárnap)

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 14/34

Page 15: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Elemi típusok

Felsorolás típus Be: ma

Ha ma=Min'Hét akkor tegnap:=Max'Hét

különben tegnap:=Előző(ma)

i:=Rend(ma)

Ha ma=Max'Hét akkor holnap:=Min'Hét

különben holnap:=Következő(ma)

Ciklus hHét

Ki: h

Ciklus vége

Pascal: for h in het do write(h);

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 15/34

Page 16: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 16/34

Page 17: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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) vagy TB(m)

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 17/34

Page 18: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Mutató típusok

Példa: Rendezzünk ábécé-sorrendbe 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.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 18/34

Page 19: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Mutató típusok

Példa: Rendezzünk ábécé-sorrendbe N szöveget!

Ötlet: Vezessünk be N mutató típusú változót és beolvasáskor

a szövegeknek foglaljunk helyet!

Eljárás Beolvasás:

Ciklus i=1-től N-ig

Be: S; Lefoglal(M(i),S)

Ciklus vége

Eljárás vége.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 19/34

Page 20: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Mutató típusok

Példa: Rendezzünk ábécé-sorrendbe N szöveget!

Eljárás 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.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 20/34

Page 21: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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ó

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 21/34

Page 22: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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) név: OpTip1

...

Modul vége.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 22/34

Page 23: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 23/34

Page 24: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

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

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 24/34

Page 25: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Modul - típusmegvalósítás

Unit TípusModulNév;

Interface

Uses más modulok;

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

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 25/34

Page 26: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Modul - típusmegvalósítás

Problémák a modulbeli típusmegvalósítással

Ugyanaz a művelet név lehet több célra is? IGEN, ha a

paraméterekből kiderül, melyikről van szó.

Lehet a típust paraméterezni (másik típussal?) IGEN, ha

egyetlen paraméterezés kell (új modullal, ami csak a típust

tartalmazza); más megoldás kell rá, ha többféle is lehet.

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 26/34

Page 27: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Összetett típusok

Direkt szorzat

1. Rekord

Sokaság

2. Halmaz (+multihalmaz, intervallumhalmaz)

3. Tömb (vektor, mátrix)

4. Szekvenciális fájl (input, output)

(5. Sor

6. Verem)

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 27/34

Page 28: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

A rekord névvel ellátott részek (ún. mezők) direkt szorzata.

Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 2015.03.09. 28/34

Page 29: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

Értékhalmaz: a mezők értéktípusai által meghatározott

alaphalmazok direktszorzata.

Műveletek: szelekciós függvény ('.mezőszelektor' nevű) ,

konstrukciós függvény (Rekordtípus nevű),

elképzelhetők: transzformációs függvények, amelyek a teljes

rekordstruktúrát érintik.

Relációk: = (mezőnkénti egyezés-), .

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 29/34

Page 30: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

Típus Komplex=Rekord(re,im: Valós)

Dátum=Rekord

(év: 0..2100,

hó: 1..12,

nap: 1..31)

Változó a,b,c: Komplex; d: dátum;

Konstans egység1 : Komplex(re:1,im:0)

egység2 : Komplex(re:0,im:1)

karácsony: Dátum(év:0,hó:12,nap:24)

a.re:=1; d:=karácsony; d.év:=2014

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 30/34

Page 31: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

Művelet +(a,b: komplex) osszeg: komplex

osszeg:=komplex(a.re+b.re,a.im+b.im)

Művelet vége.

Eljárás ki(a: komplex)

Ki: a.re,’+i*’,a.im

Eljárás vége.

...

c:=a+komplex(0,1); ki(c)

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 31/34

Page 32: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

Típus Pont = Rekord(x,y: Egész)

SzínesPont = Rekord

(p: pont,

szín: (piros,fehér,zöld))

Változó a: Pont

b: SzínesPont

i: egész

a:=Pont(x:1,y:2); b.p:=a; b.szín:=piros

i:=b.p.x

Rövidítés: a:=Pont(1,2)

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 32/34

Page 33: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Rekord típus

Művelet <(a,b: Pont) kisebb: logikai

kisebb:=a.x<b.x és a.y<b.y

Művelet vége.

Változó p,q: Pont

...

ha p<q akkor ...

2015.03.09. Pap Gáborné – Zsakó László: Algoritmizálás, adatmodellezés 33/34

Page 34: Algoritmizálás és adatmodellezés tanítása 4. előadásalgtan1.elte.hu/downloads/eloadas/Tipusok1.pdfTípusok osztályozása Összetettség (strukturáltság) szempontjából:

Algoritmizálás és adatmodellezés

tanítása

4. előadás vége