Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Szövegfeldolgozás 2. Copyright, 1999 © Szlávi Péter Szlávi

Hasonló előadás


Az előadások a következő témára: "Szövegfeldolgozás 2. Copyright, 1999 © Szlávi Péter Szlávi"— Előadás másolata:

1 Szövegfeldolgozás 2. Copyright, 1999 © Szlávi Péter Szlávi 2019.01.17.

2 Tartalomjegyzék 3. Szövegtípus speciális feladatai 3.1. Szűrés
Szlávi Tartalomjegyzék 3. Szövegtípus speciális feladatai 3.1. Szűrés Szóközelhagyás Szóközcsoport helyett egyetlen szóköz 3.2. Tömörítés TAB karakterek alkalmazása TOKEN-ek alkalmazása Huffman-kódolás Jelkombinációk kódolása Programozásmódszertan Szövegfeldolgozás 2.

3 3. Szövegtípus speciális feladatai 3.1. Szűrés
Szlávi 3. Szövegtípus speciális feladatai Szűrés Megállapodások, közös deklarációk: Változó X:InpSzövegFile [X nem üres] Z:OutSzövegFile [segédpufferként:] k:Karakter vagy csoport:Szöveg Megnyit(?,fNév) helyett egyszerűen Nyit(?) Programozásmódszertan Szövegfeldolgozás 2.

4 3.1. Szűrés 3.1.1. Szóközelhagyás
Szlávi 3.1. Szűrés Szóközelhagyás 1. feladat: szóközök elhagyása. Megoldás: típusfinomítással Típus Bemenet=File(Karakter)  Kimenet=File(Karakter) Karakter=szóköz  Karakter=   egyéb karakter   egyéb karakter ad : A típusfinomítás során föltárt tagolási konfliktus föloldása virtuális típus bevezetésével. Jelen esetben kimeneti oldalon egy „virtuális karakter” típussal, amelynek újra kell gondolni a megnyitás, írás és a lezárás műveleteit. Lásd: az adatfeldolgozás előadást! ad File: háttértárolón tárolt sorozat. (Hogy input-e vagy output, azt a kulcs-szó nem rögzíti… ad : unió (típuskonstrukció); egy lehetséges megvalósítása az ‘alternatív rekord’. Programozásmódszertan Szövegfeldolgozás 2.

5 3.1.1. Szóközelhagyás (folytatás)
Szlávi Szóközelhagyás (folytatás) Probléma: „szóköz  ” egymáshozrendelése Megoldása: „struktúraszerinti feldolgozás” elve  Elágazás Eljárás Szűrés: Nyit(X,Z) [mindkettő megnyitása] Ciklus amíg nem Vége?(X) Olvas(X,c) Ha c' ' akkor Ír(Z,c) [„virtuális típus” Írás művelete] Ciklus vége Zár(X,Z) Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

6 3.1. Szűrés 3.1.2. Szóközcsoport helyett egyetlen szóköz
Szlávi 3.1. Szűrés Szóközcsoport helyett egyetlen szóköz 2. feladat: „többlet” szóközök elhagyása. 1. megoldás: típusfinomítással Típus Bemenet=File(BeElem)  Kimenet=File(KiElem) BeElem=szóközcsoport  KiElem=szóköz  egyéb karakter   egyéb karakter Probléma: a szóközcsoport végének felismerése Megoldása: előreolvasás  „különleges” fájlvég-kezelés Változó k:Karakter [az előreolvasott karakter] fájlvég:Logikai [a Vége? fv. állítja] ad : Virtuális típus bevezetése az inputoldalon. ad File(??Elem): természetesen ??=Be esetén InpSzövegFile, ??=Ki esetén OutSzövegFile Most a típusfinomítás szempontjából csak az a lényeges, hogy (valamilyen) File, azaz elemsorozat… Programozásmódszertan Szövegfeldolgozás 2.

7 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) Eljárás Szűrés: Nyitás(X); Nyit(Z) Ciklus amíg nem fájlvég ElemOlvasás(X,c); Ír(Z,c) Ciklus vége Zárás(X); Zár(Z) Eljárás vége. Eljárás Nyitás(Változó X:InpSzövegFile): [Ef: X nem üres] Nyit(X); Olvas(X,k); fájlvég:=Vége?(X) Eljárás Zárás(Változó X:InpSzövegFile): Zár(X) Ha kKarakter(0) akkor Ír(Z,k) Pirossal szedettek a virtuális típus műveletei. A zölddel szedett jelzi, hogy „testidegen” módon (paraméterezés nélkül (orvvul) került egy X-beli műveletbe a Z-re vonatkozó. Oka: elkerüljük a mindkét oldali virtuális típus bevezetést. Kék az előreolvasás miatti részek. Programozásmódszertan Szövegfeldolgozás 2.

8 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) Eljárás ElemOlvasás(Változó X:InpSzövegFile, c:Karakter): c:=k [az előreolvasott jel] Ha Vége?(X) akkor fájlvég:=Igaz; k:=Karkter(0) különben [előreolvasás:] Ha c=' ' akkor Ciklus amíg nem Vége?(X) és k=' ' Olvas(X,k) Ciklus vége fájlvég:=Vége?(X) Ha k=' ' akkor k:=Karkter(0) különben Olvas(X,k) Elágazás vége Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

