Láncolt adatszerkezetek megvalósítása a programozásoktatásban

Slides:



Advertisements
Hasonló előadás
– A nemzeti köznevelésről szóló évi CXC. törvény – A szakképzésről szóló évi CLXXXVII. törvény – A nevelési-oktatási intézmények működéséről.
Advertisements

Közművelődési szakmai továbbképzések, helyük a felnőttképzés rendszerében; az akkreditáció folyamata A közösségi művelődés felnőttképzési feladata Nemzeti.
FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
Az új közbeszerzési törvény megalkotásának körülményei, várható jövőbeli változások május 26. Dr. Kovács László Miniszterelnökség Közbeszerzési Szabályozási.
A Non-Profit teljesítménymérés problémái (mérési és fejlesztési lehetőség) Márkus Gábor CVS, PVM, TVM, igazgató Stúdium Kft. Oktatás és Projekt menedzsment.
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
A kifizetési kérelem összeállítása TÁMOP-3.2.9/B-08 Audiovizuális emlékgyűjtés.
A fogyasztóvédelemről szóló évi CLV. törvény módosításáról szóló évi LV. törvény A békéltető testületeket érintő változások Dr. Szomori Béla.
Követelményelemzés – követelményspecifikáció A szoftverfejlesztés kapcsán az elemzés speciálisan egy kezdeti szakaszt jelöl, amelynek alapvető feladata.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
FELSŐOKTATÁSI INTÉZMÉNYEK WEBOMETRICS RANGSORÁNAK VIZSGÁLATA GOOGLE PAGERANK TEKINTETÉBEN DOSz – Tavaszi Szél Konferencia 2016 Losonczi György.
A szaktanácsadás szolgáltatási terület dokumentációja Némethné Józsa Ágnes Intézményfejlesztési referens.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
MINTAKÉRDÉSEK. A pénzügyi számvitel információs rendszere elsősorban a gazdálkodó szervezetek vezetőinek információs igényeit elégíti ki. A beszámoló.
1 Számvitel alapjai Gazdálkodás:a társadalmi újratermelési folyamat szakaszainak (termelés, forgalom, elosztás, fogyasztás) megszervezésére, az ahhoz rendelkezésre.
A Szociális intézményi férőhely kiváltási szakmai koordinációs műhely munkája – EFOP VEKOP/15 TÁRS PROJEKT bemutatása EFOP VEKOP
Gazdasági informatika - bevezető
Fájlkezelés.
Dobrik-Lupták Sára szeptember 19.
Számítógépes szimuláció
vizuális megismerés – vizuális „nyelv” vizuális kultúra
Az „első lépés” TÁMOP
Adattárház fejlesztés módszertani tapasztalatok a HIFI-ben
WE PROVIDE SOLUTIONS.
Összeállította: Horváth Józsefné
Óvodától az érettségiig - a kompetencia-alapú oktatás Szegeden
A víziközmű-szolgáltatásról szóló évi CCIX
A közigazgatással foglalkozó tudományok

Programozás III. Gyakorlás.
Kockázat és megbízhatóság
SZAKISKOLAI FEJLESZTÉSI PROGRAM
1993-as közoktatási törvény
Hipotézisvizsgálat.
Piaci kockázat tőkekövetelménye
VEREM.
Logikai programozás 2..
Nyelvek típusossága.
Algebrai specifikációk
INFOÉRA 2006 Véletlenszámok
Innovációs képesség és jólét összefüggései
2. Bevezetés A programozásba
Kvantitatív módszerek
Közigazgatási alapvizsga a Probono rendszerben
Fazekas Ágnes – Halász Gábor-Horváth László
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Dr. Hubai Ágnes Közbeszerzési Tanácsadók Országos Szövetsége, elnök
Teljes visszalépéses elemzés
Tilk Bence Konzulens: Dr. Horváth Gábor
Tájékoztató az Önkormányzati ASP Projektről
Informatikai gyakorlatok 11. évfolyam
Kifejezések kiértékelése * Lengyel-forma
TÁMOP A pályaorientáció rendszerének tartalmi és módszertani fejlesztése – Regionális workshop Zétényi Ákos.
Új pályainformációs eszközök - filmek
Szerzője Konzulens neve
Háztartási termelés, család, életciklus
ÉRINTŐ Sajátos nevelési igényű gyermekek és fiatalok integrációs programja óvodától a munkába állásig TÁMOP A/
Önkormányzati adattárház
Posteinerné Toldi Márta
Járműtelepi rendszermodell 2.
A szállítási probléma.
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Tájékoztató az EPER pályázati folyamatáról
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatika Oktató: Katona Péter.
LIA Alapítványi Ált. Isk. és Szki. Piliscsabai Tagintézménye
Algoritmusok.
Kórházi és ágazati gazdálkodást érintő informatikai fejlesztések és az azokban rejlő lehetőségek Horváth Tamás Vezérigazgató CompuTREND Zrt.
Algoritmizálás és adatmodellezés tanítása
Előadás másolata:

