Algebrai specifikációk 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

07:15:06 óra Egy új életet fogok kezdeni Ez a határozott döntésem... Ez az én saját saját döntésem... kedd, június 24.kedd, június.
Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
A prezentáció művészete
Programozási alapismeretek
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,
Készítette: Unyatyinszki Csaba
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
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
Programozási ismeretek oktatása: kód vagy algoritmus
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
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 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
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.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
3. LOGIKAI ADATSZERKEZETEK
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Bevezetés a matematikába I
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
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.
16. Verem műveletei Kaszab Gábor.
Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010 Kombinatorikai algoritmusok.
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
DirectX a grafika laboron kívül. Mire lesz szükség Itt vannak a szükséges include és lib: iles/DXMinimalPack.zip.
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Halmazelmélet és matematikai logika
Függvények.
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.
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Készítette: Unyatyinszki Csaba
A Dijkstra algoritmus.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
A Helyes Zárójelezés Struktogramja
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Dinamikus programozás
Copyright, 1999 © Szlávi Péter Szövegfeldolgozás 1.
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Gráfok ábrázolása teljesen láncoltan
INFOÉRA 2006 Nagypontosságú aritmetika I.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Mohó algoritmusok Szlávi Péter ELTE IK
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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
GeoGebra Dinamikus matematika mindenkinek
Jelentkezés Érettségire jelentkezés határideje: február 15. Helye: Tiszakécskei Református Általános Iskola és Gimnázium.
Algebrai specifikációk
Gráfok 2. Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Bevezetés a matematikába I
Adatszerkezetek -- Típusok
Rekurzió 3. Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Előadás másolata:

Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék Copyright, 1999 © Szlávi Péter

 Programozásmódszertan2/24 Tartalomjegyzék A lista algebrai specifikációja 1 A lista algebrai specifikációjaalgebrai specifikációjaalgebrai specifikációja 1.1 Lista-műveletek 1.2 Lista-axiómák 2 A verem algebrai specifikációja algebrai specifikációjaalgebrai specifikációja 2.1 Verem-műveletek 2.2 Verem-axiómák 3 A sor algebrai specifikációja algebrai specifikációjaalgebrai specifikációja 3.1 Sor-műveletek 3.2 Sor-axiómák 4 A prioritási sor algebrai specifikációja algebrai specifikációjaalgebrai specifikációja 4.1 Prioritási sor-műveletek 4.2 Prioritási sor-axiómák

 Programozásmódszertan3/24 11 A lista algebrai specifikációja 1.1 Lista-műveletek 1 Típus Lista(Elem): Asszociált műveletek: Üres: Lista Üres?(Lista): Logikai Tele?(Lista): Logikai ElemÉrték(Lista): Elem  {NemDef} ElemMódosít(Lista,Elem): Lista  {NemDef} Elsőre(Lista): Lista  {NemDef} Következőre(Lista): Lista  {NemDef} BeszúrMögé(Lista,Elem): Lista  {NemDef} BeszúrElejére(Lista,Elem): Lista  {NemDef}

 Programozásmódszertan4/ Lista-műveletek (folytatás) Kihagy(Lista): Lista  {NemDef} Utolsó?(Lista): Logikai  {NemDef} Kiegészítő műveletek: BeszúrElé(Lista,Elem): Lista  {NemDef} ElemSzám(Lista): Egész A kétirányú lista további műveletei: Utolsóra(Lista): Lista  {NemDef} Előzőre(Lista): Lista  {NemDef} BeszúrElé(Lista,Elem): Lista  {NemDef} Első?(Lista): Logikai  {NemDef}

 Programozásmódszertan5/ Lista-műveletek (folytatás) A ciklikus lista: olyan egy- vagy kétirányú lista, amelynek az utolsó elemét az első követi, az elsőt pe- dig az utolsó előzi meg. Így kevesebb mű- veletre van szükség a megvalósításához. A gyűrű: olyan ciklikus lista, amelynek nincs kitünte- tett első, ill. utolsó eleme.

 Programozásmódszertan6/ Lista-műveletek (folytatás) További lehetséges műveletek: Első(Lista): (Lista  Elem)  {NemDef} Lista  ElemLista  Elem Következő(Lista): (Lista  Elem)  {NemDef} Utolsó(Lista): (Lista  Elem)  {NemDef} Előző(Lista): (Lista  Elem)  {NemDef} Egymásután(Lista,Lista): Lista Axiómák:l,l’,l”:Lista(Elem)e,f:Elemh,h’:Egész

 Programozásmódszertan7/ Lista-axiómák o Az Üres lista üres. l=Üres  Üres?(l) 2 o Üres listának nincs eleme. Üres?(l)  ElemSzám(l)=0 3 o Az üres listának nincs aktuális, első,... utolsó eleme. ElemÉrték(Üres)=NemDef  Első?(Üres)=NemDef  Első(Üres)=NemDef  Következő(Üres)=NemDef  Előző(Üres)=NemDef  Utolsó(Üres)=NemDef  Utolsó?(Üres)=NemDef Üres-axiómákÜres-axiómák

 Programozásmódszertan8/ Lista-axiómák (folytatás) 1.2 4a o Nincs elsőt megelőző és nincs utolsót követő eleme a listának. Előző(Elsőre(l))=NemDef  Következő(Utolsóra(l))=NemDef 4b o A ciklikus listában az elsőt megelőző az utolsó, az utolsót követő pedig az első. Előző(Elsőre(l))=Utolsó(l)  Következő(Utolsóra(l))=Első(l) Mozgás+érték hiba-axiómák

 Programozásmódszertan9/ Lista-axiómák (folytatás) 5 o A lista Utolsóra művelettel kiválasztott eleme az ElemSzám-adik, az 1. elemét az Elsőre művelet választja ki. Utolsó?(Utolsóra(l))  Első?(Elsőre(l))  h=ElemSzám(l)-1  Következőre h (Elsőre(l))=Utolsóra(l)  0  h<ElemSzám(l)-1   Utolsó?(Következőre h (Elsőre(l)))  0<h  ElemSzám(l)-1   Első?(Következőre h (Elsőre(l))) Végek+értékek axióma

 Programozásmódszertan10/ Lista-axiómák (folytatás) 6 o A BeszúrMögé művelet bővíti a listát az adott elemmel. Az új elem az ‘aktuális’ mögé kerül. Üres listába elsőként kerül be az új elem. Az új válik aktuálissá. Ha nincs ‘aktuális’ elem vagy nincs több szabad hely, akkor a művelet eredménye nem definiált. f=ElemÉrték(l)   Tele?(l)   l'=BeszúrMögé(l,e): ElemSzám(l')=ElemSzám(l)+1  ElemÉrték(l')=e  ElemÉrték(Előzőre(l'))=f  Üres?(l)   Tele?(l)  ElemSzám(BeszúrMögé(l,e))=1  ElemÉrték(BeszúrMögé(l,e))=e   Üres?(l)  ElemÉrték(l)=NemDef  Tele?(l)  BeszúrMögé(l,e)=NemDef A BeszúrElé művelet ennek analógiájára fogalmazható meg. Bővítés axiómája

 Programozásmódszertan11/ Lista-axiómák (folytatás) 7 o Kihagyni az ‘aktuális’ elemet lehet, az ‘aktuális’ a következő lesz (ha van ilyen). Ha nincs ‘aktuális’ elem, akkor nem lehet kihagyni sem.  ElemÉrték(l)   l'=Kihagy(l): ElemSzám(l')=ElemSzám(l)-1  (Üres?(l')  ElemÉrték(l')=ElemÉrték(Következőre(l))) ElemÉrték(l)=NemDef  Kihagy(l)=NemDef  ElemÉrték(l)   l'=Kihagy(l): ElemSzám(l')=ElemSzám(l)-1  (Üres?(l')  ElemÉrték(l')=ElemÉrték(Következőre(l))) ElemÉrték(l)=NemDef  Kihagy(l)=NemDef Állítás: ha az utolsó az ‘aktuális’, akkor a kihagyás után nem definiált lesz az ‘aktuális’. Utolsó?(l)  ElemÉrték(Kihagy(l))=NemDef Biz.: Utolsó?(l)   ElemÉrték(l) 7 o   l'=Kihagy(l):(Üres?(l')  ElemÉrték(l')=ElemÉrték(Következőre(l))) (1) Üres?(l')  3 o  ElemÉrték(l')=NemDef (2) ElemÉrték(l')=ElemÉrték(Következőre(l))  9 o  4a o  ElemÉrték(l')=NemDef 3 o9 o4a o3 o9 o4a o Kihagyás axiómája

 Programozásmódszertan12/ Lista-axiómák (folytatás) 8 o Két egymásután illesztett lista listát alkot. Elemei az eredeti kettő elemei lesznek, az eredeti sorrendben. h=ElemSzám(l)  h'=ElemSzám(l')  l"=Egymásután(l,l')   k  [0,h): ElemÉrték(Következőre k (Elsőre(l")))= =ElemÉrték(Következőre k (Elsőre(l)))   k  [0,h'): ElemÉrték(Következőre k+h (Elsőre(l")))= =ElemÉrték(Következőre k (Elsőre(l'))) Illesztés-axiómaIllesztés-axióma

 Programozásmódszertan13/ Lista-axiómák (folytatás) 9 o A következő elem az, amelyet a következőre lépés után aktuá- lisként érzékelünk, az előző az, amelyet az előzőre lépés után aktuálisként érzékelünk,... ElemÉrték(l)  NemDef  Következő(l).Elem=ElemÉrték(Következőre(l))  Előző(l).Elem=ElemÉrték(Előzőre(l))  Első(l).Elem=ElemÉrték(Elsőre(l))  Utolsó(l).Elem=ElemÉrték(Utolsóra(l)).Elem Pozícionálás+érték axióma

 Programozásmódszertan 22 A verem algebrai specifikációja 2.1 Verem-műveletek 2 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 14/24

 Programozásmódszertan Verem-axiómák 2.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 15/24

 Programozásmódszertan 2.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. 16/24

 Programozásmódszertan 33 A sor algebrai specifikációja 3.1 Sor-műveletek 3 Típus Sor(Elem): Asszociált műveletek: Üres: Sor Üres?(Sor): Logikai Tele?(Sor): Logikai Első(Sor): Elem  {NemDef} Sorba(Sor,Elem): Sor  {NemDef} Sorból(Sor): (Sor  Elem)  {NemDef} SorHossz(Sor): Egész 17/24

 Programozásmódszertan Sor-axiómák 3.2 Axiómák: 1 o Az Üres sor üres. s=Üres  Üres?(s)  SorHossz(s)=0 2 o Az a sor, amelyben legalább egy elem van, az nem üres; a sorba tétel során a sor hossza eggyel nő.  Tele?(s)   Üres?(Sorba(s,e))  SorHossz(Sorba(s,e))=SorHossz(s)+1 3a o Az üres sornak nincs első eleme. Első(Üres)=NemDef 3b o Az Üres sorból nem lehet kivenni elemet. Sorból(Üres)=NemDef 3c o A tele sorba nem lehet további elemet betenni. Tele?(s)  Sorba(s,e)=NemDef 18/24

 Programozásmódszertan 3.2 Sor-axiómák (folytatás) 4 o A sor első eleme a legrégebben betett elem. Üres?(s)   Tele?(s)  Első(Sorba(s,e))=e  Üres?(s)   Tele?(s)  Első(Sorba(s,e))=Első(s) 5 o A sorból az első elemet lehet kivenni (a többi nem változik). Üres?(s)   Tele?(s)  Sorból(Sorba(s,e))=(s,e)   Üres?(s)   Tele?(s)  Sorból(s)=(s',e)  e=Első(s)  Sorba(s',e')=Sorból(Sorba(s,e')).Sor.Sor Állítás: a Sorból művelet után eggyel csökken a sor hossza.  Üres?(s)  SorHossz(Sorból(s).Sor)=SorHossz(s)-1 Biz.: 1 o & 2 o & 5 o –ből következik. 19/24

 Programozásmódszertan 4 4 A prioritási sor algebrai specifiká- ciója 4.1 Prioritási sor-műveletek 4 Típus Sor(Elem,Prioritás): Típus PrSor(Elem,Prioritás): Asszociált műveletek: Üres: PrSor Üres?(PrSor): Logikai Tele?(PrSor): Logikai Első(PrSor): (Elem  Prioritás)  {NemDef} Sorba(PrSor,Elem,Prioritás): PrSor  {NemDef} Sorból(PrSor): (PrSor  Elem  Prioritás)  {NemDef} SorHossz(PrSor): Egész 20/24

 Programozásmódszertan Prioritási sor-axiómák 4.2 Axiómák: 1 o Az Üres prioritási sor üres. s=Üres  Üres?(s)  SorHossz(s)=0 2 o Az a prioritási sor, amelyben legalább egy elem van, az nem üres; a sorba tétel során a sor hossza eggyel nő.  Tele?(s)   Üres?(Sorba(s,e,p))  SorHossz(Sorba(s,e,p))=SorHossz(s)+1 3a o Az üres prioritási sornak nincs első eleme. Első?(Üres)=NemDef 3b o Az Üres prioritási sorból nem lehet kivenni elemet. Sorból(Üres)=NemDef 3c o A tele prioritási sorba nem lehet további elemet betenni. Tele?(s)  Sorba(s,e,p)=NemDef 21/24

 Programozásmódszertan 4.2 Prioritási sor-axiómák (folytatás) 4 o A prioritási sor első eleme a legnagyobb prioritásúak közül a legrégebben betett elem. Üres?(s)   Tele?(s)  Első(Sorba(s,e,p))=(e,p)  Üres?(s)   Tele?(s)  s’=Sorba(s,e,p)  ( Első(s).Pr  p  Első(s’)=Első(s) )  ( Első(s).Pr<p  Első(Sorba(s,e,p))=(e,p) )  SorHossz(s’)=SorHossz(s)+1 22/24

 Programozásmódszertan 4.2 Prioritási sor-axiómák (folytatás) 5 o A prioritási sorból az első elemet lehet kivenni (a többi nem változik). Üres?(s)   Tele?(s)  Sorból(Sorba(s,e,p))=(s,e,p)  Üres?(s)   Tele?(s)  Sorból(s)=(s’,e’,p’)  (e’,p’)=Első(s)  ( Első(s).Pr<p  s=Sorból(Sorba(s,e,p)).Sor )  ( Első(s).Pr  p  Sorba(s’,e,p)=Sorból(Sorba(s,e,p)).Sor ).Sor Állítás: a Sorból művelet után eggyel csökkent a prioritási sor hossza.  Üres?(s)  SorHossz(Sorból(s).Sor)=SorHossz(s)-1 Biz.: 2 o & 5 o –ből következik. 23/24

 Programozásmódszertan24/24 Megjegyzés –.Lista/.Elem Az algebrai leírásban a nem aktuális elem érté- két visszaadó függvények (Előző, Következő, Első, Utolsó) összetett értékének elemrészére a '.Elem' mezőszelektorral hivatkozunk, a listaré- szére '.Lista'-val. Ez a megjegyzés természetesen érvényes a sor- ra, a prioritási sorra és a veremre is.