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

Slides:



Advertisements
Hasonló előadás
Fókuszban az önkormányzati tagsággal rendelkező szociális szövetkezetek _ A pályázatkezelői felület bemutatása.
Advertisements

TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
Nem csak szövegszerkeszt ő virtuózoknak Az Open Office.org 2.0 béta verzió Bándliné Utasi Mária Writer.
Két nagy múltú szövegszerkesztő összehasonlítása az oktatás szempontjából.
Gazdasági jog IV. Előadás Egyes társasági formák Közkeresleti társaság, betéti társaság.
Internet tudományos használata
Gazdasági informatika - bevezető
Fájlkezelés.
Számítógépes szimuláció
Adatbázis normalizálás
Logo Országos Számítástechnikai Tanulmányi Verseny
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
AWK ismétlés AWK: adatvezérelt nyelv:
Scilab programozás alapjai
Adatok importálása, rendezése és szűrése
Kockázat és megbízhatóság
Tömörítés.
T.R. Adatbázis-kezelés - Alapfogalmak Adatbázis:
Becsléselmélet - Konzultáció
Algoritmusok és Adatszerkezetek I.
Struktúra predikció ápr. 6.
Lexikális elemző: lex (flex)
Piaci kockázat tőkekövetelménye
VEREM.
Kijelentéslogikai igazság (tautológia):
Logikai programozás 2..
Nyelvek típusossága.
Projektmunka Földrajzolok
Adatbázis-kezelés (PL/SQL)
Algebrai specifikációk
INFOÉRA 2006 Véletlenszámok
Varianciaanalízis- ANOVA (Analyze Of VAriance)
2. Bevezetés A programozásba
VB ADATTÍPUSOK.
Számítógépek felépítése 6. előadás virtuális tárkezelés
Közigazgatási alapvizsga a Probono rendszerben
Business Mathematics
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Algoritmusok és Adatszerkezetek I.
Teljes visszalépéses elemzés
CONTROLLING ÉS TELJESÍTMÉNYMENEDZSMENT DEBRECENI EGYETEM
AVL fák.
Aritmetikai kifejezések lengyelformára hozása
Informatikai gyakorlatok 11. évfolyam
Kifejezések kiértékelése * Lengyel-forma
Új pályainformációs eszközök - filmek
A minőségellenőrzést támogató program bemutatása, Kérdőívek értékelése
A csoportok tanulása, mint a szervezeti tanulás alapja
A kutatási projekt címe Név Oktató neve Tanulmányi intézmény neve
SZAKKÉPZÉSI ÖNÉRTÉKELÉSI MODELL I. HELYZETFELMÉRŐ SZINT FOLYAMATA 8
További rendező és kereső algoritmusok
A szállítási probléma.
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
Adatfeldolgozás 2. Szlávi Péter
Matematika 11.évf. 1-2.alkalom
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
TITKOSÍTÓ ALGORITMUSOK
Szöveges adatok tárolása
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Edényrendezés - RADIX „vissza” - bináris számokra
Bevezetés Tematika Számonkérés Irodalom
Háttértárak Merevlemezek.
Algoritmusok.
Háttértárak Merevlemezek.
Dr. Papócsi László Gábor
Előadás másolata:

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

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

3. Szövegtípus speciális feladatai 3.1. Szűrés Szlávi 2019.01.17. 3. Szövegtípus speciális feladatai 3.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.1. Szűrés 3.1.1. Szóközelhagyás Szlávi 2019.01.17. 3.1. Szűrés 3.1.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.1. Szóközelhagyás (folytatás) Szlávi 2019.01.17. 3.1.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.1. Szűrés 3.1.2. Szóközcsoport helyett egyetlen szóköz Szlávi 2019.01.17. 3.1. Szűrés 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.1.2. Szóközcsoport helyett egyetlen szóköz (folytatás) Szlávi 2019.01.17. 3.1.2. 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 2019.01.17. Szövegfeldolgozás 2.

3. Szövegtípus speciális feladatai 3.2. Tömörítés Szlávi 2019.01.17. 3. Szövegtípus speciális feladatai 3.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.2. Tömörítés 3.2.1. TAB-karakterek alkalmazása Szlávi 2019.01.17. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.1. TAB karakterek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.1. TAB karakterek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.1. TAB karakterek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.1. TAB karakterek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.1. TAB karakterek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.1. 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 2019.01.17. Szövegfeldolgozás 2.

3.2. Tömörítés 3.2.2. TOKEN-ek alkalmazása Szlávi 2019.01.17. 3.2. Tömörítés 3.2.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.2. TOKEN-ek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.2. TOKEN-ek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.2. 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<255 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:+1 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 2019.01.17. Szövegfeldolgozás 2.

3.2.2. TOKEN-ek alkalmazása (folytatás) Szlávi 2019.01.17. 3.2.2. 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 2019.01.17. Szövegfeldolgozás 2.

3.2. Tömörítés 3.2.3. Huffman-kódolás Szlávi 2019.01.17. 3.2. Tömörítés 3.2.3. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.3. Huffman-kódolás (folytatás) Szlávi 2019.01.17. 3.2.3. 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, 000012,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 2019.01.17. Szövegfeldolgozás 2.

3.2.3. Huffman-kódolás (folytatás) Szlávi 2019.01.17. 3.2.3. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.3. Huffman-kódolás (folytatás) Szlávi 2019.01.17. 3.2.3. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.3. Huffman-kódolás (folytatás) Szlávi 2019.01.17. 3.2.3. 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, 101002,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 2019.01.17. Szövegfeldolgozás 2.

3.2. Tömörítés 3.2.4. Jelkombinációk kódolása Szlávi 2019.01.17. 3.2. Tömörítés 3.2.4. 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 1..255 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. Jelkombinációk TOKEN-esítése (folytatás) 1. példa (folyt.): Be: abababc Eredmény: (a)(b)(ab)(ab)c = 97 98 256 256 99 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Próba lzw 2. példa: Be: abababac Eredmény: (a)(b)(ab)(aba)(c) = 97 98 256 258 99 0. KódTábla inic. 1. Olvas(,prefix) Ciklus amíg nem Vége?() 2. Olvas(,jel) 3. Ha prefix+jelKódTábla akkor prefix:+jel 4. 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 2019.01.17. Szövegfeldolgozás 2.

3.2.4. Jelkombinációk TOKEN-esítése (folytatás) Szlávi 2019.01.17. 3.2.4. 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 2019.01.17. Szövegfeldolgozás 2.