Lista típuskonstrukció

Hasonló dokumentumok
Algoritmusok és adatszerkezetek I. 4. előadás

Láncolt listák Témakörök. Lista alapfogalmak

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

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

Adatszerkezetek I. 1. előadás

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

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

Egyirányban láncolt lista

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

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Programozás I gyakorlat

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

Java II. I A Java programozási nyelv alapelemei

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

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Adatszerkezetek 1. előadás

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

INFORMATIKA javítókulcs 2016

Java II. I A Java programozási nyelv alapelemei

Láncolt listák. PPT 2007/2008 tavasz.

Adatszerkezetek I. 6. előadás

Kiterjesztések sek szemantikája

Adatszerkezetek 1. Dr. Iványi Péter

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Adatszerkezetek és algoritmusok

C++ programozási nyelv Konstruktorok-destruktorok

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

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

A C programozási nyelv I. Bevezetés

az Excel for Windows programban

A C programozási nyelv I. Bevezetés

A C# programozási nyelv alapjai

ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG

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

Diszkrét matematika 1. középszint

Komputeralgebra Rendszerek

Nagy Gábor compalg.inf.elte.hu/ nagy

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

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

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

4. Használati útmutatás

FUNKCIONÁLIS PROGRAMOZÁS

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Halmazelméleti alapfogalmak

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

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

Felvételi tematika INFORMATIKA

Excel 2010 függvények

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

Aritmetikai kifejezések lengyelformára hozása

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

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

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

Algoritmuselmélet 2. előadás

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

4. VEREM. Üres: V Verembe: V E V Veremből: V V E Felső: V E

Adatszerkezetek és algoritmusok

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér

Bevezetés az informatikába

Táblázatok fontosabb műveletei 1

C programozási nyelv

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

Rekord adattípus. Egymásba ágyazott rekordok. With utasítás. Változó rekord. Rekord konstans

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

Összetett programozási tételek

Kriptográfiai algoritmus implementációk időalapú támadása Endrődi Csilla, Csorba Kristóf BME MIT

STATISZTIKA. ( x) 2. Eloszlásf. 9. gyakorlat. Konfidencia intervallumok. átlag. 45% 40% 35% 30% 25% 20% 15% 10% 5% 0% (cm)

Halmaz típus Értékhalmaz:

Adatszerkezetek. Készítette: Csatlós István 2005-ben

A C programozási nyelv IV. Deklaráció és definíció

Matematika A1a Analízis

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

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

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

7. fejezet: Mutatók és tömbök

Adatszerkezetek II. 1. előadás

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

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

Adatszerkezetek I. 4. előadás

Fák 3. előadás. (Horváth Gyula anyagai felhasználásával)

Informatika terméktervezőknek

Klasszikus algebra előadás. Waldhauser Tamás április 14.

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

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

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

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

Diszkrét matematika 2. estis képzés

Adatszerkezetek I. 9. előadás

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

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Átírás:

Lista típuskonstrukció Szlávi PéterP ELTE Informatika Szakmódszertani Csoport szlavi@ludens.elte.hu http://izzo.inf.elte.hu/~szlavi Copyright, 1999 Szlávi Péter Tartalomjegyzék 1 A lista algebrai specifikációja 1.1 Lista-mveletek 1.2 Lista-axiómák 2 A lista típuskonstrukció specifikációja 2.1 A lista exportmodulja 2.2 A lista megvalósítási moduljai 3 Alkalmazási példák 3.1 Kiválogatás tétel újrafogalmazása listára 3.2 Összefuttatás tétel újrafogalmazása listára 3.3 Beszúrásos rendezés Programozásmódszertan 2 Lista típuskonstrukció 1