Láncolt adatszerkezetek megvalósítása a programozásoktatásban InfoSavaria 2010 2010. április Láncolt adatszerkezetek megvalósítása a programozásoktatásban „Lánc, lánc, eszterlánc” Mottó: Lánc, lánc, eszterlánc,  Eszterlánci cérna  Kisleányok bús körében Kergetőzöm én ma.  Nincs semmi aranyom,  Jobbra-balra löknek, Körbe-körbe, egyre körbe,  Láncán kis kezöknek.  Merre menjek, szóljatok?  Hátra vagy előre. Az erdőbe megbotoltam  Egy nagy, csunya köbe.  … Kosztolányi Dezső: Lánc, lánc, eszterlánc... A mottóválasztásához: szójáték: szó/fogalom-kapcsolódás szójáték: gyermekekhez / oktatáshoz kapcsolódás Az előadás „tálalásához”: Változatok „három hangra”. 3 változat a lánc(olás)ról, egy téma 3 nézőpont, 3 hang = 3 előadó. Szlávi az előhang, Papné a „klasszikus” hang, Horváth a „tárgyilagos” (tárgyközéppontos=OO) hang. Horváth Győző – gyozke@inf.elte.hu Pap Gáborné – papne@inf.elte.hu Szlávi Péter – szlavip@elte.hu Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

