JAVA ISESEISVAKS ÕPPIMISEKS MÕELDUD TEEK

Suurus: px
Alustada lehe näitamist:

Download "JAVA ISESEISVAKS ÕPPIMISEKS MÕELDUD TEEK"

Väljavõte

1 TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Kaspar Suurkaev IAPB JAVA ISESEISVAKS ÕPPIMISEKS MÕELDUD TEEK Bakalaureusetöö Juhendaja: Martin Rebane MSc Tallinn 2019

2 Autorideklaratsioon Kinnitan, et olen koostanud antud lõputöö iseseisvalt ning seda ei ole kellegi teise poolt varem kaitsmisele esitatud. Kõik töö koostamisel kasutatud teiste autorite tööd, olulised seisukohad, kirjandusallikatest ja mujalt pärinevad andmed on töös viidatud. Autor: Kaspar Suurkaev

3 Annotatsioon Antud dokument annab ülevaate Java teegist, mille eesmärk on anda inimestele lisa viis kuidas iseseisvalt arendada oma programmeerimis oskusi Java programmeerimis keeles. See on disainitud selliselt, et kasutaja saaks enda poolt valitud arenduskeskkonnas iseseisvalt läbi töödelda mitmeid erinevaid programmeerimis ülesandeid. See teek ei nõua väliseid faktoreid, et kontrollida kasutaja lahenduse valiitsust, vaid kontrollib neid teegi enda sees. Ülesanded annavad võimaluse selle teegi kasutajale lahendada mitmeid erinevas stiilis probleeme. Need võimaldavad kasutajal testida ja arendada oma oskusi Java programmeerimis valdkonnas iseseisvalt, saades tagasi sidet teegilt endalt oma lahenduse korrektsuse üle. See teek on eelkõige mõeldud inimestele, kes on suhteliselt uued Java programmeerimis keeles ning on ideaalis läbinud mõningad Java algajate kursused. Omades baas teadmisi progarmeerimisest, on kasutajal võimalik kasutada seda teeki, et arendada oma oskusi, eriti pannes rõhku sellele kuidas õppida ja ära harjuda kasutama Objekt Orineteeritud Programmeerimis põhitõdesid. Lõputöö on kirjutatud Eesti keeles keeles ning sisaldab teksti 41 leheküljel, 36 peatükki, 4 joonist, 1 tabel. 3

4 Abstract Programming Library for Independent Study of Java Language This document will give an overview of a Java Library, which purpose is to give its user an additional way to study and learn Java programming language. It is meant to be an independent tool, requiring only the Library with a project that goes with it and an Integrated Development Environment (IDE) to work with. While many other solutions teach Java programming language through online coding in browser and tutorials, this is meant to be an offline tool, giving the user a chance to program and use IDE on their own, potentially without external help. The exercises in this Library will allow the user to test their coding skills in multiple different ways. This Library is mostly meant for people who are quite new to the programming and have finished few basic courses in Java programming. With the basic knowledge of programming, this Library should help them to learn more about little bit more complex parts of the Java programming language, especially how to start using Object Orientated Programming (OOP) more optimally and make use of the benefits that OOP gives them. By the end of it, if user has finished all exercises given in this Library, they should have more experience in how to use OOP and feel more comfortable with working with more than just most basics of the Java programming language. The thesis is in Estonian and contains 41 pages of text, 36 chapters, 4 figures, 1 table. 4

5 Lühendite ja mõistete sõnastik Access-modifier Constructor enum Getter IDE Interface JOOP main method Object First Programming Package-private Programming First Puzzle Reflection Teek Ligipääsu piiraja Konstruktor meetod, mida kutsutakse klassi loomisel välja Enumeraator klassi tüüp, mis sisaldab ainult konstant muutujaid. Meetod, mis tagastab välja väärtuse. Integreeritud arenduskeskkond, inglise keeles Integrated Development Environment Liides Java Objekt-Orienteeritud Programmeerimine Java-s spetsiaalne meetod, mis tähistab koodi kõige esmast jooksutamist kohta, kust kood teab alata. Objekt enne programmeerimine õpetamise viis, kus koos lihtsamate programmeerimisvõttetega õpetatakse koos ja objekte tundma, haldama, ja kasutama. Pakketi-privaatne Programmeerimine enne õpetamise viis, kus esmalt õpetatakse lihtsaid programmeerimisvõtteid ja alles seejärel objekte. Pusle viitab pusle probleemi lahendus metoodikale. Peegeldus metoodika, mille abil saab kood ennast uurida ja analüüsida koodi jooksutamise käigus Inglise keeles Library 5

6 Sisukord 1 Sissejuhatus Teegi loomis metoodika Lõpptulemus Programmeerimise õpetamine Projekti õpetusmeetodid Objekt esmalt programmeerimine metoodika kasutus Probleemi lahendamine ja pusle meetodika Sarnased õppe-lahendused Käesoleva lõputöö kasulikkusja erinevus teistest õppelahendustest Lõputöö teegi ja projekti struktuur ning ülesehitus Teegi struktuur Projekti Struktuur Koodi töötamise töövoog Sohitegemise elementaarne kaitse Juurdepääsu piirajad Reflection metoodika vastane baaskaitse Ülevaade selles lõputöös esinevatest ülesannetest Objektidest arusaamine Soojendusülesanne Ülesande kirjeldus ja potentsiaalne lahendus Ülesanne: Kaustad Ülesande kirjeldus ja potentsiaalne lahendus Ülesanne: Šiffer Ülesande kirjeldus ja potentsiaalne lahendus Ülesanne: Sorteerimine Ülesande kirjeldus Ülesanne: Pusle Esimese alamülesande kirjeldus ja potentsiaalne lahendus

7 4.6.2 Teise alamülesande kirjeldus ja potentsiaalne lahendus Ülesanne: Pokker Kiire ülevaade ülesandes kasutavatest pokkeri kombinatsioonidest Ülesande kirjeldus Kokkuvõte Eesmärgid Tulemused...39 Kasutatud kirjandus

8 Jooniste loetelu Joonis 1. Teegi lihtsustatud struktuur...18 Joonis 2. Kasutaja projekti esialgne struktuur...20 Joonis 3. Projekti töövoog, kui kasutaja selle käivitab...21 Joonis 4. Pusle ülesande objektide lihtsustatud struktuur

9 Tabelite loetelu Tabel 1. Juurdepääsu võtmesõnade piiramise tasemed

10 1 Sissejuhatus Lõputöö eesmärk on luua inimeste jaoks, kes on endale selgeks teinud Java programmeerimiskeele põhitõed ja soovivad jätkata oma oskuste lihvimist, Java library (teek) koos sellega kaasas käiva projektiga. See projekt ja sellega kaasas käiv library annaks võimaluse Java keele õppijale lisada oma õppevahendite hulka iseseisvalt lahendamiseks mõeldud toote. Siin töös käsitletav projekt annab selle kasutajale võimaluse iseseisvas korras ilma väljastpoolt tuleva tagasisideta arendada oma Java programmeerimisoskusi. Projekt annab selleks kasutajale 6 ülesannet. Need ülesanded on ehitatud üles kahe erineva disaini peal. Esimene disainiidee on proovida kasutajale selgitada ja valgustada teatud Java Objekt-Orienteeritud Programmeerimise (JOOP) põhitõdede kohta. Teine idee on laiemas perspektiivis anda kasutajale üldisem probleem lahendada, mille lahendus hõlmaks erinevate JOOP ja edasijõudnumate lahenduste kasutamist. Tähtsal kohal on kasutajas tekitada suurem mugavustunne kasutada, hallata ja luua ise objekte. See oskus aitab kaasa tulevastes programmeerimisülesannetes, kuna iga vähegi suurem tarkvara projekt kasutab tihedalt JOOP-e kasutamist. Omandades neid oskusi ja saades juurde teadmisi programmeerimises, tulevad meie tööturule suurema kogemustepagasiga ning oskuslikumad programmeerijad. See on samuti aspekt, mida see lõputöö soovib saavutada oma lõpplahenduse pakkumisega kasutajatele. 1.1 Teegi loomis metoodika Selles lõputöös on vaja luua teek, mis omaks endas ülesandeid kasutajatele. Selle jaoks, et seda teeki luua on, kasutatakse Java 8-t. See on piisavalt uus versioon sellest programmeerimiskeelest, et omada häid ja kasulike funktsionaalsusi, kuid mitte liiga vana ega liiga uus, et see ei näeks programmeerimise tööturul kasutust. 10

11 Esmane eesmärk on välja mõelda ja disainida ülesannete ideed. Need ideed peaksid olema reaalelulise väljundiga, et kasutajal oleks lihtsam seostada oma koodi reaalse maailmaga. Selliselt on kasutajal lihtsam aru saada talle etteantud ülesannete eesmärkidest ning see aitab tal paremini mõista, kuidas kasutada JOOP põhimõtteid. Kui ideed on valmis, siis järgmisena hakatakse looma neid väljamõeldud ülesandeid. Selle jaoks tehakse valmis teegi baasstruktuur ja loogika, mis lubaksid selle teegi struktuuri sisse lisada uusi ülesannetega seotud objekte. Niimoodi on hea alusstruktuur olemas, mis lubab kasvada projektil ilma, et hiljem peaks suuri muudatusi kogu projekti peal tegema. Peale seda, kui ülesanded on loodud ning teek on olemas, luuakse projekt, kuhu sisse lisatakse lihtne ja algeline struktuur ülesannete jaoks. See struktuur on mõeldud kasutajale sisendi ja väljundi korrektseks vormistamiseks. Selle projekti hulgas on ka olemas selle jaoks loodud teek ning dokumentatsioon, mida oleks võimalik läbi veebilehitseja või läbi oma arenduskeskkonna kasutada. Kui kõik need osad on loodud, siis on selle lõputöö praktiline osa tehtud. 1.2 Lõpptulemus Lõpptulemusena peab valmima esmalt teek, mis omab endas kõike vajalikku ülesannete etteandmiseks, lahendamiseks ja kontrollimiseks. Samuti peab eksisteerima ka projekt, mida oleks võimalik kasutajatele edasi anda, et nad saaksid seda loodud teeki kasutada ja enda oskusi arendada. Selles avalikus projektis peab olema ka dokumentatsioon, mida kasutaja saaks kasutada, et saada täpsemat ülevaadet talle kättesaadavatest objektidest ja nende sisust, mida tal ülesannete lahendamisel vaja on. 11

12 2 Programmeerimise õpetamine 2.1 Projekti õpetusmeetodid Tänapäevases tehnoloogilises keskkonnas on aina kasvav vajadus tarkvara arendajate järgi [1] [2]. Kuna nõudlus on kõvasti suurem kui saadavus, siis on aina tähtsamal kohal motiveerida inimesi tulema ja õppima, kuidas programmeerida ja tarkvara lahendusi luua. Seetõttu on tähtsal kohal ka leida viise, kuidas hästi inimestele seda valdkonda tutvustada ja neile selgeks teha programmeerimise põhitõdesid Objekt esmalt programmeerimine metoodika kasutus Kaks laialdasema definitsiooniga programmeerimise õpetamise viisi on Programming First (Programmeerimine esmalt) ning Object First Programming (objekt esmalt programmeerimine) [4]. Need on kaks erinevat õpetusviisi, kus esimeses õpetatakse alguses ainult programmeerimise algteadmisi ja siis minnakse edasi keerulisemate kontseptsioonide peale [4]. Teine õpetusviis võtab aga prioriteediks koos algteadmistega õpetada ka samal ajal objektide kasutamist. Kuigi Object First meetoodika on mõnevõrra keerulisem viis alustada õpimist [3], siis on sellel siiski omad eelised ning sellega metoodika ja OOP-st arusaamise jaoks on tehtud erinevaid uurimusi[4] [5]. Nendes on välja toodud klassidest ja objektidest arusaamise tähtsus ning põhjendatud selle teadmise vajalikkust programmeerijale. Tänapäevases tarkvaraarenduse sektoris on väga keeruline ilma OOP-d mõistmata hakkama saada ning seetõttu on ka Object First metoodika näidanud aina suuremat populaarsuse kasvu. See lõputöö põhineb osaliselt Object First lähenemisel. Kuna siin lõputöös saavutatav eesmärk on anda kasutajatele lisa õppevahend, mis hõlmab suures koguses objektidega suhtlust, siis saab väita, et on kasutusel mitmeid Object First metoodika lähenemisi. Samas ei saa seda lugeda täielikult Object First lähenemist jälgivaks lõpptulemiks, sest 12