1 A lista algebrai specifikáci ciója 1.1 Lista-mveletek Típus Lista(Elem): Asszociált mveletek: Üres: Lista Üres?(Lista): Logikai rték(lista): Elem U {NemDef} ElemMódos dosít(lista,elem): Lista U {NemDef} Els5re(Lista): Lista U {NemDef} Következ5re(Lista): Lista U {NemDef} BeszúrM rmögé(lista,elem): Lista U {NemDef} BeszúrElej relejére(lista,elem): re(lista,elem): Lista U {NemDef} Programozásmódszertan 3 1.1 Lista-mveletek (folytatás) Kihagy(Lista): Lista U {NemDef} UtolsóE?(Lista): Logikai U {NemDef} Kiegész szít) mveletek: BeszúrEl relé(lista,elem): Lista U {NemDef} ElemSzám(Lista): m(lista): Egész A kétirk tirányú lista további mveletei: El5z5re(Lista): Lista U {NemDef} Utolsóra(Lista): Lista U {NemDef} BeszúrEl relé(lista,elem): Lista U {NemDef} Els5E?(Lista): E?(Lista): Logikai U {NemDef} Programozásmódszertan 4 Lista típuskonstrukció 2

1.1 Lista-mveletek (folytatás) A ciklikus lista: olyan egy- vagy kétirányú lista,, amelynek az utolsó elemét t az els5 követi, az els5t t pedig az utolsó el5zi meg. Így kevesebb mveletre van szüks kségg a megvalósításához. A gyr: olyan ciklikus lista,, amelynek nincs kitüntetett els5 eleme. Programozásmódszertan 5 1.1 Lista-mveletek (folytatás) További lehetséges mveletek: Els5(Lista): (Lista Elem) U {NemDef} Következ5(Lista): (Lista Elem) U {NemDef} Utolsó(Lista): (Lista Elem) U {NemDef} El5z5(Lista): (Lista Elem) U {NemDef} Egymásut sután(lista,lista): Lista l,l,l,l :Lista(Elem) e,f:elem h,h :Eg :Egész Axiómák Programozásmódszertan 6 Lista típuskonstrukció 3

1.2 Lista-axi axiómák 1 o Az Üres lista üres. l=üres Üres?(l) 2 o Üres listának nincs eleme. Üres?(l) ElemSzám(l)=0 m(l)=0 3 o Az üres listának nincs aktuális, els5,,... utolsó eleme. rték( k(üres)=nemdef Els)E?( E?(Üres)=NemDef Els)(Üres)=NemDef Következ)(Üres)=NemDef El)z)(Üres)=NemDef Utolsó(Üres)=NemDef UtolsóE?( E?(Üres)=NemDef 4a o Nincs els5t t megel5z5 éss nincs utolsót t követk vet5 eleme a listának. El)z)(Els (Els)re(l))=NemDef Következ)(Utolsóra(l))=NemDef Programozásmódszertan 7 1.2 Lista-axi axiómák (folytatás) 4b o A ciklikus listában az els5t t megel5z5 az utolsó,, az utolsót t követk vet5 pedig az els5. El)z)(Els (Els)re(l))=Utolsó(l) Következ)(Utolsóra(l))=Els)(l) 5 o A lista Utolsóra mvelettel m kiválasztott eleme az ElemSzám-adik, az 1. elemét t az Els5re mvelet m választja v ki. UtolsóE?(Utols E?(Utolsóra(l)) Els)E?(Els E?(Els)re(l)) h=elemszám(l) m(l)-1 Következ)re h (Els)re(l))=Utols re(l))=utolsóra(l) ra(l) 0h<ElemSzám(l) m(l)-1 nem UtolsóE?(K E?(Következ)re h (Els)re(l))) 0<hElemSzám(l) m(l)-1 nem Els)E?(K E?(Következ)re h (Els)re(l))) Programozásmódszertan 8 Lista típuskonstrukció 4

