Tallinna Pedagoogikaülikool Informaatika osakond Jaagup Kippar Veebiprogrammeerimise ülesannete kogu Mai 2002 Sissejuhatus Õppimise juures on tarvilik teadmiste kinnitamiseks teoreetiliselt poolelt saadud tarkused praktikasse rakendada. Koostatud ülesanded on mõeldud abiks nii õpetajale kui iseõppijale, pakkudes mitmesuguseid lahendust nõudvaid probleeme ning andes mitme taseme tõttu ühe võimaliku tee lahenduse poole liikumiseks. Osa ülesannetest võib sobida otse üle võtta, kuid soovitav on arvata siinsest kirjutisest leitud idee aluseks ning vastavalt õpitud taustale lahendusteed lihtsustada või sellele nüansse juurde mõelda. Ideed on enamasti küllalt universaalsed ning sobivalt kohandades peaksid lahendamiseks sobima mitmesuguse ettevalmistuse korral. Mitmelgi puhul on pakutud enam võimalusi kui lihtsamaks oskuste harjutamiseks tarvilik. Kui ülesanne liialt keerulisena tundub, siis ei pea seda mitte kõrvale jätma, vaid tuleb vaadata, kas õnnestub mõne punkti eemaldamise või lahtiseletamise abil probleem õppijatele suupäraseks teha. Enamik siin toodud ülesandeid pole seotud konkreetse keelega, vaid samu lahendusi on võimalik saavutada keelest sõltumata. Märgatav osa ülesandeid on jaotatud kolmeks alapunktiks, kus iga järgmine peaks eelmisest paar-kolm korda keerulisem olema. Tegevused on püütud jagada nõnda, et nii esimene punkt eraldi kui kaks alguspunkti koos annaksid terviku ning sinna pidama jäädes ei tekiks poolelijäämise tunnet. Koostamise ajal on püütud nii arvestada, et ülikooli 90-minutilise praktikumipaari ajal jõuaksid kõige tugevamad lahendada kogu kolmest punktist koosneva ploki. Enamik saaksid selle ajaga hakkama kahe astmega ja mõned neist jõuaksid raskeima taseme läbi mõelda. Ning ka kõige nõrgemad või lihtsalt õpilased, kel sel korral pea lahti pole, peaksid vähemasti esimese tasemega hakkama saama. Ülesanded, kus on rohkem alapunkte, on mõeldud kas algõppeks või siis väga erisuguse tasemega õppijate rühma tarbeks. Esimesel juhul on teemad võimalikult väikesteks osadeks jaotatud, et igaühel õnnestuks tunni jooksul vähemalt üks või kaks eduelamust saada. Teisel juhul on arvestatud, et tugevamad võivad mõne alumise taseme läbi katsetamata jätta (eeldusel, et nad mõtetes sellest üle on) ning siis raskemate etappide kallale asuda. Sisukord Sissejuhatus 2 Sisukord 3 Graafika 9 Aknad 9 Liikuv raamaken 9 Aken 9 Põrkav aken. 9 Aknad 9 Aken ja käsurida 10 Juhuarvud 10 Paigutamine 10 Esemed 10 Ratas 10 Tool 10 Kastekann 11 Lamp 11 Pastapliiats 11 Maja 11 Televiisor 11 Lift 11 Kulgur 12 Margapuu 12 Valgusfoor 12 Kell 12 Kaalu mudel 12 Kuusk 12 Pudel 13 Põrkav pall 13 Liivakell 13 Jalgratas 13 Muusikainstrumendid 13 Mandoliin 13 Keelpill 13 Akordion 14 Vilepill 14 Protsessid 14 Veetase 14 Vaiade maasse löömine. 14 Lille kasvamine. 14 Autosõit 15 Kilpkonna juhtimine. 15 Värvimuusika. 15 Raudtee 15 Hammasrattad 15 Pendel 16 Kaldpind 16 Liikuv inimene 16 Liikuva auto mudel 16 Kriipsujuku kõnd 16 Joonistamine 16 Punktid 16 Joonistamine 17 Hiir 17 Ekraaniilustaja 17 Ekraaniilustused 17 Tulpdiagramm 17 Spiraal 17 Rakend 18 Punktid failist 18 Graphics2D 18 Mängud 18 Trips-traps-trull 18 Kabe 18 Tennis 19 Pokker 19 Ussimäng 19 Trilma 19 Tilgapüüdja 19 Mängukaardid 19 Kriipsumäng 20 Nooltega ralli. 20 Poomine. 20 Hiir ja ruut 20 Hiiremäng 20 Sirelasemäng 21 Rendzu 21 Klahvidega liigutamine. 21 Rakendused 21 Tekstikomponent 21 Tekstiredaktor 21 Statistikaga tekstiredaktor 22 Klahvivajutused 22 Sõnatrükk. 22 Kalkulaator 22 Nimede otsing 22 Geoinfosüsteem 23 Trükiharjutus 23 Swing 23 Swingi tabel 23 Swingi puu 23 Progressiriba 23 Slaider 24 Valikupaneel 24 Tekstiredaktor valikupaneelil 24 Menüüd 24 Sisemised raamid. 24 Swingi komponendid 25 Pilditöötlus 25 Ekraanipilt 25 Kopeeritud ekraanipilt 25 Pildi koostamine. 25 Joon pildil 25 Kurviline ekraaniilustus 26 Värviüleminek 26 Pildiredaktor 26 Pildiredaktori koostamine 26 Matemaatika 26 Palli lend 26 Joon 27 Kolmnurk 27 Graafik 27 Kujundid 27 Siinus 27 Jooned 27 Põrkamine sirgjoonel 28 Põrkamine tasandil 28 Põrkamine 28 Pall ekraanil 28 Pallivise 28 3D 29 3D kujundid 29 Ringid ja seinad 29 Ringid võrgus 29 3D võrgumäng 29 Rekursioon 29 Naerunägu 29 Ringide joonistamine 30 Riigipiir 30 Viisnurgad 30 Võrk 31 Pistikliides 31 Võrguühendus 31 Jututuba 31 Graafiline jututuba 31 Jututoa server. 31 Meldimine 32 Ühendused 32 Andmetalleti 32 Andmesalvesti 32 Võrgumärkmik 32 Võistkonnad 33 Aardeotsimise mängu veebiprotokoll 33 Aardeotsimise mäng 34 Laevade pommitamine 35 Rändurid võrgumaastikul 35 Liiklus võrgus 35 Veebilehtede lugemine 35 HTML lugeja 35 Viited HTML-failis 35 Veebilugeja 36 Programmeeritav veebiserver 36 Servlet 36 Sessioon servletiga 36 Võimaluste proovimine 36 Andmebaasiühendus 36 Andmetabelid 37 Külalisraamat. 37 Õpilaste nimekiri 37 Kursustele registreerimine 37 Ülesannete esitamine 38 Hinded veebis 38 Registreerimisvorm 38 Mitme tabeliga registreerimisvorm. 38 Teated andmebaasis 39 Teadete omadused 39 Autentimine 39 Sisestuskontroll 39 Elektrooniline küsitlus 40 E-kaart 40 Loendur 40 Kalender 40 JSP 40 JSP II 41 MySQLi konfigureerimine 41 Veebitehnoloogiad 41 RMI oksjon 41 RMI 41 CORBA 41 Kirjad 41 Tekst 42 Failid 42 HTML-looja 42 Tekstifail 42 Hinnetetabel 42 Sõnad tekstifailis 42 Tekstifail ja täht 43 Tekstifail ja tähe osakaal 43 Sünniaastad 43 Kalender 43 Tekst 43 Lause 43 Failiuuring. 44 Tekstifaili lugemine. 44 Tekstiekraan 44 Käsurida ja tekstiaken. 44 Sõnad 44 Sõnade võrdlus 44 Kuupäev 44 Arvamismäng. 45 Osta elevant ära. 45 Tekstiväljad 45 Teksti kerimine 45 Teksti kerimine II 45 Teksti kerimine III 45 Sõna uurimine 46 Sõnetöötlus 46 Keel 47 Alamprogrammid 47 Objektid 47 Punktid 47 Klassid ja isendid 47 Objektid 48 Paketid 48 Failinimed 48 Failide nimed 48 Rekursioon failinimedega 48 Andmed 49 Lõimed 49 Vormindamine 49 Andmekollektsioon 49 Täiendatud nimistu 49 Voogude filtreerimine 49 Turva 50 Signeerimine 50 Digitaalallkiri 50 Krüptograafia 50 Õigused 50 Nuputamist 51 Tähejärjestused. 51 Tähekombinatstioonid 51 Pakkija 51 Tee ruudustikul 51 Liitmine 52 Bussiplaan 52 Histogramm 52 Võrrand 52 Baidid ja bitid 53 Arvamine 53 Rooma numbrid 53 Numbrid sõnadena 53 Kolm kappi 53 Arvusüsteemid 54 Algarvud 54 Punktid 54 Kiirus 54 Söökla 54 URL 55 Põrkamine 55 Caesari siffer 55 Muusika 56 MIDI 56 Noodid 56 Ksülofon 56 MIDI sekventsid 56 MIDI fail 56 Kolmkõlad 56 Digitaaheli 57 Digitaalheli 57 Helifailid 57 Heliredaktor 57 Veebilehed 58 Veebilehtede genereerimine 58 Käsitsi kirjutatud HTML 58 Liitmisülesanded 58 Tekstülesanded 59 Aknad 59 Vormi elemendid 59 Arvutusülesanded 59 Tekstianimatsioon 60 Kalender 60 Kalkulaator 60 Navigeeritav veebileht. 60 Objektid 60 Andmed 61 Andmeotsing 61 Raamatumüük 61 Küpsised 61 Elektronpood 61 Regulaaravaldised 62 Asutuse telefoniraamat 62 Andmete esitamine 62 Tunniplaan 62 Javaskripti graafika 63 Punktpildid 63 Ruudustik 63 Inimeste pikkused 63 Ruutude püüdmine 63 Kihid 64 Liikuvad klotsid 64 Kiht 64 Trepp 64 Parkla 64 Sõiduväljak 64 Tetris 65 Kabe 65 Joonistamine 65 Ühe mängija tennis 65 Tennis 65 Mäluga menüü 65 Keeled 66 Veebileht PERLi abil 66 Ülesandeid VRMLiga tutvumiseks. 66 XML 67 XML sugupuu 67 XML andmetöötlus DOM-iga 67 SAX 67 XML ja DOM 68 XSL 68 Andmepuu loomine 68 Graafika Aknad Liikuv raamaken ? Loo ekraanile raam ? Liiguta raami ekraanil vasakult paremale ? Liiguta raami ülalt alla ja tagasi. ? Pane raam vasakule-paremale pendeldama. ? Suurenda ning vähenda raami laiust. ? Alusta väikesest raamist ekraani üleval vasakul nurgas. Pane raam kasvama üle ekraani. Jäta parem alumine nurk paigale ning vähenda raam paremasse alla nurka pisikeseks tagasi. Aken ? Paiguta ekraani allserva sinise taustaga aken. ? Lisaks eelmisele kirjutatakse akna päisesse juhuslikult valitud inimese nimi. ? Lisaks eelmisele nimed, mille vahel vailida, loetakse sisse failist. Põrkav aken. ? Aken liigub ekraanil ülevalt alla. ? Aken liigub pidevalt alla-üles. ? Akna kiirus langemisel suureneb ning ülestõusmisel väheneb. Aknad ? Ava korraga kaks akent. ? Määra ühe akna taust roheliseks, teise oma punaseks. ? Pane üks aken liikuma paremalt vasakule ning teine vasakult paremale. ? Näita akna pealkirjaribal koordinaate. ? Aken liigub üle ekraani vasakult paremale. Kuni keskkohani akna kõrgus suureneb, edasi hakkab vähenema. ? Aken liigub üle ekraani vasakult paremale. Kuni keskkohani akna liikumise kiirus suureneb, edasi hakkab vähenema. ? Aken liigub üle ekraani paraboolikujulist trajektoori pidi. Aken ja käsurida ? Käsurealt saadud sõna paigutatakse akna pealkirjaks. ? Lisaks eelmisele koosneb pealkiri kahest sõnast ? Pealkirjaribale paigutatakse kahe käsureale kirjutatud arvu summa. ? Akna kaugus vasakust servast määratakse käsurealt ? Käsurealt teatatakse akna asukoht ning suurus. ? Luuakse käsurealt määratud arv aknaid. Juhuarvud ? Väljasta akna pealkirjaribale juhuslik arv. ? Määra akna kõrguseks juhuslik arv. ? Loo juhusliku asukoha ja suurusega aken. ? Loo viis juhusliku asukoha ja suurusega akent. ? Loo juhuslik arv aknaid. ? Määra akna taustaks juhuslik värv. ? Määra akna taustaks juhuslik halltoon. ? Määra akna taustaks juhusliku heledusega sinine. ? Määra akna pealkirjaks juhuslikult üks käsurea parameeter. Paigutamine ? Paiguta BorderLayout-i abiga nupp ülaserva ning tekstiala keskele. ? Jaga ülaserv võrdselt kolme nupu vahel. ? Paiguta allserva ühte ritta valik (choice) ja kerimisriba nii, et valik võtab tema jaoks hädavajaliku ruumi, riba aga ülejäänu. ? Allserva teise ritta lisa märkeruut ning kolm üheskoos töötavat raadionuppu. ? Koosta sama kujundus, kasutades Swingi komponente. Esemed Ratas ? Joonista kaheteistkümne kodaraga ratas. ? Pane see ratas keerlema. ? Nii kodarate arvu kui keerlemise kiirust saab kerimisriba abil muuta. Tool ? Joonista ekraanile tool nurga alt vaadatuna. ? Tooli seljatoe kõrgust ning jalgade kaldenurka saab määrata kerimisribaga. ? Lisaks eelmisele pannakse tool kasutaja silme ees keerlema. Kastekann ? Joonista kõvera sangaga kastekann. Nupuvajutuse peale kukub kastekannu tilast välja piisk. ? Lisaks eelmisele lendab piisk tilast välja hooga, kukkudes vastavalt füüsikaseadustele. ? Lisaks eelmisele on hiire topeltklõpsu puhul lendamise kiirus suurem. Arvestatakse ka kasutaja määratud kiirusega puhuvat tuult. Lamp ? Joonista laualamp. Ühe nupuvajutuse peale värvub pirn/kuppel kollaseks, teise peale valgeks tagasi. ? Kerimisribaga saab määrata põlemise heledust. ? Failis on kirjas põlemise "muster": kui kaua põleb, kaua on pime. Kui ring täis alustatakse taas algusest. Pastapliiats ? Joonista pastapliiats. Pastapliiatsi suurust saab sujuvalt muuta. ? Lisaks eelmisele tuleb kord nupule vajutades süsi välja, teisel korral läheb tagasi. ? Lisaks eelmisele saab hiirega teravikust kinni võttes pastapliiatsit laual pöörata. Maja ? Programm joonistab ekraanile maja. ? Programm küsib kasutajalt korruste ja trepikodade arvu ning joonistab vastavalt sellele katusega maja. ? Lisaks eelmisele paneb programm maja ekraanil pöörlema. Joonistamisel arvestatakse perspektiivi. Televiisor ? Ekraanile joonistatakse televiisor. ? Nupuvajutusega saab teleris näidatavat pilti vahetada. ? Näidatakse järjestikku kõiki jooksvas kataloogis leiduvaid .gif ja .jpg faile. Lift ? Lift sõidab üheksakorruselises majas ülevalt alla. ? Liftil on numbrid ühest üheksani ning igal korrusel on kutsenupp. Lift sõidab vajutatud korrusele. ? Lisaks eelmisele on trepikojas lifte kaks. Kutse peale sõidab kohale lähim vaba lift. Kulgur Ekraanil paistab plats pealtvaates. Kasutaja saab mänguasja platsil liigutada klahvidega.Mängukulgur väljakul olevast plangust läbi ei pääse, plangust saab vaid ringi ümber minna. ? Kulgur on neljakandiline. Plank on keset platsi, veerand platsi pikkune ning paralleelne platsi ühe servaga. ? Planke on platsil mitu ning mõni ei asetse täisnurga all. ? Kulgur on ümmargune ning plankude otspunktide andmed on failis. Margapuu ? Ekraanile joonistatakse margapuu, kus saab raskuse asukohta määrata. ? Saab määrata jõu õlga ning raskuse asukohta. Sõltuvalt tasakaalust kaalutava esemega on margapuu kas otse või kummalegi poole viltu. ? Lisaks eelmisele peab programm ka ilus välja nägema ning liikumised toimuma sujuvalt. Valgusfoor ? Joonistatakse kolme tulega valgusfoor. Nupuvajutuse peale läheb foor järgmisesse asendisse. ? Foor paistab nurga alt, nii et näha on kahe külje tuled. Töötab iseeneseslikult. ? Ristmikul töötavad sünkroonis neli foori. Autod sõidavad teel, kus see on lubatud, teisel teel ootavad foori ees. Kell ? Programm joonistab ekraanile kella ? Vastavalt kasutaja poolt määratud ajale paigutatakse kellale tunni- ja minutiosuti. ? Ekraanil töötav kell näitab õiget aega. Saab määrata äratusaja ning selle saabumisel annab arvuti äratusest märku. Kaalu mudel ? Ekraanile joonistatakse kaal. Hiirevajutusega saab kaaluvihte lisada ja eemaldada. ? Kummalegi poole saab panna kuni 3 100g. vihti. Raskem pool vajub alla. ? Kaalule saab hiirega mõlemale poole vedada ja eemaldada vihte ning pealtnäha tundmatu massiga esemeid. Programm õpetab, kuidas eseme massi kindlaks teha. Kuusk ? Joonistatakse kolmnurkade abil kuusepuu. ? Kasutaja saab määrata "lülide" ning kuuskede arvu. ? Pane kuused niimoodi liikuma, et vaatajale jääks mulje, nagu ta liiguks pikal metsateel. Pudel ? Joonista kasutaja määratud arv pudeleid. ? Pudelis on näha kasutaja määratud kogus jooki. Pudeli maht on 1 liiter. ? Lisaks eelmisele määrab kasutaja ka pudeli mahu. Pudeli kuju ei muutu, nähtav suurus aga vastavalt füüsika seadustele. Vedeliku kõrguse näitamisel arvestatakse ka pudeli kitsenemist ülalt. Põrkav pall ? Ring liigub ekraani vasakus servas alla ja üles. Kukkumisel kiirus kasvab, tõusul kahaneb. ? Iga põrkega amplituud väheneb, korraga põrkab mitu palli. ? Lisaks eelmisele saab hiirevajutuse peale panna uusi palle põrkama. Pallideks on pildid. Liivakell ? Ekraanile joonistatakse liivakell. ? Liivakella liiv kukub minuti jooksul ühtlaselt alla. ? Lisaks eelmisele saab liivakella hiire abil sujuvalt ümber keerata. Jalgratas ? Joonista jalgratas. ? Näha on ratta küljes olevate helkurite pöörlemine. ? Hiirega saab väntasid ringi ajada. Rattad (koos kodaratega) liiguvad koos väntadega, arvestades, et suurel hammasrattal on 46 ning väikesel 23 hammast. Muusikainstrumendid Mandoliin ? Joonista ekraanile mandoliin. ? Kasutaja saab määrata joonistatavate krihvide arvu ning kaela laiust. ? Vajutades keele ja krihvi ristumiskohale, kõlab sellele vastav heli. Keelpill ? Joonista ekraanile keelpilli kael. ? Luba kasutajal määrata krihvide ning keelte arv. Igal keelel on häälestusnupp. ? Iga keele puhul saab määrata, millisel kõrgusel vastav keel lahtisena kõlab. Vajutades keele ja krihvi ristumiskohale, kõlab sobiva kõrgusega heli. Akordion ? Joonista klaviatuuri ja 36 bassiga akordion. ? Basside ridade ja veergude arvu saab kasutaja määrata. Samuti hiire abil lõõtsa lahti ja kokku vedada. ? Lisaks eelmisele kõlab bassinuppudele vajutades neile vastav heli. Vilepill ? Joonista vilepill. Pillil on avatud tekstiväljas määratud hulk auke. ? Lisaks eelmisele teeb pillile vajutamisel viimane häält. ? Augule vajutamisel on augud lõpust kuni sinnani avatud. Kõlab sellisele sõrmede paigutusele vastav hääl. Protsessid Veetase ? Kasutaja sisestab basseini pikkuse, laiuse ja sügavuse ning basseinis oleva vee hulga. Programm näitab ristlõikes veetaset basseinis ? Lisaks eelnenule saab kasutaja basseini vett lisada või sealt võtta. Programm näitab, kuidas veetase tõuseb või alaneb. Tuleks arvestada ka võimalusega, et vesi on otsas või et ajab üle ääre ? Kasutaja sisestab kahe ühendatud anuma mõõtmed. Ta saab kummassegi anumasse vett lisada või sealt võtta. Programm näitab, kuidas vesi anumates ühtlustub ning kuidas vesi (nt õhumullid) anumaid ühendavas torus voolab. Vaiade maasse löömine. ? Joonista suurte, majaehituseks tarvilike vaiade maasse löömiseks tarvilik raske haamriga masin koos kõrval asuva vaiaga. ? Nupuvajutuse peale kukub haamer vaiale peale ning vai vajub veidi sügavamale. ? Kasutaja annab ette vaia läbimõõdu, pikkuse ja vajaliku löömissügavuse. Jämedamad ja sügavamal asuvad vaiad liiguvad aeglasemalt. Algkäskluse peale töötab haamer kuni vai on õigele sügavusele löödud. Lille kasvamine. ? Joonista kasutaja määratud pikkusega lill. ? Saab määrata ka õielehtede arvu ning on näha, kuidas lilleõis avaneb. ? Siledal maal tuleb hiirevajutuse kohal välja kaks idulehte, sealt vars, lehed, pung, lõpuks avanev õis. Saab lisaks määrata lehtede arvu ja kasvamise kiirust. Autosõit ? Liiguta kriipsu ekraanil nooleklahvidega. ? Kriipsu saab liigutada piki oma sihti edasi ja tagasi. Teise klahvipaari abil saab kriipsu sihti muuta. ? Ühe klahvipaariga saab esirattaid pöörata, teise abil kiirust muuta. Auto sõidab nii nagu juhitakse. Kilpkonna juhtimine. ? Kilpkonna elupaigaks on 10x10 ruudustik. Lähteasend vasakul ülemises ruudus suunaga paremale. Talle saab anda sõnalisi käske "edasi" ja "tagasi". Esimesel juhul liigutakse üks samm edasi, teisel juhul samm tagasi. ? Lisatakse käsud "vasakule" ja "paremale". Nende puhul pööratakse kilpkonna vastavas suunas täisnurga jagu. Käsklused saab kirjutada tekstialasse käsujadaks, mis ühe hooga tööle pannakse. ? Keelde lisatakse vahendid valikuks, edasiliikumisvõimaluse kontrolliks, kordamiseks (tööjärje suunamiseks) ning programmi töö katkestamiseks. Pane kilpkonn liikuma mööda seinaääri, s ning 8-kujuliselt. Värvimuusika. ? Joonistatakse kolme tulega (punane, roheline ja sinine) värvimuusika. Tuli, millele vajutatakse, jääb põlema, teised kustuvad. ? Hiirega vasakule poole vajutades kõlavad madalad, paremal kõrged ning keskel vahepealsed helid. Madalatega põleb koos punane, kõrgetega sinine ning vahepealsetega roheline tuli. ? Kõlanud helide mängimise ajad salvestatakse faili ning nupule vajutades mängitakse koos värvimuusikaga maha. Raudtee ? Ekraanil paistab liikuv raudtee pealtvaates ? Programm demonstreerib pöörangu tööd. Kasutaja saab määrata, kumma teeharu peale rong suundub. Ekraanil on näha, kuidas liigub rongi rattapaar. ? Ekraanil on raudteede rägastik (näiteks neli kõrvuti olevat ovaali). Kasutaja saab muuta pöörangute asendit ning trammi kiirust. Hammasrattad ? Joonistatakse kasutaja määratud hammaste arvuga hammasratas. ? Selliseid hammasrattaid joonistatakse kaks ning pannakse üksteisesse hambunult pöörlema. ? Kasutaja annab ette mõlema hambunult pöörleva ratta hammaste arvu. Pendel ? Pendel liigub ühest servast teise. ? Pendel võngub vastavalt füüsikaseadustele ? Lisaks eelmisele saab pendli pikkust ning algnurka hiirega näidata. Pikem pendel võngub aeglasemalt. Lisaks on näha, kuidas võnkumine tasapisi sumbub. Kaldpind ? Ekraanil on kaldpind ja sellele järgnev tasapind. Klots libiseb mööda pindu. ? Lisaks eelmisele arvestatakse liikumisel raskuskiirendust ja takistusjõudu. ? Klotsi asemel on pöörlev ratas. Kasutaja saab ratta algse asukoha määrata hiirega. Liikuv inimene ? Kujuta ekraanil liikuvate jalgadega külgvaates inimene ? Kujuta ekraanil programmi kasutaja poolt määratud kiirusega jalutav inimene, kel jalad maas ei libise. ? Sama mis eelmine, kuid kasutaja võib lisaks ka oma vaatekohta ja -suunda valida. (Lihtustuseks võib reaalse inimese asendada kriipsujukuga.) Liikuva auto mudel ? Auto sõidab üle ekraani ? Auto sõidab kasutaja poolt määratud kiirusega üle ekraani ning ta rattad pöörlevad vastavalt liikumiskiirusele ? Autot saab klahvidega juhtida (pöörata ning kiirust muuta). Vaataja on paigal. Arvesta auto kujutamisel ka perspektiivi. Kriipsujuku kõnd ? Koos hiire vedamisega liigub ekraanil kriipsujuku. ? Kriipsujuku jalutab ekraanil nii, et käed ja jalad liiguvad nagu inimesel kõndides. ? Lisaks eelmisele jalutab kriipsujuku ekraanil edasi-tagasi, pöörates end ise ümber. Suurust ning kõndimise kiirust saab kerimisribade abil muuta. Joonistamine Punktid ? Kohta, kus hiirega ekraanile vajutada, tekib väike rist. ? Lisaks: teineteisest kõige kaugemal asuvate punktide vahele tõmbab arvuti joone. Iga uue punkti lisamisel leitakse pikim vahe uuesti. ? Kõigepealt ühendatakse kaks kõige lähemal asuvat punkti. Järgnevalt ühendatakse tekkinud võrku punkt, millel on selleni lühim ühendustee. Nii edasi, kuni kõik punktid on võrku ühendatud. Iga ühendusjoone keskele kirjutatakse tema järjekorranumber. Joonistamine ? Joonista raamile ring. ? Joonista tsükli abil mitu ringi. ? Joonista kasutaja poolt määratud arv ringe. ? Joonista ritta kasutaja määratud arv puid (lihtne puu võib koosneda joonest ja ringist). ? Joonista hiirega vajutamise kohale puu. ? Joonista lihtne maja. Hiir ? Hiirega vajutamise kohale joonistatakse ristkülik ? Hiirega vajutamise kohale joonistatakse tekstivälja sisestatud sõna ? Joonistatava sõna värvi saab määrata valikmenüüst ? Hiirega lohistades jääb järele joon Ekraaniilustaja Programm joonistab ekraanile ? suvalisse kohta suvalise värviga punkte. ? suvalisse suunda minevaid ligikaudu kümne punkti pikkusi jooni. Joone algus ühtib eelmise lõpuga ? keerleva värviliste külgedega kuubi Ekraaniilustused ? Joonista ekraanile ring. ? Pane ekraanile tekkima suvalisse kohta väikseid ringe. ? Ka ringi värv valitakse juhuslikult. ? Suvalisse kohta tekib täpp ning suureneb ringiks. ? Selliseid suurenevaid ringe tuleb üksteise järel palju. ? Valmissaanud ring liigub ekraani allserva ja kaob. ? Kadumisel muutub ring taas väikseks täpiks. Tulpdiagramm ? Vastavalt sisestatud arvule joonistatakse ekraanile tulp. ? Etteantud kolme arvu järgi (vahemikus 1-10) joonistatakse tulbad ning skaala tulpade kõrvale. ? Sama, kuid arvude vahemik pole ette teada. ? Tekstifailis on inimeste sünniaastad. Tulpade abil näidatakse, millisest aastakümnest kui mitu inimest on. Spiraal ? Programm joonistab ekraanile spiraali ? Kasutaja saab (näiteks kerimisriba abil) muuta spiraali keerdude vahet. ? Lisaks eelmisele saab muuta ka spiraali pöörlemiskiirust Rakend ? Loo tervitav veebileht. ? Paiguta sinna rakend, millele on joonistatud ring. ? Pane programm töötama nii rakenduse kui rakendina. ? Hiirevajutusega määratakse ringi asukoht. ? Valikust määratakse, kas joonistatakse ring, ruut või kolmnurk. ? Paremas servas asuva kerimisribaga määratakse kujundi suurus. ? Veendu, et programm töötab endiselt edukalt nii käsureal kui veebilehel. Punktid failist Tekstifaili igal real on ühe punkti koordinaadid ? Programm joonistab iga punkti kohale ringikese. ? Ring liigub ekraanil, läbides järjestikku kõik punktid. ? Lisaks eelmisele arvestatakse joonistamisel mõõtkava nii, et kõik punktid ekraanile parajasti mahuvad. Taustaks on koordinaatteljestik. Graphics2D ? Joonista ring joone laiusega 25 punkti. ? Määra joonistusvärviks üleminek punaselt kollasele ? Määra taustamustriks väikesed kriipsujukud. ? Muuda joon punktiiriks. ? Määra joonistusala nii, et sinna jääb vaid osa ringjoont ? Jäta taust ringi alt veidi läbi paistma. Mängud Trips-traps-trull ? Ekraanil on #-kujuline mängu põhi. Hiirega vajutatud ruudu keskele joonistatakse rist. ? Lisaks eelnevale joonistatakse kordamööda riste ja ringe. Ühte ruutu mitut kujundit ei lubata panna. ? Lisaks eelmisele teatatakse, kes võitis või jäi mäng viiki. Kabe ? Ekraanile joonistatakse kabelaud ning tekstiväljas määratud ruutu paigutatakse kabenupp. ? Nuppude seis loetakse failist, nupud on piltidena. ? Lisaks eelmisele näidatakse täppide abil, kuhu valge käia/võtta võib. Tennis ? Võrguga tenniseväljakul liigub pall (ring) vasakult paremale. ? Samaaegselt ringi liikumisega saab ekraanil liigutada reketit. ? Kummalgi serval on liigutatav reket, mille tabamisel pall tagasi põrkab. Loetakse punkte. Pokker ? Ekraanil on kolm tekstivälja. Nupuvajutuse peale pannakse igasse välja juhuslik arv vahemikus 1-5. Kui kõik kolm numbrit on ühesugused, siis joonistatakse ekraanile "Võit". ? Eelmisega võrreldes on arvude asemel oma kohale liikuvad pildid. ? Lisaks eelmisele saab üheks korraks kaks pilti muutumatuks määrata. Loetakse punkte. Mängijate seisud on krüpteerituna failis. Ussimäng ? 10*10 ruudustikul asub vasakul ülaservas neljalüliline uss, keda saab nooleklahviga paremale liigutada. ? Uss liigub pidevalt, nooleklahvidega saab tema liikumise suunda määrata. Seinani jõudmisel uss seiskub. ? Ussiga püütakse juhuslikus kohas asuvat kuldmuna. Muna kättesaamisel uss pikeneb kahe lüli võrra ning muna tekib uude kohta. Seina või enese hammustamisel uss lüheneb nelja lüli võrra. Trilma ? Ekraanile joonistatakse trilma mängulaud, kuhu saab hiirega nuppe paigutada. ? Mängulauale saab ka võrgu kaudu teate saata, kuhu nupp panna. ? Võrgu kaudu saab kahe- või kolmekesi trilmat mängida. Tilgapüüdja ? All servas saab liigutada kaussi ? Ekraanil kukub tilk. Selle kaussi püüdmisel saab punkti. ? Tilku võib korraga kukkuda mitu. Mäng on meeldivalt kujundatud ning töötab märgatavate vigadeta. Mängukaardid ? Osaliselt üksteise peale joonistatakse kolm juhuslikku mängukaarti. ? Kaarte saab üksteise peale hiirega vedada. ? Kaardid on segatuna laiali laua peal. Sealt saab välja lohistada kaks kaarti ning need ringi pöörata. Kui numbrid on ühesugused, võetakse see paar välja ning leidjale lisatakse punkt. Kriipsumäng ? Ekraanil on 10x10 ruudustik. Kasutaja saab ruudu servi jämedamaks kriipsuks märkida. ? Lisaks eelmisele, kui ruudu neli külge on märgitud, joonistatakse ruut teise värviga. ? Kaks kasutajat saavad võrgu kaudu kordamööda serva kriipse märgistada. Kelle kriipsust ruut ümbritsetud saab, sellele lisatakse punkt. Nooltega ralli. ? Noolte abil saab muuta ekraanil liikuva ringi kiirust. ? Külgmiste nooltega saab muuta liikumise suunda, teiste nooltega kiirust. ? Korraga võib üle võrgu sõita kaks kasutajat. Aetakse taga juhuslikus kohas paiknevat aaret, mis selleni jõudmisel hüppab uude kohta. Poomine. ? Arvuti väljastab failis olevatest sõnadest juhusliku. ? Lisaks eelmisele näidatakse sõna tähed kriipsudena. Iga kord, kui kasutaja sisestab tähe, näidatakse sinnamaani kirjutatud tähed sõnas välja, ülejäänud on endiselt kriipsudena. ? Lisaks eelmisele on mäng ilusti kujundatud, olematu tähe pakkumise eest lisandub pildike poomisahelas. Hiir ja ruut Töö aluseks näide, kus ruut liigub hiirevajutuse kohale. ? Lisa ekraanile tekstiväli ning kirjuta sinna hiirevajutuse koordinaadid. ? Programmi käivitamisel paigutatakse ruut juhuslikku kohta, hiirevajutuse peale koht ei muutu. ? Tekstiväljas teatatakse, kas hiirega saadi ruudule pihta. ? Tabamuse korral leitakse ruudule uus juhuslik asukoht. ? Mõõdetakse aega, palju kulus kümnel järjestikusel korral ruudu tabamiseks. Hiiremäng ? Programm mõõdab, kui palju kulub aega kümne hiirevajutuse tegemiseks. ? Mängu algul tekib ekraanile ring. Kui sellele vajutada, siis ring sealt kaob ning tekib uude juhuslikku kohta. Teatatakse, kui palju kulus aega 10 ringi tabamiseks. ? Lisaks eelmisele salvestatakse ringide asukohad, mängu alguse ning ringide tabamise ajad faili. Eraldi programmi abil leitakse, kui palju keskmiselt iga ringi tabamiseks aega kulus, s.t. kui palju mängu esimese ringi, palju teise jne. tabamiseks. Sirelasemäng Alustuseks on kasutada mängu põhi ? Tutvu mänguga ? Lae lähtekood, pildid ja helilõigud oma arvutisse, kompileeri ja käivita. ? Otsi Internetist pilte ning kujunda nende abil mäng oma silma järgi. ? Lisa punktidearvutus. ? Loo mängule lõpp. ? Luba samaaegselt liikuda kahel mängijal Rendzu ? Joonistatakse 20*20 ruudustik. Vajutatava ruudu keskele joonistatakse kordamööda ruut või ring. ? Lisaks eelmisele ei saa samasse ruutu korduvalt käia. ? Lisaks eelmisele kontrollitakse ja teatatakse, kui kellelgi õnnestus saada viis märki ritta (olgu siis püsti, pikali või kaldu). Võimalus alustada uut mängu. Klahvidega liigutamine. ? Nooleklahvidega saab liigutada ekraanil olevat ringi. ? Ekraanil juhuslikus kohas paikneb rist. Jõudes ringiga selleni, hüppab rist uude juhuslikku kohta. ? Liigutatavaid ringe on kaks, kummalgi oma klahvid. ? Risti asemel on pisike pilt. All servas on kirjas, mitu korda kumbki mängija on ristini jõudnud. Rakendused Tekstikomponent ? Graafikakomponent näitab enesel määratud teksti. Katseta loodud komponenti. ? Komponendil on 24 rida ja 80 tähte reas. Käsuga määratakse, millisest ruudust alates ning milline sõna kirjutatakse. Iga tähe jaoks on üks koht. ? Lisa komponendile kursor, võimalus kohtade arvu muuta ning Pascali tekstiekraanist tuttavad käsud: setColor, setBackground, gotoXY, write, writeln, clrscr. Tekstiredaktor ? Paiguta ekraanille nupp ja tekstiala. ? Nupule vajutamisel kirjutatakse alas olev tekst faili nimega "teated.txt". ? Lisa teine nupp, millele vajutamisel loetakse failis olev tekst tekstialasse. ? Paiguta nupud kõrvuti raami ülaserva ning venita tekstiala üle ülejäänud raami. ? Lisa alla serva tekstiväli, kus saab määrata faili nime. Statistikaga tekstiredaktor ? Nupule vajutamisel salvestatakse tekstiallasse kirjutatud tekst faili. ? Lisa teine nupp, millele vajutamisel loetakse failis olev tekst tekstialasse. ? Lisa alla serva tekstiväli, kus saab määrata faili nime. ? Lisa paremasse serva tekstiala, kus jooksvalt näidatakse, palju on tekstis tähti, sõnu, ridu ja lauseid. Klahvivajutused ? Klahvi alla vajutamisel tekib ekraanile ring, üles laskmisel see kaob. ? Ekraanil liigub allavajutatud klahvi täht. ? Ostsillogrammil on näha, millal milline kolmest klahvist viimase 20 sek. ajal all, millal üleval oli. Sõnatrükk. ? Teatatakse, kas tekstivälja ilmunud sõnale kirjutati teise välja täpne vaste. ? Võetakse aega, palju kulub kümne sõna õigesti järele kirjutamiseks. ? Sõna tekib ning kui teda pole 7 sekundi pärast järele trükitud, siis kaob. Iga õigeaegselt kirjutatud sõna annab plusspunkti, kadunu miinuse. Kalkulaator ? Koosta programm, mille abil saaks liita, lahutada, korrutada ja jagada. ? Numbrid ja tehted saab sisestada hiirevajutuste abil. ? Lisaks peab kalkulaator mõistma arvutada geomeetrilist keskmist ning täisnurkse kolmnurga hüpotenuusi pikkust. Vähemalt ühe käsu saab tagasi võtta. Nimede otsing Mõningikord tuleb nimesid leida pikast loetelust, kus õige otsitava ette kerimine võib hulga aega võtta. ? Loo valik (Choice), kust kasutaja võib sobiva nime valida. ? Loo tekstiväli ja lisa sellele kuular. Kui tekstivälja kirjutatakse nimistus leiduv sõna, siis nimistust märgitakse vastav sõna. ? Nimistus on sõnad tähestiku järjekorras. Keritakse ette sõna, mis sissetipitule lähim on. ? Kui sissetipitud tähtedega algab nimistust vaid üks sõna ning kasutaja vajutab "Enter"it, siis täidetakse tekstiväli sobiva sõnaga. ? Tippimisel võib olla eespool nii perekonna- kui eesnimi. Kirjutamise ajal on nimistus näha kõik võimalikud kombinatsioonid, mis algavad sissetipitud tähtedega. Geoinfosüsteem ? Loo andmebaasi geograafiliste objektide hoidmiseks andmetabel väljadega id, nimi, x ning y. Hiirega ekraanile vajutades märgitakse vastavad kohad tabelis. ? Lisaks eelmisele joonistatakse tabelis olevate andmete järgi ekraanile ringid. Vajutades ringile, saab näha ning muuta koha juurde kuuluvat nime. ? Lisaks eelmisele loo kahe väljaga seosetabel sõlmede ühendamiseks. Kahele sõlmele järjestikku hiirega vajutades loetakse need seotuks. Seos joonistatakse välja joonena. Hiirega saab olemasolevaid sõlmi pinnal nihutada. Seosed jäävad püsima. Trükiharjutus ? Ekraanile tekkinud täht kaob vastava klahvi vajutamisel. ? Sama, kuid tähti võib korraga olla mitu. ? Juhuslikud tähed kukuvad ülevalt alla. Pihtasaadud tähe eest saab plusspunkti, möödaläinu eest miinuse. Swing Swingi tabel ? Loo nulle ja x-e sisaldav 3x3 JTable. ? Luba kasutajal andmeid muuta ning loe kokku, mitu risti on märgitud. ? Lase kasutajal andmed valida valikmenüüst. Swingi puu ? Loo puu, mille juure nimeks on "1" ning lehtedeks "2" ja "3". ? Loo puu, mille lehtedeks on arvud ühest tuhandeni. Oksteks algarvud nii, et mööda okstest koosnevat teed pidi korrutades jõutaks lehe väärtuseni. Mitme teguri korral panna väiksem juure poole. ? Lisaks eelmisele peab saama määrata sisestatavate arvude vahemikku. Arvu küsimise peale avatakse puu tee soovitud leheni. Progressiriba ? Liiguta progressiriba väärtust algusest lõpuni. ? Ring liigub ühest servast teise. Ühes sellega kasvab progressiriba väärtus. ? Ring liigub ekraanil kümme korda ühest servast teise ja tagasi. Ühe progressiriba väärtus kasvab kogu ulatuses paremale liikumise ajal, teise väärtus vasakule liikumise ajal ning kolmas kasvab tasapisi, jõudes maksimumi liikumise lõpuks. Slaider ? Loo ekraanile Swingi slaider. ? Lisa slaiderile suured kriipsud 5 ning väikesed 3 ühiku järel. Lisa tekstiväli. Slaideri väärtust näidatakse tekstiväljas. Slaideri all on skaala. ? Lisaks eelmisele muudetakse tekstiväljas oleva numbri muutmisel slaideri väärtust. Skaala väärtuse osa on tumedam (ClientProperty JSlider.isFilled), skaalaks on sõnad "külm", "leige", "soe", "tuline". Valikupaneel ? Loo valikupaneel Eesti suuremate linnade nimedega. ? Lisa igale linnale ikoon ning vihjeks (ToolTip) ligikaudne rahvaarv. Iga paneeli sisuks kirjuta suure kirjaga seda linna läbiva jõe nimi. Pane linnad automaatselt iga viie sekundi tagant vahetuma. ? Iga linna puhul saab kasutaja anda viiepallisüsteemis hinnangu vaatamisväärsuste, toitlustuse ning teedevõrgu kohta. Kasutaja saab soovi korral linnu lisada. Valikute vastused salvestatakse faili. Tekstiredaktor valikupaneelil ? Loo kahe valikuga valikupaneel, kus kummalgi paneelil paikneb tekstiala. ? Lisa kummalegi paneelile nupud failist lugemise ning sinna salvestamise kohta. Esimene paneel on seotud failiga katse1.txt ning teine failiga katse2.txt. ? Kasutaja saab avada ja salvestada soovitud tekstifaile. Kõik avatud failid on näha valikupaneeli paneelidena. Menüüd ? Loo raam menüüga "Tervitused" elementidega "Sünnipäev" ning "Kooli lõpp" ? Lisa alammenüü, valitav menüüelement ((J)CheckboxMenuItem) ning toimiv menüükäsk programmi töö lõpetamiseks. ? Lisa menüü "numbrid" alammenüüdega "0".."9", igaühes asuvad vastava kümne numbrid. Numbrile vajutamisel kirjutatakse vastav arv tekstivälja. Loo hüpikmenüü (PopupMenu) kolmega jaguvate menüüelementide lubamiseks/keelamiseks ning algarvuliste menüüelementide peitmiseks/näitamiseks. Sisemised raamid. ? Loo aken kolme sisemise raamiga. ? Kasuta sisemisi raame pildifailide näitamiseks. Kasutaja valitud pildifail avatakse uues raamis. Raami suuruse muutudes muutub ka pilt. Sulgemisnupule vajutades raam kaob. ? Lisaks eelmisele saab avatud pilti redigeerida ning jpeg-failina salvestada. Swingi komponendid ? Loo JFrame. ? Paiguta selle ülaserva pildiga nupp. ? Nupule vajutades valitakse JColorChooseri abil nupu värv. ? Raami vasakusse serva paigutatakse puu (JTree). Puu elementideks on arvud ühest kümneni ? Igal esimese taseme elemendil on samuti alamelemendid ühest kümneni. ? Valitud elemendi väärtus kirjutatakse lehe allservas olevasse tekstivälja. ? Paremal servas olevale nupule vajutades avatakse JFileChooser, kust valitud pildifail joonistatakse raami keskele paigutatud paneelile. Pilditöötlus Ekraanipilt ? Kopeeritud ekraanipildi parem alumine nurgatükk näidatakse suurendatuna üle ekraani. ? Kopeeritud ekraanipildi nurgatükk liigub alaservas edasi-tagasi. ? Kopeeritud ekraanipildi serv jagatakse mõnekümne punkti pikkuse küljega ruutudeks. Need ruudud liiguvad ekraani servas ringiratast ümber ekraani. Kopeeritud ekraanipilt ? Programmi käivitamisel kopeeritakse parasjagu nähtav ekraanipilt mällu ning näidatakse kasutajale. ? Pilt kopeeritakse mällu kogu ekraani ulatuses ning näidatakse ekraanile klassi Window abil, seega ilma välimise raamita ning peaks näima tõetruu. ? Loodud ekraanipildile hakkavad juhuslikesse kohtadesse tekkima täpikesed, kuni lõpuks on kogu pilt kirju. ? Ekraanipilt salvestatakse vähendatuna jpeg-faili. ? Väljastatakse, kas ja kus leidub ekraanil musta värvi täpp ? Ekraanipildilt otsitakse üles ja tehakse topeltklõps akende ülanurgas olevatele sulgemisristikestele. Pildi koostamine. ? Loo MemoryImageSource abil rohekas pilt. ? Pilt on ülalt servast tumedam ning alt heledam. ? Kopeeri ekraanipilt ning keera see tagurpidi. ? Saada loodud pilt võrgu kaudu teise arvutisse vaatamiseks. Joon pildil ? Loo MemoryImageSource abil pilt, kus mustal taustal oleks valge joon. ? Loo joon keskelt valge, servad lähevad aga sujuvalt taustaks üle. ? Pane eelmises punktis loodud joon horisontaalsuunas liikuma. Kurviline ekraaniilustus ? Ekraanil põrkavad kaks punkti ning nende vahele on tõmmatud joon. ? Ekraanil põrkavad neli punkti ning nende abil moodustatud CubicCurve2D. ? Liikumisel on näha ka kõverjoone eelmised asukohad, kuni need lõpuks taustaga ühte sulavad. Värviüleminek ? Loo MemoryImageSource abil värviüleminek punaselt sinisele. ? Kasutaja märgib pildil kolm punkti. Ühes neist on maksimumis punane, teises roheline ning kolmandas sinine värv. Värviüleminekud pildil on sujuvad. ? Märgitud haripunktide asukohti saab kasutaja hiirega hiljem liigutada. Pildiredaktor ? Kasutaja võib ekraanile joonistada ringe ning neist moodustunud pildi kettale salvestada. ? Saab parandada varem koostatud pilte, lisatud on vahendid joonte ning ristkülikute loomiseks. ? Pilti võib suurendada ning parandada ühe pikseli kaupa. Ühe käsu saab tagasi võtta. Pildiredaktori koostamine ? Joonista iga hiirevajutuse peale ekraanile ring. ? Joonista ring mälus olevale pildile, nii et see ka raami suuruse muutumisel näha jääb ? Ühest rippmenüüst valitakse joonistamise värv. ? Teisest rippmenüüst valitakse joonistatav kujund (täidetud või tühi ring või ruut). ? Lisatakse joone tõmbamise võimalus. ? Nupuvajutuse peale salvestatud loodud pilt .jpeg faili. ? Teise nupu vajutuse peale loetakse pilt valitud failist. Matemaatika Palli lend ? Hiirega vajutamise kohast kukub alla pall. ? Hiirega vedades saab pallile anda algkiiruse. Edasine liikumine toimub vastavalt raskuskiirenduse ning õhutakistuse mõjule. ? Pallile saab hoogu anda vaid vasakult alt. Palle võib korraga lennata mitu. Programm arvestab aega, palju kulub esimese palli välja viskamisest viie palli sattumiseni paremal all asuvasse urni. Joon Programm palub sisestada nelja punkti koordinaadid tasandil ning väljastab ? kas läbi punktide 1-2 ja 3-4 tõmmatud jooned on paralleelsed ? kas punktist 1 punkti 2 tõmmatud lõik ning punktist 3 punkti 4 tõmmatud lõik puutuvad kokku ? Lisaks eelmisele kujutatakse olukorda graafiliselt koos koordinaattelgedega ning lõikude kokkupuutumise korral joonistatakse kokkupuutekohale värviline ring. Kolmnurk ? Hiirega vajutatud kolme punkti abil joonistatakse kolmnurk. ? Lisaks eelmisele kirjutatakse kolmnurga külgede juurde külgede pikkused ning nurkade juurde nurga suurus kraadides. ? Lisaks eelmisele saab juba valminud kolmnurga nurkade asukohti hiirega liigutada. Graafik ? Joonistatakse võrrandi y=ax graafik, koordinaatteljed ja skaala, kus kasutaja määrab kordaja. ? Võrrandiks on y=ax+b. Skaala valib rakendus nii, et ekraanil jäävad näha nii nullpunkt kui joone lõikumine y-teljega. Kasutaja määrab a ja b. ? Lisaks eelmisele võib kasutaja suurendada ja vähendada graafiku mõõtmeid. Kujundid Pane ekraanil ? ring liikuma mööda kolmnurgakujulist orbiiti. ? kolmnurk veerema (parajasti maas olev nurk on paigal) ? kaks ringi juhusliku suuna ja kiirusega servade vahel põrgates liikuma, kusjuures ringid on ühendatud sinusoidi kujulise joonega. Siinus ? Programm joonistab ekraanile siinusfunktsiooni graafiku. ? Ekraanil liigub siinuse laine. ? Lisaks eelmisele näidatakse siinusfunktsiooni tekkimist tiirleva punkti projektsioonina. Tiirlemise kiirust ning ringi raadiust saab kasutaja muuta. Jooned ? Loo programm, kus saab hiire abil ekraanile jooni tõmmata . ? Lisaks eelmisele peavad jooned püsima ekraanil ka siis, kui joonteekraan vahepeal tahaplaanile satub. Joonte alg- ning lõpppunktide koordinaadid salvestatakse faili. ? Lisaks eelmisele joonistatakse lühemad jooned tumedamalt ning pikemad heledamalt. Ümber joonte on võimalikult väike ristkülik, mis pärast iga joone joonistamist uuesti luuakse. Põrkamine sirgjoonel ? Üks veerev kuulike annab oma liikumisenergia edasi teisele samasugusele. ? Üks kuulike on kindla massiga ning algul paigal, teise massi ning algkiiruse saab määrata. ? Joonel asub hulk kehasid, mille massi saab määrata. Vedades hiirega neist esimesele hoo sisse, jätkub edasine liikumine vastavalt põrkamisseadustele. Põrkamine tasandil ? Ring liigub ruudukujulisel pinnal, põrgates vastu servi. ? Lisaks eelmisele kui liikuv ring satub vastu pinna sees seisvat ringi, siis liikumine peatub. ? Kaks ringi liiguvad ristkülikukujulisel pinnal, põrgates nii vastu servi kui üksteist arvestades füüsikaseadusi. Põrkamine ? Pall veereb nelinurksel väljakul ning põrkab servani jõudmisel sealt tagasi. ? Sama, kuid väljak on rohkem kui nelja (näiteks viie) servaga, st. tuleb arvestada olukorraga, kus servad pole täisnurga all. ? Väljakul veereb kaks palli. Nad põrkavad nii väljaku servast kui ka teineteise vastu minemisel Pall ekraanil ? Pane pall ekraanil liikuma nii, et ta servadest tagasi põrkaks. ? Lisaks eelmisele on platsil ühest seinast keskkohani ulatuv vahesein, pall põrkab ka sealt. ? Lisaks eelmisele võib vaheseinu võib ise hiirega tõmmata. (Lihtsuse huvides võib lasta tõmmata vaid püst- ja pikalijooni) Pallivise ? Pall lendab vastavalt etteantud viskenurgale. ? Lisaks arvestatakse viske ning tuule suunda ja tugevust ning näidatakse, kas saadi sihtmärgile pihta. ? Tulemuseks võrgu kaudu toimiv mäng, kus kasutajad saavad üksteist lumepallidega loopida. Pallivise II ? Ring liigub üle ekraani. ? Ring liigub nupuvajutuse peale üle ekraani. ? Tekstiväljas etteantud algnurgaga liigub ring üle ekraani. ? Etteantud viskenurgaga pall kukub raskusjõudu arvestades lõpuks kaarega maha. ? Lisa teine tekstiväli teise heitja jaoks. Üksteisele pihta saamisest antakse teada. 3D 3D kujundid ? Loo ekraanile mitmesse kohta mitmesuguseid kuupe ? Koosta õu laternapostide, istepinkide, põrkava palli ning liigutatava palliga. Luba kasutajal oma asukohta muuta. Katseta värve, mustreid ja interpolaatoreid. ? Anna palli koordinaadid ette tekstiväljast. Ringid ja seinad ? Liiguta klahvide abil ringi ekraanil. ? Ekraanil on sein, millest ei saa läbi liikuda. ? Seinu on ekraanil palju, nad moodustavad nurgelise koridori. ? Liigutatavaid ringe on kaks. Kummagi tarbeks on oma klahvipaarid. ? Lisaks ringidele paikneb ekraanil aare (punane täpp). Esimesena aardeni jõudnu saab punkti. Ringid võrgus ? Klahvivajutused saadetakse serverprogrammile. Iga muutuse peale teatatakse ringi uus asukoht. ? Ringi liikumist on võimalik vaadata üle võrgu. ? Kliente võib olla mitu, igaüks saab liigutada vaid oma ringi. 3D võrgumäng ? Mängijate asukohad määratakse serverist tulevate andmete järgi. Samaaegselt on seis näha nii kahe- kui kolmemõõtmelisel kujul. ? Platsil on sein. Serveris olevate arvutuste järgi hoolitsetakse, et seda ei saaks läbida. ? Kujunda eelnenu põhjal võimalikult tõelisena näiv võrgumäng. Rekursioon Naerunägu ? Joonista naeratav nägu, kelle kummaski silmas oleks samuti naerunägu. ? Joonise suurendamisel ilmub igast silmast jälle uus naerunägu välja. ? Lisaks eelmisele saab kasutaja panna joonise pidevalt suurenema ning määrata näo kallet. Ringide joonistamine ? Joonista üksteise sisse viis ringi ? Muuda joonistatavate ringide arvu kerimisribaga ? Suurenda koos kerimisriba liigutamisega ringide läbimõõte. Keskelt tuleb välimiste suurenedes pisikesi ringe üha juurde. ? Kuni on ruumi, joonista iga ringi sisse neli omaette väiksemat ringi. Neisse igaühte samuti neli väiksemat jne. ? Pane sellised ringid ühtlaselt kasvama, nii et seest üha pisemaid ringe nähtavale ilmub. Riigipiir ? Joonista kahe punkti vahele sakiline joon. ? Joonise suurendamisel ilmuvad nähtavale üha uued ja uued jõnksud. ? Suurendamisel tekkivad jõnksud jäetakse meelde. Lisaks saab kasutaja hiirega märkida piiril leiduvaid nurki. Uuesti sama piirkonna suurendamisel peavad jõnksud ning märgid samas kohas asuma. Viisnurgad ? Ekraanile joonistatakse viisnurk. ? Üha väiksemad erivärvilised seest täidetud viisnurgad on üksteise sees, kusjuures sisemise viisnurga tipp läheb välimise viisnurga serva keskkohta. ? Üksteise sees on kuni 100 viisnurka. Kerimisribaga saab määrata, millise koha peal sisemise viisnurga nurk välimise serva puutub. Võrk Pistikliides Võrguühendus ? Koosta kasutajat tervitav serverprogramm. ? Server küsib kasutajalt nime ning väljastab selle pikkuse ? Lisaks eelmisele salvestatakse faili masinate aadressid, kust on ühendust võetud ? Iga kasutaja tarvis luuakse omaette lõim. ? Loo programm kahe kasutaja vaheliseks võrgukabemänguks. Nad saavad kordamööda üksteisele käike saata. Loetakse, mitmenda käiguga on tegemist ning kui palju on kummalgi mõtlemisaega kulunud. Jututuba Töö aluseks serveris töötav jututoa mootor, mis kõikidelt ühendusevõtjatelt saabunud teated teistele edasi saadab. ? Loo tekstiväljaga aken sinna teadete saatmiseks. ? Loo tekstialaga aken jututoast tulevate teadete lugemiseks ? Ühenda need programmid kokku, pannes teadete lugemise omaette lõime. ? Jututoas on näha kasutaja nimi. Graafiline jututuba ? Hiirevajutuse koordinaadid saadetakse jututoa serverisse. ? Programmis paigutatakse ekraanile ring vastavalt saabunud koordinaatidele. ? Klient saadab jututuppa hiirevajutuse andmed kujul kasutajanimi : x y ? Iga kasutaja viimase hiirevajutuse asukohal on klientprogrammis näha tema nimi. ? Lisaks oma asukohale saab üle kanda ka tavalist teksti. Võrguliikluses on sellise rea ees hüüumärk. Jututoa server. ? Igalt kliendilt küsitakse jututuppa sisenemisel tema nime. Edaspidi näidatakse seda tema saadetud teksti ees. ? Jututoas liikuvad teated logitakse tekstifaili koos ajatempliga. Lisa analüüsivahend ühe kasutaja teadete eraldamiseks. ? Lisa vahend privaatteadete saatmiseks. ? Üks kasutaja ei või kirjutada sagedamini kui viie sekundi tagant. Sama teksti pole võimalik kaks korda järjest saata. Meldimine ? Väratit kuulav programm teatab ühendusevõtjale tema järjekorranumbri ? Programm küsib ühendusevõtjalt nime. Juhul, kui sellist nime veel kirjas ei ole, siis lisatakse see nimi nimede faili. ? Programm küsib ühendusevõtjalt kasutajanime ning parooli. Kui sellise kasutajanime ning parooliga kasutaja leidub, siis väljastatakse serverarvuti kellaaeg. Olemasoleva kasutajanime kuid vale parooli puhul antakse veateade. Puuduva kasutajanime puhul lisatakse kasutaja soovi korral koos sisestatava parooliga andmebaasi. Järgmisel korral selle nime ja parooliga sisse meldides väljastatakse talle kellaaeg. Ühendused ? Serverprogramm trükib ekraanile ühendust võtva masina aadressi. ? Iga ühendusevõtja jaoks avatakse eraldi raam, mille pealkirjaks on masina nimi, kust ühendus võeti. Raamis on tekstiväli ühendusevõtjale kirjutamiseks ning tekstiala ühendusevõtja poolt saabuva teksti näitamiseks. ? Lisaks eelmisele tehakse ka kliendile graafiline kasutajaliides. Serveriprogramm kirjutab loodud ühedused logifaili. Andmetalleti ? Serverprogrammiga ühendust võttes väljastatakse kasutajale serveris paikneva infofaili sisu. ? Serverprogramm küsib kasutaja käest faili nime ning väljastab vastava faili sisu. Faili puudumisel teatab sellest. ? Kasutaja saab graafilise liidese abil valida, millist serveris paiknevat faili ta vaadata soovib. Andmesalvesti ? Serverprogramm salvestab kasutaja poolt saadetavad andmed faili. ? Serverprogramm küsib kasutaja poolt salvestatava faili nime ning siis laseb tal oma andmed sinna kirjutada. Kui vastav fail serveris juba olemas on, siis lisatakse saabuvad andmed faili lõppu juurde. ? Graafilise kasutajaliidese abil saab serveris paiknevat faili muuta (s.t. kohale tekstiaknasse laadida ning pärast uuesti serverisse salvestada). Võrgumärkmik ? Kasutaja kirjutatud rida väljastatakse järgmisel ühendumisel. ? Salvestatav teade võib olla mitmerealine. Küsitakse salvestaja nime ning järgmisel korral väljastatakse nimele vastav teade. ? Igal kasutajal on nimi ja parool. Igal teatel on pealkiri ja sisu. Kasutaja saab omi teateid vaadata, lisada ja kustutada. Võistkonnad ? Serverprogramm jagab ühendusevõtjad kahte võistkonda, väljastades võistkondade nimesid kordamööda. ? Võistkondade nimed on failis. Serverprogramm annab ühendusevõtjatele failist kirjutatud nimesid järjest, igaühele ühe. Kui ollakse jõutud faili lõppu, hakatakse jälle algusest peale. ? Lisaks eelmisele on ühendusevõtjatel graafiline kasutajaliides. Serverprogramm küsib ühenduse võtmisel kasutajalt nime ning määrab tema võistkonna. Kasutaja saab oma ekraanilt jooksvalt näha, kes millisesse võistkonda kuulub. Aardeotsimise mängu veebiprotokoll Seintega eraldatud labürindis on mängijad ning aare. Kasutajad saavad enese asukohta nooleklahvide abil muuta. Kes jõuab aardeni esimesena, see saab punkti. Et mängu kirjutajate osalistel oleks võimalik eraldi oma lõike kirjutada, selleks peab olema eelnevalt paika pandud, kuidas osapooled (klient ning server) omavahel suhtlevad. Tuleb kokku leppida, kumb pool alustab, millised teated on vaja edasi anda ning kuidas need käsud kirjapildis välja näevad. Teated peaksid olema selged, et ei tekiks segadust, kuidas mingit käsklust parajasti mõista ning oleks võimalik kontrollida, kas kogu suhtlus käib protokolli järgi või on mõnes osapooles viga tekkinud ning ta on oma ajaarvamisega üldisest süsteemist välja läinud. Samas siiski piisavalt lühidad, et neid jõuaks lugeda, kontrollimisel sisse tippida ning ka võrguliiklus parajalt väike püsiks. Protokoll esitada sellisel kujul, et programmeerijad võiksid selle alusel kirjutama hakata. Side alustamise järel teatab server klientprogrammidele osalejate andmed järgmisel kujul: osalejate arv: 3 osaleja1: Juku osaleja2: Kati osaleja3: Mari otsimine algab Ülesanne1: Side alustamine Etapi käigus peavad selguma mängus osalejad. Algtase: ette on teada, et mängijaid on 2. Protokolli abil peavad saama mängijad oma nimed sisestada. Seejärel saadetakse klientidele osalejate andmed eelmainitud kujul. Kesktase: mängijaid on korraga endiselt 2, kuid nad peavad olema registreeritud parooli ja kasutajanimega. Protokoll peab olema nii kasutajate registreerimiseks kui mängu sisenemiseks. Protokolli hulka kuuluvad ka veateated. Kõrgtase: kasutajaid võib olla piiramatu arv, registreerimine nagu eelmisel puhul. Tuleb leida moodus, mille järgi otsustada kunas kasutajate lisamine lõpetada. Ülesanne 2: mäng ise Mängu alguse tunnuseks on serverilt saabuvad andmed mängijate kohta eelpooltoodud kujul. Algtase: mängijaid on 2, kumbki peab saatma serverisse omi koordinaate ning saama sealt vastu andmeid mõlema kasutaja asukoha kohta. Kesktase: lisaks eelmisele hoolitsetakse serveris, et kasutaja ei saaks läbi seina minna. Aarde leidmise puhul teatatakse sellest kõigile. Kõrgtase: lisaks eelmisele võib mängijaid olla piiramatu arv. Serverist saab andmeid kogutud punktide kohta. Aarde leidmisel võib mängu jätkata. Kasutajad võivad saata tekstilisi teateid nii kellelegi otse kui kui kõikidele kasutajatele. Aardeotsimise mäng Seintega eraldatud labürindis on mängijad ning aare. Kasutajad saavad enese asukohta nooleklahvide abil muuta. Ülesanne 1 Joonista seinte paigutus ning võimalik algne kasutaja ning aarde asukoht, arvestades, et aardeni jõudmiseks võiks keskmiselt kuluda umbes 1 minut. Kasutaja näeb kogu väljakut seal paiknevaga pealtvaates Ülesanne 2 Joonista seinte paigutus ning võimalik algne kasutaja ning aarde asukoht, arvestades, et aardeni jõudmiseks võiks keskmiselt kuluda umbes 1 minut. Kasutaja näeb ruumi kolmemõõtmelisena ning vaid seda, mis tema vaatekohalt paistab Ülesanne 3 Mõtle, mitmest labürindist võiks mäng koosneda. Mille eest ja kui palju oleks mõistlik punkte anda, et mängijal oleks põhjust piisavalt paljudele asjadele tähelepanu pöörata. Loetle oskusi ja tööriistu, mis võiksid mängijal lisaks tavalisele liikumisele olla. Ülesanne 4 Koosta algoritm, kuidas hoolitseda, et kasutaja ei saaks läbi seina minna. Kuidas sama probleem lahendada seintega, mis ei asetse täisnurga all? Laevade pommitamine ? Serverprogramm mõtleb numbri ühest kümneni. Kasutaja võtab ühendust ning pakub numbri. Programm teatab, kas number pakuti õigesti või valesti. ? Serveriga saavad ühendust võtta kaks kasutajat. Nad võivad hakata teineteisele kordamööda andmeid saatma (nagu käike males või kuule laevade pommitamisel) ? Kaks kasutajat saavad graafilise liidese abil laevade pommitamist mängida. Kumbki kasutaja saab algul hiire abil oma laevade asukohad märkida. Siis saavad kasutajad näidata, kuhu hiirega lasta, ülejäänud töö teeb arvuti mängijate eest ära. Rändurid võrgumaastikul ? Kaks kasutajat saavad võrgu kaudu saata teineteisele oma koordinaate. ? Kummagi kasutaja asukoht on näha ekraanil. Kumbki saab klahvide abil oma asukohta muuta. ? Mängu alustamisel on mõlemad kasutajad vasakul alumises nurgas. Võidab see, kes jõuab rutem ümber akna keskel paiknevate tõkete paremasse ülemisse nurka. Liiklus võrgus ? Iga kasutaja saab oma sõiduvahendit liigutada. ? Lisaks eelmisele peavad sõidukid liikuma mööda teid ning ei tohi sattuda üksteise peale. ? Teedel on eesõigusmärgid ning valgusfoorid eesõigusi seadmas, eeskirju rikkuda ei saa. Veebilehtede lugemine HTML lugeja Programmile antakse HTML-faili URL. ? Väljastatakse, mitu rida on failis. ? Programm leiab, mitu pilti on sellel HTML-lehel. ? Programm salvestab faili koos selles sisalduvate piltidega kohalikku masinasse. Viited HTML-failis Programmile antakse HTML-faili aadress. ? Programm väljastab, kas selles failis on viide ? Programm väljastab, mitu viidet on failis ? Viidete aadressid väljastatakse eraldi faili absoluutsete URLidena. Veebilugeja ? Trüki etteantud aadressiga veebilehe sisu ekraanile. ? Trüki sisu üheaegselt nii ekraanile kui faili. ? Trüki välja veebilehel leiduvate "<" märkide arv. ? Teata, kas võrgusõnastikus leidub kasutaja sisestatud sõna. Nupukamatele: ? Tekstifailis on sõnade loetelu. Selle põhjal luuakse teine tekstifail, kuhu iga sõna kõrvale otsitakse vaste võrgusõnastikust või teatatakse vaste puudumisest. Programmeeritav veebiserver Servlet ? Loo tervitav servlet. ? Lühenda sisestatud nimi: Juku Kaalikas -> J. Kaalikas ? Teata masina aadress, kust ühendust võeti. Sessioon servletiga ? Lehele esmaavamisel küsitakse kasutajalt nime. Igal järgneval avamisel väljastatakse leht kasutaja nime ning juhusliku taustaga. ? Kasutaja saab pakkuda arvuti valitud sõnast kas ühte tähte või tervet sõna. Loetakse kokku, mitu korda arvamiseks kulus. ? Sõnaks valitakse juhuslik sõna veebis olevast eestikeelsest ajalehest. Võimaluste proovimine ? Loo veebileht väljastamaks lihtsa liitmistehte tulemust. ? Loenda arvud tsükli abil ühest kümneni. ? Lase kasutajal määrata, mitmeni numbreid loendatakse. ? Loenda lambaid. Iga paarisarvulise loetelurea taust on muudetud värviga. ? Uuri muutujate abil välja kasutaja IP, serveri versioon jm. Andmebaasiühendus ? Loo andmebaasi tabel väljaga kingapaaride arvu hoidmiseks. ? Tee programm viie paari lisamiseks ? Väljasta, mitu kingapaari on tabelis. ? Eemalda iga käivitamisega üks paar, kuni kingi jagub. ? Loo Servleti abil veebiliides samale baasile. ? Täienda tabelit: üheks veeru elemendiks on jalanumber ning teiseks ? vastavale jalanumbrile vastavate kingapaaride hulk. Andmetabelid ? Loo andmetabel inimeste nimede ning isikukoodidega. ? Väljasta nimed sorteerituna isikukoodide järgi. ? Baasis on 3 tabelit: |nimi, isikukood|, |Ametinimetus, ametikood| ning |isikukood, ametikood|. Väljasta inimeste nimed koos nende ametinimetustega. Külalisraamat. ? Loo lihtne külalisraamat. Teateid saab ühekaupa sisestada ning üheskoos vaadata. ? Lisa teatele nimi ning sisestusaeg. Luba mõlemi järgi sortida. ? Näita korraga vaid 10 teadet ning vajadusel nooli neis edasi või tagasi liikumiseks. Õpilaste nimekiri ? Andmebaasis olevad inimeste ees-ja perekonnanimed näidatakse veebilehele. ? Hiirevajutuse peale saab sortida mõlemaid andmeid tähestiku järjekorras nii kasvavalt kui kahanevalt, samuti nimesid lisada ja muuta. ? Lisaks eelmisele on baasis eraldi tabelis kirjas koolis õpetatavad erialad. Iga inimese juures saab määrata, millist eriala ta õpib. Samuti annab lisada ja muuta eriala kirjeldust ning küsida iga eriala õppivate inimeste loetelu. Kursustele registreerimine ? Kursusele registreerimiseks tuleb veebi kaudu sisestada nimi ja isikukood. Andmed talletatakse baasi. ? Lisaks eelmisele kontrollitakse isikukoodi korrektsust ning vigase isikukoodi korral palutakse see uuesti sisestada, kusjuures nimi on lehel näha, kuid seda uuesti kirjutada ei tule. ? Kursuste nimi, id ja kirjeldus on kirjas eraldi tabelis. Kasutaja kirjutab sisenemiseks isikukoodi, koodi korrektsust kontrollitakse. Kui koodile vastavat nime ei leita, palutakse sisestada nimi. Kasutaja näeb, millistele kursustele ta end registreerinud on. Rippmenüüst saab omale kursusi juurde valida. Ühele kursusele samal inimesel end mitu korda registreerida ei õnnestu. Isikukoodi kontroll: Isikukoodis peavad kõik sugu ning kuupäeva tähistavad väärtused olema võimalikud ning viimane kontrollnumber arvutatakse järgneva algoritmi järgi: liidetakse kokku esimese kümne numbri korrutised igale arvule vastava järjekorranumbriga ning leitakse saadud summa jääk jagamisel 11-ga. Kui jääk on võrdne kümnega, siis tehakse arvutus uuesti ning võetakse teguriteks vastavalt 3, 4, 5, 6, 7, 8, 9, 1, 2, 3. Näide: isikukoodi 37605030299 kontroll. Summa = 1*3 + 2*7 + 3*6 + 4*0 + 5*5 + 6*0 + 7*3 + 8*0 + 9*2 + 1*9 = 108 108 jääk jagamisel 11-ga on 9 => isikukoodi viimane number peab olema üheksa. Ülesannete esitamine ? Õpilane sisestab veebilehele isikukoodi ning saab vastu õpetaja poolt välja pandud ülesande või teate, et ülesanded on otsas. ? Lisaks eelmisele on loodud õpetajale veebiliides ülesannete sisestamiseks ja muutmiseks. Jäetakse meelde, millise koodiga õpilasele milline ülesanne anti. Samale õpilasele mitut ülesannet ei anta. ? Ülesanded on grupeeritud ainete kaupa. Õpetaja saab määrata, millised õpilased milliseid aineid kuulavad, samuti, kas vastavas aines saab õpilane enesele ise ülesande olemasolevate hulgast valida või antakse ülesanne juhuslikult. Hinded veebis ? Õpetaja sisestab tabelisse nimed ja nendele vastavad hinded. Tippides veebilehele sisse oma nime saab teada hinde. ? Esmakordsel oma nime tippimisel antakse inimesele juhuslikult loodud parool. Edaspidi saab selle nime ja parooli abil teada oma hinde. ? Hinded ühes aines võib olla palju. Loo õpetajale parooliga kaitstud keskkond hinnete sisestamiseks ning õpilasele vaatamiseks. Iga hinde juures on näha ka selle panemise aega. Registreerimisvorm Loo tabel väljadega id, nimi ja linn. ? Veebilehe vormil saab sisestada oma nime ning linna nime, kuhu soovitakse ekskursioonile minna. Andmed talletatakse tabelisse. ? Linnade nimed valitakse rippmenüüst. ? Rippmenüüsse võetakse linna nimed eraldi tabelist. ? Loo leht näitamaks, millised inimesed kuhu linna sõidavad. ? Loo leht, kus on näha, millisesse linna mitu inimest sõidab ning kas selleks on vaja autot (kuni 4 reisijat), mikrobussi (10 reisijat) või suurt bussi (rohkem inimesi). Mitme tabeliga registreerimisvorm. Loo 3 tabelit: ? inimese andmed: inimese_id, isikukood, eesnimi, perekonnanimi. ? linnade loetelu: linna nimi, linna_id. ? külastused: inimese_id, linna_id, kylastusaeg Lisa tabelitesse mõned andmed. ? Meldimise aknasse sisestab inimene oma isikukoodi. Väljastatakse, kas selline kasutaja on olemas. ? Olemasolu korral näidatakse, millistesse linnadesse ning millal on tal kavas sõita. ? Võimalda külastusi lisada. ? Tabelist puuduva isikukoodi korral küsitakse, kas kasutaja soovib ennast lisada. Sel juhul küsitakse inimese andmeid. ? Kontrolli isikukoodi korrektsust Teated andmebaasis ? Loo tabel "teated", väljadega ID, vanem, pealkiri, sisu. Lisa kolm teadet, välja "vanem" väärtus jäta nulliks. Loo veebileht teadete näitamiseks. ? Väli "vanem" näitab selle teate ID-le, millele vastati või on 0, kui alustati uut keskustelu. Loo veebileht teadete näitamiseks, kusjuures lihtsustusena võib vastus olla vaid esimese taseme teatel. ? Lisa leht teadete/vastuste lisamiseks ning näitamiseks, andmepuu sügavust ei piirata. Teadete omadused ? Loo kolm tabelit: teated |id, teade|, omadused|id, omadus| ning seosed |id, teate_id, omaduse_id|. Lisa tabelisse mõned andmed ning näita veebilehel esimene teade ning selle omadused. ? Loo leht teadete lisamiseks, omaduste lisamiseks, teate juurde kuuluvate omaduste määramiseks ning soovitud teate näitamiseks veebilehele koos omadustega. ? Lisaks eelmisele võib teateid ja omadusi näha ja muuta tabelina veebilehel, kus märkeruudu abil näidatakse ja määratakse, millised omadused milliste teadete juurde käivad. Autentimine ? Hoolitse, et lehele pääseks vaid kasutaja "juku" parooliga "kala"; ? Kasutajanime ja parooli kontrollitakse andmebaasist: ? Parool hoitakse andmebaasis krüptitult. ? Lisa kasutajale leht parooli vahetamiseks. Sisestuskontroll Kontrolli, et kasutaja oleks sisestanud ? kaks sõna ? kuupäeva kujul pp.kk.aaaa ? Elektronposti aadressi Elektrooniline küsitlus ? Küsimus: kas tänane ilm on ... Variandid: palav, paras, jahe. ? Loo statistikaleht, kus tulpadega näidatakse, palju iga varianti on valitud. ? Pane staatusereale põrkama sõna "Küsitlus". ? Loo administreerimisleht uue küsitluse loomiseks. ? Luba statistikalehel valida, millise küsitluse diagramme vaadata. ? Näita statistikalehel küsitluse külastatavust ajas. ? Uuenda lehte iga minuti järel. E-kaart Salvesta veebist kümmekond pilti. ? Luba kasutajal valida enesele soovitud pilt. Väljastatakse kood, mille abil on seda pilti võimalik taas vaadata. ? Pildi juurde saab kirjutada tervituse. Loodud kaardist antakse teada saaja postkasti. ? Pildivalik luuakse vastavalt kataloogi paigutatud piltidele automaatselt. Pilte on võimalik näha ka alamkataloogidest. Loendur ? Väljasta, mitmendat korda leht avati. ? Väljasta number lehel oleva kujundatud pildina, Lisaks teata, mitmendat korda avati leht praeguse kasutaja masinast. ? Lisaks eelmisele luba samast masinast lehte minuti jooksul avada mitte rohkem kui kolm korda, loo eraldi lehele graafik, kus näidatakse, millisest masinast mitu korda on vastavat lehte vaadatud. Kalender ? Moderaator saab vaatajatele üles panna ürituste teateid. Teate juurde kuulub toimumise aeg ning ülespanija nimi. Tähtsamad teated tõstetakse lehel esile. ? Kasutajal on näha jooksva ning järgmise kuu kalender. Teadetega päevad on kalendris viidetena vastava teksti juurde. ? Moderaatori töö käib rakendi abil, mis omakorda suhtleb andmebaasiga servleti kaudu. Paroole hoitakse andmebaasis SHA sõnumilühenditena. JSP ? Loo JSP lehekülg juhusliku liitmisülesandega. ? Väljasta kasutaja poolt määratud arv juhuslikke liitmisülesandeid. ? Väljasta kõik sõnad, mis kasutaja sessiooni jooksul lehele sisenemiseks sisestanud on. JSP II ? Loo JSP leht kahe sisestatud arvu liitmiseks Kasuta liitmiseks oa teenuseid ? Hoia sessioonioas meeles küsitud liitmistehted. Tehte kordumisel võta andmed mälust ning teata kordumisest. ? Salvesta küsitud tehted andmebaasi, iga tehte juures on näha, mitu korda on sellele vastust küsitud. MySQLi konfigureerimine ? Installeeri MySQL. Loo andmebaas, tabel, lisa kirje, muuda, päri ja kustuta. ? Eemalda nimetu kasutaja andmebaasist mysql tabelist user. ? Loo kasutaja, kes tohib kõikidest andmebaasidest vaid pärida. ? Loo kasutaja, kes tohib vaid ühe andmebaasiga töötada. Veebitehnoloogiad RMI oksjon ? Loo juhuslikke paarisarve väljastav RMI objekt. Katseta selle tööd kliendiabil. ? Luba kliendil küsida ja muuta väljajagatud objektis paiknevat arvu. ? Muuda kliendi kasutajaliides graafiliseks, kohanda see oksjonil osalemiseks. ? Panust saab ainult suurendada, iga kliendi ekraanil on jooksvalt näha väärtuse kasvamine. RMI ? Loo teenus tervituse väljastamiseks. ? Loo teenus kasutaja määratud arvule faktoriaali leidmiseks ning kliendipoolne kasutajaliides. ? Lisa serveri poolele graafiline liides teenuse seiskamiseks ning käivitamiseks. CORBA ? Loo kuupäevateenus. ? Väljasta ettantud arvu numbrid tagurpidises järjekorras. ? Vaheta inimese andmetes päris- ja hüüdnimi. Kirjad ? Saada telneti kaudu kiri SMTP abil ning loe POP3 abil. Saada kiri JavaMaili abil. ? Loe kiri JavaMaili abil. ? Lisa kirjale kasutaja valitud fail. ? Loo graafiline liides kirjade saatmiseks ja lugemiseks. Tekst Failid HTML-looja ? Programm küsib kasutaja käest HTML-lehe pealkirja ning loob selle pealkirjaga tühja HTML lehe. ? Programm koostab kasutaja poolt määratud ridade ja veerugde arvuga korrutustabelt sisaldava HTML faili . ? Programm loob HTML-failide kompleksi kuni 100*100 korrutise leidmiseks. Juhtlehe tabelist saab määrata, millises kümnes kumbki tegur asub. Hiirevajutusega satutakse vastavale korrutustabelile, kust leitakse soovitud korrutis . Tekstifail ? Väljasta tervitus tekstifaili. ? Väljasta tekstifaili arvud ühest sajani. ? Väljasta tekstifaili arvude ruudud ühest sajani. ? Väljasta tekstifaili viis juhuslike liidetavatega liitmisülesannet. ? Väljasta tekstifaili kasutaja pool määratud arv juhuslike liidetavatega liitmisülesannet, mille vastus ei ületaks kümmet. ? Väljasta tekstifaili esimesele reale tabulaatoritega eraldatult arvud ühest viieni ning teisele reale nende arvude ruudud. ? Loe andmed Exceli tabelisse. ? Väljasta sarnaselt 10x10 korrutustabel. Hinnetetabel ? Programm loob kasutaja poolt määratud värvi taustaga tühja tekstifaili. ? Tekstifailis on õpilaste nimed ning nende hinded. Programm loob nende põhjal HTML-faili, kus nimed ning nendele vastavad hinded on tabelis. ? Tekstifailis on igal real õpilase nimi ning hinded ainete kaupa. Ainete nimed on faili esimesel real. Igale õpilasele luuakse HTML leht, kus pealkirjaks on õpilase nimi ning tabelis ained ning nendes ainetes olevad hinded. Lisaks juhtleht viitega iga õpilase lehele. Sõnad tekstifailis Programm väljastab tekstifaili ? pikima sõna pikkuse ? pikima sõna ? sõnad pikkuse järgi sorteeritult Tekstifail ja täht Sisendiks tekstifail ning täht. ? Programm väljastab kõik seda tähte sisaldavad sõnad teise faili. ? Programm väljastab teise faili sõnad, kus tähte leidub enam kui üks kord. ? Programm väljastab tekstifaili sõnad vastava tähe esinemise kordade arvu järjekorras. Tekstifail ja tähe osakaal Sisendiks tekstifail ning täht. ? Väljastatakse sõnad, kus vastavat tähte pole. ? Programm leiab sõna, kus tähe osakaal (tähe esinemise arv sõnas jagatud sõna pikkusega) on suurim. ? Sõnad väljastatakse vastava tähe osakaalu järgi sorteeritult teise faili. Sünniaastad Tekstifailis on hulk sünniaastaid. ? Leia, mitu korda esineb nende seas aasta 1959 ? Loe tekstifaili aastaarvud LinkedList-i ? Väljasta need aastaarvud sorteerituna teise tekstifaili ? Otsi, kas loetelus leidub kasutajalt küsitud aastaarv ? Väljasta teise tekstifaili vaid erinevad aastaarvud ? Sega aastaarvude järjekord Kalender ? Kasutaja sisestab nädalapäeva numbri, millal on esimene kuupäev. Trükitakse vastava kuu kalender. ? Kasutaja annab aasta ja kuu, trükitakse selle kalender. ? Kasutaja annab aastaarvu. Luuakse sellele aastale vastav HTML-leheküljestik, kus iga kuu kalender on omaette failis, pühapäevad punastega trükitult. Pealehelt on viide iga kuu failini ning sealt tagasi pealehele. Tekst Programmile antakse tekst failina. ? Programm loendab tekstis olevate sõnade arvu. ? Programm väljastab, millise tähega kui mitu sõna algas ? Programm väljastab tekstist sõnad nende esinemise arvu järjekorras. Lause ? Väljastatakse sisestatud lause sõnade arv. ? Väljastatakse enim sulghäälikuid sisaldav sõna. ? Sõnad sorteeritakse sulghäälikute arvu järgi. Failiuuring. ? Teata, kas faili esimene rida algab K-tähega. ? Teata tekstifaili K-ga algavate ridade arv. ? Kirjuta sulghäälikuga algavad read ümber teise tekstifaili. Tekstifaili lugemine. ? Väljasta tähtede arv tekstifaili esimesel real. ? Väljasta tekstifaili ridade arv. ? Väljasta 10-st sümbolist pikemate ridade arv. ? Väljasta suurim sõnade arv real. ? Väljasta neljatäheliste sõnade arv tekstifailis. ? Väljasta, kas tekstifailis leidus paarisarve. Tekstiekraan Käsurida ja tekstiaken. ? Väljasta DOS-i aknasse tervitus. ? Väljasta esimene käsurea parameeter. ? Väljasta esimese käsurea parameetri tähtede arv. ? Väljasta käsurea parameetrite arv. ? Väljasta iga käsurea parameeter eraldi reale. ? Väljasta viimase käsurea parameetri tähtede arv. ? Väljasta pikima käsurea parameetri tähtede arv. ? Väljasta pikim käsurea parameeter. Sõnad ? Ekraanile trükitakse viis korda "Tere". ? Trükitav sõna ja kordade arv määratakse käsurealt. ? Etteantud arv kordi trükitakse pikim käsureale kirjutatud sõna. Sõnade võrdlus Programm küsib kasutaja käest kahel korral sõna ning teatab ? kas need sõnad on ühesugused ? erinevuse korral, kas erinevad vaid ühe valesti löödud tähe poolest ? lisaks eelnenule, kas on kusagilt täht puudu või on kaks kõrvuti olevat tähte vahetusse läinud Kuupäev Kasutaja sisestab aja kujul päev.kuu.aasta, nt 24.12.02 ning programm väljastab ? aasta numbri neljakohalisena (2002) ? aja kujul aasta/kuu/päev (2002/12/24) ? vastuse sõnaliselt (kahekümne neljas detsember aastal kaks tuhat kaks) Arvamismäng. ? Arvuti teatab, kas kasutaja sisestas arvu 7. ? Arvuti mõtleb arvu ning teatab, kas kasutaja sisestas sama. ? Lisaks eelmisele lastakse arvata kuni õige vastuseni, teatades, kas pakuti vähem või rohkem. Osta elevant ära. ? Arvuti teatab, "osta elevant". Kasutaja vastuse peale öeldakse, et "kõik ütlevad nii". ? Küsimust korratakse seni kuni kasutaja sisestab "elevant". ? Rumalate sisestatud sõnade puhul manitsetakse kasutajat. Kasutaja vastused salvestatakse faili. Lõpetatakse pärast 20. korda või sõna "elevant" sisestust. Tekstiväljad Teksti kerimine ? Nupuvajutuse peale liigub tekstiväljas olev täht ühe koha võrra paremale. ? Tekstiväljas olev sõna põrkab edasi-tagasi. ? Etteantud sõna paarisarvulised tähed liiguvad kastis ringi vasakult paremale ning paarituarvulised paremalt vasakule, minnes üksteisest vaheldumisi läbi. Kui sõna on parajasti kokku saadud, siis selle koha peal oodatakse veidi kauem. Teksti kerimine II ? Nupuvajutuse peale kopeeritakse ühes kastis olev tekst teise. ? Nupuvajutuse peale kopeeritakse tekst kastist teise ühe tähe kaupa, vahepeal pause pidades. ? Kopeerimist alustatakse teksti lõpust. Kõigepealt hüppab viimane täht teise kasti algusse ning liigub tasapisi lõppu. Siis hüppab tagant teine täht kasti algusse ning liigub eelmise tähe ette jne, kuni kõik tähed on üle kantud. Teksti kerimine III ? Tekstiväljas keritakse ühte tähte ? Tekstivälja kirjutatud kolm sõna pannakse iga natukese aja tagant uude juhuslikku järjekorda. ? Tekstiväljas oleva sõna tähti keritakse nii: Kõigepealt liigum esimene täht teiste vahelt taha, olles vahepeal igas vahes. Teise tähega samuti. Kui kogu sõna on keritud, peetakse väike paus, siis jätkub kerimine uuesti. Sõna uurimine ? Väljastatakse, kas sisestatud sõnas on paarisarv tähti ? Väljastatakse, kas sõnas on korduvaid paarisarvulisi tähti ? Täishäälikute omavahel ning sulghäälikute omavahel vahetamise teel väljastatakse kõik sõnad, mis algsest saada võib. Sõnetöötlus Ekraanil on kaks tekstivälja. Kasutaja tipib lause ühte neist ning arvutuse tulemus väljastatakse teise. Teatatakse : ? Sisestatud sõna tähtede arv ? Täishäälikute arv sisestatud sõnas ? Sisestatud lause sõnade esimesed tähed ? Lauses esinenud numbrite summa ? Lause pikim sõna Keel Alamprogrammid ? Loo alamprogramm arvu korrutamiseks kahega. ? Loo alamprogramm kahe arvu vahe leidmiseks. ? Loo alamprogramm etteantud arvu faktoriaali leidmiseks. ? Loo alamprogramm massiivi suurima elemendi leidmiseks. ? Loo alamprogramm teksti sõrendatud väljatrükiks. ? Loo alamprogramm teksti tagurpidi väljatrükiks. Objektid Punktid ? Loo klass Punkt väljadega x ja y. ? Loo sellest klassist kaks isendit ja anna nende väljadele väärtused. ? Trüki mõlema punkti väljade väärtused ekraanile. ? Kopeeri ühe punkti andmed teise punkti andmeteks. ? Paiguta loodud kaks punkti massiivi. ? Loo massiiv saja punkti ning juhuslike andmetega. ? Määra viiekümnenda punkti x-koordinaadi väärtuseks 243. ? Kirjuta välja punkti andmed, mille x-koordinaadi väärtus on vähim. Klassid ja isendid ? Loo klass Loom väljaga "nimi" ning meetodid "tutvusta" ning "nimepikkus". ? Tee loomale alamklassid "Koer" ja "Lehm", kus tuleb katta üle meetod "tutvusta" nii, et selles väljastataks ka looma liik ning looma nime pikkus. Koosta kestprogramm loodud klasside katsetamiseks. ? Lisa klassile Loom staatiline väli loomadeArv, mille väärtus suureneb iga looma (ka koera ja lehma) lisamisel (st klassi Loom konstruktori käivitamisel). Muuda klassi Loom meetodit "tutvusta" nii, et see väljastaks loomade arvu. Kutsu klassi "Koer" meetodist "tutvusta" välja klassi "Loom" meetod "tutvusta". ? Muuda konstruktoreid nii, et isendi loomisel saaks talle koheselt ka nime omistada. Loo staatiline meetod loomade arvu väljastamiseks ning käivita see ilma isendit kasutamata. Objektid ? Loo klass Auto väljadega pikkus, mass ning mark. Koosta selle klassi objektidest massiiv. ? Loo klassile alamklass LiikuvAuto, mis realiseeriks liidest Liikuja. Liideses on kaks meetodit "edasi" ning "tagasi". Üks neist suurendab välja "asukoht" väärtust, teine vähendab seda. Katseta loodud klassi isendit. ? Loo viimati loodud klassile alamklassid Veoauto ning Soiduauto, mis sobivad kasutada graafikakomponendina. Väljade muutmine kajastub auto väljanägemises. Paketid ? Loo klass meetoditega komponendi näitamiseks raamis. Saab määrata raami suurust, akna sulguvust, pealkirja ning komponendi olemasolu, kuid kasutatavad parameetrid on valikulised. Püüa võimaikult vähe koodi korrata. ? Paiguta klass arhiivi. Proovi sealtkaudu meetodeid välja kutsuda olles nii kohalikus kui ka jre/lib/ext kataloogis. ? Loo oma asutuse all omanimeline pakett. Paiguta loodud klass koos meetodeid katsetava käivitatava klassiga sinna paketti. Muuda arhiiv käivitatavaks. Proovi luua rakend, mis võimalikult palju klasse loeks arhiivist. Failinimed Failide nimed ? Väljasta jooksvas kataloogis leiduvate failide arv ? Teata a-tähega algavate failide nimed ? Väljasta 100-st baidist lühemate failide nimed ? Väljasta jooksva kataloogi tekstifailide nimed sorteerituna ? Teata juurkataloogi alamkataloogide nimed ? Teata masinas leiduva pikima ja lühima faili nimi. Rekursioon failinimedega ? Väljasta tekstifaili masinas paiknevate failide nimed, pannes alamkataloogide sisud taandesse ? Lisaks eelmisele paiguta masinas paiknevate failide nimed SWINGi puusse. Puu elemendile vajutades näidatakse vastava faili pikkus. ? Lisaks eelmisele paiguta masinas paiknevate failide nimed XML-puusse ning seejärel väljasta puu tekstifaili. Andmed Lõimed ? Pane üheaegselt tööle kaks lõime, mis loevad arve ühest miljonini ning iga saja tuhande juures teatavad, kui kaugele nad jõudnud on. ? Ühes lõimes mõeldakse juhuarve ning saadetakse toruvoogu. Teises lõimes loetakse ühekaupa arve listi juurde. Iga tuhande arvu järel teatab kumbki lõim, kui kaugele ta jõudnud on. ? Kolmas lõim väljastab iga viie sekundi järel nimistu keskel asuva elemendi väärtuse ning järjekorranumbri. Nimistuga seotud operatsioonid on sünkroniseeritud. Vormindamine ? Väljasta kasutaja sisestatud arv täpsusega kolm kohta peale koma. ? Loo graafiline liides, kus kasutaja saab teada, mitu sekundit on möödunud tema sünnist. Numbrid grupeeritakse kolme kaupa. ? Lisaks eelmisele teatatakse tulevikus paikneva sünniaja korral, palju sinnani sekundeid on. Kasutaja saab määrata, mitme kaupa numbreid grupeeritakse. Andmekollektsioon ? Loo alamprogramm massiivi elementide väljatrükiks. ? Trüki selle abil käsurea parameetrid. ? Trüki käsurea parameetrid sorteerituna. ? Trüki käsurea parameetrid segatud järjekorras. ? Paiguta käsurea parameetrid loetellu (LinkedList) ? Lisa teise sõna järele "kala" ning trüki loetelu. ? Trüki vaid erineva väärtusega käsurea parameetrid. ? Trüki käsurea parameetrid pikkuse järjekorras. Täiendatud nimistu ? Loo klassile LinkedList alamklass, kus jäetakse meelde jooksva elemendi järjenumber. Lisatakse meetodid edasi (lõpust hüpatakse algusse) ning tagasi (algusest hüpatakse lõppu) liikumiseks ja jooksva väärtuse küsimiseks. Testi loodud objekti. Voogude filtreerimine ? Koosta filtreeritud väljundvoog, kus sümboleid koodidega 32-255 nihutatakse etteantud arvu koodide võrra. Loo sisendvoog nõnda muudetud andmete taas paika nihutamiseks. ? Loo filtreeriv voog, mis paarikaupa vahetab tähtede järjekorra. kalake -> akalek ? Paki jooksva kataloogi failid zip-arhiivi. Turva Signeerimine ? Koosta enesele keytool'i abil sertifikaat ? Loo lihtne programm, paki see jar-faili. Signeeri loodud arhiiv. ? Anna oma avalikku võtit sisaldav sertifikaat pinginaabrile ja võta tema oma vastu. ? Saada signeeritud arhiivifail naabrile ning kontrolli ise naabrilt saabunud arhiivifaili õigsust. ? Kontrolli, et signeerimata või tundmata võtmega signeeritud arhiivi puhul antaks veateade. Digitaalallkiri ? Tutvu näidetega. ? Loo enesele võtmepaar. ? Signeeri tekst salajase võtmega ? Kontrolli allkirja sobivust. ? Loo graafiline liides, kus saab luua võtmepaari, signeerimisel ning kontrollimisel valida võtmefaili , allkirjafaili ja andmefaili. ? Lisa vahend sõnumilühendi loomiseks ning etteantud faili baitide ? esitamiseks kuueteistkümnendsüsteemis. Krüptograafia ? Installeeri JCE ? Tutvu näidetega ? Sifreeri arvude 0-15 ruute tähistavad baidid (0, 1, 4, 9, 16 ... 225) tähistavad baidid DES-i abil võtmega, mille 8 baiti on väärtused alates kahest (2, 4, 6 ...). ? Kontrolli tulemust desifreerimise abil. ? Sama võtmega krüpti kasutaja poolt määratud failis asuvad andmed. ? Loo failide krüptimiseks/dekrüptimiseks graafiline liides. Parool ning failinimi küsi kasutaja käest. Õigused ? Määra oma programmile uus turvahaldur. ? Luba programmil kirjutada faili nimega "katse.txt". ? Luba nimetatud faili kirjutada vaid kindlas kataloogis asuval rakendil. Nuputamist Tähejärjestused. Tekstifailis on 100 kahetähelist rida. ? Väljastatakse, kas esimene kombinatsioon ka kusagil mujal kordub. ? Väljastatakse, mitu korda iga kombinatsioon esineb. ? Kasutajal lastakse järjest tippida teksti, kõrval on jooksvalt tähestiku järjekorras näha, millist kombinatsiooni mitu korda esines. Tähekombinatstioonid ? 100 kb pikkusest tekstifailist väljastatakse, millist tähte mitu korda a-le järgneb. ? Arvutil lastakse luua 100 kb pikkune juhuslik tekst, milles tühikud on 2-8 tähe tagant. Väljastatakse need a-ga algavad tähekombinatsioonid, mille sagedus arvuti loodud ning kopeeritud tekstis enam erinevad. ? Kasutaja sisestatud juhuslikust tekstist näidatakse iga tähekombinatsiooni osakaal (%), kõrvale võrdluseks sama kombinatsiooni osakaal kopeeritud tekstis ning arvuti abil loodud failis. Pakkija ? Tekst kirjutatakse ümber teise faili jättes tühikud välja. ? Vähemalt kolmekordsed tähed asendatakse tähe ja numbri kombinatsiooniga. Näiteks eeeuuuuu tulemuseks oleks 3e5u. ? Tekstis olevad sõnad nummerdatakse. Pakitud faili algul on sõnadest tabel. Seejärel tulevad vaid sõnade numbrid ja kirjavahemärgid. Tee ruudustikul Tekstifailis on 10*10 ruudustik, kus läbitavat ruutu tähistab . , läbimatut ruutu X, teekonna algust A ning lõppu O. Liikuda saab vaid kõrvale, üles või alla. Uuri, kas õnnestub liikuda algusest lõppu, programmi vastuseks on kas "jah" või "ei". ? Iga sammuga märgi läbitavaks ruudud, mis asuvad vahetult ligipääsetava ruudu kõrval. ? Lisaks eelmisele lahenda ülesanne ka sellise algritmi järgi: Esimese sammuga paigutatakse loetellu punktid, kuhu saab liikuda algkohast ühe sammuga. Edasi hakatakse ühekaupa loetelust punkte võtma ning loetelu lõppu lisatakse läbimata punktid, kuhu on võimalik uuritavast punktist liikuda. ? Lisaks eelmisele: Vaata rekursiivselt läbi punkti neli külge alustades algpunktist. Sisendi näide: .....X.... .....X.... .....XXXXX .......... ...XX..... ....X..... ....X..... ....X..... .A..X..O.. ....X..... Vastus: jah Liitmine ? Programm küsib kasutajalt vastused kümnele programmi poolt mõeldud liitmisülesandele ning teatab, mitu protsenti vastustest olid õiged ? Lisaks eelnenule teatab, mitu sekundit kulus lahendamiseks aega. ? Kõikidele ülesannetele õigesti vastanu käest küsib nime ning hoiab kümmet paremat failis kiiruse järgi pingereas. Bussiplaan ? Buss sõidab Tallinnast Tartusse kaks tundi ja 30 minutit. Programm küsib Tallinnast väljumise aja ning väljastab Tartusse jõudmise aja. ? Tekstifailis on kahe peatuse vahelise vahemaa läbimise ajad minutites. Programm küsib bussi väljumise kellaaja ning väljastab peatustes olemise kellaajad. ? Tekstifailis on peatuste nimed ning kahe peatuse vahelise vahemaa läbimise ajad minutites. Teises tekstifailis on bussi algpeatusest väljumise ajad. Programm trükib tekstifaili iga peatuse kohta ajad, mil buss seal peatub. Histogramm ? Programm küsib inimeste vanused ning väljastab nende jaotumise histogrammi. ? Programm joonistab 10000st väiksemate algarvude jaotumise histogrammi. ? 2x1 meetrise kasti põhjas veereb 5 cm läbimõõduga juhusliku algkoha, -suuna ning -kiirusega pall. Vastu serva sattudes põrkab ta sealt tagasi. Kasti ühes nurgas on 15 cm läbimõõduga auk. Koosta histogramm, mis näitaks auku sattumiseni kulunud põrgete arvu jaotust. Hõõrdumist ei arvestata. Võrrand ? Programm lahendab kahe muutujaga lineaarvõrrandisüsteemi ? Programm arvutab kahe maatriksi korrutise ? Programm leiab proovimise teel kuupvõrrandi nullkoha(d) Baidid ja bitid ? Kirjuta faili järjest baidid väärtustega 0 kuni 255. ? Leia failis olevate bittide arv, mille väärtus on 1. ? Koosta vahend faili muutuste kontrolliks: lisa faili iga 8 baidi järel bait, mille iga bitt vastab ühele baidile eelnevast kaheksast ning näitab, kas seal oli bittidena paarisarv ühtesid. Programm peab kontrollimisel suutma näidata, millist baiti failist on muudetud. Arvamine ? Arvuti mõtleb kolmega jaguva arvu vahemikust 20-50 ning kontrollib, kas kasutaja sisestas sama. ? Arvuti loeb kokku, mitme korraga kasutaja selle arvu arvab, andes leidmiseks vihjeid. ? Sama mäng võrgus mängimiseks, kusjuures öeldakse ette vahemik ning millega arv jagub. Iga kord esimesena õigesti arvanu saab punkti, server peab edetabelit. Rooma numbrid ? Etteantud arv vahemikus 1-10 väljastatakse rooma numbrina. ? Sama, kuid vahemikus 1-2000. ? Väljastatakse kahe sisestatud rooma numbri summa. Numbrid sõnadena ? Sõnadena väljastatakse arvud ühest sajani. ? Sõnadena väljastatakse algarvud ühest kümne tuhandeni. ? Väljastatakse kahe sõnadena sisestatud numbri (1-100000) summa. Kolm kappi Telemängus on kasutaja ees kolm suletud kappi, ühes neist paikneb auhind. Kasutaja valib ühe kapi. Järgnevalt teeb mängujuht lahti kapi ukse, mille taga ei ole auhinda. Kasutajal on õigus valitud kappi vahetada. ? Koosta programm, kus mõttes paigutatakse aare juhuslikku kappi ning kasutaja avab juhusliku ukse. Teatatakse, kus oli auhind, millise ukse kasutaja avas, ning kas kasutaja leidis auhinna. ? Lisaks eelmisele koosta programm, kus kasutaja valib kapi, mängujuht avab tühja kapi ning kasutaja vahetab valitud kapi. Teatatatakse, kus oli auhind, millise ukse valis kasutaja algul, millise avas mängujuht, millise kapi avas kasutaja lõpuks ning kas sealt leiti auhind. ? Käivita kumbagi programmi sada korda ning leia, mitmel korral kummalgi juhul leiti auhind. Arvusüsteemid ? Sisestatud arv väärtusega 0-15 väljastatakse kahendsüsteemis. ? Etteantud vahemikus korrutustabel väljastatakse kaheksandsüsteemis. ? Etteantud arvusüsteemis loetakse numbreid etteantud vahemiku algusest lõpuni mõõduka kiirusega. Numbriteks olevad sümbolid saab kasutaja ise joonistada. Algarvud ? Koosta programm, mis kirjutaks faili sada esimest algarvu ? Koosta programm, mis küsiks kasutajalt arvupiirkonna (vähima ning suurima arvu) ning väljastaks, kui suur on selles lõigus suurim vahe kahe algarvu vahel. ? Kujuta graafiliselt, millises tuhandes esimese kümne tuhande arvu puhul kui palju algarve asub. Punktid ? Kasutaja sisestab kahe punkti asukoha tasandil ning programm väljastab nende vahekauguse. ? Failis on punktide koordinaadid. Programm väljastab punktide paarid, mille vahekaugus on vähem kui 10. ? Failis on punktide koordinaadid. Programm joonistab need punktid ekraanile ning ühendab omavahel need punktid, mille kaugus on väiksem kui 10. Üksinda asetsevad punktid värvitakse siniseks. Kiirus ? Programm küsib kasutajalt liikumiskiiruse km/h ning väljastab, kui palju aega kulub sellise kiirusega ühe kilomeetri läbimiseks. ? Programm küsib kasutajalt kümne auto kiiruse, väljastab keskmise kiiruse ning suurima ja vähima kiiruse vahe. ? Programm loeb failist päeva jooksul teelõiku läbinud autode kiirused ning küsib kasutajalt lõigul parajasti kehtiva piirkiiruse. Teise faili väljastatakse kiirust ületanud autode kiirused ning nende kiiruste geomeetriline keskmine. Söökla ? Programm küsib kümne toidu hinna ning väljastab kõige odavama ja kõige kallima hinna. ? Programm küsib kümne toidu nimetuse ning hinna ja väljastab kõige odavama ning kõige kallima toidu nimetuse. ? Programm küsib iga toidu nimetuse, hinna ning selle, kas tegemist on külma või kuuma roaga. Programm väljastab eraldi külmade roogade faili ning eraldi kuumade roogade faili, kummagi sorteerituna hindade kasvavas järjekorras. URL Kasutaja sisestab dokumendi asukohta Internetis määrava URL-i (näiteks http://www.tpu.ee/~esindus/ ning ? teatatakse, kas selles leidus tähekombinatsioon www ? väljastatakse masina aadress ? Programm leiab URL-ide failist erinevad eesti masinate nimed ning need kirjutatakse eraldi faili. Põrkamine ? Joonista ekraanili liikuv pall, mis vastu serva põrkamisel muudab oma liikumissuunda. ? Kera hakkab veerema 10*10 meetri suurusel väljakul ühtlase kiirusega 1 m/s juhuslikust kohast ning juhuslikus suunas. Leia, kui aplju kulub aega, et kera satuks taas algkohast vähem kui meetri kaugusele. ? Kaks kera raadiustega kumbki 10 cm hakkavad veerema 20*20 meetri suurusel väljakul kumbki juhuslikust kohast ja juhuslikus suunas kiirusega 1 m/s. Kui kaua kulub keskmiselt aega esimese põrkeni. Kui suur oleks ligikaudne katsete arv, et keskmine aeg ei kõiguks oluliselt üle 15%? Caesari siffer ? Väljasta sisestatud sõna iga täht tähestikus ühe koha võrra paremale nihutatuna. (kala->lbmb) ? Loo vahend tekstifaili tähtede soovitud arvu koodide võrra edasi või tagasi nihutamiseks arvestades ka täpitähti. ? Programmi sisendiks on kaks tekstifaili: avatekst ning võti. Luuakse krüpteeritud fail, kus iga avateksti faili tähe koodi suurendatakse võtmefailist võetud vastava tähe koodi jagu. Lisa vahend ka deúifreerimiseks Muusika MIDI Noodid ? Püüa üheaegselt kõlama saada kolm nooti. ? Luba arvuti klahvidel klaverit mängida. ? Pane arvuti heliredelit mängima. Ksülofon ? Järjestikku mängitakse kaks nooti. ? Joonistatakse ksülofon ning temale vajutamisel mängitakse noot. ? Igale pulgale lüües kostub sellele vastav heli. Mängimise ajaks muudab pulk värvi. MIDI sekventsid ? Loo sekvents kümne piiksuga ning mängi see. ? Loo sekvents kromaatilise heliredeliga. ? Loo sekvents C-duuri heliredeliga ning mängi see kaks korda. ? Loo sekvents valitud duuri heliredeliga. ? Salvesta loodud sekvents MIDI-faili MIDI fail ? Mängi MIDI fail ? Väljasta radade arv ? Kopeeri faili muusika iseendale sappa ? Lisa rada, kus viisi mängitakse nihkega (kaanon) Kolmkõlad ? Mängi duurkolmkõla. ? Mängi valitud helistiku duurkolmkõla. ? Ekraanil on noodijoonestik. Vajutades hiirega, mängitakse selle helistiku duurkolmkõla ning näidatakse ekraanil vastavaid noote. Digitaaheli Digitaalheli ? Mängi signaali sagedusega 440 Hz. ? Pane signaali kõrgus sõltuma hiire asukohast ekraanil. ? Hoolitse, et kõrguse muutumine oleks sujuv. ? Korraga kõlab kaks heli. Ühe kõrgus sõltub hiire x- ning teine y-koordinaadist. Helifailid ? Salvesta AU-fail WAV-failiks ? Salvesta piiks helifaili ? Mängi loodud fail ? Loo server- ja klientprogramm, et ? loodud faili oleks võimalik üle võrgu kuulata. ? Peida helifaili sisse oma nimetähed. ? Salvesta faili sisu ümber poole vaiksemalt. ? Sega kokku kahe helifaili sisu. ? Lindista oma hääl faili. Heliredaktor ? Mängi helifail. ? Salvesta kahe helifailisisu kokku üheks, nii et nad koos kõlaksid. ? Loo graafiline liides, kus saab valida, millised failid kokku salvestada ning milline kui valjult loodavas failis kõlab. Veebilehed Veebilehtede genereerimine ? Loo Wordi abil lihtne lehekülg. ? Salvesta see HTML-formaadis. ? Vaata tulemust brauseriga. ? Muuda lehte, vaata muutust brauseris. ? Loo lehele viide ajalehele "Postimees" http://www.postimees.ee/ ? Loo samasse kataloogi teine veebileht. ? Loo kummaltki lehelt teisele viited. ? Lisa teisele lehele pilt. Muuda kirja ning tausta. ? Pane lehed üles veebiserverisse. ? Tutvu lehtede lähtekoodidega. ? Proovi leht koostada Netscape Composeriga Käsitsi kirjutatud HTML ? Loo lühike tervitus. ? Lisa lehele pealkiri. ? Katseta rasvast ning kaldkirja. ? Lisa viide ajalehele. ? Pane viide avanema eraldi aknasse. ? Loo kaks lehte, kummalgi on luuletusest üks salm. Kümne sekundi pärast avaneb esimese salmi järel teine. ? Salme on kolm, igaüks eraldi lehel. Pealehelt on viide esimesele salmile. Sealt liigutakse iseenesest edasi teisele, sealt kolmandale ning kolmandalt taas pealehele tagasi. ? Loo loetelu viidetega ajalehtedele. ? Jaga leht kahte raami, pannes loetelu vasakule ning avanevad lehed paremale. Liitmisülesanded ? Kirjuta skripti abil lihtne tervitus. ? Kirjuta juhuslik arv. ? Loo kümme juhuslike liidetavatega liitmisülesannet. ? Loo ülesanded nii, et vastus ei ületaks 100. Tekstülesanded ? Koosta protsentülesanne, kus valitakse juhuslikult nii ained kui hulgad. ? Lisa ülesandele vastus. ? Ümarda vastus kaks kohta pärast koma. ? Koosta ülesande loomiseks alamprogramm. ? Kirjuta kümme ülesannet. ? Kirjuta kasutaja määratud arv ülesandeid. Aknad ? Loo viide uude avanevasse aknasse. ? Ava aken programmi abil. ? Määra akna suuruseks 300*200. ? Kirjuta programmi abil tervitus avanevasse aknasse. ? Paiguta loodavad ülesanded ühte aknasse ning vastused teise. ? Jaga leht kaheks raamiks. ? Pane sisukorras olevad viited avanema teise raami. Vormi elemendid ? Loo nupuga vorm. ? Nupule vajutamisel avatakse teateaken. ? Lisa tekstiväli. Nupuvajutusel näidatakse väljas olevat teksti. ? Lisa teine tekstiväli. Nupuvajutusel näidatakse teises väljas esimeses väljas asuva teksti pikkust. ? Lehel on kaks tekstivälja andmete jaoks, nende vahel tehtevalik, siis nupp võrdusmärgiga ning väli vastuse tarbeks. (Pane tööle) ? Katseta märkeruutu, raadionuppe ja tekstiala. Arvutusülesanded ? Luuakse 10 muutuvate lähteandmetega tekstülesannet. ? Luuakse etteantud arv muutuvate lähteandmetega tekstülesandeid, eraldi väljastatakse ülesannete vastused. ? Õpetaja saab ruudukeste abil märkida, milliseid ülesandetüüpe ta kontrolltöösse soovib, samuti sisestab variantide arvu. Väljastatakse igale õpilasele nii ülesannete- kui vastusteleht. Tekstianimatsioon ? Pane tekstivälja iga viie sekundi tagant tekkima juhuslik arv. ? Liiguta tekstiväljas olevat teksti. ? Pane väljas olev tekst põrkama. ? Lehel on kaks tekstivälja. Seal olevad tekstid põrkavad peegelipildis. ? Lisaks liigub tekst all staatusreal. ? Etteantud sõna moodustub ükshaaval paika liikuvatest tähtedest. Kalender ? Teata lehele tänane kuupäev. ? Joonista tabelina jooksva kuu kalender. ? Võimalda valida näitamiseks aasta ja kuu. Kuu valimata jätmisel näidatakse terve aasta kalender Kalkulaator ? Lehel on võimalik kahte arvu korrutada. ? Sisestatakse algne summa, panga aastaprotsent ning hoitud aastate arv. Väljastatakse lõppsumma. ? Eelmisele lisatakse graafiline esitus. Navigeeritav veebileht. ? Loo veebilehestik, kus vasakus raamis oleks sisukord ning paremas väidataks valitud lehekülgi. ? Lisa ülaserva kolmas raam, milles oleksid nupud sisukorra näitamiseks ning kaotamiseks. ? Lisaks eelmisele asuvad iga lisatava lehe päise skriptis märksõnad. Lehestiku avamisel luuakse sisukorras viidatud lehtede märksõnadest tähestikulises järjekorras loetelu, kust kaudu võib kasutaja jõuda sobivale lehele. Objektid ? Koosta objekt inimese andmetega (eesnimi, perekonnanimi, synniaasta) ning katseta seda. ? Koosta alamprogramm inimese objekti loomiseks, katseta. ? Loo massiiv viie inimese andmetega. ? Väljasta tekstialasse kasutaja antud aastal sündinud inimeste perekonnanimedega. ? Lisa inimesele meetod enese andmete väljastamiseks teatekastis, katseta. ? Lisa inimesele meetod andmete väljatamiseks kujul perekonnanimi, eesnimi. ? Väljasta etteantud aastal sündinute andmed tekstialasse, kasutades koostatud meetodit. Andmed Andmeotsing Loo veebileht tekstiala, nupu ning tekstiväljaga. Peida lehe sisse massiiv inimeste eesnimedega. Nupule vajutades ? Väljasta, kas leidub sissetipitud eesnimi. ? Väljasta sissetipitud tähega eesnimed. ? Väljasta sissetipitud pikkusega eesnimed. ? Ette saab anda eesnime nii esimese kui viimase tähe. ? Lisa märkeruut, mille seesolekul väljastatakse tulemused tagurpidises järjejorras Raamatumüük ? Ekraanil on nelja raamatu pealkirjad, igaühe ees märkeruut. Nupuvajutuse peale teatatakse, mitu raamatut on valitud. ? Raamatute hinnad on hoiul massiivis. Teatatakse valitud raamatute hindade summa. ? Massiivis on nii raamatute nimed kui hinnad. Kõigepealt koostatakse nende põhjal leht ning edasi toimib see nagu eelmises ülesandes. ? Eelmisega võrreldes on iga raamatu ees valik, millest saab valida ostetavate raamatute arvu. Küpsised ? Küsi kasutajalt nimi. Uuesti samale lehele sisenemisel tervita teda nimeliselt. ? Lehel oleva tekstivälja ning märkeruudu väärtus talletatakse küpsises kuni järgmise avamiseni. ? Isikuandmete määramiseks kasutatakse võimalikult paljusid graafikakomponente (Nimi- tekstiväli, sugu-raadionupud, rahvus-valik, huvialad-tekstiala, juhilubade olemasolu-märkeruut, õnnenumber-parool). Sisestatud andmete põhjal luuakse uude aknasse nende andmetega kujundatud leht. ? Graafikakomponentide väärtused talletatakse küpsises ning järgmisel avamisel viimatine olukord taastatakse. Elektronpood ? Loo leht kaupade loeteluga. Lehe alla kuvatakse valitud kaupade hindade summa. ? Lisaks eelmisele saab kasutaja valida, mitut igast kaubast ta soovib osta. Valitute nimekiri saadetakse koos kasutaja andmetega teele poepidaja välkpostiaadressile. ? Lisaks eelmisele hoitakse valitud andmeid järgmise korra tarvis meeles küpsistena ning kaupade nimekiri koosneb sisukorrast ja mitmest lehest. Regulaaravaldised ? Kontrolli, et kasutaja sisestaks viie tähe pikkuse sõna. ? Kontrolli, et ei sisestataks täpitähti ? Kontrolli, et tegemist oleks kuupäevaga, kus aasta on neljakohaline. ? Asenda punktiga lõppevad arvud nelja x-iga. ? Väljasta lause esimene viietäheline sõna. Asutuse telefoniraamat ? Lehe alguses massiivi kirjutatud nimed ja telefoninumbrid väljastatakse tabelina. ? Kasutaja saab hiirevajutusega valida, kas andmed väljastatakse sorteeritult nimede või numbrite järgi. ? Lisaks eelmisele tippides sisse osa nimest või osa numbrist, väljastatakse vaid need andmed, mis sissetipitule vastavad. Andmete esitamine ? Ekraanile joonistatakse etteantud arvu kõrgune tulp ? Kasutaja sisestab kolm arvu ning igale neist joonistatakse vastavusse tulp. Pikim tulp on punane, keskmine kollane ning lühim roheline. ? Kasutajal lastakse lahendada kümme liitmisülesannet saja piires. Tulpadega näidatakse, kui palju kulus keskmiselt aega õige, õigest suurema ning väiksema vastuse leidmiseks. Tunniplaan ? Sisestatakse arv ning väljastatakse, millist ainet 7B klass selles tunnis esmaspäeval õpib. ? Valitakse päev ning eraldi aknasse väljastatakse 7B selle päeva tunnid. ? Valitakse päev ning klass ning eraldi aknasse väljastatakse selle klassi selle päeva tunnid. ? Saab väljastada nii ühe tunni, ühe klassi tunnid, ühe päeva tunnid kui kogu kooli tunniplaani. Javaskripti graafika Punktpildid ? Paiguta ekraanile suureks venitatud roheline pilt. ? Nupule vajutades muudetakse pilt punaseks. ? Lisa teine nupp pildi taas roheliseks muutmiseks. ? Punane ja roheline pannakse kordamööda vilkuma. ? Pilte on 10 tükki reas. Kasutajale näib, nagu liiguks punane silm rohelisel taustal vasakult paremale. ? Lisaks eelmisele jääb silm põrkama. Ruudustik ? Koosta kollastest punktpiltidest 10*10 ruudustik. ? Pane punane ruut liikuma mööda ülemist serva vasakult paremale. ? Pane punane ruut liikuma mööda vasakut serva ülevalt alla. ? Pane punane ruut liikuma ringlevalt mööda ruudustiku serva. ? Pane punane ruut kaldu liikuma ja servadest põrkama. ? Pane juhuslikesse kohtadesse tekkima ja kaduma värvilisi punkte. ? Pane samaaegselt ringi liikuma punane ja roheline ruut, kusjuures üks on teisest pool ringi maas. Inimeste pikkused ? Lehel on meeles inimeste pikkused. Teatatakse nimele vastav pikkus. ? Inimeste pikkused joonistatakse tulpadena lehele, nimi kirjutatakse iga tulba alla. ? Lisaks eelmisele on võimalik kasutajal andmeid lisada või parandada, samuti järgmise vaatamiskorra jaoks talletada. Ruutude püüdmine ? Ekraanil on kollane ruut. Hiirega sellele vajutades muutub nupp punaseks. ? Võrreldes eelmisega on ruute rohkem ? Võrreldes eelmisega on ruudud 10*10 ruudustikus. ? Üks ruut on ruudustikus punane. Vajutades sellele, muutub see kollaseks. ? Lisaks eelmisele muutub selle peale uus ruut punaseks ja tundlikuks. ? Loetakse kokku, mitmele ruudule on pihta saadud. Kihid ? Loo ekraanile kiht ? Lisa nupp kihi peitmiseks ? Lisa nupp kihi näitamiseks ? Lisa nupp kihi liigutamiseks paremale ? Lisa nupp kihil abiinfo näitamiseks. ? Loo lehe vasakusse serva viidete loetelu. Igale viitele vajutades hüppab kihina välja alammenüü. Liikuvad klotsid ? Kihist moodustatud klots liigub lehel edasi-tagasi. ? Klots põrkab lehel vastavalt füüsikaseadustele. ? Mõttelise kummipaelaga on ühendatud kolm klotsi. Kasutaja saab hiirega nihutada esimest, ülejäänud liiguvad, arvestades ligikaudu elastsust ning inertsi. Kiht ? Loo lehele kiht ning kaks nuppu. Ühele nupule vajutades kiht peidetakse, teisele vajutades näidatakse taas. ? Loo peamenüü ning kihtide abil kolm alammenüüd. Hoolitse, et alammenüüsid saaks sulgeda. ? Kolm sekundit pärast hiirevajutust ilmub peamenüü hiire alla. Alammenüüd avanevad peamenüü kõrvalt. Trepp ? Ristkülikute abil on moodustatud mitmekorrruselise trepi ristlõige ? Roheline kujund liigub mööda trepiastmeid üles. ? Kasutaja saab hiirega määrata, milliselt astmelt millisele liigutakse. Parkla ? Koosta ruutudest parkla, kus autod paiknevad mitmes reas. ? Näidatatakse, kuidas liikuda sissepääsust parkla tagumisse nurka. ? Iga nupuvajutuse peale liigub järjekordne auto sissepääsust esimese sel hetkel vaba kohani. Sõiduväljak ? Ekraanil on ruutudest koosnev väljak. All olevate nuppudega saab teisevärvilist ruutu nihutada üles, alla, vasakule ja paremale. ? Liigutatava pildi peal on nool. Ühe nupupaariga saab noolt keerata, teisega edasi-tagasi liigutada. ? Lisaks eelmisele on platsil märgitud kaks ruutu (postid). Võetakse aega, palju kulub aega ümber postide 8 sõitmiseks. Tetris ? Pane ruut kukkuma ülalt alla ? Ruutu saab kukkumise ajal vasakule ja paremale liigutada. ? Lisaks eelmisele jäävad ruudud püsima üksteise otsa, täissaanud rida kaob. Kabe ? Joonista ruutudest kabelaud. ? Paiguta lauale nupud ning võimalda kasutajatel kordamööda käia. ? Kontrolli käikude korrektsust ning teata mängu lõpust. Joonistamine ? Ruutudest koosneval platsil saab hiirega ruutude värve muuta. ? Kõrvalt ribalt saab valida, millise värvi abil hiirega joonistatakse. ? Lisaks eelmisele on vahendid ka soovitud suurusega ringi ja ruudu joonistamiseks. Ühe mängija tennis ? Pall liigub ekraanil edasi-tagasi. ? Ühe seina asemel on kasutaja liigutatav reket. Selle vastu põrgates jätkab pall liikumist, muul juhul läheb alast välja ja seiskub. ? Lisaks eelmisele on mäng korralikult kujundatud. Arvestatakse aega, punkte. Tasemete tõustes lisandub kiirus ning esemed, mille pihta on pall võimeline ala sees põrkama. Tennis ? Liiguta klahvide abil reketit. ? Kummalgi kasutajal on oma reket. Platsil liigub pall, põrgates nii seintest kui reketitest. ? Mängida saab 1-4 osalejat (igaühel oma sein). Loetakse punkte. Mäluga menüü ? Pilt muudab sinna hiirega vajutamisel värvi. ? Lehe vasakul servas on piltidega menüü, ülejäänud osa katab menüüst valitud sisu. Valitud ja valimata menüüelementide pildid erinevad. ? Lisaks eelmisele hoitakse külastatud lehtede aadresse küpsiste abil meeles, nii et ka uuest lehele naasmisel on näha, millised kohad on külastatud. Keeled Veebileht PERLi abil ? Loo kasutaja määratud elementide arvuga nummerdamata loetelu, mille elementideks on arvud. ? Linnade nimed, mida loetellu panna, võetakse ühest failist, tulemus väljastatakse teise. ? Lisaks eelmisele tehakse sisseloetava HTML-kujul näitamiseks sobivad asendused. Ülesandeid VRMLiga tutvumiseks. ? Proovi mitmeid VRML Tutoriali ning muid võrgu pealt leitud näiteid. ? Koosta silindrist ja kerast puu. ? Muuda silinder rohekaks ning puu pruunikaks. ? Lisa taevasse päike ja pane valgustama. ? Päiksele vajutades kukub see veidi allapoole. XML XML sugupuu ? Loo inimeste loetelu. Isikuandmeteks eesnimi, perekonnanimi ja sünniaasta. ? Loo sugupuu alates (oma) vanaisast. ? Koosta eespool loodud dokumente kirjeldavad DTD-d ning kontrolli esituse vastavust sellele. ? Väljasta andmed IE lehele, muutes CSS-i abil sünniaasta rasvaseks. ? Koosta puu nii, et seal oleks näha ka väljastpoolt tulnud lapsevanem. XML andmetöötlus DOM-iga XML-failis on sugupuu alates vanaisast. Väljasta: ? Mitu last oli vanaisal. ? Mitu last oli vanaisa teisel lapsel. ? Kas sugupuus leidub Kalle nimelist isikut ? Kalle isa/ema nimi ? Lisa Kallele Martini-nimeline poeg, eemalda Kalle ema sünniaasta ning trüki uus puu XML-ina välja. SAX (Simple Api for XML parsing) ? Lappa SAX-i abil sugupuu ning väljasta, kas alati järgneb eesnimele perekonnanimi ? Väljasta kõik eesnimed eraldi real. ? Leia pikim eesnimi. XML ja DOM Aluseks on sugupuuna paigutatud andmed. ? Teata vanaisa eesnimi ? Teata vanaisa laste arv ? Teata sugupuus olevate inimeste arv. ? Teata vanaisa teise lapse laste arv. ? Leia ühe inimese eesnime järgi tema perekonnanimi ? Leia selle inimese laste arv ? Leia selle inimese sugupuud pidi tuleva esivanema eesnimi. ? Küsi otsitava inimese nimi veebilehelt. ? Leia selle nimega inimeste arv sugupuus ? Teata, kui otsitavat inimest ei leitud. ? Trüki välja kõikide inimeste eesnimed ? Trüki välja kõik nimed nummerdamata loetelus. XSL ? Loo XSL leht, mis sõltumata sisendandmetest väljastab "Tere". Loetelus on vähemalt viie inimese andmed: eesnimi, perekonnanimi ning sünniaasta. ? Väljastatakse teise inimese sünniaasta ? Andmed väljastatakse tabelina nii mallide (template) kui for-each tsükli abil. ? Luuakse SQL-laused inimeste andmete lisamiseks baasi. ? Väljastatakse semikoolonitega eraldatud loetelu vanuste järjekorras. ? Parameetrina antakse ette käesoleva aasta number. Iga inimese kohta väljastatakse nimi ja vanus. Sugupuu Sugupuus on vähemalt kolme põlve andmed, iga inimese kohta vähemalt ees- ja perekonnanimi ning sünniaasta. ? Trükitakse välja inimeste nimed ning nende laste arv. ? Väljastatakse nimed, kel on vähemalt kaks last. ? Väljastatakse nimed, kellel on sugupuus vanavanem. ? Andmepuus muudetakse sünniaasta atribuudiks. Andmepuu loomine ? Koosta linnanimede loetelu ja väljasta xml-ina ? Loe sugupuust eesnimed uude loetellu 1 69