algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/tipus1.pdfpélda:...

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

Upload: others

Post on 23-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmizálás, adatmodellezés

1. előadás

Page 2: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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

bármely csomópont elérhető, s bármely csomópontból el

lehet jutni a befejező élre.

Háromféle csomópontot tartalmaz:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 2/53

Page 3: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmus-leíró eszközök

Folyamatábra

A csomópontokból előállíthatók az algoritmikus struktúrák:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 3/53

Page 4: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmus-leíró eszközök

Definíció: Strukturált programnak nevezzük azt a programot,

amely csak a fenti három algoritmikus szerkezetet (szekvencia,

elágazás, ciklus) tartalmazza.

Nem strukturált

alapszerkezetek:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 4/53

Page 5: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmus-leíró eszközök

Nem strukturált alapszerkezetek:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 5/53

Page 6: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmus-leíró eszközök

Kiegészítő elemek a folyamatábrához:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 6/53

Page 7: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmus-leíró eszközök

Struktogram

Programgráf élek nélkül:

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 7/53

Page 8: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 8/53

Page 9: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 9/53

Page 10: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Elemi típusok

Felsorolás típusBe: 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

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 10/53

Page 11: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 11/53

Page 12: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 12/53

Page 13: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 13/53

Page 14: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 14/53

Page 15: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 15/53

Page 16: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 16/53

Page 17: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 17/53

Page 18: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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ó

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 18/53

Page 19: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

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)2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 19/53

Page 20: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

I. A típusfogalom problémája

Típusfogalom a programozásban:

Típus=értékhalmaz+műveletek

Típusdefiníció programozási nyelvekben:

értékhalmaz

Jó lenne:

típusnév=(értékhalmaz,műveletek)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 20/53

Page 21: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

Osztály – a típusfogalom megvalósítása

értékhalmaz (~ tulajdonságok)

műveletek (~ metódusok)

Objektum – osztály típusú változó

Egységbe zárás – a tulajdonságokat és a műveleteket egy

egységbe foglaljuk, de a tulajdonságokhoz kívülről nem

férünk hozzá, csak a műveleteken keresztül.

Hozzáférés – saját (privát), védett, nyilvános.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 21/53

Page 22: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

Példa: háromszög típusTípus Háromszög

Értékhalmaz:

csúcsok: tömb(1..3:Pont)

Műveletek:

Létrehoz(A,B,C: Pont)

Eltol(dx,dy: Valós)

Forgat(alfa: Valós)

Nagyít(nx,ny: Valós)

Terület: Valós

Konstruktor – az objektum keletkezésekor kezdőértéket ad

(lehet paraméter nélküli és paraméteres), dinamikus objektum

esetén memóriát is foglal.

Destruktor – memóriát felszabadít.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 22/53

Page 23: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

Öröklés

Ős → Utód, az utód az ős egy speciális fajtája

Új osztály létrehozása öröklésselAz értékhalmaz direktszorzat művelettel bővülhet

A művelethalmaz régi műveletei megmaradhatnak

régi műveletei átdefiniálhatóak

új műveletek hozhatók létre

Öröklés haszna – a programszöveg lerövidülése

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 23/53

Page 24: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

Öröklés tulajdonságai

Antiszimmetrikus: Ős → Utód, de nem Utód → Ős

Tranzitív: Ős → Utód1 → Utód2

Többszörös öröklésŐs1

Ős2 →

Pl. a Windows ablakrendszere (Ős1: ablak, Ős2: fa )

Többszörös öröklés problémája

Utód

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 24/53

Page 25: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

Új osztály létrehozása öröklésselTípus Derékszögű háromszög

Ős:

Háromszög

Értékhalmaz:

derékszög sorszáma: Egész

Műveletek:

Terület: Valós

Magasság: Valós

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés

Típus Háromszög

Értékhalmaz:

csúcsok: tömb(1..3:Pont)

Műveletek:

Létrehoz(A,B,C: Pont)

Eltol(dx,dy: Valós)

Forgat(alfa: Valós)

Nagyít(nx,ny: Valós)

Terület: Valós

25/53

Page 26: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás

TípuskompatibiliásVáltozó A: Háromszög

B: Derékszögű háromszög

A:=B értékadás szabályos-e? IGEN, A minden része

kitölthető

B:=A értékadás szabályos-e? NEM, B nem minden része

tölthető ki (egyelőre)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 26/53

Page 27: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Szakaszx, y a szakasz kezdőpontjaxhossz, yhossz a szakasz hossza x és y iránybanszín a szakasz színe a képernyőn

Téglalapx, y a téglalap bal felső sarkaxhossz, yhossz a téglalap x és y irányú oldalaiszín a téglalap színe a képernyőn

Körx, y a kör középpontjasugár a kör sugaraszín a kör színe a képernyőn

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 27/53

Page 28: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Műveletek – közösek mindhárom típusra:Létrehoz

Kirajzol

Letöröl

Színmódosít(szín: Színtípus)