1.2 Lista-axi axiómák (folytatás) 6 o A BeszúrM rmögé mvelet b5víti b a listát t az adott elemmel. Az új elem az aktuális mögé kerül. Üres listába els5ként kerül l be az új elem. Az újj válik v aktuáliss lissá.. Ha nincs aktuális elem, akkor a mvelet eredménye nem definiált. f= rték(l) l'=beszúrmögé(l,e): ElemSzám(l')=ElemSz m(l')=elemszám(l)+1 m(l)+1 rték(l')=e El)z)(l'). (l').elem=f Üres?(l) ElemSzám(Besz m(beszúrmögé(l,e))=1 rték(beszúrmögé(l,e))=e nem Üres?(l) rték(l)=nemdef BeszúrM rmögé(l,e)=nemdef A BeszúrEl relé mvelet ennek analógi giájára fogalmazható meg. Programozásmódszertan 9 1.2 Lista-axi axiómák (folytatás) 7 o Kihagyni az aktuális elemet lehet, az aktuális a következk vetkez5 lesz. Ha nincs az aktuális elem kijelölve, lve, akkor nem lehet kihagyni sem. ék(l) l'=kihagy(l): ElemSzám(l')=ElemSz m(l')=elemszám(l) m(l)-1 (Üres?(l ) rték(l')=következ)(l).elem) rték(l)=nemdef Kihagy(l)=NemDef Állítás: : ha az utolsó az aktuális,, akkor a kihagyás s után n nem definiált lesz az aktuális. UtolsóE?(l) rték(kihagy(l))= k(kihagy(l))=nemdef Biz.: UtolsóE?(l) ék(l) 7 o l =Kihagy(l) Kihagy(l):(Üres?(l ) rték(l')=következ)(l).elem) (1) Üres?(l ) 3 o rték(kihagy(l))= k(kihagy(l))=nemdef (2) rték(l')=következ)(l).elem 9 o 4a o ék(l') k(l')=nemdef Programozásmódszertan 10 Lista típuskonstrukció 5