13 selle teegi kasutusel on tehtud eeldus, et kasutajad on juba teadlikud baasprogrammeerimisest ning neil on esamane arusaam objektidega töötamisest. See eeldus on võimalik saavutada nii Programming First kui ka Object First meetoodikaga, mistõttu ei saa ka öelda, et see teek tugineks ja eeldaks täielikult Object First metoodikat, vaid ainult osaliselt. Samas on siin teegis loodud ülesannete keerukus piisavalt madal, et seda saaks kasutada Object First õppeprogrammis, peale esmaseid selle õppeviisi kursusi läbides ilma, et kasutajatel oleks liiga suured puudujäägid siinsete ülesannete lahendamiseks Probleemi lahendamine ja pusle meetodika Selle teegi üks suur osa on proovida õpetada inimestele, kuidas paremini programmeerida. Selleks on valitud kaks metoodikat. Enamus ülesandeid kasutavad probleemi-põhist lähenemist ning üks ülesanne kasutab Puzzle (Pusle-põhist) lähenemist [6]. Probleemipõhine metoodika annab võimaluse kasutajale ette anda ülesande, millel oleks teatud reaalne murepunkt, mida võiks ka igapäevases elus tarkvara arendaja tööelus ette tulla. Andes kasutajale ette ülesande potentsiaalselt realistliku murega, aitab see tal paremini seostada, kuidas erinevaid probleeme lahendada nii talle ette antud ülesandes kui ka tulevikus teistes programmeerimispõhistes probleemides. Puslepõhine metoodika tähendab eelkõige panna kasutaja mõtlema väljaspool nende potentsiaalset mugavustsooni. See annab kasutajale ette üldise probleemi, aga mitte kohese lähenemistee, kuidas probleem lahendada. Sellises ülesandes on vaja kasutajal hakata ise uurima täpsemalt, mida teatud ülesandes esinevad komponendid teevad ning proovida nende abil leida lahendus etteantud probleemile. Lahendus ei pruugi olla koheselt arusaadav, mistõttu on võimalik, et kasutaja peab mitut eri lahendust proovima enne kui ta õige leiab. See aga aitab arendada kasutaja loovat mõtlemist, mis omakorda arendab kasutaja probleemi lahendamise oskust väljaspool tavalist lähenemist, sest alati ei ole võimalik arendajale etteantud probleeme lahendada juba tuttavate lahendustega, vaid on vaja leida mingi uus ja seni kasutama lahendus. 13

14 2.2 Sarnased õppe-lahendused Java õppimiseks on olemas mitmeid erinevaid lahendusi. Inimestel on võimalus õppida ülikoolis ning omandada teadmisi Java kohta. Samuti on võimalik targemaks saada gümnaasiumis, kus on aina rohkem hakatud õpetama programmeerimist. Üks väga suur osa õppeprotsessist on aga iseseisev õppimine. Selleks on olemas suurel hulgal raamatuid, mis õpetavad inimestele nii algelisi kui ka endasijõudnute teadmisi Java programmeerimise keeles. Kuid kõige suuremaks võrdluseks seoses selle teegiga ma tooks välja digitaalsed õppematerjalid. Tänapäevaks on internetis suurtes kogustes materjali, mida on võimalik leida ja kasutada teadmiste omandamiseks. On olemas videomaterjalid Youtube s 1. Samuti on suures koguses erinevaid veebilehti, mis on ennast spetsialiseerinud programmeerimise ja sealhulgas Java keele õpetamisele läbi teoreetilise info jagamise[7] [8] [9] [10]. Ühed kõige ligilähedasemad tooted minu lahendusele on veebilehitsejapõhised lahendused, kus on võimalik reaalset koodi kirjutada ja seda testida otse veebilehitsejas[10] [11] [12]. Samuti on olemas õppetarkavara nimega BlueJ 2, mis kasutab visualiseeritud lähenemist õpetamaks kasutajale JOOP arusaama. Selle tarkvara eesmärk on osaliselt sarnane käesolevas lõputöös loodud teegi ja kasutajale antava projektiga, kuid nende kahe toote implementatsioon õpetamiseks on erinev. BlueJ õpetab mõnevõrra abstraktsemal tasemel JOOP kasutama, andes kasutajale visuaalselt sõbralikuma lahenduse kuidas objekte luua ja neid seostada. See on hea viis, kuidas esimesi kontseptsioone ja arusaamu õpetada JOOP kohta. Selle lõputöö kasutajale antav lõpplahendus annab samuti võimaluse kasutajal JOOP teadmisi arendada, kuid erinevus seisneb selles, et see lõputöö kasutab igapäevaselt kasutatavaid tööriistu ja vahendeid. Nii õppides on kasutajal võimalik saada reaalset

15 arenduskogemust, kuidas projektidega, mis eeldavad JOOP teadmiste kasutamist, tööd teha. 2.3 Käesoleva lõputöö kasulikkusja erinevus teistest õppelahendustest Eelmises peatükis on nimekiri erinevatest vahenditest, mille kaudu või mida kasutades saaks kasutaja uusi teadmisi omandada ja rakendada. Enamus neist nõuavad interneti kaudu informatsiooni kättesaamist ja sinna selle laadimist (veebilehitseja põhiste ülesannete lahendamine) või õpetavad abstraktsema lähenemisega, kuidas JOOP-d kasutada. Selle lõputöö struktuur ja kasutamine on mõnevõrra teistsuguse lahendusega. Siin välja toodud lahendus on mõeldud kasutamiseks kasutaja enda arenduskeskkonnas, enda masinas ja ise seda koodi läbi jooksutades. Otsides samasuguseid lahendusi, ei tõusnud esile ühtegi populaarset lahendust, mis on laialdaselt tuntud või tunnustatud. Seetõttu otsustasin luua teegi, mis omaks endas mitmeid ülesandeid, funktsionaalsust (mis oskaks kontrollida ja valideerida kasutaja lahendust) ning anda selle põhjal lihtne tagasisise lahenduse korrektsuse kohta. Selle teegiga käib kaasas ka väike projekt, mis omab endas iga ülesande jaoks eraldi Java faili ning eraldi main method faili, kus määratletakse ära, mis ülesannet testima hakatakse. Täpsem kirjeldus kuidas teek ja projekt töötavad, on välja toodud 3. peatükis. Käesoleva lõputöö kasulikkus on järgnev: kasutades teeki ja sellega kaasaskäivat projekti, antakse kasutajale juurde kas lisa- või alternatiivlahendus, kuidas oma oskuste pagasit täiendada. Kasutades lahendust, antakse kasutajale võimalus oma enda IDE-s (Integrated Development Environment, integreeritud arenduskeskkond) tööd teha juba olemasolevate vahenditega. Kuigi alati on teretulnud iseseisvalt projekti loomine ja mõne enda idee realiseerimine, siis paljudele inimestele võib siinne lahendus olla lihtsam, millega algust teha peale Java baasteadmiste omandamist. Kindlasti on tähtis rõhutada, et see lahendus ei ole mõeldud asendamaks teisi õppevahendeid ja õpetamismeetodeid, vaid seda tuleks vaadata kui lisavahendit neile, kes soovivad enesearenguga tegeleda minimaalselt vajalikust ja nõutust enam. Samuti 15

16 toon välja, et kogenud arendajatele ei ole siinsed ülesanded keerukad ning see ei ole toode, mis oleks ka neile mõeldud. Kõik on teretulnud seda toodet kasutama, aga kindlasti ei ole see kõikehõlmav lahendus Java programmeerimiskeele õppimiseks. 16

17 3 Lõputöö teegi ja projekti struktuur ning ülesehitus Siin peatükis selgitatakse täpsemalt ära, kuidas on struktureeritud nii teek kui selle jaoks mõeldud projekt, kuidas nende töövoog toimib ning mida on tehtud sohivastaseks kaitseks. Käesolev lõputöö projekt jaotub kaheks osaks. Esimene on teek ja selle projekt, mis omab endas ülesannete objekte, nende lahendamise loogikat ning kasutaja sisendite kontrolli. Teine osa on kasutajale antav projekt, mis omab algelist struktuuri kasutajale mugavalt ning ilma suure vaevata ülesannete lahendamise alustamiseks. See kasutaja projekt omab juba lõputöö jaoks loodud teeki ning kasutab ära seal sees olevaid komponente, et kasutajale ette anda ülesandeid ja nende sisendeid. 17

18 3.1 Teegi struktuur Selle lõputöö jaoks loodud teegi baas-struktuur on välja toodud järgneval joonisel. Joonis 1. Teegi lihtsustatud struktuur Teek omab nime ExerciseLibrary.jar. Teegi sees on kaks kausta: exercise ja application. Kaustas exercise hoitakse ülesannete komponente, mida kasutaja saab kasutada ülesannete lahendamise alustamiseks. Nende komponentide hulka kuuluvad ülesandeks vajalikud klassid, iga ülesande Interface (Liides) ning ülesande testimiseks vajalikud klassid. Täpsema ülevaate iga ülesande klassidest ja sisust on välja toodud peatükis 4. Kaustas application hoitakse kahte faili: ApplicationUtility ja LibraryProtectionUtility ApplicationUtility - See klass on loodud selleks, et kasutaja saaks seda kasutada oma lõpplahenduse ülesande määrajana. Seal on olemas üks ainus 18

19 staatiline meetod nimega runexercise. See meetod võtab sisendina Object tüüpi muutuja ning kasutab seda, et määrata ära, millist ülesannet hakatakse kontrollima. LibraryProtectionUtility See on loodud selleks, et erinevates ülesannetes ja testimisklassides oleks võimalik lisada meetoditele juurde lisa kaitsekiht, mis aitaks vältida reflection (Peegeldus) tüüpi privaatsete meetodite kätte saamist. Mitmed meetodid on ülesannetes mõeldud kasutamaks ainult teegi enda poolt ning selle jaoks, et tagada selle reegli püsivus, on lisatud mitmetesse meetoditesse LibraryProtectionUtility meetod ismethodcalledfromrightplace, mis kontrollib välja kutsutud meetodi asukoha valiidsust. Sellest on täpsem informatsioon saadaval peatükis

20 3.2 Projekti Struktuur Kasutaja jaoks mõeldud projekti esmane struktuur on visualiseeritud järgneval joonisel. Joonis 2. Kasutaja projekti esialgne struktuur Kasutaja alustab seda projekti nelja põhilise osaga: 1. Projektis on olemas vajaminev teek, mis omab endas kõike vajaminevaid klasse, mida kasutatakse ülesannetes. Samuti on seal ülesannete lahenduse kontrollimiseks vajalik loogika ning muud valideerimis- ja sohitegemise vastased kaitsemeetodid. 2. Application.java fail, mida kasutatakse projekti jooksutamise alguspunktina. Sellest on täpsemalt kirjeldatud peatükis Ülesannete java failid. Need failid implementeerivad erinevaid ülesannete liideseid. Need liidesed lubavad projektis oleval teegil lõpputulemusena jooksutada teste kasutaja lahenduse vastu. 4. Veebilehitseja kaudu kasutatav dokumentatsioon, mis lubab kasutajal saada parema ülevaate tema jaoks olemasolevatest ülesannete lahendamiseks vajaminevatest ressurssidest. Samuti on seal ära toodud iga ülesande eesmärk 20