9 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) 2. megoldás: típusfinomítással Típus Bemenet=File(BeCsoport)  Kimenet=File(KiCsoport) BeCsoport=szóközcsoportKiCsoport=szóköz  egyéb csoport   egyéb csoport Problémák és megoldásuk: • a jelcsoportok végeinek felismerése  előreolvasás  „különleges” fájlvég-kezelés; • melyik jelcsoportnál tartunk  feljegyezzük egy segédváltozóba: szóköz=Igaz, ha szóközcsoport következik ad : Virtuális típus bevezetése az input- és az outputoldalon. Programozásmódszertan Szövegfeldolgozás 2.

10 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) Változó k:Karakter [az előreolvasott karakter] szóköz,fájlvég:Logikai Eljárás Szűrés: Nyitás(X); Nyit(Z) Ciklus amíg nem fájlvég Csoportolvasás(X,csoport); Csoportírás(Z,csoport) Ciklus vége Zárás(X); Zár(Z) Eljárás vége. Eljárás Nyitás(Változó X:InpSzövegFile): [Ef: X nem üres] Nyit(X); Olvas(X,k) szóköz:=(k=' '); fájlvég:=Vége?(X) Eljárás vége. Az első csoport. Programozásmódszertan Szövegfeldolgozás 2.

11 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) Eljárás Csoportolvasás(Változó X:InpSzövegFile, csoport:Szöveg): csoport:=k [az előreolvasottal kezdődik a csoport] Ha nem Vége?(X) akkor Olvas(X,k) Ciklus amíg nem Vége?(X) és szóköz=(k=' ') csoport:+k; Olvas(X,k) Ciklus vége Ha szóköz=(k=' ') akkor fájlvég:=Igaz csoport:+k k:=Karakter(0) különben szóköz:=nem szóköz különben fájlvég:=Igaz; k:=Karakter(0) Elágazás vége Eljárás vége. Még a csoporthoz tartozik-e? Csoport-váltás Programozásmódszertan Szövegfeldolgozás 2.

12 3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás)
Szlávi Szóközcsoport helyett egyetlen szóköz (folytatás) Eljárás Csoportírás(Változó Z:OutSzövegFile, Konstans csoport:Szöveg): Ha Jele(csoport,1)=' ' akkor Ír(Z,' ') különben Ír(Z,csoport) Eljárás vége. Eljárás Zárás(Változó X:InpSzövegFile): Zár(X) Ha kKarakter(0) akkor Ír(Z,k) Megjegyzem: az X-beli Zárásból már kiebrudalható lett volna a Z-re vonatkozó, s így kakukktojásként szereplő művelet, hiszen a Z-oldalon is bevezettünk virtuális típust. Azaz szebb lett volna az elágazást a Z-zárás műveletébe tenni. (Az előzővel való hasonlóság növelése miatt maradt így.) Programozásmódszertan Szövegfeldolgozás 2.

13 3. Szövegtípus speciális feladatai 3.2. Tömörítés
Szlávi 3. Szövegtípus speciális feladatai Tömörítés Általános feladat: szöveg- (byte-sorozat) transzformáció a kisebb helyfoglalás érdekében; visszaállíthatóság. Módszerek: Tab-osítás Token-esítés Huffman-osítás  LZW-esítés  Programozásmódszertan Szövegfeldolgozás 2.