Mozgat(dx,dy: Egész)

Az utóbbi kettő megvalósítása nem függ a típustól.

Az x, az y és a szín mindhárom típusban szerepel.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 28/53

Page 29: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Új típus – Pont

Pont

Értékhalmaz:

x, y a pont kezdőpontja

szín a pont színe a képernyőn

Műveletek:

Létrehoz (kx,ky: Egész,ks: Színtípus)

Kirajzol

Letöröl

Színmódosít(U: Színtípus)

Mozgat(dx,dy: Egész)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 29/53

Page 30: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Új típus – PontSzínmódosít(U: Színtípus):

szín:=u

Eljárás vége.

Mozgat(dx,dy: Egész):

Letöröl

x:=x+dx; y:=y+dy

Kirajzol

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 30/53

Page 31: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Új típus – SzakaszSzakasz

Ős:

Pont

Értékhalmaz:

xhossz, yhossz

Műveletek:

Kirajzol

Letöröl

Kirajzol:

Szakaszrajzolás(x,y,x+xhossz,y+yhossz)

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 31/53

Page 32: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Objektumelvű programozás –

komplex példa

Változó p: Pont; sz: Szakasz

p.Mozgat(10,20)

sz.Mozgat(10,20)

Mi történik? Miért?

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 32/53

Page 33: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Tömb típus

A tömb fogalma

Definíció: sorozat típus a következő műveletekkel: indexelés,

résztömb képzés, mátrix sora, oszlopa, részmátrixa, relációk.

Alapesetben statikus, az elemszáma nem változtatható.

Definiálása: Tömb(indextípus: elemtípus)

Tömb(indextip1,indextip2: elemtípus)

...

Hivatkozások: A(i), A(i..j), A(i,j), A(i,),A(,j), A(i..j,k..l)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 33/53

Page 34: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Tömb típus

A tömb fogalma

Indextípus lehetőségei (nyelvfüggő megvalósítás):

1..elemszám (ilyenkor általában az elemszámot kell megadni)

0..elemszám-1 (ilyenkor általában az elemszámot kell megadni)

alsó határ..felső határ

(ebben az esetben az index nem csak egész szám lehet)

Példa: Tömb(1..maxn: egész)Tömb(’a’..’z’,hétfő..péntek: valós)

Tömb(-10..10: Tömb(-1..1: karakter)) ≡

Tömb(-10..10,-1..1: karakter)

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 34/53

Page 35: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Tömb típus

Ábrázolás

Szekvenciális, folytonos (többindexes tömböknél oszlop- vagy

sorfolytonos).

Az elemek méretének ismeretében számítható az elemek

memóriabeli címe:

a tömb a memóriában

... 1. elem 2. elem ... utolsó elem ... egy elem mérete

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 35/53

Page 36: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Tömb típus

Mátrix sorfolytonos ábrázolása

Ha n sora és m oszlopa van, mindkettő 1-től indexelve:

Függvény Cím(i,j):Egész

Cím:=(i-1)*m+j

Függvény vége.

a tömb a memóriában

... (1,1) (1,2) ... (2,1) (2,2) ... (n,m) ... egy elem mérete

Indextípus=(a..b,c..d) esetén:

Függvény Cím(i,j):Egész

Cím:=(i-a)*(d-c+1)+j-c+1

Függvény vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 36/53

Page 37: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Tömb típus

Mátrix oszlopfolytonos ábrázolása

Ha n sora és m oszlopa van, mindkettő 1-től indexelve:

Függvény Cím(i,j):Egész

Cím:=(j-1)*n+i

Függvény vége.

Indextípus=(a..b,c..d) esetén:

Függvény Cím(i,j):Egész

Cím:=(j-c)*(b-a+1)+i-a+1

Függvény vége.

a tömb a memóriában

... (1,1) (2,1) ... (1,2) (2,2) ... (n,m) ... egy elem mérete

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 37/53

Page 38: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

1. Összegzés mátrixra

Specifikáció:Bemenet: N,MN, XHNM

Kimenet: SH

Előfeltétel: –

Utófeltétel:S=

M

1jji,

N

1i

X

H: Z vagy R vagy N

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 38/53

Page 39: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

1. Összegzés mátrixra

Algoritmus:A megoldás lényegében csak abban különbözik az alap-változattól, hogy a mátrix miatt két – egymásba ágyazott –ciklusra van szükség.

Konstans

maxN,maxM:Egész(???)

Típus

Tmatrix=Tömb(1..maxN,1..maxM:TH)

Változó

N,M:Egész

X:Tmatrix

S:TH

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 39/53

Page 40: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

1. Összegzés mátrixra

Összegzés(N,M,X,S):

S:=0

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

S:=S+X(i,j)

Ciklus vége

Ciklus vége

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 40/53

Page 41: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

2. Megszámolás mátrixra

Specifikáció:Bemenet: N,MN, XHNM, T:HL

Kimenet: DbN

Előfeltétel: –