21 vastavate failide all. Seda dokumentatsiooni saab vaadata, kui avada doc kasutas olev fail index.html Iga ülesande fail omab endas üht või rohkemat meetodit, kuhu kasutaja peaks oma lõpplahenduse tagastama. Igal meetodil on samuti olemas sisendandmed, mille põhjal kasutaja saab hakata ülesannet lahendama. 3.3 Koodi töötamise töövoog Järgnev joonis toob välja lihtsustatud kujul, kuidas töötab kasutaja arvutis jooksutatav projekt, kui see tööle panna. Joonis 3. Projekti töövoog, kui kasutaja selle käivitab Selleks, et kasutaja saaks programmi jooksutada, on esmalt vajalik, et oleks täidetud järgnevad nõuded ja soovitused: Kasutaja arvutis peab olema Java 8 või uuem versioon, mis suudaks nii kompileerida projekti kui ka jooksutada kompileeritud koodi. Kasutaja on enda kätte saanud projekti failid, mida soovitavalt kasutada mõne arenduskeskonnaga (nagu näiteks Intellij, Eclipse vms). 21

22 Kasutaja omab baasteadmisi, kuidas Java koodi kirjutada ning kuidas projekte hallata ja neid jooksutada. Kui kasutaja on eeltööga ühel pool, saab alustada mõne ülesande lahendamisega ning kui ta on jõudnud piisavalt kaugele testimaks oma lahenduse sobivust, on tal vaja anda ApplicationUtility.runExercise meetodile ette ülesande lahenduse objekt ja see käivitada. Seejärel juhtub tehnilisel tasemel järgnev: Töö voog algab main meetodist, kus peaks ideaalis olema ainult üks käsk. See käsk peaks olema: ApplicationUtility.runExercise(Object usersolutionclass); Sellele meetodile peaks kasutaja andma väärtuseks ühe eelnevalt projektis esineva ülesande klassi, kus on juba vajalikud meetodid olemas ning mille klass implementeerib õiget liidest. Selles klassis peaks ettenähtud meetoditele olema kätte antud ülesande lahendus, mis lubaks projektiga kaasaskäival teegil kasutaja lahendust kontrollida. Olles ApplicationUtility.runExercise meetodi välja kutsunud, tegeleb see meetod kasutaja sisendi analüüsiga. Lühendatud kujul, kuid meetodi põhiloogikat välja toov kood on järgnev: private static final String ERROR_INCORRECT_INTERFACE = "ERROR: Your exercise does not implement the correct interface!"; public static void runexercise(object usersolutionclass) { if(usersolutionclass instanceof WarmUpInterface) { WarmUpInterface solution = (WarmUpInterface) usersolutionclass; WarmUpTests.testUserSolution(solution); } /*... } * Siin on kõik teised else if koodid jupid, mis kontrollivad sama * moodi usersolutionclass muutuja sobivust teiste liidestega. */... else System.out.println(ERROR_INCORRECT_INTERFACE); 22

23 See meetod kontrollib kasutaja poolt ette antud objekti vastavust projektis esinevate ülesannete liidestega. Kui vastavus on olemas, siis on teada, et kasutaja objekt omab õigeid meetodeid, mida saab kasutada testideks. Seepeale saab kood oma tööd jätkata. Kasutaja sisend konverteeritakse ümber sobivasse struktuuri, et teek saaks kasutada sobilike meetodeid ning seejärel kutsutakse välja liidesele vastav testi klassi meetod ning antakse kasutaja objekt sellele meetodile kaasa. Kui aga kasutaja objekt ei oma ühtegi õiget liidest, siis ei ole võimalik teegil kasutaja lahenduse valiidsust kontrollida ning kasutajale kuvatakse seejärel teade, et midagi on valesti. See annab kasutajale teada, et ta peab üle kontrollima, kas ta on ette antud klassides teinud liidese implementatsiooniga mingeid sobimatuid muudatusi või ei anna ta lihtsalt õiget sobiliku sisendit ette. Eeldusel, et kõik töötab sinnamaani, minnakse edasi testklassis kasutaja lahenduse testimisega. Seal on vastavalt ülesandele olemas erinevad testid, mis kontrollivad kasutaja lahenduse korrektsust. Kui kõik õnnestub, siis kuvatakse teade selle kohta ning programm lõpetab oma töö. Kui üks või rohkem testidest ebaõnnestub, siis antakse antakse kasutajale teada nende testide ebaõnnestumisest ning kuvatakse kasutajale ka ebaõnnestunud testide koguarv. 3.4 Sohitegemise elementaarne kaitse Kuna kasutaja peab teegi osasid tihedalt kasutama, on vaja tagada esmane kaitse selle vastu, et kasutajad ei saaks lihtsalt niisama kätte infot, mis ei ole neile lahendamise kasutamiseks mõeldud. Selliste asjade alla kuuluvad näiteks meetodid, mida kasutatakse testimises saamaks kätte õigeid lahenduste tulemusi; muutujad, mis on mõeldud ainult teegi siseseks kasutuseks ning meetodid, mis seavad muutjatele väärtusi, aga mida kasutaja ei tohiks kätte saada ja kasutada. Selleks, et piirata selliste ja teiste vajalike komponentide kättesaadavust, on teegis rakendatud paari eri lahendust. 23

24 3.4.1 Juurdepääsu piirajad Esimene viis, kuidas kaitsta komponente kasutajale kättesaadavuse eest on Java keele enda keelepõhised nüansid. Nimelt on võimalik kasutada access modifier (juurdepääsu piirajad), mis lubavad erinevatele klassidele, muutujatele ja meetoditele lisada ette võtmesõnasid. Need võtmesõnad piiravad õigusi, kust kood võib komponentidele ligi saada. Javas olemasolevad juurdepääsu piirajad on: public (avalik), protected (kaitstud) ja private (privaatne). Samuti on olemas selline tase nagu package-private (pakkiprivaatne), aga selle jaoks ei ole eraldi võtmesõna kasutusel [13]. Allolev tabel annab kiire ülevaate, mis tasemetel mainitud võtmesõnad piiranguid kehtestavad: Tabel 1. Juurdepääsu võtmesõnade piiramise tasemed Võtmesõna Klass Pakk Alamklass Üle projekti public Jah Jah Jah Jah protected Jah Jah Jah Ei Ilma võtmesõnata/ package-private Jah Jah Ei Ei private Jah Ei Ei Ei public võtmesõna lubab selliselt defineeritud komponentidele saada ligi ja neid välja kutsuda ja luua igalt poolt. See on kõige avatum tase ning kõik komponendid, mida kasutaja peab saama kasutada on defineeritud public võtmesõnaga. protected võtmesõna lubab ligi saada komponentidel, mis on kas alamklassid, paki sees olevad klassid või klass ise. Selliselt on teegis defineeritud mitmed komponendid, mis on vajalikud testimise jaoks kättesaadavaks teha, aga mitte kasutajale. Nende hulka kuuluvad näiteks meetodid, mis leiavad teegisiseselt õige lahenduse ülesandele, et seda võrrelda kasutaja lahendusega, teatud muutujate ligipääsud ning mõned constructor (klassi loomisel välja kutsutav meetod, konstruktor eesti keeles) meetodid. Package-private lahendus on mõeldud enamasti klassi tasemel piirangu defineerimiseks, sest muutujad ja meetodid võiksid korrektsuse mõttes alati piirangu 24

25 võtmesõna omada. Kui klass on defineeritud ilma piirangu võtmesõnata, siis töötab see peaaegu samamoodi kui protected võtmesõna kõik omadused on samad, mis protected, ainult et klass ei saa omada sellist defineerivat võtmesõna, mistõttu ilma võtmesõnata omistatakse klassile selline piirang. See lahendus on kasutusel just sellistele klassidele, mida on vaja ainult teegi enda kasutuseks, aga mida ei tohiks kasutada saada kasutaja ise. private võtmesõna on kõige suurema piiranguga võtmesõna. See annab ainult klassisisestele komponentidele ligipääsu. See on väga levinud võtmesõna klassisisestele muutujatele, mida ei soovita otseselt välja anda teistele koodi osadele. Sama põhjus on ka siis teegis. Mitmed muutujad ja meetodid on mõeldud vaid klassisiseseks kasutamiseks ning need ei ole mõeldud, et klassist väljaspoolt keegi neid kasutaks Reflection metoodika vastane baaskaitse Reflection metoodika on Java-s funktsionaalsus, mis lubab koodil ise ennast ja teisi koodi osasid uurida ja mõjutada koodi jooksmise hetkel [14] [15]. See on omapärane funktsionaalsus, mis ei leia nii tihedalt kasutust, kui teised Java keele osad, sest üldjoontes võiks kood olla selliselt disainitud, et koodi jooksmise ajal ei oleks vaja koodi ennast analüüsida ja muuta. Kuid kuna selline võimalus on Java-s olemas, siis on ka potentsiaalne oht, et kasutaja võib seda kasutada koodi sees informatsiooni või funktsionaalsuste kättesaamiseks, mis pole talle mõeldud. Siinkohal tuleb välja tuua, et see on mõeldud eelkõige vältimaks selliseid juhtusid, kus kasutaja on midagi sellisest asjast kuulnud, kuid ei hooma täielikult selle tähendust ning siis proovib mõne internetist või mujalt leitud koodiga saavutada piiratud komponentidele ligipääsu saamist. Inimene, kes juba mõistab, mis reflection on ja kuidas seda efektiivselt kasutada, peaks enamasti olema inimene, kelle programmeerimise teadmised on rohkemad, kui see, kelle jaoks see projekt mõeldud on. See kaitse ei ole mõeldud nende takistamiseks, sest nemad ei ole selle projekti sihtgrupp ning kui nad on suutelised ja soovivad sohki teha, siis see on nende enda otsus. 25

26 Kuid teadmatusest tulenev või mittetäielikult reflection kontseptsiooni hoomava kasutaja sohivastaseks kaitseks on teegis olemas selline klass nagu LibraryProtectionUtility. Sellel klassis on üks ainuke meetod ismethodcalledfromrightplace(list<string> allowedclasses). Selle meetodi kood on järgnev: public static boolean ismethodcalledfromrightplace(list<string> allowedclasses) { StackTraceElement[] stelements = Thread.currentThread().getStackTrace(); /* [0] - Thread * [1] - LibraryProtectionUtility * [2] - Class calling for security check * [3] - Class to check for valid location */ if(stelements.length >= 3) { return allowedclasses.contains(stelements[3].getclassname()); } } return false; Kaitsemeetodi kasutuse eesmärk on järgmine: kaitsemeetod on lisatud mitmetele meetoditele teegis, mis omavad informatsiooni, mida ei tohiks välja anda kasutajale. Sisendiks sellele kaitsemeetodile antakse nimekiri klassi nimedest, kust on lubatud meetodit, kuhu see kaitsemeetod on lisatud, välja kutsuda. Selle sees analüüsitakse kaitsemeetodi välja kutsumise järjestust. Seal on tähtis kontrollida alati neljandat elementi, sest see element viitab asukohale, kust väljakutse kontrolli tehakse. Kui väljakutsutav koht ei ole samanimelise klassiga, kui see mis on sisendi nimekirjas, siis kaitsemeetod tagastab false väärtuse, mis annab teada, et meetodi sisu, kus kaitsemeetod kontrolli teeb, ei tohiks tagastada, vaid tuleb anda vastav tühi väärtus. Kui väljakutsutav koht on nimekirjas, siis on teada, et see meetodi väljakutsuja on teegi sisene ning sellisel juhul tagastab kaitsemeetod true väärtuse ning meetod, kus kaitsemeetod välja kutsuti, võib tagastada õige väljundi. See kaitsemeetod ongi minu poolt loodud kaitse esmaste reflection vahenditega info kättesaamise kohta. 26

27 4 Ülevaade selles lõputöös esinevatest ülesannetest Põhiline väljund käesolevale lõputööle on anda kasutajale projekt koos selle jaoks loodud teegiga. Suur osa sellest väljundist on kasutaja jaoks loodud ülesanded. Siin peatükis on välja toodud täpsem kirjeldus iga ülesande kohta, mis teegis esineb. Ülesanded on ehitatud nii, et kasutajal on võimalik saada kõik vajalik vastavate ülesannete sisendandmetest. Neil ei ole vaja minna otsima lisa klasse või objekte, mida kasutada teegi seest. Kasutajad on teretulnud looma enda klasse ja objekte, et harjutada OOP metoodikaid, kuid see pole tehniliselt kohustuslik enamustes ülesannetes. 4.1 Objektidest arusaamine Kuna kasutaja peab erinevate ülesannete käigus kasutama ja haldama palju eri objekte, siis on neil objektidel projektis kaasa antud dokumentatsioon JavaDoc stiilis. See tähendab, et kasutaja saab oma arenduskeskkonna abil lugeda, mida vähem selgemad meetodid ja objektid endast sisaldavad ja mida need teevad ning võimaldavad. Teegis esinevad klassid, muutujad ja meetodid on loodud niimoodi, et need oleks võimalikult oma olemust kirjeldavad, kuid siiski alati ei ole see täies mahus võimalik. Seetõttu on teatud komponendid ära dokumenteeritud täpsemal tasemel. Eriti ülesannete kirjeldused. Samuti on kasutajale antava projektiga kaasas ka veebilehitsejas loetav ja uuritav dokumentatsioon sama JavaDoc kohta. 4.2 Soojendusülesanne Soojendusülesanne on projektis esindatud ExerciseWarmUp.java faili näol. See ülesanne on mõeldud kasutajale kõige esimese ülesandena. Kui teised ülesanded pole otseselt loodud eesmärgiga, et neid peaks järjest tegema, siis see ülesanne on disainitud, 27

28 et kasutaja saaks tutvuda ja harjuda selle projekti struktuuriga ning saada parem ülevaade, kuidas seda projekti kasutada Ülesande kirjeldus ja potentsiaalne lahendus Selles ülesandes on kasutajale ette antud neli alamülesannet. Kõik need ülesanded hõlmavad endas Door klassi tüüpi objekti avamist Key klassi tüüpi objektiga. Siin on meelega jäetud ülesande lahendused väga lihtsaks eelnevalt mainitud põhjustel. Esimese ülesande saab lahendada kasutades neid kahte objekti omavahel. Seal pole muud vaja teha kui anda Door objekti open(key key) meetodile Key objekt ette. Teine ülesanne nõuab ühte lisasammu, kuna nüüd on Key objekt ära pandud Box objekti sisse, mille seest saab selle kätte. Kolmandas ülesandes tuleb veel üks lisaetapp juurde. Box objekt on nüüd suletud ning sellel objektil tuleb enne välja kutsuda openbox() meetod ja siis teha sama, mis teises ülesandes. Neljas ülesanne on ainuke, mis nõuab rohkem kui ühe lisasammu tegemist võrreldes eelmistega. Nüüd on kastis nimekiri Key objekte ning nende seast on vaja välja otsida õige. Seda on võimalik teha andes Box objekti meetodile isitproperkey(key key) võtme ette, mis kontrollib Key objekti korrektsust. 4.3 Ülesanne: Kaustad Ülesanne Kaustad on projektis esindatud ExerciseFolder.java faili näol. See ülesanne peaks keerukusastmelt olema üsnagi lihtne. Ülesanne on disainitud selliselt, et kasutaja saaks ühe potentsiaalse lahendusena kasutada programmeerimismetoodikat nimega rekursioon. Rekursioon programmeerimises on kontseptsioon, kus konkreetne probleem sõltub väiksematest juhtudest samast probleemist ning selleks et seda probleemi lahendada, kasutatakse lahenduse sees sama lahendusmetoodika uuesti välja kutsumist [16] [17]. Java-s ning ka paljudes teistest programmeerimiskeeltes on võimalik seda metoodikat 28

29 rakendada mingisuguse probleemiga lahendusega tegeleva meetodi sees sellesama meetodi enda välja kutsumisega. Lihtsalt öeldes - mingi meetod kutsub iseennast välja Ülesande kirjeldus ja potentsiaalne lahendus Selles ülesandes peab kasutaja etteantud Folder klassi objekti seest või selle alam Folder objektides üles leidma õige ExerciseFile klassi objeki ja tagastama selle sisu. Meetod String exercise(folder folder, String filename) on antud kasutajale, kuhu ta peab oma lahenduse lõpptulemuse tagastama. Selle ülesande üks potentsiaalne lahendus on kasutada rekursiivset lähenemist. Analüüsides iga kausta objekti sisu ja kontrollides, kas ette antud kaust omab ExerciseFile objekti ette antud faili nimega ning kui ei oma, siis kutsub sama meetodi välja andes nüüd sisendiks alamkausta, kui mõni eksisteerib selles kaustas, kus praegu kontroll käib. Juhul kui fail on olemas, siis tagastatakse selle faili sisu lahendusena. 4.4 Ülesanne: Šiffer Ülesanne Šiffer on projektis esindatud ExerciseCipher.java näol. See ülesanne on ehitatud selliselt, et kasutaja peab looma uue objekti, mis implementeeriks CipherInterface liidest. Tehes seda, saab kasutaja harjutada oma oskusi, kuidas töötavad liidesed ning mida nendega teha saab Ülesande kirjeldus ja potentsiaalne lahendus Selles ülesandes on vaja kasutajal luua kood, mis oskaks krüpteerida ja dekrüpteerida Caesari šifferit. Caesari šiffer on üks enim tuntuid krüpteerimis tehnikaid [18]. See on asendus šifferi tüüpi krüpteering, kus teatud reeglite põhjal asendatakse tekst, mida soovitakse krüpteerida nende reeglite põhjal ümber töödeldud tekstiga. Caesari šifferi puhul on kasutusel krüpteerimisloogikaks tähestik erinevate tähtede ja märkidega ning krüpteerimisvõtmeks number. See number tähistab, mitu kohta tuleb iga tähe kohta tähestikus edasi liikuda. Selle numbri ja liikumise põhjal vahetatakse iga täht või märk 29

30 ette antud väärtusega tähestikus. Dekrüpteerimise puhul on tegevus vastupidine, siis liigutakse tähestikus tagasi võtme väärtuse jagu ja asendatakse krüpteeritud täht või märk dekrüpteeritud väärtusega. Selleks, et luua Caesari šifferit, on kasutajal vaja kasutada eelnevalt mainitud CipherInterface liidest. Kasutades seda, on kood teadlik, et sellel objektil, mis lahendusmeetod tagastab, on olemas krüpteerimismeetod encrypt(string text, Hashmap<String, String> parameters) ning dekrüpteerimismeetod decrypt(string text, Hashmap<String, String> parameters). Mõlemad meetodid annavad kasutajale sisendina teksti, mida soovitakse krüpteerida või dekrüpteerida. Samuti on kasutajatele antud HashMap<String, String> parameters muutuja igasuguste lisaparameetrite kohta, mida võiks ühel või teisel šifferi lahendusel vaja minna. Kasutajatele on siinkohal ülesande kirjelduses välja toodud, et nende ülesannete puhul antakse neile selle HashMap-ga kaasa kaks parameetrit. Üks neist on shift parameeter, mis hoiab endast teksti kujul Caesari võtme numbrilist väärtust ning teine on alphabet parameeter, mis hoiab endas teksti kujul tähestiku erinevatest tähtedest, numbritest ja erimärkidest, mis on selle ülesande Caesari šifferil kasutusel. Omades kõike seda infot ja ülesande sisendeid, on kasutajatel võimalik luua uus klass implementeerides CipherInterface liidest ning kirjutada selle klassi kahte vajaminevasse meetodisse ülesande lahendus funktsionaalsus. 4.5 Ülesanne: Sorteerimine Ülesanne Sorteerimine on esindatud projektis ExerciseSorting.java faili näol. See ülesanne nõuab kasutajalt objektide analüüsi, filtreerimist ja sorteerimist. Need oskused on OOP metoodikates tihedalt kasutusel, nii et see ülesanne aitab kasutajal arendada neid oskusi. 30

31 4.5.1 Ülesande kirjeldus Selles ülesandes on kasutajale ette antud lahendada kaks ülesannet. Mõlemad neist kasutavad Person klassi tüüpi objekte oma ülesande lahenduses. Esimeses ülesandes peab kasutaja sorteerima talle ette antud nimekirja Person objekte. Selles klassis on ülesande kasutamiseks olemas inimese vanuse muutuja ja inimese nime muutuja. Kasutaja peab selle nimekirja etteantud isikutest sorteerima kasvavas järjekorras tähestikuliselt. See tähendab, et esmane nimekirja järjekord sõltub vanusest ning kui nimekirjas on sama vanusega isikuid mitu tükki, siis nende seast on enne inimesed, kelle nimi algab tähega, mis on tähestikus enne. Teine ülesanne kasutab esimese ülesande probleemi, aga lisab ekstra keerukuse juurde. Selles ülesandes on vaja kasutada kolmandat Person klassi muutuja välja Date lasthealthcheckdate. See muutuja väljendab inimese objekti viimase tervisekontrolli kuupäeva. Kui eelmises ülesandes oli vaja üks nimekiri sorteerida aja ja nime järgi, siis selles on vaja teha sama, aga nüüd tuleb see nimekiri inimesi teha neljaks eraldi nimekirjaks. Iga neist neljast nimekirjast omab teatud reeglit, mille põhjal inimesi sinna on lisatud. Kõik nelja nimekirja reeglid on seotud tervisekontrolli kuupäeva muutujaga, mida iga Person objekt omab. Need grupid ja nende reeglid on järgnevad: 1. Esimesse nimekirja pannakse kõik inimesed, kelle Date lasthealthcheckdate kuupäeva väärtus on rohkem kui aasta vana võrreldes hetke kuupäevaga. Ülesande siseselt tähendab see seda, et vastav inimene ei ole oma kindlustuse jaoks vajamineval tervisekontrollil käinud rohkem kui ühe aasta ning seetõttu määratakse ta gruppi, mis nõuab tervisekontrolli. Need inimesed lisatakse teise ülesande tagastavasse HashMap väärtusesse võtmetüübiga SortingInsuranceRiskFactor.REQUIRE_CHECK. See kindlustusriski faktori väärtus on kasutusel, kuna sellisel juhul on HashMap võtmeid lihtsalt hallata, kuna enum SortingInsuranceRiskFactor klassil on olemas ainult neli väärtust. 2. Teise nimekirja lähevad inimesed, kelle viimane tervisekontrolli kuupäev on vähem kui aasta eest ning inimene on 20-aastane või noorem. Need inimesed 31

32 lisatakse HashMap nimekirja SortingInsuranceRiskFactor.LOW võtmeväärtusega. 3. Kolmandasse nimekirja lähevad inimesed, kelle viimane tervisekontrolli kuupäev on vähem kui aasta eest ning inimene on vanusevahemikus Need inimesed lisatakse HashMap nimekirja SortingInsuranceRiskFactor.MEDIUM võtmeväärtusega. 4. Neljandasse nimekirja lähevad inimesed, kelle viimane tervisekontrolli kuupäev on vähem kui aasta eest ning inimene on 65-aastane või vanem. Need inimesed lisatakse HashMap nimekirja SortingInsuranceRiskFactor.HIGH võtmeväärtusega. 4.6 Ülesanne: Pusle Ülesanne Pusle on esindatud projektis ExercisePuzzle.java faili näol. See ülesanne on üks keerukamate hulgast, kuna siin pole probleemi püstitust otseselt välja toodud. Kasutajale antakse eesmärk ja siis on tema ülesanne läbi töödelda erinevaid objekte, mis sisendiks on antud ning nende objektide abil leida lahendus sellele ülesandele. 32

33 Selles ülesandes on mitmeid eri objekte ja nende vahelisi seoseid. Seetõttu on välja toodud järgnev joonis, mis näitab lihtsustatud kujul mitmete objektide vahelisi seoseid. Joonis 4. Pusle ülesande objektide lihtsustatud struktuur Siinses ülesandes on kasutajal lahendada kaks alamülesannet. Mõlemad on idee poolest samad: kasutajal on vaja kahele erinevale lukule leida õiged sisendid Esimese alamülesande kirjeldus ja potentsiaalne lahendus Esimene lukk tahab sisendiks õiget tekstilist väärtust. Meetod selle ülesande jaoks, kuhu kasutaja peab õige vastuse tagastama, on String codeforfirstlock(room room). Selleks, et seda ülesannet ära lahendada, on vaja kasutajal esmalt uurida Table klass objekti. Seal klassi sees leiab kasutaja, et abstraktses mõttes laua peal on kaks asja: Paper klassi objekt ja Computer klassi objekt. Neid mõlemaid on vaja kasutada, et õige lahendus kätte saada. Uurides neid kahte objekti saab kasutaja leida, et arvuti objektil on üks meetod String enternumber(int index). See meetod ootab numbrilist sisendit, et tagastada mingisugune tekstiline väljund. Vaadates Paper objekti, on sealt võimalik leida kaks 33

34 teksti muutujat, mida kasutaja saab kätte. Üks neist on mitmelauseline tekst, mis omab järgnevat väärtust: If you are reading this, it means you are on the right path to solving the puzzle to unlock the first lock. Now you need to find a way to use this text and alter it so you could use it to unlock the first lock. Good luck! Eesti keeles tõlge sellele oleks: Kui sa loed seda, siis see tähendab et sa oled õigel teel lahendamaks pusle esimest lukku. Nüüd on sul vaja leida, kuidas kasutada seda teksti ja muuta seda selliselt, et sa saaksid avada esimese luku. Edu! See tekst on omab kahte eri väärtust. Esimene väärtus on see, et see on see tekst annab kasutajale vihje, kuidas esimest ülesannet lahendada. Teine väärtus on see, et see tekst nagu see ise ka ütleb, on see muutuja, mille muutmisega on võimalik esimene lukk avada. Teine tekst paberil omab tekstilist väärtust mõnest numbrist. Teades paberi mõlemat teksti ja arvuti numbri sisestamismeetodit, on kasutajal vaja välja mõelda lahendus. Siin kohal tulebki välja selle ülesande keerukus: kasutaja on pandud olukorda, kus otsest lahendust ei ole talle esitatud ning nagu pusled ikka, on lahendus vaja välja nuputada. Esimese luku lahenduse loogika on järgmine: esmalt on kasutajal vaja paberi teise teksti numbrid ümber konverteerida int kujule. Kuna need on ainukesed numbrid, mis siinkohal olemas on, siis võiks kasutajal tekkida seos, et neid numbreid võiks proovida sisendina arvuti objekti meetodile anda. Kui kasutaja seda teeb, siis saab ta sellelt meetodilt tagasi teksti, mis on struktureeritud selliselt, et pikast tekstist, mis on paberi peal, on välja valitud mingi hunnik tähti. Need tähed on alles jäetud ning ülejäänud tähed ja märgid on asendatud _ ehk alakriipsu tähisega. Kui kasutaja proovib ka teisi numbreid, mis ei ole paberil kirjas, siis ta saab sama struktuuriga väljundi, aga need on valed väljundid. Selleks, et saada õigesti modifitseeritud paberi peamine tekst luku avamismeetodile õigesti ette antud, on vaja kasutada kõiki paberil teisel tekstil olnud numbritele 34

35 vastavaid tekste arvutis. Kõik tähed ja märgid, mis nende numbrite sisendiga välja tulid, on vaja eemaldada esialgsest paberi peamisest tekstist. See on koht, kus kasutajal tuleb see katse-eksitus-meetodika välja nuputada, aga see ongi üks pusle lahendamise osa, mida see ülesanne rakendab: katsetamine ja õigete seoste leidmine Teise alamülesande kirjeldus ja potentsiaalne lahendus Teise luku sisendiks oodatakse Keycard objekti. See objekt peidab ennast Locker objekti sees, mida on kasutajale kättesaadav Room objektist, mis on ülesande sisendiks. Kui kasutaja proovib lahenduse sisendiks anda mõnda muud, enda loodud Keycard objekti, siis selle jaoks on klassi konstruktoris olemas kontroll loogika, mis töötab samamoodi nagu reflection kaitse loogika. Kui võtmekaardi objekti tahetakse luua mujalt, kui selle õigest kohast (Locker klassi seest), siis seatakse ukse avamisel kontrollitav teksti väärtus valeks ning selle võtmekaardi objektiga teist luku avada ei saa. Locker objektis, mis on toa sisend objektiga kaasas, on olemas ElectronicLock objekt. Samuti on olemas ka getter (meetod, mille eesmärk on tagastada muutuja) meetod võtmekaardi jaoks, kuid selle dokumentatsiooni lugedes on võimalik kasutajal teada saada, et meetod tagastab vajaminema võtmekaardi objekti ainult juhul, kui elektroonilise luku objekti meetod boolean opendoor() tagastab tõese väärtuse. Selleks, et eelnimetatud meetod annaks õige väljundi, on vaja kasutajal uurida ElectronicLock objekti. Seal on olemas kaks meetodit, mis peaks kasutajale silma jääma. Esimene neist on void crackinputlockopen() meetod, mis ütleb, et see meetod avab sulle selle elektroonilise luku objekti sisu ning annab ligipääsu luku juhtmetele. See meetod on vaja välja kutsuda enne kui minnakse teise meetodiga Wire[] getwires() tegelema. Kui seda pole tehtud, siis ei tagastata juhtmete massiivi. Wire[] getwires() meetodi dokumentatsioon ütleb, et kui ette antud juhtmete seast lõigata katki õiged juhtmed, siis on võimalik see elektrooniline lukk avada. Juhtmete lõikamiseks on järgnevad reeglid: 35

36 Lõika läbi kõik punased juhtmed Kui roheline juhe on enne punast juhet massiivis, siis ära lõika läbi punast juhet. Kui massiivis on rohkem kui kolm sinist juhet, siis selle asemel et lõigata läbi kõik punased juhtmed, lõika läbi hoopis kõik valged juhtmed. See reegel kehtib kõigi teiste punaste juhtme reeglitega, kui värv muutub. Lõika läbi täpselt üks must juhe, kui massiivis on paaritu arv valgeid juhtmeid. See on teise luku avamise põhiline keerukus ülesande lahendamisel. See ülesanne paneb proovile, kui hästi kasutaja oskab kõik reeglite konditsioonid paika panna, et lõigataks läbi ainult õiged juhtmed, mis vaja. Igal Wire objektil on olemas värvi muutuja ning muutuja, mis ütleb kas juhe on läbi lõigatud või ei. Kasutajal on vaja talle kätte saadud juhtme objektide massiivis lõigata läbi õiged juhtmed. Kui juhtmed on õigesti lõigatud, siis opendoor() meetod tagastab tõese väärtuse ning kasutaja saab kätte õige võtmekaardi objekti, et teine lukk ukse objektil avada. 4.7 Ülesanne: Pokker Ülesanne Pokker on projektis esindatud ExercisePoker.java faili näol. Siin ülesandes, on vaja tegeleda pokkeri kombinatsioonide analüüsiga. See ülesanne kasutab Texas Holdem pokkeri reeglistiku [19] Kiire ülevaade ülesandes kasutavatest pokkeri kombinatsioonidest Ilma kogu reeglistikku detailselt üle käimata, Texas Holdem-i puhul on tegemist pokkeri variatsiooniga, kus mängijale antakse 2 kaarti ja laual on lõppseisuga 5 kaarti. Nende seitsme kaardi hulgast kasutab mängija kõige kõrgemat kombinatsiooni, mis seal esineb. 36

37 Texas Holdem-s kasutusel olevad kaardi kombinatsioonid, alatest nõrgemast, on järgmised: kõrgeim kaart, paar, kaks paari, kolmik, rida, mast, maja, nelik, mastirida, kuninglik mastirida. Nimetatud kombinatsioonid on kasutajale antud ülesande lahendamiseks ette nähtud Ülesande kirjeldus Selles ülesandes on kasutajale ette antud sisendiks kaks parameetrit. Esimene neist on Hand klassi objekt, mis omab kahte Card klassi objekti. Need kaardi objektid näitavad ära, millise mängukaardiga on tegu. Teine parameeter on nimekiri Card objektidest, mis on lauale asetatud. Selle ülesande raames on alati eelduseks, et laual on viis kaarti. Kasutaja ülesanne on leida käe ja laual seisu põhjal kõige kõrgem olemasolev kaardi kombinatsioon ning tagastada nimekiri nendest Card objektidest. Selle ülesande keerukus seisneb ülesande lahenduse mahus. Sellel ülesandel peaks teistega võrreldes olema üldjoontes kõige pikem lahendus. Tehniliselt see ei tohiks olla raskuselt ja keerukuse astmelt väga suur, kuid erinevate kaartide kombinatsioonide kontroll on see, mis teeb selle ülesande lahenduse mahukaks. Selles ülesandes on otsest lahendust keerukas välja tuua, kuna lahendusviise, kuidas hinnata ja analüüsida kaarte, on mitmeid. Teek ise kontrollib lihtsustatult kirjeldades kasutaja lahendust järgmiselt: Esimesena pannakse Hand objektis olevad kaardid ja mängulauda esindavad kaardid ühte nimekirja ning sorteeritakse kaardi tugevuse järgi. Iga kombinatsiooni jaoks on loodud meetod, mis kontrollib, kas see kombinatsioon on olemas nimekirjas. Nende kombinatsioonide kontrollmeetodite juures on ära kasutatud eelnevaid meetodeid, kui nende põhjal saab järgnevat kombinatsiooni kokku panna (näiteks maja kombinatsiooni jaoks saab ära kasutada paari ja kolmiku kontrollmeetodeid). Kontrollimine toimub kõige tugevamast kombinatsioonist kõige nõrgemani. Selliselt saab vältida lisatööd, kuna ülesanne tahab lahendusena saada ainult kõige tugevamat kombinatsiooni. Kui leitakse kombinatsioon, siis tagastatakse selle kombinatsiooni kaardid nimekirjana ning kombinatsiooni hindamisloogika lõpetab oma töö. 37

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Konstruktorile antakse andmed, mis iseloomustavad mingit

Rohkem

Tartu Ülikool

Tartu Ülikool Tartu Ülikool Code coverage Referaat Koostaja: Rando Mihkelsaar Tartu 2005 Sissejuhatus Inglise keelne väljend Code coverage tähendab eesti keeles otse tõlgituna koodi kaetust. Lahti seletatuna näitab

Rohkem

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier 09.02.2019 Miks on ülesannete lahendamise käigu kohta info kogumine oluline? Üha rohkem erinevas eas inimesi õpib programmeerimist.

Rohkem

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx Tartu Ülikool CVE-2013-7040 Referaat aines Andmeturve Autor: Markko Kasvandik Juhendaja : Meelis Roos Tartu 2015 1.CVE 2013 7040 olemus. CVE 2013 7040 sisu seisneb krüptograafilises nõrkuses. Turvaaugu

Rohkem

Microsoft PowerPoint - loeng.ppt

Microsoft PowerPoint - loeng.ppt Tarkvaraarendusprotsess Lektor Oleg Mürk olegm@webmedia.ee Webmedia AS www.webmedia.ee Teema Mille poolest erineb üksinda programmeerimine mitmekesi tarkvaraarendamisest? Mitmekesi programmeerimine Mitmekesi

Rohkem

loeng2

loeng2 Automaadid, keeled, translaatorid Kompilaatori struktuur Leksiline analüüs Regulaaravaldised Leksiline analüüs Süntaks analüüs Semantiline analüüs Analüüs Masinkoodi genereerimine Teisendamine (opt, registrid)

Rohkem

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Microsoft Word - ref - Romet Piho - Tutorial D.doc Tartu Ülikool Andmetöötluskeel "Tutorial D" realisatsiooni "Rel" põhjal Referaat aines Tarkvaratehnika Romet Piho Informaatika 2 Juhendaja Indrek Sander Tartu 2005 Sissejuhatus Tänapäeval on niinimetatud

Rohkem

Microsoft Word - installation-guide.doc

Microsoft Word - installation-guide.doc Dokumendi ajalugu: Versioon Kuupäev Tegevus Autor 1.0 12.04.2008 Dokumendi loomine Maris Aavik 1.1 13.04.2008 Täiendamine Maris Aavik 1.2 13.04.2008 Täiendamine Andres Kalle 1.3 12.05.2008 Täiendused Kerli

Rohkem

Microsoft Word - Referaat.docx

Microsoft Word - Referaat.docx Tartu Ülikool Andmeturve Referaat teemal: CVE-2016-1499 Koostaja: Sander Sats Kursus: Informaatika Tartu 2016 Sissejuhatus Käesolev referaat on kirjutatud seoses Tartu Ülikooli kursuse MTAT.03.134 Andmeturve

Rohkem

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019 PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019 SISUKORD 1. SLAIDIESITLUS... 3 1.1. Esitlustarkvara... 3 1.2. Slaidiesitluse sisu... 3 1.3. Slaidiesitluse vormistamine... 4 1.3.1 Slaidid...

Rohkem

Andmeturve

Andmeturve CORBA Sissejuhatus IDL CORBA struktuur Serveri ehitus Objekti adapter Lisateenused MEELIS ROOS 1 CORBA sissejuhatus CORBA Common Object Request Broker Architecture Üldine Objektipäringute Vahendaja Arhitektuur:)