14 3.2. Tömörítés 3.2.1. TAB-karakterek alkalmazása
Szlávi Mi a TAB? Rögzített számú szóközt helyettesítő jel (statikus); A sor rögzített pontjáig (TP) pozíciónáló jel (dinamikus). Feladat: a szóközcsoportok helyettesítése TAB-okkal (ill. vissza); feltételezés: sorokból áll a fájl. Megoldás: (a dinamikus értelmezéshez) Típus Bemenet=File(BeCsoport)  Kimenet=File(KiCsoport) BeCsoport=nem szóköz  KiCsoport=nem szóköz  szóközök TP-ig   TAB  szóközök betűig   szóközök betűig A nem szóközök között a SorVégJel is! Programozásmódszertan Szövegfeldolgozás 2.

15 3.2.1. TAB karakterek alkalmazása (folytatás)
Szlávi TAB karakterek alkalmazása (folytatás) Típus TFajta = (NemSzóköz,Tabjel,Szóközök) Változó k,kar: Karakter [k: az előreolvasott karakter] fájlvég: Logikai oszlop: Egész [az előreolvasott karakter helye a sorban] db: Egész fajta: TFajta Függvény TABpozíció?(Konstans o:Egész): Logikai Eljárás Tömörítés: Nyitás(X); Nyit(Z) Ciklus amíg nem fájlvég Csoportolvasás(X,fajta,kar,db) Csoportírás(Z,fajta,kar,db) Ciklus vége Zárás(X); Zár(Z) Eljárás vége. ad Függvény TABpozíció?…: megadja bármely oszlopszámhoz, hogy tabulátorpozíció-e. Programozásmódszertan Szövegfeldolgozás 2.

16 3.2.1. TAB karakterek alkalmazása (folytatás)
Szlávi TAB karakterek alkalmazása (folytatás) Eljárás Nyitás(Változó X:InpSzövegFile): [Ef: X nem üres] Nyit(X); Olvas(X,k); oszlop:=1 fájlvég:=Vége?(X) Eljárás vége. Eljárás Zárás(Változó X:InpSzövegFile): Zár(X) Ha kKarakter(0) [volt előreolvasás] akkor Ír(Z,k) Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

17 3.2.1. TAB karakterek alkalmazása (folytatás)
Szlávi TAB karakterek alkalmazása (folytatás) Eljárás Csoportolvasás(Változó X:InpSzövegFile, fajta:TFajta, kar:Karakter, db:Egész): kar:=k Elágazás Vége?(X) esetén fájlvég:=Igaz; k:=Karakter(0) [nincs előreolvasás] k' ' esetén Betűolvasás(X,kar) [sorvég-kezelés!] fajta:=NemSzóköz; [db:=1] egyéb esetben Szóközcsoportolvasás(X,fajta,kar,db) Elágazás vége Eljárás vége. ad [db:=1]: azért tettem megjegyzéssé, mert valójában csak egy jel lehet, és a kiírásnál fel sem használjuk a db-t ez esetben (l. Csoportírás). Programozásmódszertan Szövegfeldolgozás 2.

18 3.2.1. TAB karakterek alkalmazása (folytatás)
Szlávi TAB karakterek alkalmazása (folytatás) Eljárás Betűolvasás(Változó X:InpSzövegFile, Konstans kar:Karakter): Olvas(X,k) Ha kar=SorVégjel akkor oszlop:=1 különben oszlop:+1 Eljárás vége. Eljárás Szóközcsoportolvasás(Változó X:InpSzövegFile, fajta:TFajta, Konstans kar:Karakter, Változó db:Egész): [Ef: k=kar=' '] db:=0 Ciklus amíg [legfeljebb SorVégjel-ig!] k=' ' és nem TABpozíció?(oszlop) db:+1; Olvas(X,k); oszlop:+1 Ciklus vége Ha k=' ' akkor fajta:=Tabjel különben fajta:=Szóközök Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

19 3.2.1. TAB karakterek alkalmazása (folytatás)
Szlávi TAB karakterek alkalmazása (folytatás) Eljárás Csoportírás(Változó Z:OutSzövegFile, Konstans fajta:TFajta, kar:Karakter, db:Egész): Elágazás fajta=NemSzóköz esetén Ír(Z,kar) fajta=Tabjel esetén Ír(Z,TAB) fajta=Szóközök esetén Ciklus i=1-től db-ig Ír(Z,' ') Ciklus vége Elágazás vége Eljárás vége. A „vissza” megoldás: hf. A TAB„statikus” értelmezésű megoldása: hf. Programozásmódszertan Szövegfeldolgozás 2.

