Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék

Slides:



Advertisements
Hasonló előadás
Sor láncolt ábrázolással
Advertisements

Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Minimális költségű feszítőfák
JavaScript.
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Fák, bináris fák INFOÉRA Ez így 60 perc.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
16. Verem műveletei Kaszab Gábor.
Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010 Kombinatorikai algoritmusok.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
2. A rekurzió mint típuskonstrukció Szlávi Péter ELTE Média- és Oktatásinformatikai Tanszék
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
A digitális számítás elmélete
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
A Pascal programozási nyelv alapjai
Ismétlés A pascal program szerkezete: program programnev; Programfej
Ismétlés.
Kifejezések a Pascalban Páll Boglárka. Ismétlés: Ahogy algoritmikából láttuk, a kifejezések a Pascal nyelvben is operátorokból és operandusokból állnak.
Egydimenziós tömbök (Vektorok)
A Pascal programozási nyelv alapjai
Összetett adattípusok
Operátorok Értékadások
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
Copyright, 1999 © Szlávi Péter Szövegfeldolgozás 1.
A Visual Basic nyelvi elemei
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
Programozási alapismeretek * A Zh-írás módszertana.
Algoritmizálás, adatmodellezés
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Geometriai feladatok programozása Geometriai programozás Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010.
Copyright, 1999 © Szlávi Péter Táblázat típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Kifejezések C#-ban.
VEREM.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozási tételek általánosítása 1.
Gráfok 2. Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Adatszerkezetek -- Típusok
Algoritmus készítés.
Rekurzió 3. Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Előadás másolata:

Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék

 Programozásmódszertan2 Tartalomjegyzék 1 A verem algebrai specifikációja algebrai specifikációjaalgebrai specifikációja 1.1 Verem-műveletek Verem-műveletek 1.2 Verem-axiómák Verem-axiómákVerem-axiómák 2 A verem típuskonstrukció specifikációja típuskonstrukció specifikációjatípuskonstrukció specifikációja 2.1 A verem exportmodulja exportmodulja 2.2 A verem megvalósítási moduljai megvalósítási moduljaimegvalósítási moduljai 3 Alkalmazási példák példák 3.1 Eljárás-orientált nyelvek Eljárás-orientált nyelvekEljárás-orientált nyelvek 3.2 Rekurzió Rekurzió 4 Duplaverem Duplaverem

 Programozásmódszertan3 11 A verem algebrai specifikációja 1.1 Verem-műveletek 1 Típus Verem(Elem): Asszociált műveletek: Üres: Verem Üres?(Verem): Logikai Tele?(Verem): Logikai Tető(Verem): Elem  {NemDef} Verembe(Verem,Elem): Verem  {NemDef} Veremből(Verem): (Verem  Elem)  {NemDef} VeremMélység(Verem): Egész

 Programozásmódszertan Verem-axiómák 1.2 Axiómák: 1 o Az Üres verem üres. v=Üres  Üres?(v)  VeremMélység(v)=0 2 o Az a verem, amelyben legalább egy elem van, az nem üres; a verembe tétel során a veremmélysége eggyel nő.  Tele?(v)   Üres?(Verembe(v,e))  VeremMélység(Verembe(v,e))=VeremMélység(v)+1 3a o Az üres veremnek nincs legfelső eleme. Tető(Üres)=NemDef 3b o Az Üres veremből nem lehet kivenni elemet. Veremből(Üres)=NemDef 3c o A tele verembe nem lehet további elemet betenni. Tele?(v)  Verembe(v,e)=NemDef

 Programozásmódszertan5 1.2 Verem-axiómák (folytatás) 4 o A verem legfelső eleme az utoljára betett elem.  Tele?(v)  Tető(Verembe(v,e))=e 5 o A veremből a legfelső elemet lehet kivenni (a többi nem változik).  Tele?(v)  Veremből(Verembe(v,e))=(v,e) Állítás: a Veremből művelet eggyel csökkenti a verem mélységét.  Tele?(v)  VeremMélység(Veremből(v).Verem))= VeremMélység(v)-1 Biz.: 2 o & 5 o -ből következik.

 Programozásmódszertan6 22 A verem típuskonstrukció specifikációja 2.1 A verem exportmodulja 2 ExportModul Verem(Típus TElem): Eljárás Üres(Változó v:Verem) [Ef:  v Uf:  v  v=( )] Eljárás Üres(Változó v:Verem) [Ef:  v Uf:  v  v=( )] Függvény Üres?(Konstans v:Verem): Logikai [Ef:  v Uf: v=(v 1,…,v N )  Üres?(v)=N=0] Függvény Üres?(Konstans v:Verem): Logikai [Ef:  v Uf: v=(v 1,…,v N )  Üres?(v)=N=0] Függvény Tele?(Konstans v:Verem): Logikai [Ef:  v Uf: ???] Függvény Tele?(Konstans v:Verem): Logikai [Ef:  v Uf: ???] Függvény Tető(Változó v:Verem): TElem [Ef:  v Uf: v=(v 1,…,v N )  Tető(v)=v N ] Függvény Tető(Változó v:Verem): TElem [Ef:  v Uf: v=(v 1,…,v N )  Tető(v)=v N ]

 Programozásmódszertan7 2.1 A verem exportmodulja (folytatás) Eljárás Verembe(Változó v:Verem, Konstans e:TElem) [Ef:  v Uf: v=(v 1,…,v N )  Verembe(v,e)=(v 1,…,v N,e)] Eljárás Verembe(Változó v:Verem, Konstans e:TElem) [Ef:  v Uf: v=(v 1,…,v N )  Verembe(v,e)=(v 1,…,v N,e)] Eljárás Veremből(Változó v:Verem, e:TElem ) [Ef:  v  v=(v 1,…,v N )  N>0 Uf: Veremből(v)=(v’,e)  v’=(v 1,…,v N-1 )  e=v N ] Eljárás Veremből(Változó v:Verem, e:TElem ) [Ef:  v  v=(v 1,…,v N )  N>0 Uf: Veremből(v)=(v’,e)  v’=(v 1,…,v N-1 )  e=v N ] Függvény VeremMélység(Konstans v:Verem): Egész [Ef:  v Uf: v=(v 1,…,v N )  VeremMélység(v)=N] Függvény VeremMélység(Konstans v:Verem): Egész [Ef:  v Uf: v=(v 1,…,v N )  VeremMélység(v)=N]

 Programozásmódszertan8 2.1 A verem exportmodulja (folytatás) Infix Operátor Azonos?(Konstans v1,v2:Verem):Logikai Másnéven v1=v2 Infix Operátor Azonos?(Konstans v1,v2:Verem):Logikai Másnéven v1=v2Azonos?(Azonos?( Infix Operátor LegyenEgyenlő(Változó v1:Verem, Konstans v2:Verem) Másnéven v1:=v2 Infix Operátor LegyenEgyenlő(Változó v1:Verem, Konstans v2:Verem) Másnéven v1:=v2LegyenEgyenlő Operátor Kiírás(Konstans v:Verem) Másnéven Ki: v Operátor Kiírás(Konstans v:Verem) Másnéven Ki: vKiírás Operátor Beolvasás(Változó v:Verem) Másnéven Be: v Operátor Beolvasás(Változó v:Verem) Másnéven Be: v Függvény Hibás?(Változó v:Verem): Logikai Függvény Hibás?(Változó v:Verem): LogikaiVáltozó Modul vége. Meg kell gondolni az operátorok ef/uf-ét az axiómák alapján!

 Programozásmódszertan9 22 A verem típuskonstrukció specifikációja 2.2. A verem megvalósítási moduljai Láncolt ábrázolás moduljai 2moduljai Modul Verem(Típus TElem): Reprezentáció Típus Verem Elem=Rekord(érték: TElem alatta: VeremElem'Mutató) Változó t eteje: VeremElem'Mutató mélység: Egész hiba: Logikai

 Programozásmódszertan Láncolt ábrázolás (folytatás) Implementáció Eljárás Üres(Változó v:Verem): [Ef: – l. az inicializáló részt Uf: teteje=Sehova  mélység=0  hiba=Hamis] teteje:=Sehova; mélység:=0; hiba:=Hamis Eljárás vége. Függvény Üres?(Konstans v:Verem): Logikai [Ef: – Uf: Üres?=teteje=Sehova] Üres?:=teteje=Sehova Függvény vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Függvény Tele?(Konstans v:Verem): Logikai [Ef: – Uf: ??? ] Változó sv: VeremElem'Mutató Lefoglal(sv) Ha sv=Sehova akkor Tele?:=Igaz különben Tele?:=Hamis; Felszabadít(sv) Elágazás vége sv: VeremElem'Mutató Lefoglal(sv) Ha sv=Sehova akkor Tele?:=Igaz különben Tele?:=Hamis; Felszabadít(sv) Elágazás vége Lefoglal Függvény vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Függvény Tető(Változó v:Verem): TElem [Ef: teteje  Sehova Uf: Tető(v)=VeremElem(teteje).érték] Ha teteje  Sehova akkor Tető:=VeremElem(teteje).érték különben hiba:=Igaz Elágazás vége VeremElem(teteje) Függvény vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Eljárás Verembe(Változó v:Verem, Konstans e:TElem): [Ef:  új:VeremElem Uf: új=(e,teteje)  teteje’=új  mélység’=mélység+1] Változó új: VeremElem'Mutató új: VeremElem'Mutató Lefoglal(új) Ha új  Sehova akkor VeremElem(új):=VeremElem(e,teteje) teteje:=új; mélység:+1 különben hiba:=Igaz Elágazás vége Lefoglal(új) Ha új  Sehova akkor VeremElem(új):=VeremElem(e,teteje) teteje:=új; mélység:+1 különben hiba:=Igaz Elágazás végeVeremElem(új) Eljárás vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Eljárás Veremből(Változó v:Verem, e:TElem): [Ef: teteje  Sehova Uf: e=VeremElem(teteje).érték  teteje’=VeremElem(teteje).alatta  mélység’=mélység-1] Változó újteteje: VeremElem'Mutató Ha teteje  Sehova akkor e:=VeremElem(teteje).érték újteteje:=VeremElem(teteje).alatta Felszabadít(teteje); teteje:=újteteje; mélység:-1 különben hiba:=Igaz Elágazás vége Eljárás vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Függvény VeremMélység(Konstans v:Verem): Egész [Ef: – Uf: VeremMélység(v)=mélység] VeremMélység:=mélység Függvény vége. Függvény Hibás?(Változó v:Verem): Logikai [Ef: – Uf: Hibás(v)=hiba  hiba’=Hamis] Hibás?:=hiba; hiba:=Hamis Függvény vége.

 Programozásmódszertan Láncolt ábrázolás (folytatás) Infix Operátor Azonos?(Konstans v1,v2:Verem):Logikai Másnéven v1=v2 ??? Operátor vége. Infix Operátor Azonos?(Konstans v1,v2:Verem):Logikai Másnéven v1=v2 ??? Operátor vége.??? Infix Operátor LegyenEgyenlő(Változó v1:Verem, Konstans v2:Verem) Másnéven v1:=v2 ??? Operátor vége. ??? Operátor Kiírás(Konstans v:Verem) Másnéven Ki: v ??? Operátor vége. Operátor Kiírás(Konstans v:Verem) Másnéven Ki: v ??? Operátor vége.??? Operátor Beolvasás(Változó v:Verem) Másnéven Be: v ??? Operátor vége. Operátor Beolvasás(Változó v:Verem) Másnéven Be: v ??? Operátor vége.??? Meg kell gondolni az műveletek ef/uf-ét az exportmodul alapján!

 Programozásmódszertan Láncolt ábrázolás (folytatás) Inicializálás Inicializálás Inicializálás teteje:=Sehova; mélység:=0; hiba:=Hamis Modul vége.

 Programozásmódszertan18 22 A verem típuskonstrukció specifikációja 2.2. A verem meglósítási moduljai Folytonos ábrázolás 2 Modul Verem(Típus TElem): Reprezentáció Konstans MaxMélység: Egész(???) Típus VeremElemek=Tömb(1..MaxMélység: TElem) Változó v e: VeremElemek teteje: 0..MaxMélység [teteje  mélység] hiba: Logikai

 Programozásmódszertan Folytonos ábrázolás (folytatás) Eljárás Üres(Változó v:Verem): teteje:=0; hiba:=Hamis Eljárás vége. teteje:=0 Függvény Üres?(Konstans v:Verem): Logikai Üres?:=teteje=0 Függvény vége. Függvény Tele?(Konstans v:Verem): Logikai Tele?:=teteje=MaxMélység Függvény vége. Függvény Tető(Változó v:Verem): TElem Ha teteje  0 akkor Tető:=ve(teteje) különben hiba:=Igaz Függvény vége. Meg kell gondolni a műveletek ef/uf-ét az exportmodul alapján!

 Programozásmódszertan Folytonos ábrázolás (folytatás) Eljárás Verembe(Változó v:Verem, Konstans e:TElem): Ha teteje<MaxMélység akkor teteje:+1; ve(teteje):=e különben hiba:=Igaz Elágazás vége Eljárás vége. Eljárás Veremből(Változó v:Verem, e:TElem): Ha teteje>0 akkor e:=ve(teteje); teteje:-1 különben hiba:=Igaz Elágazás vége Eljárás vége.

 Programozásmódszertan Folytonos ábrázolás (folytatás) Függvény VeremMélység(Konstans v:Verem): Egész VeremMélység:=teteje Függvény vége. Függvény Hibás?(Változó v:Verem): Logikai Hibás?:=hiba; hiba:=Hamis Függvény vége. Infix Operátor Azonos?(Konstans v1, v2:Verem):Logikai Másnéven v1=v2... Operátor vége. Infix Operátor Azonos?(Konstans v1, v2:Verem):Logikai Másnéven v1=v2... Operátor vége. Infix Operátor LegyenEgyenlő(Változó v1:Verem, Konstans v2:Verem) Másnéven v1:=v2... Operátor vége.

 Programozásmódszertan Folytonos ábrázolás (folytatás) Operátor Kiírás(Konstans v:Verem) Másnéven Ki: v … Operátor vége. Operátor Kiírás(Konstans v:Verem) Másnéven Ki: v … Operátor vége. Operátor Beolvasás(Változó v:Verem) Másnéven Be: v … Operátor vége. Másnéven Be: v … Operátor vége.Inicializálás teteje:=0; hiba:=Hamis Modul vége.

 Programozásmódszertan23 33 Alkalmazási példák Eljárás-orientált nyelvekEljárás-orientált nyelvek 3.2 RekurzióRekurzió

 Programozásmódszertan Eljárás-orientált nyelvek 3.1 Hatáskör megvalósítása Program...; Var i,j: Integer; k: Real; Var i,j: Integer; k: Real; Procedure P1(...); Procedure P1(...); Var i: Real; k: Boolean; Var i: Real; k: Boolean; Procedure P11(...); Procedure P11(...); Var j: Boolean; Var j: Boolean; Begin {P11}(k=P1.k : Boolean) Begin {P11}(k=P1.k : Boolean)... P11 törzse... j=P11.j : Boolean... P11 törzse... j=P11.j : Boolean End; {P11}(i=P1.i : Real) End; {P11}(i=P1.i : Real) Begin {P1} k=P1.k : Boolean Begin {P1} k=P1.k : Boolean... P1 törzse...(j=Prog.j: Integer)... P1 törzse...(j=Prog.j: Integer) End; {P1} i=P1.i : Real End; {P1} i=P1.i : Real Begin {Program} k=Prog.k: Real... Program-törzs... j=Prog.j: Integer... Program-törzs... j=Prog.j: Integer End. i=Prog.i: Integer Színekkel jelöltük, hogy melyik szinthez tartozik. A zárójelben levők valójában nincsenek a veremben.

 Programozásmódszertan Eljárás-orientált nyelvek (folytatás) 3.1 Eljárás/függvény-hívás megszervezése a paraméter- (és lokális adat-) ésa paraméter- (és lokális adat-) és a visszatérési veremmel.a visszatérési veremmel.

 Programozásmódszertan Rekurzió 3.2 Eljárás e(Változó x: TX, Konstans y: TY): Ha p(x,y) akkor x:=f(x,y) különben e(x,g(x,y)) Eljárás vége. Veremállapot a hívások után ( fejtetőre állítva ): e(a,b):  p(a,b)  e(a,g(a,b))  p(a,g(a,b))  e(a,g(a,g(a,b))) p(a,g(a,g(a,b)))  a:=f(a,g(a,g(a,b))) y= b x= a-cím y= g(a,b) x= a-cím y= g(a,g(a,b)) x= a-cím y= g(a,g(a,g(a,b))) x= a-cím a:=?a:=? f( x, y ) kiszámolása

 Programozásmódszertan Rekurzió 3.2 Eljárás e(Változó x: TX, Konstans y: TY): Ha p(x,y) akkor x:=f(x,y) különben e(x,g(x,y)) Eljárás vége. Veremállapot a hívások után ( fejtetőre állítva ): e(a,b):  p(a,b)  e(a,g(a,b))  p(a,g(a,b))  e(a,g(a,g(a,b))) p(a,g(a,g(a,b)))  a:=f(a,g(a,g(a,b))) y= b x= a-cím y= g(a,b) x= a-cím y= g(a,g(a,b)) x= a-cím y= g(a,g(a,g(a,b))) x= a-cím a:=f(a,g(a,g(a,b))) f( x, y )kiszámolása

 Programozásmódszertan28 44 Duplaverem 4 Csak folytonos ábrázolás esetén alkalmazandó ez a típus. ExportModul DuplaVerem(Típus TElem, Konstans ÖsszMéret:Egész): Eljárás Üres(Változó v:DuplaVerem) Eljárás Üres(Változó v:DuplaVerem) Függvény BalÜres?(Konstans v:DuplaVerem): Logikai Függvény BalÜres?(Konstans v:DuplaVerem): Logikai Függvény JobbÜres?(Konstans v:DuplaVerem): Logikai Függvény JobbÜres?(Konstans v:DuplaVerem): Logikai Függvény Tele?(Konstans v:DuplaVerem): Logikai Függvény Tele?(Konstans v:DuplaVerem): Logikai Függvény BalTető(Változó v:DuplaVerem): TElem Függvény BalTető(Változó v:DuplaVerem): TElem Függvény JobbTető(Változó v:DuplaVerem): TElem Függvény JobbTető(Változó v:DuplaVerem): TElem Eljárás BalVerembe(Változó v:DuplaVerem, Konstans e:TElem) Eljárás BalVerembe(Változó v:DuplaVerem, Konstans e:TElem) Eljárás JobbVerembe(Változó v:DuplaVerem, Konstans e:TElem) Eljárás JobbVerembe(Változó v:DuplaVerem, Konstans e:TElem)

 Programozásmódszertan29 44 Duplaverem (folytatás) 4 Függvény BalVeremMélység(Konstans v:DuplaVerem): Egész Függvény BalVeremMélység(Konstans v:DuplaVerem): Egész Függvény JobbVeremMélység(Konstans v:DuplaVerem): Egész Függvény JobbVeremMélység(Konstans v:DuplaVerem): Egész Eljárás BalVeremből(Változó v:DuplaVerem,e:ElemÉrték) Eljárás BalVeremből(Változó v:DuplaVerem,e:ElemÉrték) Eljárás JobbVeremből(Változó v:DuplaVerem, e:ElemÉrték) Eljárás JobbVeremből(Változó v:DuplaVerem, e:ElemÉrték) Infix Operátor Azonos?(Konstans v1,v2:DuplaVerem): Logikai Másnéven v1=v2 Infix Operátor Azonos?(Konstans v1,v2:DuplaVerem): Logikai Másnéven v1=v2 Infix Operátor LegyenEgyenlő(Változó v1:DuplaVerem, Konstans v2:DuplaVerem) Másnéven v1:=v2 Infix Operátor LegyenEgyenlő(Változó v1:DuplaVerem, Konstans v2:DuplaVerem) Másnéven v1:=v2 Függvény Hibás?(Változó v:DuplaVerem): Logikai Függvény Hibás?(Változó v:DuplaVerem): Logikai Modul vége.

 Programozásmódszertan30 Megjegyzés -- Változó A „Változó”-ság oka: valamilyen hiba lehetősége fönnáll (üres vagy tele a verem), s ennek visszajelzésére a „hi- ba” mező változhat.

 Programozásmódszertan31 Megjegyzés -- Tele? Ez a furcsaság azt fejezi ki, hogy a memória akkor is elfogyhat, amikor az adott verem első elemét igyekeznénk beletenni. Ez a furcsaság azt fejezi ki, hogy a memória akkor is elfogyhat, amikor az adott verem első elemét igyekeznénk beletenni.

 Programozásmódszertan32 Megjegyzés -- Azonosság? „v1=v2” értelmezési lehetőségek: –„tökéletesen” azonos állapot, azaz v1.teteje=v2.teteje… vagy kicsit általánosabban fogalmazva: v1-cím=v2-cím… (értékmegosztás esetén  azonos elemek) –„lényegi” azonosság, azaz azonos számú és értékű elemek.

 Programozásmódszertan33 Megjegyzés -- Értékadás „v1:=v2” értelmezési lehetőségek: –„tökéletesen” azonos állapot létrehozása, azaz v1.teteje:=v2.eleje… vagy kicsit általánosabban fogalmazva: v1-cím:=v2-cím… (értékmegosztás esetén  azonos elemek) –értékmásolás, azaz v1 minden elemének v2-másolatelem létrehozása.

 Programozásmódszertan34 Megjegyzés -- „Valami” paraméter A Valami lehet tömb, lehet szekvenciális file egy blokkja, lehet egyéb külső perifériáról behozott adatcsomag,...

 Programozásmódszertan35 Megjegyzés -- Be/Ki műveletek A Be/Ki műveleteket azért valósítjuk meg asszociált műveletként, mert --bár nem nél- külözhetetlen, de-- meglehetősen körülmé- nyesen lehetne a „felső szintű” operációkkal megvalósítani. (Ui. a Veremből művelet egyben „destruktív” operáció is, tehát a vég- rehajtás közepette a struktúra „föl is számo- lódna”.)