Rohkem

SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Wind

SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Wind SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016 või Windows

Rohkem

Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Dian

Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Dian Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Diana Lõvi (SV valdkond) Järgmised e-lõunad: 10. oktoober

Rohkem

Õppimine Anne Villems, Margus Niitsoo ja Konstantin Tretjakov

Õppimine Anne Villems, Margus Niitsoo ja Konstantin Tretjakov Õppimine Anne Villems, Margus Niitsoo ja Konstantin Tretjakov Kava Kuulame Annet Essed ja Felder Õppimise teooriad 5 Eduka õppe reeglit 5 Olulisemat oskust Anne Loeng Mida uut saite teada andmebaasidest?

Rohkem

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad 1 / 16 7. loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad 2 / 16 Sisend/väljund vaikimisi: Termid: read, write?-read(x). : 2+3. X = 2+3.?-write(2+3). 2+3 true. Jooksva sisendi vaatamine: seeing?-

Rohkem

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3 Kursuseprogramm IFI6083.DT Algoritmid ja andmestruktuurid Maht 4 EAP Kontakttundide maht: 54 Õppesemester: K Eksam Eesmärk: Aine lühikirjeldus: (sh iseseisva töö sisu kirjeldus vastavuses iseseisva töö

Rohkem

Loeng03

Loeng03 Loeng 03 Failiõigused ja -manipulatsioon Operatsioonisüsteemide administreerimine ja sidumine I233 Katrin Loodus, Tallinn 2015 Failid ja kataloogid Mis on fail? Linuxi laadsetes süsteemides on kõik failid

Rohkem

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimused: faili nimi faili vanus faili tüüp... 1 Failiotsing:

Rohkem

(Microsoft PowerPoint - seminar_6_n\365uded-ainemudel tagasiside.ppt [Compatibility Mode])

(Microsoft PowerPoint - seminar_6_n\365uded-ainemudel tagasiside.ppt [Compatibility Mode]) Tarkvara projekt seminar VI Eelmise iteratsiooni tagasivaade, testimine, installatsioonijuhend, järgmise iteratsiooni näited. Karel Kravik Administratiivset:protestid Probleem: protestide hulk ja kvaliteet

Rohkem

Tartu Kutsehariduskeskus IKT osakond Merlis Karja-Kännaste ASUTUSE DOKUMENDIREGISTRI AVALIK VAADE Analüüs Juhendaja Mirjam-Merike Sõmer Tartu 2015

Tartu Kutsehariduskeskus IKT osakond Merlis Karja-Kännaste ASUTUSE DOKUMENDIREGISTRI AVALIK VAADE Analüüs Juhendaja Mirjam-Merike Sõmer Tartu 2015 Tartu Kutsehariduskeskus IKT osakond Merlis Karja-Kännaste ASUTUSE DOKUMENDIREGISTRI AVALIK VAADE Analüüs Juhendaja Mirjam-Merike Sõmer Tartu 2015 SISUKORD SISSEJUHATUS... 3 1. VILJANDI LINNAVALITSUSE

Rohkem

E-arvete juhend

E-arvete juhend E- arvete seadistamine ja saatmine Omniva kaudu Standard Books 7.2 põhjal Mai 2015 Sisukord Sissejuhatus... 3 Seadistamine... 3 Registreerimine... 4 E- arve konto... 5 Vastuvõtu eelistus... 5 Valik E-

Rohkem

Algoritmid ja andmestruktuurid

Algoritmid ja andmestruktuurid Algoritmid ja andmestruktuurid Arvutipraktikum 2017/2018 sügissemestril J.Liivi 2-202, E12-14 J.Liivi 2-202, T14-16 kodu.ut.ee/~kiho/ads/fall17 Jüri Kiho jyri.kiho@ut.ee Eesmärgid Paremini omandada, kinnistada

Rohkem

MTAT Operatsioonisüsteemid - Turvalisus

MTAT Operatsioonisüsteemid - Turvalisus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüstemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe command.com Nendesse saab kirjutada käske,

Rohkem

Pealkiri

Pealkiri Andmebaasid (6EAP) I praktikum Mida praktikumides tehakse? Õpitakse SQL i Tehakse andmebaas ope (igas praktikumis natuke, kuni lõpuks saab valmis) Tehakse andmebaas edu (kui ope on valmis, tehakse edu,

Rohkem

E-õppe ajalugu

E-õppe ajalugu Koolituskeskkonnad MTAT.03.142 avaloeng Anne Villems September 2014.a. Põhiterminid Koolituskeskkonnad (Learning environments) IKT hariduses (ICT in education) E-õpe (e-learning) Kaugõpe (distance learning)

Rohkem

MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite l

MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite l MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite lisamine... 6 Uue dokumendi loomine Dokumendi salvestamine

Rohkem

Microsoft Word - requirements.doc

Microsoft Word - requirements.doc Dokumendi ajalugu: Versioon Kuupäev Tegevus Autor 1.0 04.03.2008 Dokumendi loomine Madis Abel 1.1 09.03.2008 Kasutuslugude loomine Madis Abel 1.2 12.03.2008 Kasutuslugude täiendused Andres Kalle 1.3 13.03.2008

Rohkem

Tiia Salm 2011 Online kirjastus CALAMÉO Calameo kujutab endast on-line kirjastust, mis võimaldab oma dokumente avaldada e-raamatuna tasuta. Failid (Pd

Tiia Salm 2011 Online kirjastus CALAMÉO Calameo kujutab endast on-line kirjastust, mis võimaldab oma dokumente avaldada e-raamatuna tasuta. Failid (Pd Online kirjastus CALAMÉO Calameo kujutab endast on-line kirjastust, mis võimaldab oma dokumente avaldada e-raamatuna tasuta. Failid (Pdf, Word, Excel, PowerPoint, Open Office) tuleb esmalt keskkonda üles

Rohkem

No Slide Title

No Slide Title Ülevaade vanematekogu sisendist arengukavale ja arengukava tutvustus Karmen Paul sotsiaalselt toimetulev st on lugupidav ehk väärtustab ennast ja teisi saab hakkama erinevate suhetega vastutab on koostöine

Rohkem

SINU UKS DIGITAALSESSE MAAILMA Ruuter Zyxel LTE3302 JUHEND INTERNETI ÜHENDAMISEKS

SINU UKS DIGITAALSESSE MAAILMA Ruuter Zyxel LTE3302 JUHEND INTERNETI ÜHENDAMISEKS SINU UKS DIGITAALSESSE MAAILMA Ruuter Zyxel LTE3302 JUHEND INTERNETI ÜHENDAMISEKS OLULINE TEAVE: LOE ENNE RUUTERI ÜHENDAMIST! Ruuter on sinu uks digitaalsesse maailma. Siit saavad alguse kõik Telia teenused

Rohkem

Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööa

Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööa Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööaknas leia Windows Update 4.Lase arvutil kontrollida

Rohkem

Kom igang med Scratch

Kom igang med Scratch Alustame algusest Getting Started versioon 1.4 SCRATCH on uus programmeerimiskeel, mis lubab sul endal luua interaktiivseid annimatsioone, lugusid, mänge, muusikat, taieseid jm Scratch'i saab kasutada

Rohkem

Microsoft Word - Keypad-controller-manual-new_1.docx

Microsoft Word - Keypad-controller-manual-new_1.docx Eraldiseisev ühe ukse juurdepääsukontroller Kasutusjuhend Enne seadme paigaldamist ja kasutamist lugege tähelepanelikult seda juhendit 1. Pakkeleht Nimi Kogus Märkused Sõrmistik 1 Kasutusjuhend 1 Kruvikeeraja

Rohkem

Juhend nutiterminali seadistamiseks ja kaardimaksete vastuvõtmiseks Ingenico Link/2500 ja icmp

Juhend nutiterminali seadistamiseks ja kaardimaksete vastuvõtmiseks Ingenico Link/2500 ja icmp Juhend nutiterminali seadistamiseks ja kaardimaksete vastuvõtmiseks Ingenico Link/2500 ja icmp Terminali seadistamine Lülita telefonis või tahvelarvutis (edaspidi telefonis) sisse Bluetooth. (1) 1 1 Mudel

Rohkem

ДЕЛОВОЕ ОБЩЕНИЕ

ДЕЛОВОЕ ОБЩЕНИЕ Tõhusa ja kaasahaarava õppe korraldamine kõrgkoolis 1. Teema aktuaalsus 2. Probleemid 3. Küsitlusleht vastustega 4. Kämmal 5. Õppimise püramiid 6. Kuidas edasi? 7. Allikad 1. Vene keele omandamine on

Rohkem

Operatsioonisüsteemide ehitus

Operatsioonisüsteemide ehitus Lõimed Ülevaade Lõime mõiste Lõimede mudelid Probleemid lõimedega seoses Pthreads Solarise lõimed Windows 2000 lõimed Linuxi lõimed Java lõimed VARMO VENE & MEELIS ROOS 2 Ühe- ja mitmelõimelised protsessid

Rohkem

Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vasta

Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vasta Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vastanutest töötanud 87 tudengit ehk 64%, kellest 79 (91%)

Rohkem

PowerPointi esitlus

PowerPointi esitlus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüsteemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe Nendesse saab kirjutada käske, millega näiteks

Rohkem

Mida me teame? Margus Niitsoo

Mida me teame? Margus Niitsoo Mida me teame? Margus Niitsoo Tänased teemad Tagasisidest Õppimisest TÜ informaatika esmakursuslased Väljalangevusest Üle kogu Ülikooli TÜ informaatika + IT Kokkuvõte Tagasisidest NB! Tagasiside Tagasiside

Rohkem

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs TARTU ÜLIKOOL LOODUS- JA TÄPPISTEADUSTE VALDKOND Arvutiteaduse instituut Informaatika õppekava Helen Hendrikson MOOCi Programmeerimise alused ülesannete lahenduste analüüs Bakalaureusetöö (9 EAP) Juhendaja:

Rohkem

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev 05.02.2018 Versiooni kuupäev 30.01.2018 1 SISUKORD 1. ÜLEVAADE... 3 1.1

Rohkem

MTAT Operatsioonisüsteemid - Turvalisus

MTAT Operatsioonisüsteemid - Turvalisus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüstemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe command.com (tänapäevastes OS ei kasutata)

Rohkem

E-õppe tehnoloogiad kõrgkoolis E-learning Technologies in Higher Education MTAT

E-õppe tehnoloogiad kõrgkoolis E-learning Technologies in Higher Education MTAT Interaktiivsusest e-õppes Anne Villems Seneca (4.-56.a. m.a.j.) Mitte sellepärast me ei söanda uusi asju katsetada, et asjad on keerulised, vaid kuna me ei söanda neid katsetada, on nad keerulised. It

Rohkem

Projekt Kõik võib olla muusika

Projekt Kõik võib olla muusika Õpikäsitus ja projektiõpe Evelin Sarapuu Ülenurme lasteaed Pedagoog-metoodik TÜ Haridusteadused MA 7.märts 2018 Põlva Õpikäsitus... arusaam õppimise olemusest, eesmärkidest, meetoditest, erinevate osapoolte

Rohkem

Microsoft Word - EVS_ISO_IEC_27001;2014_et_esilehed.doc

Microsoft Word - EVS_ISO_IEC_27001;2014_et_esilehed.doc EESTI STANDARD EVS-ISO/IEC 27001:2014 INFOTEHNOLOOGIA Turbemeetodid Infoturbe halduse süsteemid Nõuded Information technology Security techniques Information security management systems Requirements (ISO/IEC

Rohkem

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus PILVI TAUER Tallinna Tehnikagümnaasium ArcGIS Online 1.Konto loomine 2.Veebikaardi loomine 3.Rakenduste tegemine - esitlus Avaliku konto loomine Ava ArcGIS Online keskkond http://www.arcgis.com/ ning logi

Rohkem

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et Excel2016 - Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et programm suudaks anda tulemusi. Mõisted VALEM - s.o

Rohkem

(loeng3-ohtlikud_koodiloigud)

(loeng3-ohtlikud_koodiloigud) #include int main (void) uint8_t arr[] = 0x11, 0x22 uint16_t *ptr; ptr = (uint16_t*)&arr[0]; printf ("arr: 0x%02x, 0x%02x\n", arr[0], arr[1]); printf ("ptr: 0x%04x\n", *ptr); /* vigane pointeri

Rohkem

IT infrastruktuuri teenused sissejuhatav loeng 00

IT infrastruktuuri teenused sissejuhatav loeng 00 IT infrastruktuuri teenused I385 Aine õppejõud: Katrin Loodus, Margus Ernits http://enos./~mernits Tallinn, 2014 Oluline info on aine vikis Kindlasti hoia silma peal aine vikil: https://wiki./ Sealt vali:

Rohkem

PowerPoint Presentation

PowerPoint Presentation Miks liituda projektiga LIFE Fit for REACH? Karin Viipsi Henkel Balti OÜ (Henkel Makroflex AS) Infopäev ettevõtetele, 09.11.2016 Sisukord Ettevõtte tutvustus Ettevõtte eesmärk projektis Mida on varasemalt

Rohkem

FRESENIUS ÕPPEKESKUS KIIRJUHEND

FRESENIUS ÕPPEKESKUS KIIRJUHEND FRESENIUS ÕPPEKESKUS KIIRJUHEND SISUKORD 1. Kuidas saan Freseniuse õppekeskuksesse? 03 2. Kuidas sisse logida? 04 3. Mida teha, kui ma ei mäleta oma parooli? 05 4. Mida leian kodulehelt pärast sisselogimist?

Rohkem

PHP

PHP PHP Autorid: Aleksandr Vaskin Aleksandr Bogdanov Keelest Skriptikeel skript teeb oma tööd pärast seda, kui toimus mingi sündmus* Orienteeritud programmeerija eesmärkide saavutamiseks (mugavus on tähtsam

Rohkem

(Microsoft Word - T\366\366leht m\365isaprogramm algklassilastele tr\374kk 2.doc)

(Microsoft Word - T\366\366leht m\365isaprogramm algklassilastele tr\374kk 2.doc) ALGKLASSILAPSED 1 MINU NIMI ON MINA OLEN PRAEGU TÄNA ON 1. KÄRNERIMAJA JA LILLED KIRJUTA VÕI JOONISTA SIIA KAKS KÄRNERI TÖÖRIISTA KIRJUTA SIIA SELLE TAIME 1. TÖÖRIIST 2. TÖÖRIIST NIMI MIDA ISTUTASID MÕISTA,

Rohkem

(Microsoft Word - T\366\366leht m\365isaprogramm 4-6 kl tr\374kkimiseks.doc)

(Microsoft Word - T\366\366leht m\365isaprogramm 4-6 kl tr\374kkimiseks.doc) 4-6 KLASS 1 Minu nimi on Ma olen praegu Täna on 1. KÄRNERIMAJA JA LILLED Kirjuta või joonista siia kolm kärneri tööriista Kirjuta siia selle taime nimi, 1. TÖÖRIIST 2. TÖÖRIIST 3. TÖÖRIIST mida istutasid

Rohkem

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi*r^2, Float -> Int Infixoperaatori kasutamiseks prefix-vormis

Rohkem

Funktsionaalne Programmeerimine

Funktsionaalne Programmeerimine Kõrvalefektid ja Haskell Kõik senised programmid on olnud ilma kõrvalefektideta; so. puhtalt funktsionaalsed. Programmi täitmise ainsaks efektiks on tema väartus. Osade ülesannete jaoks on kõrvalefektid

Rohkem

Taskuprinter KASUTUSJUHEND

Taskuprinter KASUTUSJUHEND Taskuprinter KASUTUSJUHEND Täname, et ostsite taskuprinteri Polaroid Mint. Käesoleva kasutusjuhendi eesmärk on anda teile juhiseid toote ohutuks kasutamiseks ja et see ei kujutaks endast kasutajale mingit

Rohkem

EESTI STANDARD EVS-EN :2000 This document is a preview generated by EVS Terastraat ja traattooted piirete valmistamiseks. Osa 4: Terastraadist

EESTI STANDARD EVS-EN :2000 This document is a preview generated by EVS Terastraat ja traattooted piirete valmistamiseks. Osa 4: Terastraadist EESTI STANDARD EVS-EN 10223-4:2000 Terastraat ja traattooted piirete valmistamiseks. Osa 4: Terastraadist keevitatud võrkpiire Steel wire and wire products for fences - Part 4: Steel wire welded mesh fencing

Rohkem

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document

HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document.idl IDL kompilaator document_cstub.o document.h document_sstub.o #include document_client.c

Rohkem

Elisa Ring Elisa Ringi mobiilirakendus Versioon

Elisa Ring Elisa Ringi mobiilirakendus Versioon Elisa Ring Elisa Ringi mobiilirakendus Versioon 1.0.85 15.01.2019 1 Elisa Ring... 1 1. Ülevaade... 3 1.1. Kirjeldus... 3 1.2. Tehnilised tingimused... 3 1.3. Kasutuselevõtt ja sisselogimine... 3 2. Rakenduse

Rohkem

Rühmatöö Moodle is Triin Marandi 2017 oktoober

Rühmatöö Moodle is Triin Marandi 2017 oktoober Rühmatöö Moodle is Triin Marandi 2017 oktoober Kes on kasutanud rühmatööd? Nutitelefonid välja ja hääletama! www.menti.com KOOD: 14 10 00 https://www.mentimeter.com/s/1c1250be4e6b7c4ec7608a4fa6d7d591/3e66049189e0

Rohkem

Süsteemide modelleerimine: praktikum Klassiskeemid Oleg Mürk

Süsteemide modelleerimine: praktikum Klassiskeemid Oleg Mürk Süsteemide modelleerimine: praktikum Klassiskeemid Oleg Mürk Klassiskeem (class diagram) Klass (class) atribuut (attribute) meetod (method) Liides (interface) meetod (method) Viidatavus (visibility) avalik

Rohkem

raamat5_2013.pdf

raamat5_2013.pdf Peatükk 5 Prognoosiintervall ja Usaldusintervall 5.1 Prognoosiintervall Unustame hetkeks populatsiooni parameetrite hindamise ja pöördume tagasi üksikvaatluste juurde. On raske ennustada, milline on huvipakkuva

Rohkem

Microsoft PowerPoint - BPP_MLHvaade_juuni2012 (2)

Microsoft PowerPoint - BPP_MLHvaade_juuni2012 (2) Balti pakendi protseduur MLH kogemus Iivi Ammon, Ravimitootjate Liit Ravimiameti infopäev 13.06.2012 Eeltöö ja protseduuri algus Päev -30 MLH esindajad kolmes riigis jõuavad arusaamani Balti pakendi protseduuri

Rohkem

Õppekava vorm 1. Õppekava nimetus Küberturbe tehnoloogiad 2. Õppekava nimetus inglise Cyber Security Engineering keeles 3. Kõrgharidustaseme õpe Raken

Õppekava vorm 1. Õppekava nimetus Küberturbe tehnoloogiad 2. Õppekava nimetus inglise Cyber Security Engineering keeles 3. Kõrgharidustaseme õpe Raken Õppekava vorm 1. Õppekava nimetus Küberturbe tehnoloogiad 2. Õppekava nimetus inglise Cyber Security Engineering keeles 3. Kõrgharidustaseme õpe Rakenduskõrgharidus 4. Õppevorm(id) Statsionaarne õpe 5.

Rohkem

EESTI STANDARD EVS-EN 1790:1999 This document is a preview generated by EVS Teemärgistusmaterjalid. Kasutusvalmid teekattemärgised Road marking materi

EESTI STANDARD EVS-EN 1790:1999 This document is a preview generated by EVS Teemärgistusmaterjalid. Kasutusvalmid teekattemärgised Road marking materi EESTI STANDARD EVS-EN 1790:1999 Teemärgistusmaterjalid. Kasutusvalmid teekattemärgised Road marking materials - Preformed road markings EESTI STANDARDIKESKUS EESTI STANDARDI EESSÕNA NATIONAL FOREWORD Käesolev

Rohkem

KUULA & KORDA INGLISE KEEL 1

KUULA & KORDA INGLISE KEEL 1 KUULA & KORDA INGLISE KEEL 1 KUULA JA KORDA Inglise keel 1 Koostanud Kaidi Peets Teksti lugenud Sheila Süda (eesti keel) Michael Haagensen (inglise keel) Kujundanud Kertu Peet OÜ Adelante Koolitus, 2018

Rohkem

DVD_8_Klasteranalüüs

DVD_8_Klasteranalüüs Kursus: Mitmemõõtmeline statistika Seminar IX: Objektide grupeerimine hierarhiline klasteranalüüs Õppejõud: Katrin Niglas PhD, dotsent informaatika instituut Objektide grupeerimine Eesmärk (ehk miks objekte

Rohkem

Relatsiooniline andmebaaside teooria II. 6. Loeng

Relatsiooniline andmebaaside teooria II. 6. Loeng Relatsiooniline andmebaaside teooria II. 5. Loeng Anne Villems ATI Loengu plaan Sõltuvuste pere Relatsiooni dekompositsioon Kadudeta ühendi omadus Sõltuvuste pere säilitamine Kui jõuame, siis ka normaalkujud

Rohkem

Väärtusta oma vabadust. Eesti Yale Seifide Kasutusjuhend Mudelid: YSB/200/EB1 YSB/250/EB1 YSB/400/EB1 YLB/200/EB1 YSM/250/EG1 YSM/400/EG1 YSM/520/EG1

Väärtusta oma vabadust. Eesti Yale Seifide Kasutusjuhend Mudelid: YSB/200/EB1 YSB/250/EB1 YSB/400/EB1 YLB/200/EB1 YSM/250/EG1 YSM/400/EG1 YSM/520/EG1 Väärtusta oma vabadust. Eesti Yale Seifide Kasutusjuhend Mudelid: YSB/200/EB1 YSB/250/EB1 YSB/400/EB1 YLB/200/EB1 YSM/250/EG1 YSM/400/EG1 YSM/520/EG1 YLM/200/EG1 Soovitame selle kasutusjuhendi alles hoida.

Rohkem

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtustamine. 5 Keerulisemad tüübid. 6 Nähtavus, implitsiitsus.

Rohkem

Microsoft Word - EHR.docx

Microsoft Word - EHR.docx earvekeskus E-ARVE TELLIMUSTE JUHEND 1 Sisukord E-arvete tellimused... 3 Klientide tellimused... 3 E-arve tellimuse lisamine... 3 E-arve tellimuse muutmine... 9 Minu tellimused... 10 Minu tellimuse sisestamine...

Rohkem

SP Tartu Inspiratsioonipäev.key

SP Tartu Inspiratsioonipäev.key Kellele ja miks on strateegiat vaja? Ragnar Siil Milleks strateegiline planeerimine? Miks me teeme asju, mida me teeme? Miks me teeme seda, mitte hoopis midagi muud? Mida me soovime saavutada järgmiseks

Rohkem

6

6 TALLINNA ÕISMÄE GÜMNAASIUMI ÕPPESUUNDADE KIRJELDUSED JA NENDE TUNNIJAOTUSPLAAN GÜMNAASIUMIS Õppesuundade kirjeldused Kool on valikkursustest kujundanud õppesuunad, võimaldades õppe kahes õppesuunas. Gümnaasiumi

Rohkem

PowerPointi esitlus

PowerPointi esitlus Objektorienteeritud programmeerimine 9. loeng 2. aprill Eno Tõnisson 1 Kasutatud H. Heina loengumaterjalid J. Kiho Väike Java leksikon J. Kiho Java Programmeerimise aabits Y. D. Liang Introduction to Java

Rohkem

MTAT Loeng 2 ( )

MTAT Loeng 2 ( ) Disainiprotsessi juhtimine. Juhisdokumendid (1/28) Disaini protsess (2/28) Kasutajasõbraliku disaini protsess Disaini ülesanne on tagada tellijate ja tegijate ühtne arusaam süsteemi käitumisest ja välimusest

Rohkem

PowerPoint Presentation

PowerPoint Presentation Marek Alliksoo Export Sales Manager 01 November 2018 Targa linna lahendused linnaplaneerimises Tark linn Tark asjade internet (Tark Pilv) Tark automatiseeritus Tark energia Tark juhtimine Tark kodanik

Rohkem

SQL

SQL SQL Kuues loeng 3GL inside 4GL Protseduurid Funktsioonid Tavalised Funktsioonid (üks väljund) Ilma väljundita Protseduurid Viitargumentide kasutamise võimalus Tabel-väljundiga Protseduurid Create function

Rohkem

vv05lah.dvi

vv05lah.dvi IMO 05 Eesti võistkonna valikvõistlus 3. 4. aprill 005 Lahendused ja vastused Esimene päev 1. Vastus: π. Vaatleme esiteks juhtu, kus ringjooned c 1 ja c asuvad sirgest l samal pool (joonis 1). Olgu O 1

Rohkem

PowerPoint Presentation

PowerPoint Presentation Avaandmed Urmas Sinisalu Mis on avaandmed? Alus vs. Kohustus Avaandmed on kõigile vabalt ja avalikult kasutamiseks antud masinloetaval kujul andmed, millel puuduvad kasutamist ning levitamist takistavad

Rohkem

Tarkvaraline raadio Software defined radio (SDR) Jaanus Kalde 2017

Tarkvaraline raadio Software defined radio (SDR) Jaanus Kalde 2017 Tarkvaraline raadio Software defined radio (SDR) Jaanus Kalde 2017 Sissejuhatus Raadiosidest üldiselt Tarkvaraline raadio Kuidas alustada 2 Raadioside Palju siinussignaale õhus Info edastamiseks moduleerid

Rohkem

Andmed arvuti mälus Bitid ja baidid

Andmed arvuti mälus Bitid ja baidid Andmed arvuti mälus Bitid ja baidid A bit about bit Bitt, (ingl k bit) on info mõõtmise ühik, tuleb mõistest binary digit nö kahendarv kahe võimaliku väärtusega 0 ja 1. Saab näidata kahte võimalikku olekut

Rohkem

Microsoft Word - 23jaan07.doc

Microsoft Word - 23jaan07.doc Õppijate haldamine hindamine, tulemuste vaatamine, tegevuste jälgimine jne. Aadress: http://webct6.e-uni.ee Disainerijuhend: http://portaal.e-uni.ee/webct6/webct6_disainerijuhend.pdf Kursuse ülekandmine

Rohkem

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06 Andmebaaside projekteerimine Erki Eessaar Esimene trükk Teadaolevate vigade nimekiri seisuga 24. juuni 2013 Lehekülg 37 (viimane lõik, teine lause). Korrektne lause on järgnev. Üheks tänapäeva infosüsteemide

Rohkem

6

6 TALLINNA ÕISMÄE GÜMNAASIUMI ÕPPESUUNDADE KIRJELDUSED JA NENDE TUNNIJAOTUSPLAAN GÜMNAASIUMIS Õppesuundade kirjeldused Kool on valikkursustest kujundanud õppesuunad, võimaldades õppe kolmes õppesuunas. Gümnaasiumi

Rohkem

PowerPoint Presentation

PowerPoint Presentation Eesti pensionisüsteem võrdluses teiste Euroopa riikidega: olukord, väljakutsed ja kesksed valikud Lauri Leppik 7.06.2019 Pension kui vanadusea sissetulek Pension on ühiskondliku tööjaotuse kaasanne tekkis

Rohkem

Kursuseprogramm IFI6054 Agiilne tarkvaraarendus 3 EAP Kontakttundide maht: 28 Õppesemester: K Eksam Eesmärk: Aine lühikirjeldus: (sh iseseisva töö sis

Kursuseprogramm IFI6054 Agiilne tarkvaraarendus 3 EAP Kontakttundide maht: 28 Õppesemester: K Eksam Eesmärk: Aine lühikirjeldus: (sh iseseisva töö sis Kursuseprogramm IFI6054 Agiilne tarkvaraarendus 3 EAP Kontakttundide maht: 28 Õppesemester: K Eksam Eesmärk: Aine lühikirjeldus: (sh iseseisva töö sisu kirjeldus vastavuses iseseisva töö mahule) Ülevaate

Rohkem

Word Pro - digiTUNDkaug.lwp

Word Pro - digiTUNDkaug.lwp / näide: \ neeldumisseadusest x w x y = x tuleneb, et neeldumine toimub ka näiteks avaldises x 2 w x 2 x 5 : x 2 w x 2 x 5 = ( x 2 ) w ( x 2 ) [ x 5 ] = x 2 Digitaalskeemide optimeerimine (lihtsustamine)

Rohkem

Õnn ja haridus

Õnn ja haridus Prof. Margit Sutrop Tartu Ülikooli eetikakeskuse juhataja Õpetajate Liidu konverents Viimsis, 24. oktoobril 2012 Õnn tähendab elada head elu. Hea elu teooria seab 2 tingimust: Inimene on subjektiivselt

Rohkem

Microsoft Word - TallinnLV_lihtsustatud_manual_asutuse_juhataja_ doc

Microsoft Word - TallinnLV_lihtsustatud_manual_asutuse_juhataja_ doc Tallinna Linnavalitsuse sõnumisaatja kasutusjuhend asutuse juhatajale Sisukord 1. Süsteemi sisenemine...2 2. Parooli lisamine ja vahetamine...2 3. Ametnike lisamine ametiasutuse juurde...2 4. Saatjanimede

Rohkem

Kuidas hoida tervist töökohal?

Kuidas hoida tervist töökohal? Kuidas hoida tervist töökohal? Kristjan Port, TLU 25.04.2017 Tööinspektsiooni konverents Kas aeg tapab?. Mis on tervis? Teadmatus võib olla ratsionaalne. On olukordi milles teadmiste hankimise kulud ületavad

Rohkem

Mining Meaningful Patterns

Mining Meaningful Patterns Konstantin Tretjakov (kt@ut.ee) EIO õppesessioon 19. märts, 2011 Nimetuse saladus Vanasti kandis sõna programmeerimine natuke teistsugust tähendust: Linear program (~linear plan) X ülesannet * 10 punkti

Rohkem

Sissejuhatus Informaatikasse Margus Niitsoo

Sissejuhatus Informaatikasse Margus Niitsoo Sissejuhatus Informaatikasse Margus Niitsoo Saagem tuttavaks Minu nimi on Margus Niitsoo Informaatika doktorant Teoreetiline krüptograafia 23 Vallaline Hobid: Basskitarr, Taiji, Psühholoogia Saagem tuttavaks

Rohkem

1. AKE Ajalise keerukuse empiiriline hindamine

1. AKE Ajalise keerukuse empiiriline hindamine http://kodu.ut.ee/~kiho/ads/praktikum/ 4. PSK Paisksalvestus. Loendamine Mõisteid Paisktabel (Hashtable, HashMap) Paisktabeli kasutamine loendamisülesannetes Paiskfunktsioon, kollisoonid (põrked) Praktikumitööd

Rohkem

Statistikatarkvara

Statistikatarkvara Sissejuhatus statistika erialasse, sissejuhatus matemaatika erialasse, 20. september 2018 Statistikatarkvara põgus ülevaade Krista Fischer Statistikatarkvara kategooriad Võib jagada mitut moodi: Tarkvara,

Rohkem

Võistlusülesanne Vastutuulelaev Finaal

Võistlusülesanne Vastutuulelaev Finaal Võistlusülesanne Vastutuulelaev Finaal CADrina 2016 võistlusülesannete näol on tegemist tekst-pilt ülesannetega, milliste lahendamiseks ei piisa ainult jooniste ülevaatamisest, vaid lisaks piltidele tuleb

Rohkem

Kuidas ärgitada loovust?

Kuidas ärgitada loovust? Harjumaa ettevõtluspäev äriideed : elluviimine : edulood : turundus : eksport Äriideede genereerimine Harald Lepisk OPPORTUNITYISNOWHERE Ideed on nagu lapsed Kas tead kedagi, kelle vastsündinud laps on

Rohkem

Õpetajate täiendkoolituse põhiküsimused

Õpetajate täiendkoolituse põhiküsimused Õpetajate täienduskoolituse vajadus ja põhimõtted Meedi Neeme Rocca al Mare Seminar 2010 Hariduse eesmärk on õpilase areng Olulised märksõnad: TEADMISED,ARUKUS,ELUTARKUS,ISIKUPÄ- RASUS, ENESEKINDLUS JA

Rohkem

E-õppe ajalugu

E-õppe ajalugu Koolituskeskkonnad, avaloeng Anne Villems September 2013.a. Miks selline kursus? Info- ja kommunikatsioonitehnoloogia on meie igapäevane abiline õppetöös. Milliseid vahendeid on teie senises õppetöös kasutatud?

Rohkem