20 3.2. Tömörítés 3.2.2. TOKEN-ek alkalmazása
Szlávi 3.2. Tömörítés TOKEN-ek alkalmazása A lényeg: ismétlődő jelsorozatok helyett egy spec.jel (®) + multiplicitás (đ) + az ismétlődő jel egy példánya. Ef: ®  „normál” Szöveg és multiplicitás < 256 Típus Bemenet=File(Csoport)  Kimenet=File(Csoport) Csoport=Szöveg  Csoport=Szöveg [Típusinvariáns: s:Szöveg  Kódolt jel azonos karakterek sorozata és Hossz(s)<256 és ®s]   Kódolt jel=®+đ+Karakter A 256-os korlát könnyedén növelhető 3-mal! Hogyan? Programozásmódszertan Szövegfeldolgozás 2.

21 3.2.2. TOKEN-ek alkalmazása (folytatás)
Szlávi TOKEN-ek alkalmazása (folytatás) Változó k,kar: Karakter [k: előreolvasott jel] db: Egész fájlvég: Logikai Eljárás Tömörítés: Nyitás(X); Nyit(Z) Ciklus amíg nem fájlvég Csoportolvasás(X,db,kar) Csoportírás(Z,db,kar) Ciklus vége Zár(X); Zárás(Z) Eljárás vége. Eljárás Nyitás(Változó X:InpSzövegFile): [Ef: X nem üres] Nyit(X); Olvas(X,k); fájlvég:=Vége?(X) Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

22 3.2.2. TOKEN-ek alkalmazása (folytatás)
Szlávi TOKEN-ek alkalmazása (folytatás) Eljárás Csoportolvasás(Változó X:InpSzövegFile, db:Egész, kar:Karakter): kar:=k; db:=1 Ha Vége?(X) akkor fájlvég:=Igaz; k:=Karakter(0) különben Olvas(X,k) Ciklus amíg nem Vége?(X) és k=kar és db< db:+1; Olvas(X,k) Ciklus vége Elágazás Vége?(X) és k=kar és db<255 esetén fájlvég:=Igaz; k:=Karakter(0); db: Vége?(X) [és (db=255 vagy kkar)] esetén fájlvég:=Igaz Elágazás vége Elágazás vége Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

23 3.2.2. TOKEN-ek alkalmazása (folytatás)
Szlávi TOKEN-ek alkalmazása (folytatás) Eljárás Csoportírás(Változó Z:OutSzövegFile, Konstans db:Egész, kar:Karakter): Ha db<4 akkor Ciklus i=1-től db-ig Ír(Z,kar) Ciklus vége különben Ír(Z,®+Karakter(db)+kar) Eljárás vége. Eljárás Zárás(Változó Z:OutSzövegFile): Ha kKarakter(0) akkor Ír(Z,k) Zár(Z) Eljárás vége. Programozásmódszertan Szövegfeldolgozás 2.

24 3.2. Tömörítés 3.2.3. Huffman-kódolás
Szlávi 3.2. Tömörítés Huffman-kódolás A lényeg: A jelgyakoriságot figyelembevevő, változó bit- hosszúságúra áttérés. Pl.: Legyen egy szövegben összesen 100 jel: ’a’.. ’h’ jelekből, a következő gyakoriságokkal: Gyak(’a’..’h’)=(40,20,10,8,8,5,5,4). Helyfoglalás: 800 bit. 1. Naiv tömörítés: A 8 jel ábrázolható 3 biten. Helyfoglalás: 100×3=300 bit (+ a kódolótábla). Programozásmódszertan Szövegfeldolgozás 2.

25 3.2.3. Huffman-kódolás (folytatás)
Szlávi Huffman-kódolás (folytatás) 2. Tömörítés: változó hosszúságban. Pl. próbál- gatással: Kód(’a’..’h’)=(12,0012,0112,00012,01012,01002, ,000002). Helyfoglalás: 259 bit (+ a kódolótábla) (259=40×1+20×3+10×3+8×4+8×4+5×4+5×5+4×5) Kérdések: elfogadható-e, azaz egyértelmű-e, a legjobb-e. Válasz: egyértelműen visszaállítható (prefixmentes), ??? Programozásmódszertan Szövegfeldolgozás 2.

