Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport

Slides:



Advertisements
Hasonló előadás
Informatika I. 3. Logikai függvények.
Advertisements

Programozási alapismeretek
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.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszé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
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
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
Euklidészi gyűrűk Definíció.
Algebrai struktúrák 1.
Minimális költségű feszítőfák
Programozási ismeretek oktatása: kód vagy algoritmus
Szlávi Péter: VISz Oktatói-díj
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 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
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.
Az informatika logikai alapjai
Bevezetés a digitális technikába
Térelemek Kőszegi Irén KÁROLYI MIHÁLY FŐVÁROSI GYAKORLÓ KÉTTANNYELVŰ KÖZGAZDASÁGISZAKKÖZÉPISKOLA
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.
Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE
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 Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
e-Learning a tanárképzésben
Halmazelmélet és matematikai logika
OAIS. Megőrzés feladatai Viability –Meg kell őrizni a bitfüzér változatlanságát és olvashatóságát a tároló eszközön Rendbebility –Meg kell őrizni a bitfüzér.
C nyelv utasításai.
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.
Operátorok Értékadások
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
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.
Az informatika logikai alapjai
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Az informatika logikai alapjai
INFOÉRA 2006 Nagypontosságú aritmetika I.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Copyright, 1999 © Szlávi Péter Táblázat típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
INFOÉRA 2006 Nagypontosságú aritmetika III.
Az informatika logikai alapjai
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
Strukturált és nem strukturált programok
Előadás másolata:

Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport

 Programozásmódszertan2 Tartalomjegyzék 1 A prioritási sor algebrai specifikációja algebrai specifikációjaalgebrai specifikációja 1.1 Prioritási sor-műveletek műveletek 1.2 Prioritási sor-axiómák axiómák 2 A prioritási sor típuskonstrukció specifikációja típuskonstrukció specifikációjatípuskonstrukció specifikációja 2.1 A prioritási sor exportmodulja exportmodulja 2.2 A prioritási sor megvalósítási moduljai megvalósítási moduljaimegvalósítási moduljai 3 Alkalmazási példák példák

 Programozásmódszertan3 11 A prioritási sor algebrai specifikációja 1.1 Prioritási sor-műveletek 1 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) U {NemDef} Sorba(PrSor,Elem,Prioritás): PrSor U {NemDef} Sorból(PrSor): (PrSor  Elem  Prioritás) U {NemDef} SorHossz(PrSor): Egész

 Programozásmódszertan Prioritási sor-axiómák 1.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

 Programozásmódszertan5 1.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.Pr

 Programozásmódszertan6 1.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.

 Programozásmódszertan7 22 A prioritási sor típuskonstrukció specifikációja 2.1 A prioritási sor exportmodulja 2 ExportModul PrSor(Típus TElem: Típus TPrior): Eljárás Üres(Változó s:PrSor) Eljárás Üres(Változó s:PrSor) Függvény Üres?(Konstans s:PrSor): Logikai Függvény Üres?(Konstans s:PrSor): Logikai Függvény Tele?(Konstans s:PrSor): Logikai Függvény Tele?(Konstans s:PrSor): Logikai Függvény ElsőElem(Változó s:PrSor): TElem Függvény ElsőElem(Változó s:PrSor): TElemVáltozó Függvény ElsőPrioritás(Változó s:PrSor): TPrior Függvény ElsőPrioritás(Változó s:PrSor): TPrior Eljárás Sorba(Változó s:PrSor, Konstans e:TElem, p:TPrior) Eljárás Sorba(Változó s:PrSor, Konstans e:TElem, p:TPrior) Függvény SorHossz(Konstans s:PrSor): Egész Függvény SorHossz(Konstans s:PrSor): Egész Meg kell gondolni az operátorok ef/uf-ét az axiómák alapján!

 Programozásmódszertan8 2.1 A prioritási sor exportmodulja (folytatás) Eljárás Sorból(Változó s:PrSor, e:TElem, p:TPrior) Eljárás Sorból(Változó s:PrSor, e:TElem, p:TPrior) Infix Operátor Azonos?(Konstans s1,s2:PrSor):Logikai Infix Operátor Azonos?(Konstans s1,s2:PrSor):Logikai Másnéven s1=s2 Másnéven s1=s2 Infix Operátor LegyenEgyenlő(Változó s1:PrSor, Konstans s2:PrSor) Másnéven s1:=s2 Infix Operátor LegyenEgyenlő(Változó s1:PrSor, Konstans s2:PrSor) Másnéven s1:=s2 Operátor Kiírás(Konstans s:PrSor) Másnéven Ki: s Operátor Kiírás(Konstans s:PrSor) Másnéven Ki: s Operátor Beolvasás(Változó s:PrSor) Másnéven Be: s Operátor Beolvasás(Változó s:PrSor) Másnéven Be: s Függvény Hibás?(Változó s:PrSor): Logikai Függvény Hibás?(Változó s:PrSor): LogikaiVáltozó Modul vége.

 Programozásmódszertan9 22 A prioritási sor típuskonstrukció specifikációja 2.2. A prSor megvalósítási moduljai Prioritás-szerint rendezett (folytonos ) ábrázolás moduljai 2moduljai Modul PrSor(Típus TElem: Típus TPrior): Reprezentáció Konstans MaxHossz: Egész(???) Típus TPrElem=Rekord(elem: TElem, pr: TPrior) PrElemek=Tömb(1..MaxHossz: TPrElem) [TípusInvariáns: növekvően…] Változó se: PrElemek eleje, vége, hossz : 0..MaxHossz hiba: Logikai

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás) Implementáció Eljárás Üres(Változó s:PrSor): eleje:=1; vége:=1; hossz:=0; hiba:=Hamis Eljárás vége. Függvény Üres?(Konstans s:PrSor): Logikai Üres?:=hossz=0 Függvény vége. Függvény Tele?(Konstans s:PrSor): Logikai Tele?:= hossz=MaxHossz Tele?:= hossz=MaxHossz Függvény vége. Függvény ElsőElem(Változó s:PrSor): TElem Ha hossz  0 akkor ElsőElem:=se(eleje).elem különben hiba:=Igaz Ha hossz  0 akkor ElsőElem:=se(eleje).elem különben hiba:=Igaz Függvény vége.

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás) Függvény ElsőPrioritás(Változó s:PrSor): TPrior Ha hossz  0 akkor ElsőPrioritás:=se(eleje).pr különben hiba:=Igaz Függvény vége. Eljárás Sorba(Változó s:PrSor, Konstans e:TElem, p:TPrior): Ha hossz<MaxHossz akkor Ha hossz=0 akkor hely:=eleje különben Helykeresés(eleje,vége,hely,p) Eltolás(hely,vége) Elágazás vége se(hely).elem:=e; se(hely).pr:=p vége:  1; hossz:+1... 

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás)... különben hiba:=Igaz Elágazás vége Eljárás vége.... különben hiba:=Igaz Elágazás vége Eljárás vége. Eljárás Helykeresés(Konstans eleje,vége:0..MaxHossz, Változó hely: 0..MaxHossz, Konstans p:TPrior): hely:=eleje Ciklus amíg hely  vége  1 és se(hely).pr  p hely:  1 Ciklus vége [hely  vége  1 és se(hely).pr<p vagy hely=vége  1  TípusInvariáns] Eljárás vége. hely:=eleje Ciklus amíg hely  vége  1 és se(hely).pr  p hely:  1 Ciklus vége [hely  vége  1 és se(hely).pr<p vagy hely=vége  1  TípusInvariáns] Eljárás vége.TípusInvariáns

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás) Eljárás Eltolás(Konstans hely,vége:0..MaxHossz): Változó i:Egész i:=vége Ciklus amíg i  hely  1 se(i  1):=se(i); i:  1 Ciklus vége Eljárás vége. i:=vége Ciklus amíg i  hely  1 se(i  1):=se(i); i:  1 Ciklus vége Eljárás vége. Eljárás Sorból(Változó s:PrSor, e:TElem, p:TPrior): Ha hossz>0 akkor p:=se(eleje).pr; e:=se(eleje).elem eleje:  1; hossz:-1 különben hiba:=Igaz Elágazás vége Eljárás vége.

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás) Függvény SorHossz(Konstans s:Sor): Egész SorHossz:=hossz Függvény vége. Függvény Hibás?(Változó s:PrSor): Logikai Hibás?:=hiba; hiba:=Hamis Függvény vége. Infix Operátor Azonos?(Konstans s1, s2:PrSor):Logikai Másnéven s1=s2 ??? Operátor vége. Infix Operátor LegyenEgyenlő(Változó s1:PrSor, Konstans s2:PrSor) Másnéven s1:=s2 Infix Operátor Azonos?(Konstans s1, s2:PrSor):Logikai Másnéven s1=s2 ??? Operátor vége. Infix Operátor LegyenEgyenlő(Változó s1:PrSor, Konstans s2:PrSor) Másnéven s1:=s2??? ??? Operátor vége. ??? Operátor vége.???

 Programozásmódszertan Prioritás-szerint rendezett (folytonos ) ábrázolás (folytatás) Operátor Kiírás(Konstans s:PrSor) Másnéven Ki: s … Operátor vége. Operátor Kiírás(Konstans s:PrSor) Másnéven Ki: s … Operátor vége. Operátor Beolvasás(Változó s:PrSor) Másnéven Be: s … Operátor vége. Inicializálás Inicializálás eleje:=1; vége:=1; hossz:=0; hiba:=Hamis Modul vége.

 Programozásmódszertan16 22 A prioritási sor típuskonstrukció specifikációja 2.2. A prSor meglósítási moduljai Időrendben rendezett (folytonos ) ábrázolás 2 Modul PrSor(Típus TElem: Típus TPrior): Reprezentáció … ugyanaz, mint ben

 Programozásmódszertan Időrendben rendezett (folytonos ) ábrázolás (folytatás) Eljárás Üres(Változó s:PrSor):...ugyanaz, mint ben Eljárás vége Függvény Üres?(Konstans s:PrSor): Logikai...ugyanaz, mint ben Függvény vége Függvény Tele?(Konstans s:PrSor): Logikai...ugyanaz, mint ben Függvény vége Függvény ElsőElem(Változó s:PrSor): TElem Ha hossz  0 akkor ElsőElem:=se(Max(s)).eleje különben hiba:=Igaz Függvény vége.

 Programozásmódszertan Időrendben rendezett (folytonos ) ábrázolás (folytatás) Függvény Max(Változó s:PrSor): 1..MaxHossz i:=eleje; m:=i Ciklus j=1-től hossz-1-ig i:  1; Ha se(i).pr>se(m).pr akkor m:=i Ciklus vége Max:=m Függvény vége. Függvény ElsőPrioritás(Változó s:PrSor): TPrior Ha hossz  0 akkor ElsőPrioritás:=se(Max(s)).pr különben hiba:=Igaz Függvény vége. Eljárás Sorba(Változó s:PrSor, Konstans e:TElem, p:TPrior): Ha hossz<MaxHossz akkor se(vége).pr:=p; se(vége):=e; hossz:+1; vége:  1 

 Programozásmódszertan Időrendben rendezett (folytonos ) ábrázolás (folytatás) különben hiba:=Igaz Elágazás vége Eljárás vége. különben hiba:=Igaz Elágazás vége Eljárás vége. Eljárás Sorból(Változó s:PrSor, e:TElem, p:Priotitás): Változó maxI:Egész Ha hossz>0 akkor maxI:=Max(s); e:=se(maxI).elem; p:=se(maxI).pr; Rátolás(maxI,vége); hossz:-1; vége:  1 különben hiba:=Igaz Elágazás vége Eljárás vége. Függvény Hibás?(Változó s:PrSor): Logikai...ugyanaz, mint ben Függvény vége. 2.2.1 2.2.1 Hf.

 Programozásmódszertan Időrendben rendezett (folytonos ) ábrázolás (folytatás) Infix Operátor Azonos?(Konstans s1, s2:PrSor):Logikai … ugyanaz, mint ben... Operátor vége. Infix Operátor Azonos?(Konstans s1, s2:PrSor):Logikai … ugyanaz, mint ben... Operátor vége. Infix Operátor LegyenEgyenlő(Változó s1:PrSor, Konstans s2:PrSor) … ugyanaz, mint ben... Operátor vége. Operátor Kiírás(Konstans s:PrSor) … ugyanaz, mint ben... Operátor vége. Operátor Kiírás(Konstans s:PrSor) … ugyanaz, mint ben... Operátor vége. Operátos Beolvasás(Változó s:PrSor) … ugyanaz, mint ben... Operátor vége. Inicializálás … ugyanaz, mint ben... … ugyanaz, mint ben Modul vége.

 Programozásmódszertan21 33 Alkalmazási példák Megszakítási rendszerMegszakítási rendszer 3.2 Mindennapok prioritási soraiMindennapok

 Programozásmódszertan Megszakítási rendszer 3.1 A számítógép az esetleg konkuráló (egyidejűleg érkező) megszakításokat egy prioritási sorba gyűjti, majd ennek sorrendjében hajtja végre az egyes megszakításokhoz rendelt rutinokat...

 Programozásmódszertan Mindennapok prioritási sorai 3.2 Az Élet „dezertörei” mindenki által kellően átélt példákkal illusztrálják a prioritási sorok „létjogosultságát”, de legalábbis létezését.

 Programozásmódszertan24 Megjegyzés -- Változó A „Változó”-ság oka: valamilyen hiba lehetősége fönnáll (üres vagy tele a sor), s ennek visszajelzésére a „hiba” mező változhat.valamilyen hiba lehetősége fönnáll (üres vagy tele a sor), s ennek visszajelzésére a „hiba” mező változhat. Vagy valamely operáció (l. Hiba függvény) kifejezetten állítja.Vagy valamely operáció (l. Hiba függvény) kifejezetten állítja.

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

 Programozásmódszertan26 Megjegyzés -- ciklikus növelés A rövidség kedvéért bevezetjük ciklikus növelés, illetve csökkentés műveleteket.  1:{1..MaxHossz}  {1..MaxHossz} x  1 := (x Mod MaxHossz)+1,  1:{1..MaxHossz}  {1..MaxHossz} x  1 := (x  1+MaxHossz) Mod MaxHossz

 Programozásmódszertan27 Megjegyzés -- Azonosság? „s1=s2” értelmezési lehetőségek: –„tökéletesen” azonos állapot, azaz s1.eleje=s2.eleje és s1.vége=s2.vége (értékmegosztás esetén  azonos elemek) –„lényegi” azonosság, azaz azonos számú és értékű elemek.

 Programozásmódszertan28 Megjegyzés -- Értékadás „s1:=s2” értelmezési lehetőségek: –„tökéletesen” azonos állapot létrehozása, azaz s1.eleje:=s2.eleje; s1.vége:=s2.vége (értékmegosztás esetén  azonos elemek) –értékmásolás, azaz s1 minden elemének s2-másolatelem létrehozása.

 Programozásmódszertan29 Megjegyzés -- Prioritás Az elemek rendezésére szolgáló többletinfor- máció. Infix Operátor  (TPrior,TPrior): Logikai Megvalósítása: az elem egy „rendezett” mezője,az elem egy „rendezett” mezője, az elemen értelmezett valamilyen alkalmas rendezett értéket szolgáltató függvény.az elemen értelmezett valamilyen alkalmas rendezett értéket szolgáltató függvény.