1.2 Lista-axi axiómák (folytatás) 8 o Kétt egymásut sutánn illesztett lista listát t alkot. Elemei az eredeti kett5 elemei lesznek, az eredeti sorrendben. h=elemszám(l) m(l) h'=elemszám(l') m(l') l"=egymásut sután(l,l') k [0,h): rték(következ)re k (Els)re(l")))= = rték(következ)re k (Els)re(l))) k [0,h'): rték(következ)re k+h (Els)re(l")))= = rték(következ)re k (Els)re(l'))) Programozásmódszertan 11 1.2 Lista-axi axiómák (folytatás) 9 o A következk vetkez5 elem az, amelyet a következk vetkez5re lépésl s után n aktuá- lisként érzékelünk, az el5z5 az, amelyet az el5z5re lépésl s után aktuálisk lisként érzékelünk,... rték(l) k(l)nemdef Következ)(l) (l).elem=ék(következ)re(l)) El)z)(l) (l).elem = rték(el)z)re(l)) Els)(l) (l).elem = rték(els)re(l)) Utolsó(l) (l).elem = rték(utolsóra(l)) Programozásmódszertan 12 Lista típuskonstrukció 6

2 A lista típuskonstrukcit puskonstrukció specifikáci ciója 2.1 A lista exportmodulja ExportModul Lista(Típus TElem): Eljárás Üres( res(változó l:lista) Üres?( res?(konstans l:lista): Logikai rték( k(változó l:lista): TElem Eljárás ElemMódos dosít( t(változó l:lista, Konstans e:telem) Eljárás Els5re( re(változó l:lista) Eljárás Következ5re( re(változó l:lista) Meg kell gondolni az operátorok ef/uf-ét az axiómák k alapján! n! Programozásmódszertan 13 2.1 A lista exportmodulja (folytatás) Eljárás BeszúrM rmögé(változó l:lista, Konstans e:telem) Eljárás BeszúrElej relejére( re(változó l:lista, Konstans e:telem) Eljárás Kihagy(Változ ltozó l:lista) UtolsóE?( E?(Változó l:lista): Logikai ElemSzám( m(konstans l:lista): Egész Eljárás BeszúrEl relé(változó l:lista, Konstans e:telem) Hibás?( s?(változó l:lista): Logikai Programozásmódszertan 14 Lista típuskonstrukció 7

2.1 A lista exportmodulja (folytatás) Infix Operátor Azonos?(Konstans l1,l2:lista):logikai Logikai l1=l2 Infix Operátor LegyenEgyenl5(Változ ltozó l1:lista, Konstans l2:lista) l1:=l2 Operátor Ki(Konstans Konstans l:lista) Ki: l Operáto tor Be(Változ ltozó l:lista) Be: l Modul vége. v Programozásmódszertan 15 2.1 A lista exportmodulja (folytatás) A kétirk tirányú lista további mveletei: m Eljárás Utolsóra( ra(változó l:lista) Eljárás El5z5re( re(változó l:lista) Els5E?( E?(Változó l:lista): Logikai Programozásmódszertan 16 Lista típuskonstrukció 8

2 A lista típuskonstrukcit puskonstrukció specifikáci ciója 2.2. A lista megvalósítási si moduljai 2.2.1 Láncolt L ncolt ábrázolás Modul Lista(Típus TElem): Reprezentáci ció Típus ListaElem=Rekord Rekord(érték: TElem köv: ListaElem'Mutat 'Mutató) Változó fej,akt: ListaElem'Mutat 'Mutató hossz: : Egész hiba: Logikai Programozásmódszertan 17 2.2.1 Láncolt L ncolt ábrázolás (folytatás) Implementáci ció Eljárás Üres( res(változó l:lista): fej:=sehova; akt:=sehova; hossz:=0 hiba:=hamis Eljárás vége. Üres?( res?(konstans l:lista): Logikai Üres?:=hossz=0 vége. ElemSzám( m(konstans l: Lista): Egész ElemSzám:=hossz m:=hossz vége. Programozásmódszertan 18 Lista típuskonstrukció 9

2.2.1 Láncolt L ábrázolás (folytatás) rték( k(változó l:lista): TElem Ha aktsehova akkor rték:=listaelem(akt). k:=listaelem(akt).érték A függvf vége. értéke Eljárás Els5re( re(változó l:lista): Ha Üres(l) akkor akt:=fej Eljárás vége. Eljárás Következ5re(Változó l:lista): Ha aktsehova akkor akt:=listaelem(akt).köv Eljárás vége. A függvény értéke NemDef! Programozásmódszertan 19 2.2.1 Láncolt L ncolt ábrázolás (folytatás) Eljárás BeszúrM rmögé(változó l:lista, Konstans e:telem): Változó új j : ListaElem'Mutat 'Mutató gazás fej=sehova esetén BeszúrElej relejére(l,e) re(l,e) aktsehova esetén Lefoglal(új, ListaElem(e, ListaElem(akt).köv)) hiba:=új=sehova Ha nem hiba akkor ListaElem(akt).köv:= v:=új akt:=új; hossz:+1 gazáss végev egyéb b esetben gazáss végev Eljárás vége. Programozásmódszertan 20 Lista típuskonstrukció 10

2.2.1 Láncolt L ábrázolás (folytatás) Eljárás BeszúrElej relejére( re(változó l:lista, Konstans e:telem): Változó új: ListaElem'Mutat 'Mutató új:=fej; Lefoglal(fej,ListaElem(e,új)) j)) hiba:=fej=sehova Ha nem hiba akkor akt:=fej; hossz:+1 fej:=új Eljárás vége. Eljárás Kihagy(Változ ltozó l:lista): Változó el: ListaElem'Mutat 'Mutató Ha aktsehova akkor Ha akt=fej akkor [els5 elem] fej:=listaelem(akt).köv Felszabadít(akt); akt:=fej Programozásmódszertan 21 2.2.1 Láncolt L ncolt ábrázolás (folytatás) [nem aza els5 elem] [el5z5 elem megkeresése:] se:] el:=fej Ciklus amíg ListaElem(el).kövakt akt el:=listaelem(el).köv Ciklus végev ListaElem(el).köv:=ListaElem(akt).k v:=listaelem(akt).köv Felszabadít(akt); akt:=listaelem(el).köv gazáss végev hossz:-1 [nincs aktuális elem] gazáss végev Eljárás vége. Programozásmódszertan 22 Lista típuskonstrukció 11

2.2.1 Láncolt L ábrázolás (folytatás) UtolsóE?( E?(Változó l:lista): Logikai Ha aktsehova akkor UtolsóE?:=ListaElem(akt).k E?:=ListaElem(akt).köv=sehova vége. Hibás?( s?(változó l:lista): Logikai Hibás?:=hiba; hiba:=hamis vége. Infix Operátor Azonos?(Konstans l1,l2:lista):logikai Logikai l1=l2 Operátor vége. v Programozásmódszertan 23 2.2.1 Láncolt L ncolt ábrázolás (folytatás) Infix Operátor LegyenEgyenl5(Változ ltozó l1:lista, Konstans l2:lista): l1:=l2 Operátor vége. v Operátor Ki(Konstans Konstans l:lista): Ki: l Operátor vége. v Operáto tor Be(Változ ltozó l:lista): Be: l Operátor vége. v Inicializálás [minden lista-deklar deklarációkor végrehajtandv grehajtandó] fej:=sehova; akt:=sehova; hossz:=0; hiba:=hamis Modul vége. v Programozásmódszertan 24 Lista típuskonstrukció 12

2 A lista típuskonstrukcit puskonstrukció specifikáci ciója 2.2. A lista meglósítási si moduljai 2.2.2 Folytonos ábrázolás Modul Lista(Típus TElem): Reprezentáci ció Típus ListaElemek=Tömb mb(1..maxszám: TElem) Változó le: ListaElemek akt,hossz: 0..MaxSzám+1 hiba: Logikai Programozásmódszertan 25 Kényelmességb$l; l; l. l. KKövetkez$re, El$z$re 2.2.2 Folytonos ábrázolás (folytatás) Implementáci ció Eljárás Üres( res(változó l:lista): akt:=0; hossz:=0; hiba:=hamis Eljárás vége. Üres?( res?(konstans l:lista): Logikai Üres?:=hossz=0 vége. ElemSzám( m(konstans l: Lista): Egész ElemSzám:=hossz m:=hossz vége. v rték( k(változó l:lista): TElem Ha akt [1..hossz] akkor rték:=le(akt) vége. v A f Programozásmódszertan 26 A függvény értéke NemDef! Lista típuskonstrukció 13

2.2.2 Folytonos ábrázolás (folytatás) Eljárás Els5re( re(változó l:lista): Ha hossz=0 akkor akt:=1 Eljárás s vége. v Eljárás Következ5re( re(változó l:lista): Ha akt [1..hossz] akkor akt:+1 Eljárás s vége. v Eljárás El5z5re( re(változó l:lista): Ha akt [1..hossz] akkor akt:-1 Eljárás s vége. v Programozásmódszertan 27 2.2.2 Folytonos ábrázolás (folytatás) Eljárás Utolsóra( ra(változó l:lista): Ha hossz=0 akkor akt:=hossz Eljárás s vége. v Eljárás BeszúrM rmögé(változó l:lista, Konstans e:telem): Változó i:1..maxszám gazás hossz=0 esetén le(1):=e; akt:=1; hossz:=1 akt=hossz és hossz<maxszám esetén akt:+1; le(akt):=e; hossz:+1 Programozásmódszertan 28 Lista típuskonstrukció 14

2.2.2 Folytonos ábrázolás (folytatás)... akt [1..hossz-1] 1] és hossz<maxszám esetén akt:+1 Ciklus i=hossz-tól akt-ig -1-esével le(i+1):=le(i) Ciklus végev le(akt):=e; hossz:+1 egyéb esetben gazáss végev Eljárás s vége. v Programozásmódszertan 29 2.2.2 Folytonos ábrázolás (folytatás) Eljárás Kihagy(Változ ltozó l:lista): Változó i :1..MaxSzám Ha akt [1..hossz] akkor Ciklus i=akt-tól hossz-1-ig le(i):=le(i+1) Ciklus végev hossz:-1 gazáss végev Eljárás s vége. v UtolsóE?( E?(Változó l:lista): Logikai Ha akt [1..hossz] akkor UtolsóE?:=akt=hossz vége. v Programozásmódszertan 30 Lista típuskonstrukció 15

2.2.2 Folytonos ábrázolás (folytatás) Els5E?( E?(Változó l:lista): Logikai Ha akt [1..hossz] akkor Els5E?:=akt=1 E?:=akt=1 A függvf vége. v értéke Hibás?( s?(változó l:lista): Logikai Hibás?:=hiba; hiba:=hamis vége. v Infix Operátor Azonos?(Konstans l1,l2:lista):logikai Logikai l1=l2 Operátor vége. A függvény értéke NemDef! Programozásmódszertan 31 2.2.2 Folytonos ábrázolás (folytatás) Infix Operátor LegyenEgyenl5(Változ ltozó l1:lista, Konstans l2:lista): l1:=l2 Operátor vége. v Operátor Ki(Konstans Konstans l:lista): Ki: l Operátor vége. v Operáto tor Be(Változ ltozó l:lista): Be: l Operátor vége. v Inicializálás akt:=0; hossz:=0; hiba:=hamis Modul vége. v Programozásmódszertan 32 Lista típuskonstrukció 16

3 Alkalmazási példp ldák 3.1 Kiválogatás tétel újrafogalmazása listára 3.2 Összefuttatás tétel újrafogalmazása listára 3.3 Beszúrásos rendezés Programozásmódszertan 33 3.1 Kiválogat logatás Típus TLista=Lista( =Lista(TElem) ) [a rövidsr vidségg kedvéé éért] Ttul(Konstans e:telem): Logikai egy TElem típust pusú e adatra vonatkozó predikátum tum vége. v Eljárás Kiválogat logatás( s(konstans l:tl TLista, Változó t1:tl TLista) ista): Üres(tl); Els5re(l) [a tl-lel lel szinkron száml mláló nem kell!] Ciklus amíg g nem UtolsóE?(l) Ha Ttul( rték(l)) akkor BeszúrM rmögé(tl,ék(l)) gazáss végev Következ5re(l) Elemfeldolgozás Ciklus végev az utolsóig. Ha Ttul( rték(l)) akkor Az utolsó elem BeszúrM rmögé(tl,ék(l)) feldolgozása Eljárás s vége. v Programozásmódszertan 34 Lista típuskonstrukció 17

3.2 Összefuttatás Részben megvalósítási si szinten (láncoltan) fogalmazzuk meg; x éss y a végénv n törlt rl)dik! Eljárás Összefuttatás( s(változó x,y,z:tlista): Üres(z); Elejére(x); Elejére(y) Ha rték(x) k(x)ék(y) akkor z.fej:=x.fej; z.akt:=z.fej; KövetkezK vetkez5re(x) z.fej:=y.fej; z.akt:=z.fej; KövetkezK vetkez5re(y) gazáss végev Ciklus amíg x.aktsehova és y.aktsehova gazás rték(x)<ék(y) esetén ListaElem(z.akt).köv:=x.akt; z.akt:=x.akt Következ5re(x) Programozásmódszertan 35 3.2 Összefuttatás (folytatás)... rték(x)=ék(y) esetén ListaElem(z.akt).köv:=x.akt; z.akt:=x.akt Következ5re(x); KövetkezK vetkez5re(y) rték(x)>ék(y) esetén ListaElem(z.akt).köv:=y.akt; z.akt:=y.akt Következ5re(y) gazáss végev Ciklus végev Ha x.aktsehova akkor ListaElem(z.akt).köv:=x.akt Ha y.aktsehova akkor ListaElem(z.akt).köv:=y.akt Üres(x); Üres(y) Eljárás s vége. v Programozásmódszertan 36 Lista típuskonstrukció 18

3.3 Beszúrásos sos rendezés Típus TRendezend5=Tömb(1..Max: (1..Max:TElem) TRendezett= Rendezett=Lista(TElem) [növekv vekv5en] en] Eljárás Rendezés(Konstans t:trendezend Rendezend5, Változó l:trendezett) Rendezett): Változó i:egész Üres(l) Ciklus i=1-t4l N-ig Els5re(l); e:=t(i) Ciklus amíg nem UtolsóE?(l) és e> rték(l) Következ5re(l) Ciklus végev Ha e> rték(l) akkor BeszúrM rmögé(l,e) BeszúrEl relé(l,e) Ciklus végev Eljárás s vége. v Programozásmódszertan 37 Megjegyzés -- Változó A Változó -ság oka: valamilyen hiba lehet5sége fönnf nnáll (üres( a lista, vagy nincs kijelölt lt aktuális elem), s ennek visszajelzésére a hiba mez5 változhat. Programozásmódszertan 38 Lista típuskonstrukció 19

Megjegyzés -- Lista x Lista a függvf ggvény értékkészletében: mivel a m<velet m elvégz gzése során, bal kézr5l olyan --a a lista állapotátt meg- határoz rozó-- jellemz5 (is) megváltozhat (pl. az akt- vagy a hiba-mez mez5,, amely els5 látásra nem várhatv rható. Programozásmódszertan 39 Megjegyzés --.Lista/.Elem Az algebrai leírásban a nem aktuális elem értékétt visszaadó függvények (El5z5, Következ5,, Els5,, Utolsó) összetett értékének elemrész szére a '.Elem'.Elem' mez5szelektorral hivatkozunk, a listarész szére '.Lista'-val. Programozásmódszertan 40 Lista típuskonstrukció 20