26 3.2.3. Huffman-kódolás (folytatás)
Szlávi Huffman-kódolás (folytatás) A Huffman-kódolás működése egy példán Kezdő helyzet: 1. lépés után: 2. lépés után: 3. lépés után: Ha a legkisebb gyakoriságúakat vonjuk össze, akkor a legkisebb gyakoriságúakat bővítjük 1 bittel… Programozásmódszertan Szövegfeldolgozás 2.

27 3.2.3. Huffman-kódolás (folytatás)
Szlávi Huffman-kódolás (folytatás) 4. lépés után: 5. lépés után: 6. lépés után: 7. lépés után: Programozásmódszertan Szövegfeldolgozás 2.

28 3.2.3. Huffman-kódolás (folytatás)
Szlávi Huffman-kódolás (folytatás) S végül a kódfa: A kód leolvasása: Kód(’a’..’h’)=(02,1002,1112,10112,11002,11012, ,101012). Helyfoglalás: 259 bit (+ a kódolótábla) (259=40×1+20×3+10×3+8×4+8×4+5×4+5×5+4×5) Figyelem: a fájlt kódoláskor 2-szer kell végig olvasni! A kódolótábla mekkora? * Minden jelhez (256): hossz+kód (2 byte) = 512 byte * Csak az előforduló jelekhez (8+1; 1: a jelek száma): „eredeti” kód+hossz+kód ( 3 byte) = 8*3+1 = 25 byte Programozásmódszertan Szövegfeldolgozás 2.

29 3.2. Tömörítés 3.2.4. Jelkombinációk kódolása
Szlávi 3.2. Tömörítés Jelkombinációk kódolása A lényege: Jelpermutációk  kód. A kód egy rögzített méretű táblázatbeli sorszám ( „fix bit-hosszúság”). Pl. ha a táblázat 4096 elemű, akkor 12 bitesek... Egy-betűs „permutációk” kódjai előre fixáltak, a táblázat elemei tartoznak hozzájuk. A kódtáblázat dinamikusan épül az adott tömörítendő fájl jelei alapján. A tábla elemei: „prefix”-muta- tó + „utolsó” jel Konstans Méret:PozEgész(4096) Típus KódTábla=Tömb(1..Méret:Kódoló) Kódoló= Rekord(eleje:0..Méret, bővítés:Karakter) Programozásmódszertan Szövegfeldolgozás 2.

30 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) A dekódolás a kódolással azonos logikát követ (ui. dekó-dolás közben is épül a KódTábla).  nincs szükség a kódolt fájlban többlet információt tá-rolni  egy menet is elég akár oda-, akár visszafelé. A „nagyvonalú” algoritmus: 0. KódTábla inicializálás [az 1-betűs kódokhoz] 1. Olvas(be,prefix) Ciklus amíg nem Vége?(be) 2. Olvas(be,jel) Ha prefix+jelKódTábla akkor prefix:+jel különben Ír(ki,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(ki,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

31 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa: Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

32 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

33 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

34 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

35 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

36 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

37 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

38 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

39 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

40 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

41 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

42 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

43 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

44 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc Eredmény: (a)(b)(ab)(ab)c = 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

45 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) Próba lzw 2. példa: Be: abababac Eredmény: (a)(b)(ab)(aba)(c) = 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) Ha prefix+jelKódTábla akkor prefix:+jel kül. Ír(,KódSorszám(prefix)) KódTáblaprefix+jel prefix:=jel Ciklus vége 5. Ír(,KódSorszám(prefix)) Programozásmódszertan Szövegfeldolgozás 2.

46 3.2.4. Jelkombinációk TOKEN-esítése (folytatás)
Szlávi Jelkombinációk TOKEN-esítése (folytatás) 3. példa (2. folytatása): dekódolás ... Probléma: Hiányzik a kód! Magyarázat: a kódoláskor „túl közel” került ez a táblába és kódként a tömörített fájlba. Megoldás erre az esetre: Csak egy már ismert rövidebb szeletét lehet kódként föl-használni. Programozásmódszertan Szövegfeldolgozás 2.


Letölteni ppt "Szövegfeldolgozás 2. Copyright, 1999 © Szlávi Péter Szlávi"

Hasonló előadás


Google Hirdetések