PROGRAM ZA SPREGANJE JAPONSKIH GLAGOLOVssljskg2s/2019_20/Vrecar_Matej/Vrecar... · 2020. 4. 8. ·...
Transcript of PROGRAM ZA SPREGANJE JAPONSKIH GLAGOLOVssljskg2s/2019_20/Vrecar_Matej/Vrecar... · 2020. 4. 8. ·...
Spregalnik japonskih glagolov Matej Vrečar
1
PROGRAM ZA SPREGANJE JAPONSKIH GLAGOLOV
Maturitetna seminarska naloga pri informatiki
Avtor: Matej Vrečar Mentorica: Helena Starc Grlj
Šolsko leto: 2019/2020
Spregalnik japonskih glagolov Matej Vrečar
2
POVZETEK Ustvaril sem preprost program za spreganje japonskih glagolov. Uporabniku omogoča, da v
vhodno vrstico vpiše glagol in s pomočjo pritiska na razne gumbe spreminja njegovo obliko v izhodni vrstici. Za funkcionalnost sem uporabil Python, za grafični vmesnik pa sem uporabil Pythonov modul tkinter.
ABSTRACT I have created a simple program for conjugating japanese verbs. It allows the user to input a
verb into an input line and get different forms of the verb by pressing various buttons. For the functional side of the program i used Python and for the graphical user interface i used the tkiter module.
KLJUČNE BESEDE Python, tkinter, japonščina, glagol
Spregalnik japonskih glagolov Matej Vrečar
3
Kazalo
1 Uvod .................................................................................................................................... 4
1.1 Predstavitev problema ................................................................................................ 5
1.2 Uporabljena strojna oprema ....................................................................................... 5
1.3 Uporabljena programska oprema ............................................................................... 5
2 Teoretični del ....................................................................................................................... 6
2.1 Opis japonskih glagolov ............................................................................................... 6
2.2 Potrebno znanje .......................................................................................................... 7
2.3 Ideja za rešitev problema ............................................................................................ 8
3 Praktični del ......................................................................................................................... 9
3.1 Opis rešitve in koda programa .................................................................................... 9
3.2 Navodila za uporabo programa ................................................................................. 17
4 ZAKLJUČEK ......................................................................................................................... 17
4.1 Ocena dela ................................................................................................................. 17
4.2 Možne izboljšave ....................................................................................................... 17
4.3 Razporeditev časa ...................................................................................................... 18
5 VIRI..................................................................................................................................... 19
Kazalo slik Slika 1: Predviden izgled ............................................................................................................. 7 Slika 2: Diagram poteka .............................................................................................................. 8 Slika 3: Izgled programa .............................................................................................................. 9 Slika 4: Funkcija za prepoznavanje ........................................................................................... 10 Slika 5: Funkcija za particip ....................................................................................................... 10 Slika 6: Funkcija za sedanjik ...................................................................................................... 11 Slika 7: Funkcija za a-obliko ...................................................................................................... 11 Slika 8: Funkcija za negacijo sedanjika ...................................................................................... 12 Slika 9: Funkcija za negirano obliko velelnika ........................................................................... 12 Slika 10: Funkcija za negirano obliko preteklika ....................................................................... 13 Slika 11: Funkcija za pretekliško obliko .................................................................................... 13 Slika 12: Funkcija za preteklik ................................................................................................... 14 Slika 13: Funkcija za velelnik ..................................................................................................... 15 Slika 14: Iniciacija Tkinter okna ................................................................................................. 15 Slika 15: Ustvarjanje radio gumba ........................................................................................... 16 Slika 16: Dodajanje gumbov ..................................................................................................... 16 Slika 17: Primer uporabe programa ......................................................................................... 17
KAZALO GRAFOV Graf 1: Razporeditev časa 18
Spregalnik japonskih glagolov Matej Vrečar
4
STVARNO KAZALO
glagol, 2, 6, 7, 9, 17
japonščina, 2
Python, 2, 5, 9
tkinter, 2, 7, 9
Spregalnik japonskih glagolov Matej Vrečar
5
1 Uvod
1.1 Predstavitev problema V prostem času se rad učim japonščino. Kot začetnik velikokrat naredim kakšno
napako v pregibanju besed, predvsem glagolov. Za zmanjšanje števila napak in za splošno možnost preverjanja pravilnosti mojih spreganj, sem se odločil narediti program, ki bo glagole spregal v ne vseh, ampak v vseh bolj uporabljenih oblikah v formalnem in neformalnem stilu.
Vse skupaj bom naredil v programskem jeziku Python. Za izdelavo grafičnega vmesnika bom uporabil v Pythonu že vgrajen modul Tkinter.
1.2 Uporabljena strojna oprema
Tabela 1: Uporabljena strojna oprema
Računalnik Lenovo Yoga 2 13
Procesor Intel Core i5-4200u - 2.6GHz
RAM 8GB DDR3
Grafična kartica Intel HD graphics 4400
Zaslon 33,8cm 1080x720
1.3 Uporabljena programska oprema
Tabela 2: Uporabljena programska oprema
Operacijski sistem Windows 10
Brskalnik Google Chrome
Programski jezik Python 3.6
Urejevalnik kode Geany/atom
Prenos datotek na strežnik FileZilla 3.46.3
Urejevalnik besedila Word 2010
Program za zajemanje ekranskih slik
Spregalnik japonskih glagolov Matej Vrečar
6
2 Teoretični del
2.1 Opis japonskih glagolov Japonski jezik ima tri različne vrste glagolov.
Ichidan – Glagoli, ki se končajo na –iru ali –eru
Godan – Glagoli, ki se končajo na –ku, -gu, -u, -su, -tsu, -nu, -mu, ali –ru
Nepravilni glagoli – Glagoli, ki se končajo na –iru ali –eru, vendar se spregajo kot godan glagoli ter glagola suru in kuru. Glagolom spreminjamo oblike tako, da jim spreminjamo končnice. Sklon, spol in
število ne obstajajo. Velika posebnost pri japonskih glagolih je tudi ta, da imajo vsi formalno in neformalno obliko.
Glagole bom spregal v sedanjiku + prihodniku (oblike so iste), v pretekliku in v velelniku. Vse
bo seveda možno v formalni ter neformalni obliki ter tudi v zanikani/negirani obliki. Spreganje ichidan glagolov je preprostejše od spreganja godan glagolov. V večini primerov
odstranimo končni –ru ter dodajamo končnice. Vse oblike, v katerih bo znal spregati moj program so prikazane v spodnji tabeli. Za primer je uporabljen glagol taberu, ki pomeni jesti.
Tabela 3: Spreganje ichidan glagolov
Oblika Neformalno Formalno
sedanjik taberu tabemasu
negacija sedanjika tabenai tabemasen
preteklik tabeta tabemashita
negacija preteklika tabenakatta tabemasen deshita
velelnik tabero tabete
negacija velelnika taberu na tabenaide
V naslednji razpredelnici bodo prikazane še oblike godan glagolov. Za primer je uporabljen
glagol matsu ki pomeni čakati.
Tabela 4: Spreganje godan glagolov
Oblika Neformalno Formalno
sedanjik matsu machimasu
negacija sedanjika matanai machimashita
preteklik matta machimashita
negacija preteklika matanakatta machimasen deshita
velelnik mate matte
negacija velelnika matsu na matanaide
Za bolj podroben vpogled v različne oblike glagolov priporočam spletno stran
http://www.japaneseverbconjugator.com/ ai pa knjigo »Oxford Japanese Grammar and Verbs«
Spregalnik japonskih glagolov Matej Vrečar
7
2.2 Potrebno znanje Najprej bom potreboval način, da v Tkinter-ju dobim vnosno vrstico, kamor bo uporabnik
unesel želeni glagol in doda string glagola v spremenljivko. To bom naredil z »tkinter entry widget« in StringVar.
Program bo moral vsebovati tudi funkcijo, ki bo prepoznala, za katero vrsto glagola gre. Najprej bi izločil nepravilne glagole, nato pa bi z iteracijo zadnjih treh črk povedal za katero vrsto glagola gre.
Program bi potem potreboval še funkcije, ki bi glagolom dodajale pravilne končnice glede na to, kateri gumb bo pritisnjen. To bo pri glagolih prve skupine lažje, saj za tvorbo samo umaknemo končni –ru in dodamo primerne končnice. Pri glagolih druge skupine pa bo treba zadnji zlog spremeniti, če bomo hoteli dobiti formalno obliko glagola. Pri vsem tem bo pomembno znanje branja posameznih delov stringa ter razkosanje in lepljenje stringa.
Vse funkcije bom potem dodal k posameznim gumbom, na katerih bo pisalo, za katero obliko so namenjeni. To bom lahko naredil s Tkinter button widgetom, ki je razmeroma preprost za uporabo. Gumbu lahko spreminjam tudi velikost, debelino okvirčka ter barvo. Odločil sem se, da bom za izbiro med formalno in neformalno obliko uporabil RadioButton, saj če bi imel gumbe za vse oblike, bi jih bilo preveč. Uporabil bom RadioButton, kjer bo uporabnik izbiral med formalno ter neformalno obliko. Tudi ta funkcija je v Tkinterju in deluje na princip spreminjanja vrednosti spremenljivke s pomočjo izbire.
Na koncu bo program potreboval samo še vrstico, kjer se bo glagol pojavil v novi, spregani, obliki.
Slika 1: Predviden izgled
Spregalnik japonskih glagolov Matej Vrečar
8
2.3 Ideja za rešitev problema
Slika 2: Diagram poteka
Spregalnik japonskih glagolov Matej Vrečar
9
3 Praktični del
3.1 Opis rešitve in koda programa Celoten funkcionalni del programa je napisan v programskem jeziku Python. To sem dosegel
s preprostimi funkcijami, ki sem jih povezal z gumbi. To sem dosegel z modulom tkinter. Ta je izmed vseh še najbolj lahek za uporabo.
V tem delu bom predstavil kodo mojega programa. Začel bom s predstavitvijo funkcij, ki ga
sestavljajo. Večina jih deluje na podoben način, to je s spreminjanjem nizov.
To je prva funkcija, ki se nahaja v mojem programu. Ta potrebuje nekaj obrazložitve. Kot že
omenjeno, se japonski glagoli spregajo v skupinah. Zato je program potreboval način, da bo razlikoval skupine med seboj. Ker pa obstajajo izjeme, ki jih vidimo v prvem if stavku funkcije in ker se po delitvi v 2 skupini glagoli delijo še naprej, dobimo vse skupaj 9 različnih skupin za spreganje glagolov. Za vsako skupino sem tako določil pogoj, kateremu mora glagol zadoščati, da je dodeljen tej skupini. Funkcija vrne številko skupine v kateri je glagol.
Slika 3: Izgled programa
Spregalnik japonskih glagolov Matej Vrečar
10
Naslednja funkcija vzame parameter glagol. Nato s pomočjo »if« stavkov in funkcijo za prepoznavanje ustvari obliko za deležnik. Glagolom prve skupine samo odstrani zadnji dve črki, med tem ko glagolom od 2. do 9. skupine dodaja ustrezno končnico z »i«.
Slika 5: Funkcija za particip
Slika 4: Funkcija za prepoznavanje
Spregalnik japonskih glagolov Matej Vrečar
11
Naslednja funkcija tvori glagolov sedanjik. Za glagole v neformalni obliki je to zelo lahko, saj je
ta enaka slovarski. Nato sta posebej dodana glagol »suru« in »kuru«, ki sta nepravilna. Na koncu pa imamo samo še formalno obliko glagola. Tu dodamo končnico »masu« k deležniški obliki glagola.
Slika 6: Funkcija za sedanjik
Sledi funkcija za a-obliko glagola. Ta je koristna samo pri glagolih od 2. do 9. skupine, saj je prva ne potrebuje. Deluje na zelo podoben princip kot deležniška funkcija. Za razliko od te, pa ta funkcija na konec glagolov dodaja končnice z »a«.
Slika 7: Funkcija za a-obliko
Sledi funkcija za negiranje sedanjika glagolov. Začne se z »vrsta == 2«, kar nakazuje na
formalno obliko glagola. Ta je najpreprostejša za tvorbo saj na deležniško obliko dodamo končnico »masen«. Naslednji so neformalni glagoli prve vrste, saj tudi pri teh zgolj dodamo končnico na deležniško obliko. Za razliko od formalne, bo ta končnica »nai«. Sledijo vse oblike za nepravilna glagola. Zadnja je neformalna oblika glagolov od 2. do 9. skupine. Pri teh vzamemo njihovo »a-obliko« ter na njo dodamo »nai«.
Spregalnik japonskih glagolov Matej Vrečar
12
Slika 8: Funkcija za negacijo sedanjika
Naslednja je funkcija za negacijo velelnika. Ta je zelo preprosta, saj se vse skupine naredijo enako. Če je glagol neformalne oblike, dodamo na slovarsko obliko končnico »na«, v primeru formalne oblike pa na negirani sedanjik glagola dodamo »de«.
Slika 9: Funkcija za negirano obliko velelnika
Sledi funkcija za negacijo preteklika. Začne se s formalno obliko. Pri tej na deležniško obliko glagola dodamo končnico »masendeshita«. Nato sledijo nepravilni glagoli. Na koncu so vsi neformalni glagoli. Tu uporabimo funkcijo za negacijo sedanjika, saj potrebujemo glagol z »nai« na koncu. Temu bomo »i« odsekali, in namesto njega dodali »katta«. Tako imamo glagol, ki se konča z »nakatta«.
Spregalnik japonskih glagolov Matej Vrečar
13
Slika 10: Funkcija za negirano obliko preteklika
Naslednja je funkcija za pretekliško obliko glagola. Ta ne spremeni glagola v preteklik vendar je pomožna funkcija. Ime je morda malo čudno, daj se ista funkcija uporabi tudi pri velelnikih za glagole od 2. do 9. skupine. Ta funkcija najprej obravnava glagole 3. in 8. skupine. Tem odstrani zadnji dve črki in na njuno mesto postavi »n«. Sledijo glagoli 5. skupine. Tem zadnjo črko zamenja s »t«. Za četrto skupino samo spremeni glagol v njegovo deležniško obliko. Za 6. in 9. skupino odstrani zadnji dve črki, ter na njuno mesto postavi »i«. Sledijo glagoli 2. skupine, katerim odstranimo zadnji dve črki ter ju nadomestimo s »t«. Na koncu je še pogoj za glagole 1. skupine, katerim zgolj odstranimo zadnji 2 črk.
Slika 11: Funkcija za pretekliško obliko
Ostali sta nam samo še dve daljši funkciji za glagole. Prva je funkcija za preteklik. Začne z glagoli v formalni obliki, katerim na njihovo deležniško obliko doda končnico »mashita«. Naslednji so neformalni glagoli 1. skupine. Tem na deležniško obliko doda končnico »ta«. Sledijo ostali glagoli. Glagolom od 2, 4, 5, 6, in sedme skupine na pretekliško obliko doda »ta«, ostalim pa »da«. Sledijo samo še nepravilni glagoli.
Spregalnik japonskih glagolov Matej Vrečar
14
Slika 12: Funkcija za preteklik
Zadnja funkcija je funkcija za velelnik. Začne z neformalnimi glagoli prve vrste. Tem na
deležniško obliko doda končnico »ro«. Sledijo formalni glagoli iste vrste. Tem na deležniško obliko doda končnico »te«. Naslednji so formalne oblike glagolov 2, 4, 5, 6, in 7 oblike. Tem na pretekliško obliko doda »te«. Preostalim glagolom na pretekliško obliko doda »de«. Manjka še neformalna oblika glagolov od 2. do 9. skupine. Tem odstrani zadnjo črko ter jo nadomesti z »e«. Na koncu so še nepravilni glagoli.
Spregalnik japonskih glagolov Matej Vrečar
15
Slika 13: Funkcija za velelnik
To so vse funkcije ki sestavljajo funkcionalni del programa. Sedaj si bomo pogledali še, kako je narejen grafični vmesnik v Tkinterju.
Tako sem ustvaril okno ter ga shranil v »window«. Dodal sem mu naslov ter velikost.
Slika 14: Iniciacija Tkinter okna
Naslednja stvar je »Entry«. To sem shranil v spremenljivko w. Ta spremenljivka bo služila kot prvi argument vseh funkcij, ki so bile predstavljene do sedaj.
Spregalnik japonskih glagolov Matej Vrečar
16
Slika 15: Ustvarjanje radio gumba
To so zadnje vrstice programa. V njih ustvarim 6 različnih gumbov, na katere potem dodam funkcije definirane zgoraj. Parametri funkcij so w, ki je v našem primeru povezan na vhodno vrstico ter vrednost spremenljivke selected, ki je prilepljena na radio gumb.
Slika 16: Dodajanje gumbov
Spregalnik japonskih glagolov Matej Vrečar
17
3.2 Navodila za uporabo programa Ob zagonu programa se nam odpre okno, ki ga lahko vidimo na zgornji sliki. V belo osvetljeni
kvadratek v levem zgornjem kotu programa uporabnik vnese željeni glagol. Ta mora biti vnesen v latinici saj sem imel nekaj težav z implementacijo japonske pisave v python. Več o tem v predelku za izboljšave. Po vnosu glagola se uporabnik obrne na radio gumba. To sta gumba kjer uporabnik izbere »Neformalna oblika« ali pa »Formalna oblika«. Po izbiri lahko potem izbere katero obliko glagola si želi ogledati. Program je narejen tako, da ga ni potrebno ponovno zagnati če želimo drugo obliko glagola. Preprosto se nam v izhodni vrstici izpiše druga željena oblika glagola. Prav tako ni potrebno ponovno zagnati programa, če želimo spregati drug glagol. Iz vnosne vrstice preprosto zbrišemo prvi glagol ter ga zamenjamo z drugim.
Slika 17: Primer uporabe programa
4 ZAKLJUČEK
4.1 Ocena dela Program se mi zdi narejen v redu. Načeloma se tudi sklada z mojimi prvotnimi cilji. Na
začetku nisem bil prepričan, da sem bil zmožen narediti tak program. Sedaj vidim, da sem bil problemu kos. Prav tako sem se tekom dela tudi veliko naučil.
4.2 Možne izboljšave Kljub zadovoljstvu sem do programa kritičen. Zdi se mi, da lahko dodam kar nekaj stvari da ga
izboljšam. Prvi dodatek, ki bi ga dodal, je ta, da bi lahko v program pisal glagole v japonski katakani in kanjiju. To sem sicer od začetka poskušal uvesti, a problemu žal nisem bil kos. Zdi se mi, da bi ta možnost omogočala veliko boljšo možnost za učenje jezika, saj bi ob vnosu vadil pisanje in ob branju vadil japonsko izgovorjavo.
Spregalnik japonskih glagolov Matej Vrečar
18
Druga izboljšava je sam grafični umesnik. Program je zgrajen v Tkinterju. Ta je, kot že omenjeno, zelo preprost. K preprosti uporabi pa zato spada tudi preprost in tudi nekoliko starinski izgled. Za izboljšanje in modernizacijo izgleda bi lahko uporabil modul Kivy, ki pa je bolj kompleksen.
Tretja izboljšava je razširitev na druge platforme. Trenutno je program dostopen le računalnikom s pythonom. Lahko ga prepisal in ga naredil kompatibilnega še za android in iOS, kar bi omogočilo širok, lahek in tudi bolj prenosen dostop do orodja.
Četrta izboljšava je že zelo kompleksna a jo bom kljub temu dodal. Ta izboljšava je povezava moje aplikacije s spletnim prevajalnikom, ki bi uporabniku omogočal ne le spreganje glagola ampak tudi prevod če glagola ne bi poznal.
4.3 Razporeditev časa
Na naslednji sliki je prikazana groba ocena razmerja časa, ki sem ga potreboval za izdelavo
vsega potrebnega. Z izdelavo spletne strani sem začel že decembra. Ta mi je vzela manj kot četrtino vsega časa. Rekel bi, da je izdelava dokumentacije terjala enako količino časa, kot izdelava spletne strani. Izobraževanje za nalogo in izdelava naloge same pa sta mi vzela kar precej več časa.
izobraževanje
izdelava programa
izdelava spletne strani
izdelava dokumentacije
Graf 1: Razporeditev časa
Spregalnik japonskih glagolov Matej Vrečar
19
5 VIRI
Python3 dokumentacija (online), dostopano 20.2.2020, 12:38, dostopno na https://docs.python.org/3/
Python3 w3schools (online), dostopano 21.2.2020, 16.36, dostopno na https://www.w3schools.com/python/
Bunt,JI.: Oxford Japanese Grammar and Verbs. . Bungay, Oxford, I(2003)