5. Ülesanded: sõnastik
Eelmisel korral kasutasid sõnaraamatu loomiseks järjendeid. Seekord kasuta selleks sõnastikku.
Teooriapeatükid:
Ülesanne 1
Loo kaks sõnastikku (inglise, itaalia) ja anna neile väärtused (nagu järjendite ülesandes). Miks on seekord ainult kaks sõnastikku?
Lisa sõnastikku järgmised sõnad:
- eesti - auto, itaalia - auto, inglise - car
- eesti - koer, itaalia - cane, inglise - dog
- eesti - kass, itaalia - gatto, inglise - cat
- eesti - tere, itaalia - ciao, inglise - hello
Ülesanne 2
Tõlgi (väljasta ekraanile) järgmised sõnad:
- tere -> inglise k, itaalia k
- auto -> itaalia k
- kass - > inglise k
- üks -> itaalia k
- kolm -> inglise k
Ülesanne 3
Loo juurde kaks uut sõnastiku (e_inglise, e_itaalia), mille võti ei ole mitte eesti keeles, vaid vastavalt kas inglise või itaalia keeles. Lisa sõnastikku ka kõik eelmises sõnastikus olevad sõnad.
Ülesanne 4
Lisa kõikidesse sõnastikesse järgmised sõnad:
- headaega - goodbye - arrivederci
- pott - pot - pentola
- sõnastik - dictionary - dizionario
Tõlgi (väljastage ekraanile) järgmised sõnad:
- üks -> itaalia
- ciao - > eesti
- dog -> itaalia
- pentola - inglise
Ülesanne 5. Morse
Morsetähestik on koodikomplekt, kus igale tekstisümbolile vastab pikkadest ja lühikestest signaalidest koosnev kood (vt. https://et.wikipedia.org/wiki/Morse). Ilmselt on kõigile teada appikutse "SOS" kood: "... --- ..." ehk kolm lühikest signaali ("S"), kolm pikka ("O") ja taas kolm lühikest. Lühikesi signaale tähistatakse punktide, pikki aga kriipsudega.
Vajalik on sõnastik, kus on kirjas morse koodid (iga elemendi võtmeks tähistatav sümbol, väärtuseks koodi järjend punktidest ja kriipsudest). Aja kokkuhoiu mõttes võid kasutada sellist rida:
tahestik = {"a":".-", "b":"-...", "c":"-.-.", "d":"-..", "e":".", "f":"..-.", "g":"--.", "h":"....", "i":"..", "j":".---", "k":"-.-", "l":".-..", "m":"--", "n":"-.", "o":"---", "p":".--.", "q":"--.-", "r":".-.", "s":"...", "t":"-", "u":"..-", "v":"...-", "w":".--", "x":"-..-", "y":"-.--", "z":"--.."}
Koosta programm, mis programmi käivitamisel tervitab kasutajat nii tavakeeles kui morse koodina, lubab seejärel kasutajal sisestada sõnu ning teisendab need sümbolhaaval morsetähestikku (lisades iga sümboli järele tühiku). Sõnastik ei pruugi sisaldada kõikvõimalikke märke, seega tuleb iga sümboli puhul kontrollida, kas see üldse esineb sõnastikus. Tähe registrit ehk suur- ja väiketähti ei eristata. Samuti tuleb otsustada, mida ette võtta nende tähtedega, mida inglise tähestikus pole (näiteks "õ", "ä" jne): ignoreerida või mõned neist teisendada (näiteks "õ" -> "o" vms).
Programm võiks küsida kasutajalt sõnu kas mingi arv kordi või töötada lõpmatult, kuni kasutaja sõna ei sisesta, vaid vajutab lihtsalt sisestusklahvile.
Ülesanne 6. Salakiri
Vahel on vaja saata sõnumeid nii, et kõrvalised inimesed, kes teksti näevad, ei mõistaks selle sisu. Teksti krüpteerimiseks on kasutatud erinevaid võtteid. Üks lihtsaimatest viisidest on asendada iga sümbol suvalise teise sümboliga (näiteks kõik tähed "A" asendame tähega "K", tähed "B" tähega "R" jne).
Koosta programm, mis sisaldab sõnastikku koodidega ning mis suudab kasutaja poolt sisestatud teksti selle alusel kodeerida ja dekodeerida salakirja. Leia mingi sobiv moodus, kuidas kasutaja saaks valida teksti krüpteerimise ja dekrüpteerimise vahel.
Täiendusi:
- Selliste tekstide "lahtimuukimiseks" on erinevaid võimalusi. Näiteks on igal keele oma tähtede esinemissagedus, seega võime pikema teksti puhul loendada, mitu korda mingit asendussümbolit tekstis esineb, leida esinemissagedus kõigi tähtede hulgas ning pakkuda sobivaid "õigeid" sümboleid selle asemel, näiteks kõige sagedamini esineb eesti keeles a-täht (ca 12% kõigist tähtedest), sellele järgnevad tähed "e", "i", "s" jne, otsi internetist eesti keele tähtede esinemissagedusi. Mõtle, kuidas saaks algoritmi täiendada, et teksti dekrüpteerimine oleks raskem.
Ülesanne 7
Koosta programm "Telefoniraamat", mis lubab kasutajal nime järgi otsida vajalikku telefoninumbrit või (kui sellist kasutajanime andmete hulgas pole) uut numbrit lisada (muudatused säilivad küll vaid programmi töötamise ajal). Programm töötab, kuni kasutaja enam nime ei küsi, vaid vajutab sisestusklahvi. Kasulik oleks hoida kasutajale vajalikke telefoninumbreid sõnastikus. Kasutusmugavuse mõttes on mugavam, kui kasutaja võib nime sisestada ka väiketähtedes e. programmis ei arvestataks tähe registriga: suuri ja väikseid tähti ei eristataks.
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/