A várható megpróbáltatások InfoSavaria 2010 2010. április A várható megpróbáltatások Előhang – fogalmak, célok, eszközök, a módszer  Út az „elmélettől” a „gyakorlat” felé  Megvalósítás „klasszikus” nyelvi környezetben  Megvalósítás tárgyközéppontú nyelvi környezetben  Utóhang – visszatekintés, következte- tések  2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Láncolás a programozási folyamatban Programozás: adat-/tevékenység-döntések  Specifikációból+finomításokból erednek Adatok nagyrészt sokaságok  Hatékonysági kérdések : Hogy lehetne csak annyi helyet használni, amennyire az adott futásnál éppen szükség van? Hogyan lehetne a helyfoglalást dinamikussá tenni? Hogy lehetne az adatszerkezetek össz elemigényét összehangolni, s így minimalizálni?  Dinamizmus nyelvi lehetőségei  Dinamikus tömb helyett inkább: láncolás ; cím és tartalom elválasztása 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Dinamikus tömb és nyelvi lehetőségek: Var ra:Array of Real; N,i:Integer; … //N értéket kap SetLength(ra,N); For i:=0 to N-1 do Begin ra[i]:=…; … End; … FreePascal. int N; … //N értéket kap double dv[N]; for (int i=0; i<N; ++i) { dv[i]=…; … } … vector <double> dv;//dv üres dv.push_back(1.2);//dv 1-elemű … //további elem hozzátétele for (int i=0; i<dv.size(); ++i) { dv[i]…; … } … C++ – „klasszikusan”. C++ – tárgy­középpontúan (objektum-orientáltan). 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Láncolás a programozásoktatásban Programozásoktatás  Adatokkal kapcsolatos fogalmak megértése  hozzáférési jog, típus… „Nevezetes homályok”: Mikor, hogyan jönnek létre a deklarált adatok, meddig léteznek? Mi az adat memóriacíme és mi a tartalma? Mi a típus és az adott típusú adat viszonya? Mi történik egy tömb indexelésekor, és mi egy rekord (struktúra) mezőjére hivatkozáskor? Hogy történik a paraméterek átadása egy eljárás/függvény hívásakor? 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Homályoszlatás: a láncolás fogalmával; cím, tartalom szétválasztása  Láncolás=cím 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A mutató típus és a láncolás A láncolást az alábbi memóriamodellre vezetjük vissza. ExportModul Memória: Típus TMemóriaCím [most még elegendő a fogalom létéről tudni, definiálás nélkül] Konstans Sehova:TMemóriaCím [most még elegendő a típusát tudni, érték nélkül] Eljárás Lefoglal(Változó mut:TMemóriaCím, Konstans db:Egész) [a memóriában db bájtnyi egybefüggő helyet foglal le, a kezdőcímet mut-ba adja vissza, ha nem sikerült, akkor Sehova-t] Eljárás Felszabadít(Változó mut:TMemóriaCím, Konstans db:Egész) [a mut-nál kezdődő db bájtnyi egybefüggő memóriát szabadít fel, mut-ba Sehova-t tesz] Eljárás Értékmásolás(Konstans db:Egész, mut1,mut2:TMemóriaCím) [a mut1 címre másol db bájtnyit a mut2 címtől kezdődően] Eljárás MemDump [Nyomkövetést támogató szolgáltatás: a memória tartalmát megjeleníti] Modul vége. A memóriamodell exportmodulja. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Ezzel már le tudjuk írni a vektor vagy a mátrix, sőt a mutató típust is. A modellt meg kell valósítani. Ezt kétféleképpen is megtehetjük: „valódi címekkel” a memóriában, azaz a láncolás egy memóriacím által jön létre (ekkor építünk a programozási nyelvi környezet memóriamenedzselő támogatására); indexekkel, amelyek egy kellő méretű (statikusan létrehozott) tömbbe mutatnak. Ez egyszerűsödik a „naivitása” (=egy típusúsága) miatt. L. az export modult, és a megvalósítást. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A mátrix (megvalósító moduljának egy részlete): az „alap” memória-modellre építünk: nincs paraméter! Modul Tömb(Típus TIndex1, TIndex2, TElem): Másként Tömb(TIndex1,TIndex2:TElem) [ez a deklarációs minta] Reprezentáció Import: Memória Változó kcím:TMemóriaCím Implementáció Eljárás Létrehoz(Változó m:Tömb): Lefoglal(kcím, Számosság’TIndex1*Számosság’TIndex2*Méret’TElem) [most nem vizsgáljuk, hogy a helyfoglalás sikeres volt-e, idekívánkozik a TElem-hez tartozó kezdőértékkel feltöltés] Eljárás vége. Operátor ElemÉrték(Konstans m:Tömb, i1:TIndex1, i2:TIndex2):TElem Másként m(i1,i2) [ez az értékhivatkozási minta] Értékmásolás(Méret’TElem, ElemÉrték, ElemCím(m,i1,i2)) Operátor vége. … [„lokális” függvények:] Függvény ElemCím(Konstans m:Tömb, i1:TIndex1, i2:TIndex2):TMemóriaCím ElemCím:=kcím+RelatívCím(i1,i2) Függvény vége. Függvény RelatívCím(Konstans i1:TIndex1, i2:TIndex2):Egész RelatívCím:=(Sorszám(i1)*Méret’TIndex1+Sorszám(i2))*Méret’TElem Függvény vége. Modul vége. a mutató által kijelölt TElem-ű mátrix kezdőcíme !!! Cikkben 4. ábra: ElemCím fv értéktípusa: T… ElemÉrték az operátor kimenőérték- változójának a címe 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A mutató (típust megvalósító moduljának egy részlete): az „alap” memória-modellre építünk: nincs paraméter! Modul Mutató(Típus TElem): Másként TElem’Mutató [ez a deklarációs minta] Reprezentáció Import: Memória Változó kcím:TMemóriaCím Implementáció Eljárás Létrehoz(Változó m:Mutató): Lefoglal(kcím, Méret’TElem) Eljárás vége. Operátor ElemÉrték(Konstans m:Mutató):TElem Másként TElem(m) [ez az értékhivatkozási minta] Értékmásolás(Méret’TElem, ElemÉrték, m) Operátor vége. Operátor ElemÉrtékadás(Konstans m:Mutató, e:TElem): Másként TElem(m):=e [ez az értékadási minta] Értékmásolás(Méret’TElem, m, e) Operátor vége. Inicializálás kcím:=Sehova Modul vége. a mutató által kijelölt TElem kezdőcíme ElemÉrték az operátor kimenőérték- változójának a címe 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 1. („valódi” címes) változata: . bájt Méret’TElem Cím(a) Változó a:TElem memória 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 2. (tömbös) változata: . Méret’TElem Cím(a)=Index(a) … belső láncolás Változó a:TElem tömb(…:TElem) 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 2. (tömbös) változat exportmodulja: most még elegendő a fogalom létéről tudni, definiálás nélkül ExportModul Memória(Típus TElem): Típus TMemóriaCím Konstans Sehova:TMemóriaCím Eljárás Lefoglal(Változó mut:TMemóriaCím) [a memóriában TElem-nyi egybefüggő helyet foglal le, a kezdőcímet mut-ba adja vissza, ha nem sikerült, akkor Sehova-t] Eljárás Felszabadít(Változó mut:TMemóriaCím) [a mut-nál kezdődő TElem-nyi egybefüggő memóriát szabadít fel, mut-ba Sehova-t tesz] Eljárás Értékmásolás(Konstans mut1,mut2:TMemóriaCím) [a mut1 címre másol TElem-nyit a mut2 címtől kezdődően] Eljárás MemDump [Nyomkövetést támogató szolgáltatás:a memória tartalmát megjeleníti] Modul vége. most még elegendő a típusát tudni, érték nélkül 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 2. (tömbös) változat moduljának egy részlete: a memória méretét rögzítő „belső” paraméter Modul Memória(Típus TElem): [Ef: Méret’TElemMéret’TMemóriaCím] Reprezentáció Konstans MaxMem:Egész(???) Típus TMemóriaCím=0..MaxMem [Ì Egész] Konstans Sehova:TMemóriaCím(0) Változó Mem=Tömb(TMemóriaCím:TElem) [a memória maga; 0. elemet nem használjuk] Implementáció … 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 2. (tömbös) változat moduljának egy részlete: a belső láncoláson túli rész típusa; csak a hossz számít a memória belső ábrázolása, Mem-mel azonos címen Implementáció Típus TMaradék=Tömb(1..Méret’TElem-Méret’TMemóriaCím:Byte) TlElem=Rekord(érték:TMaradék, köv:TMemóriaCím) Változó bMem:Tömb(TMemóriaCím:TlElem)=Mem szabad,i:TMemóriaCím Eljárás Lefoglal(Változó mut:TMemóriaCím) [a memóriában TElem-nyi egybefüggő helyet foglal le, a kezdő- címet mut-ba adja vissza, ha nem sikerült, akkor Sehova-t] Ha szabadSehova akkor mut:=szabad; szabad:=bMem(mut).kov különben mut:=Sehova Elágazás vége Eljárás vége. Eljárás Felszabadít(Változó mut:TMemóriaCím) [a mut-nál kezdődő TElem-nyi egybefüggő memóriát szabadít fel, mut-ba Sehova-t tesz] Ha mutSehova akkor bMem(mut).kov:=szabad; szabad:=mut; mut:=Sehova Elágazás vége Eljárás vége. … a szabad elemek listájá-nak a feje 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A memóriamodell 2. (tömbös) változat moduljának egy részlete: … Inicializálás Ciklus i=1-től MaxMem-1-ig bMem(i).köv:=i+1 Ciklus vége bMem(MaxMem).köv:=Sehova; szabad:=1 Modul vége. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer Nyelvi vonatkozások Kétféle hozzáállással is megvalósítjuk azt az alapot, amelyre építhető az adatok láncolt ábrázolása. „klasszikus” nyelvi lehetőségekre korlátozódva (FreePascal-os szókincs és fp fordító) tárgyközéppontú (objektum-orientált) nyelvek osztálydefiníciós lehetőségeit kihasználva (C++, gcc fordítóval) 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A megközelítés módja „Téma”: a sor típuskonstrukció A sor láncolt ábrázolású megvalósítása 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A sor típuskonstrukció definiálása: ExportModul Sor(Típus TElem): Eljárás Üres(Változó s:Sor) Függvény Üres?(Konstans s:Sor): Logikai Függvény Tele?(Konstans s:Sor): Logikai Függvény Első(Változó s:Sor): TElem Eljárás Sorba(Változó s:Sor, Konstans e:TElem) Eljárás Sorból(Változó s:Sor, e:TElem) Függvény SorHossz(Konstans s:Sor): Egész Függvény Hibás?(Változó s:Sor): Logikai Modul vége. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A sor típuskonstrukció láncolt megvalósítása: Modul Sor(Típus TElem): Reprezentáció Típus SorElem=Rekord(érték: TElem köv: SorElem'Mutató) Változó eleje,vége: SorElem'Mutató hossz: Egész hiba: Logikai Implementáció Eljárás Üres(Változó s:Sor): eleje:=Sehova; vége:=Sehova; hossz:=0; hiba:=Hamis Eljárás vége. … Eljárás Sorba(Változó s:Sor, Konstans e:TElem): Változó új:SorElem'Mutató Létrehoz(új) Ha újSehova akkor SorElem(új):=SorElem(e,Sehova) Ha végeSehova akkor SorElem(vége).köv:=új különben eleje:=új vége:=új hossz:+1 különben hiba:=Igaz Elágazás vége Eljárás vége. Modul vége. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Előhang – fogalmak, célok, eszközök, a módszer InfoSavaria 2010 2010. április Előhang – fogalmak, célok, eszközök, a módszer A sor típuskonstrukció láncolt megvalósítása: Modul Sor(Típus TElem): Reprezentáció Típus SorElem=Rekord(érték: TElem köv: SorElem'Mutató) Változó eleje,vége: SorElem'Mutató hossz: Egész hiba: Logikai … Modul vége. érték köv Sehova eleje vége hossz hiba 2010. április „Lánc, lánc, eszterlánc” ... 21 Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Út az „elmélettől” a „gyakorlat” felé InfoSavaria 2010 2010. április Út az „elmélettől” a „gyakorlat” felé A típuskonstrukció paramétere (általában): a sorozat elemtípusa. Láncolt ábrázolás esetén a logikai és fizikai sorrend eltérő. A logikai sorrend megvalósítása: rákövetkezési mutató. A memóriamodell szempontjából együtt kezelendő az elem és a rákövetkezési mutató, de önállóan is manipulálandók. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Út az „elmélettől” a „gyakorlat” felé InfoSavaria 2010 2010. április Út az „elmélettől” a „gyakorlat” felé Így módosul a Memóriamodell: ExportModul Memória(Típus TElem): Típus TMutató=TLáncElem'Mutató TLáncElem=Rekord(érték:TElem, mut:TMutató) Konstans Sehova:TLáncElem'Mutató Eljárás Lefoglal(Változó mut:TMutató) [a memóriában TLáncElem-nyi egybefüggő helyet foglal le, a kezdőcímet mut-ban adja vissza, …] Eljárás Felszabadít(Változó mut:TMutató) [a mut címen kezdődő TLáncElem-nyi egybefüggő memóriát szabadít fel, …] Függvény Láncelem(Konstans mut:TMutató):TLáncElem [a mut címen kezdődő TLáncElem értékét adja vissza] Eljárás Láncelemmódosít(Konstans mut:TMutató, Konstans e:TLáncElem) [a mut címen kezdődő TLáncElem értékét módosítja e-re] Eljárás Láncelemértékmódosít(Konstans mut:TMutató, Konstans e:TElem) [a mut címen kezdődő TLáncElem érték mezőjét módosítja e-re] Eljárás Láncelemmutmódosít(Konstans mut:TMutató, Konstans p:TMutató) [a mut címen kezdődő TLáncElem mut mezőjét módosítja p-re] Modul vége. most még elegendő a típusát tudni, érték nélkül Többlet, „kényelmi szolgáltatások” 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Út az „elmélettől” a „gyakorlat” felé InfoSavaria 2010 2010. április Út az „elmélettől” a „gyakorlat” felé A Sor megvalósítási moduljának néhány részlete: Ábrázolás: érték mut Sehova eleje vége hossz hiba Modul Sor(Típus TElem): Reprezentáció Import: Memória(TElem) Változó eleje,vége:TMutató hossz:Egész hiba:Logikai … 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Út az „elmélettől” a „gyakorlat” felé InfoSavaria 2010 2010. április Út az „elmélettől” a „gyakorlat” felé Implementálás: érték mut Sehova eleje vége hossz hiba … Implementáció Eljárás Üres(Változó s:Sor): eleje:=Sehova; vége:=Sehova; hossz:=0; hiba:=Hamis Eljárás vége. Függvény Üres?(Konstans s:Sor):Logikai Üres?:=(hossz=0) Függvény vége. Függvény Tele?(Változó s:Sor):Logikai … Függvény vége. Függvény Első(Változó s:Sor):TElem … Függvény vége. Eljárás Sorba(Változó s:Sor, Konstans e:TElem): Változó új:TMutató le:Tláncelem; se:TElem Lefoglal(új) Ha újSehova akkor le:=TLáncElem(e,Sehova); Láncelemmódosít(új,le) Ha végeSehova akkor Láncelemmutmódosít(vége,új) különben eleje:=új vége:=új; hossz:=hossz+1 különben hiba:=Igaz Elágazás vége Eljárás vége. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Út az „elmélettől” a „gyakorlat” felé InfoSavaria 2010 2010. április Út az „elmélettől” a „gyakorlat” felé Implementálás (folytatás): érték mut Sehova eleje vége hossz hiba … Eljárás Sorból(Változó s:Sor, e:TElem) Változó p:TMutató le:TLáncelem Ha Üres?(s) akkor hiba:=Igaz különben le:=Láncelem(eleje) e:=le.érték; p:=le.mut Felszabadit(eleje) Ha p=Sehova akkor vége:=Sehova eleje:=p; hossz:=hossz-1 Elágazás vége Eljárás vége. Függvény SorHossz(Konstans s:Sor):Egész SorHossz:=hossz Függvény vége. Függvény Hibás?(Változó s:Sor):Logikai … Függvény vége. Inicializálás eleje:=Sehova; vége:=Sehova; hossz:=0; hiba:=Hamis Modul vége. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben Tipikus nyelv: Pascal; alkalmazott változat: FreePascal Korlát: a modul (=unit) nem paraméterezhető Típusonként önálló modul „alapmodul”: TElem a memóriamodell (mutatóval egyesített) modulja(i): „valódi memóriacímeken” alapuló – „dinamikus” TElem típusú tömbön nyugvó – „statikus” a típuskonstrukció modulja: Sor 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben Az „alapmodul”: TElem Mindig a feladatban szereplő típusra cserélendő, akár elemi, akár összetett típus lehet Unit uelem; Interface Type TElem=Integer; … Implementation … Begin End. Bővíthető típus-specifikus műveletekkel (függvényekkel, operátorokkal…) Bővíthető típus-specifikus műveletekkel (függvényekkel, operátorokkal…) 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A „dinamikus” modell modulja: Unit dinlanc; Interface Uses uelem; Type Mutato = ^TLancElem; TLancElem = Record ertek: TElem; mut: Mutato; End; Const sehova = nil; Procedure Lefoglal(Var p: Mutato); Procedure Felszabadit(Var p: Mutato); Function LancElem(Const p: Mutato): TLancElem; Procedure LancElemModosit(Const p: Mutato; Const le: TLancElem); Procedure LancElemErtekModosit(Const p: Mutato; Const e: TElem); Procedure LancElemMutModosit(Const p: Mutato; Const m: Mutato); … Exportált fogalmak Reprezentáció 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A „dinamikus” modell modulja (folytatás): Implementáció … Implementation Procedure Lefoglal(Var p: Mutato); Begin new(p); End; Procedure Felszabadit(Var p: Mutato); Begin dispose(p); p:=sehova; End; Function LancElem(Const p: Mutato): TLancElem; Begin LancElem:=p^; End; Procedure LancElemModosit(Const p: Mutato; Const le: TLancElem); Begin p^:=le; End; Procedure LancElemErtekModosit(Const p: Mutato; Const e: TElem); Begin p^.ertek:=e; End; Procedure LancElemMutModosit(Const p: Mutato; Const m: Mutato); Begin p^.mut:=m; End; Inicializálás: üres. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A „statikus” modell modulja: Unit statlanc; Interface Uses uelem; Const MaxMem = 100; Type Mutato = 0..MaxMem; TLancElem = Record ertek: TElem; mut: Mutato; End; TMem = Array [1..MaxMem] of TLancElem; Const sehova = 0; Var szfej: Mutato; mem: TMem; i: integer; Procedure Lefoglal(Var p: Mutato); Procedure Felszabadit(Var p: Mutato); Function LancElem(Const p: Mutato): TLancElem; Procedure LancElemModosit(Const p: Mutato; Const le: TLancElem); Procedure LancElemErtekModosit(Const p: Mutato; Const e: TElem); Procedure LancElemMutModosit(Const p: Mutato; Const m: Mutato); … Exportált fogalmak Reprezentáció 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A „statikus” modell modulja (folytatás): Implementáció … Implementation Procedure Lefoglal(Var p: Mutato); Begin p:=szfej; If p<>sehova then szfej:=mem[szfej].mut; End; Procedure Felszabadit(Var p: Mutato); Begin mem[p].mut:=szfej; szfej:=p; p:=sehova; End; Function LancElem(Const p: Mutato): TLancElem; Begin LancElem:=mem[p]; End; Procedure LancElemModosit(Const p: Mutato; Const le: TLancElem); Begin mem[p]:=le; End; Procedure LancElemErtekModosit(Const p: Mutato; Const e: TElem); Begin mem[p].ertek:=e; End; Procedure LancElemMutModosit(Const p: Mutato; Const m: Mutato); Begin mem[p].mut:=m; End; 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A „statikus” modell modulja (folytatás): Inicializálás. … Begin szfej:=1; For i:=1 to MaxMem-1 do mem[i].mut:=i+1; End; mem[MaxMem].mut:=sehova; End. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A Sor (statikusan) láncolt ábrázolású modulja: Unit uslsor; Interface Uses statlanc, uelem; Type TSor=Record Eleje {ahonnan kivehetek}: Mutato; Vege {ahova tehetek elemet}: Mutato; Hossz: Integer; Hiba: Boolean; End; Procedure Ures(Var S:TSor); Function Ures_e(Const S:TSor): Boolean; Function Tele_e(Const S:TSor): Boolean; Function Elso(Var S:TSor): TElem; Procedure Sorba(Var S:TSor; Const E: TElem); Procedure Sorbol(Var S:TSor; Var e: TElem); Function SorHossz(Const S:TSor): Integer; Function Hibas_e(Var S:TSor): Boolean; … Exportált fogalmak Reprezentáció 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A Sor láncolt ábrázolású modulja (folytatás): Implementáció … Implementation Procedure Ures(Var S:TSor); Begin S.Eleje:=sehova; S.Vege:=sehova; S.Hossz:=0; S.Hiba:=False; End;   Function Ures_e(Const S:TSor): Boolean; Ures_e:=(S.Eleje=sehova);   Function Tele_e(Const S:TSor): Boolean; Var p: Mutato; Lefoglal(p); If p = sehova then Tele_e:=true else Begin Tele_e:=false; Felszabadit(p); End; Function Elso(Var S:TSor): TElem; If Ures_e(S) then S.Hiba:=True else Elso:=LancElem(s.eleje).ertek; 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A Sor láncolt ábrázolású modulja (folytatás): … Procedure Sorba(Var S:TSor; Const E: TElem); Var p: Mutato; le: TLancElem; Begin If Tele_e(S) then S.Hiba:=True else Begin Lefoglal(p); le.ertek:=e; le.mut:=sehova; LancElemModosit(p,le); If Ures_e(s) then s.eleje:=p else LancElemMutModosit(s.vege, p); s.vege:=p; s.hossz:=s.hossz+1; End; Procedure Sorbol(Var S:TSor; Var e: TElem); Var sv: Mutato; If Ures_e(S) then S.Hiba:=True e:=LancElem(s.eleje).ertek; sv:=LancElem(s.eleje).mut; Felszabadit(s.eleje); If sv=sehova then s.vege:=sehova; s.eleje:=sv; s.hossz:=s.hossz-1; End; … 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás „klasszikus” nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás „klasszikus” nyelvi környezetben A Sor láncolt ábrázolású modulja (folytatás): … Function SorHossz(Const S:TSor): Integer; Begin SorHossz:=S.Hossz; End;   Function Hibas_e(Var S:TSor): Boolean; Hibas_e:=S.Hiba; S.Hiba:=False; End. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Megvalósítás tárgyközéppontú nyelvi környezetben InfoSavaria 2010 2010. április Megvalósítás tárgyközéppontú nyelvi környezetben 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Utóhang – visszatekintés, következtetések InfoSavaria 2010 2010. április Utóhang – visszatekintés, következtetések Visszatekintés Az „elmélet” moduljai: Típuskonstrukció (pl. Sor) Mutató (pl. TElem-re) Memória cím (bármié) Tömbindex (TElem-é) Memóriamodell Valódi memória (bájt- alapú) Tömb (TElem-alapú) A „gyakorlatok” moduljai: Típuskonstrukció (pl. Sor) Mutató (pl. TElem-re) + Memóriamodell Memória cím (bármié) + Valódi memória (bájt- alapú) Tömbindex (TElem-é) + Tömb (TElem-alapú) 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Utóhang – visszatekintés, következtetések InfoSavaria 2010 2010. április Utóhang – visszatekintés, következtetések Tanulságok: A mutató „típus” markánsan szétválasztja az adat tartalma és címe fogalmakat; ez által használata tisztázólag hathat az ada-tokkal kapcsolatos mechanizmusokra vonat-kozólag. Célszerű bevezetni az algoritmikus nyelv moduláris kiegészítését, amely az adat-absztrakció szempontjából lényeges típusok bevezetését teszik lehetővé; amely az osztályfogalom őse. 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

Utóhang – visszatekintés, következtetések InfoSavaria 2010 2010. április Utóhang – visszatekintés, következtetések Utolsó szó jogán két vallomás Az „elmélet” és „gyakorlat” eltérése a „több hangnak” köszönhető… nem szükségszerű! Számos részletkérdéssel adósak maradtunk. Ezeket olvashatja az Igen Tisztelt Érdeklődő Hallgatóság az alábbi irodalmakban: „Lánc, lánc, eszterlánc”– … http://people.inf.elte.hu/szlavi/InfoSavaria10/Lancolas.pdf Pap, Gné–Szlávi, P.–Zsakó, L.: „Módszeres programozás: Adattípusok”, ELTE IK, 1998 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…

„Lánc, lánc, eszterlánc” ... InfoSavaria 2010 2010. április Itt a vége, fuss el véle! Köszönjük a megtisztelő figyelmüket! Horváth Győző – gyozke@inf.elte.hu Pap Gáborné – papne@inf.elte.hu Szlávi Péter – szlavip@elte.hu 2010. április „Lánc, lánc, eszterlánc” ... Horváth, Papné, Szlávi: Láns, lánc eszterlánc…