Utófeltétel:Db=

M

)T(X1j

N

1i

ji,

1

H: tetszőleges halmaz

T: tetszőleges

tulajdonság-függvény

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 41/53

Page 42: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

2. Megszámolás mátrixra

Megszámolás(N,M,X,Db):

Db:=0

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha T(X(i,j)) akkor Db:=Db+1

Ciklus vége

Ciklus vége

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 42/53

Page 43: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Specifikáció:Bemenet: N,MN, XHNM

Kimenet: Maxi,MaxjN, MaxertH

Előfeltétel: N>0 és M>0

Utófeltétel:1MaxiN és 1MaxjM ési,j (1iN) (1jM):XMaxi,MaxjXi,j és Maxert=XMaxi,Maxj

3. Maximum-kiválasztás

mátrixra

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 43/53

Page 44: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

3. Maximum-kiválasztás

mátrixra

Maximumkiválasztás(N,M,X,Maxi,Maxj,Maxert):

Maxi:=1; Maxj:=1; Maxert:=X(1,1)

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha X(i,j)>Maxert akkor Maxi:=i; Maxj:=j

Maxert:=X(i,j)

Ciklus vége

Ciklus vége

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 44/53

Page 45: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

4. Eldöntés mátrixra

Feladat:

Van-e egy mátrixban adott tulajdonságú elem?

Specifikáció:Bemenet: N,MN, XHNM, T:HL

Kimenet: VaneL

Előfeltétel: –

Utófeltétel: Vane=i,j(1≤i≤N)(1≤j≤M):T(Xi,j)

2015.02.17.2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 45/53

Page 46: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

4. Eldöntés mátrixra

Eldöntés(N,M,X,Vane):

i:=1; j:=1

Ciklus amíg iN és nem T(X(i,j))

Ha j<M akkor j:=j+1

különben i:=i+1; j:=1

Ciklus vége

Vane:=iN

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 46/53

Page 47: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

5. Kiválasztás mátrixra

Specifikáció:Bemenet: N,MN, XHNM, T:HL

Kimenet: Indi,IndjN

Előfeltétel: N>0 és M>0 és i,j (1iN) (1jM): T(Xi,j)

Utófeltétel:1IndiN és 1IndjM és T(XIndi,Indj)

Megjegyzés: a kimeneti indexpárt

egy rekordban is tárolhattuk volna!

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 47/53

Page 48: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

5. Kiválasztás mátrixra

Kiválasztás(N,M,X,Indi,Indj):

i:=1; j:=1

Ciklus amíg nem T(X(i,j))

Ha j<M akkor j:=j+1

különben i:=i+1; j:=1

Ciklus vége

Indi:=i; Indj:=j

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 48/53

Page 49: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

6. Keresés mátrixra

Feladat:

Van-e egy mátrixban adott tulajdonságú elem és ha van, akkor

hol?

Specifikáció:Bemenet: N,MN, XHNM, T:HL

Kimenet: VaneL, Indi,IndjN

Előfeltétel: –

Utófeltétel: Vane=i,j(1≤i≤N)(1≤j≤M): T(Xi,j) és Vane 1IndiN és 1IndjM és T(XIndi,Indj)

2015.02.17.2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 49/53

Page 50: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

6. Keresés mátrixra

Keresés(N,M,X,Vane,Indi,Indj):

i:=1; j:=1

Ciklus amíg iN és nem T(X(i,j))

Ha j<M akkor j:=j+1

különben i:=i+1; j:=1

Ciklus vége

Vane:=iN

Ha Vane akkor Indi:=i; Indj:=j

Eljárás vége.

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 50/53

Page 51: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

7. Kiválogatás mátrixra

Specifikáció:Bemenet: N,MN, XHNM, T:HL

Kimenet: DbN, YHelyN*M, Hely=SO, S,O=N

Előfeltétel: –

Utófeltétel:Db= és i(1≤i≤Db):T(XYi.S,Yi.O) és

Y((1,1), (1,2),… (1,M), (2,1),…. (N,M))

M

)T(X1j

N

1i

ji,

1

2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 51/53

Page 52: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

7. Kiválogatás mátrixra

Kiválogatás(N,M,X,Db,Y):

Db:=0

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha T(X(i,j)) akkor

Db:=Db+1; Y(Db).s:=i; Y(Db).o:=j

Elágazás vége

Ciklus vége

Ciklus vége

Eljárás vége.

A sorszám itt is általánosabb mint az érték, ha

mégis érték kellene, akkor Y(Db):=X(i,j)

szerepelne. (Ekkor persze a specifikációt is

módosítani kell!)2018. 02. 09. 8:15Zsakó László: Algoritmizálás, adatmodellezés 52/53

Page 53: Algoritmizálás, adatmodellezés 1. előadásalgtan1.elte.hu/downloads/eloadas/Tipus1.pdfPélda: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-tőlN—1-ig

Algoritmizálás, adatmodellezés

1. előadás vége