Semestrální práce KIV/PT Martin Kales Hana Hůlová
Standardní zadání –Vytvořte 3 vstupní soubory, každý o velikosti minimálně 5MB (obyčejné textové soubory) obsahující texty v českém jazyce z následujících oblastí : –zpravodajství –beletrie –odborná literatura –Programově načtěte vstupní soubory, vytvořte slovníky použitých slov (implementujte vhodnou základní datové paměťové struktury pro načtená data ze souborů) –Seřaďte slova podle četnosti výskytu + kontrolní výpisy –Umožněte fulltextové vyhledání slov –Vytvořte smysluplné výstupy do HTML, vhodné pak i na obrazovku –Vytvořte prostředí pro snadnou obsluhu programu (menu, ošetření vstupů,…) – nemusí být grafické –Vytvořte dokumentační komentáře ve zdrojovém textu programu a vygenerujte programovou dokumentaci (Javadoc) –Dokumentace –Zadání –Analýza problému –Popis programu –Uživatelská dokumentace –Závěr
Analýza problému Volba datových struktur => –BVS (pro načtení) –Hash tabulka (pro četnost) Volba datových typů => –Prvek Slovo Údaj o četnosti Ukazatele na následníky v BVS –PrvekCetnost Prvek Ukazatel na další prvek v Hash tabulce
BVS Postupně vkládáme všechna slova do BVS. –1.slovo => kořen stromu –Následující slova => porovnání podle abecedy s kořenem a zbytkem stromu: a) menší slova (abecedně) =>vlevo b) větší slova (abecedně) =>vpravo
Programově načtěte vstupní soubory, vytvořte slovníky použitých slov
Hash tabulka Uložení slov podle četnosti Pole třídy PrvekCetnost o velikosti rovné nejvyšší četnosti Tvoříme převodem z BVS Index spojového seznamu určuje četnost
Program Program se skládá ze 4 souborů: –Prvek.java –Strom.java –Text.java –Gui.java
Prvek.java Základní datový typ celého programu Obsahuje: –Slovo (String) –Četnost (int) –Ukazatel na levého následníka v BVS (Prvek) –Ukazatel na pravého následníka v BVS (Prvek)
Strom.java Implementace BVS Obsahuje metodu: –pridejPrvek(Prvek) Najde vhodnou pozici v BVS a přidá Prvek –Dále metody pro porovnávání dvou prvků boolean Porovnej(Prvek, Prvek) Prvek Porovnej_Mensi(Prvek, Prvek) Prvek Porovnej_Vetsi(Prvek, Prvek)
Text.java Analýza textu Obsahuje metody: –Strom zpracujText(BufferedReader) Rozděluje text na slova slova = radka.split("[^A-Za-zÁÄÉËÍÓÖÚÜÝßáäéëíóöúüýČčĎďĚ켾ŇňŐőŘřŠšŤťŮůŰűŽž]+") A rovnou vrací celý BVS –Metody pro procházení stromem, vyhledávání a výpisu do HTML Procházení stromem a vyhledávání => zásadně metoda InOrder –Jednoduchost, prochází stromem podle abecedy
Gui.java Klientská třída Grafické prostředí
Zhodnocení Výhody –Jednoduchost –User-friendly Nevýhody –Pomalé zpracování –Opětovné načítání ze souboru (ne z paměti)
The end