Esimene praktikum Räägime, mis juhtuma hakkab. Tunni eesmärgid: 1. Mis on algoritm? Kuidas panna arvutit oma soovi kohaselt tegutsema? 2. Olulisemad programmeerimisel ettetulevad mõisted ja nende kasutus ning esinemine programmis: muutuja (nimi, andmetüüp, väärtus), omistamine, aritmeetika- ja loogikaavaldised, tingmus- ehk valikulause, tsükkel / tsüklilause. 3. Mis on nende mõistete taga - proovime lahendada lihtsaid ülesandeid. Alustame keskkonnast Scratch (link tundude tabeli all). Kui juba kasutaja seal olemas, saab sellega sisse logida. Aga kasutajat ei pea tingimata tegema. Sel juhul tuleb siiski meeles pidada, et enne uue projekti alustamist vana enda arvutisse ära salvestada. Vali ülalt menüüst Fail -> Salvesta oma arvutisse (File -> Save to your computer) Kiisuke on laval - keskpunkt 0,0. Laval on x ja y koordinaadid, nagu kunagi matemaatika tunnis õpitud sai. Proovime kõigepealt teha midagi hästi nähtavat - liigutame kiisuke Scratchi (või kedagi teist) Vajalikud plokid: Liikumine: liigu, pööra, mine, ... (Motion: move, turn, go to, ...) Sündmused: kui klõpsata rohelisel lipul, kui spraiti klõpsata (Events: when lipuke clicked, when sprite clicked) Laseme kõigepealt kiisukesel lihtsalt liikuda. Nüüd proovime panna ta süstemaatilisemalt liikuma - näiteks mööda kasti külgi. Sama tegevuse kordamiseks (kus on siin korduv tegevus?) saab kasutada kordamise plokki. Vajalikud plokid: Juhtimine: korda 10 korda, korda kuni (Control: repeat 10, reapeat until ) Laseme programmi kasutajal otsustada, kui pikad küljed on kastil ehk muutuja ja andmete sisestus. Kasutaja sisestus. Vajalikud plokid: Andurid: küsi, vastus (Sensing: ask, answer) Muutujate tegemine, väärtuse omistamine ja kasutamine. Vajalikud plokid: Muutujad: Loo muutuja, võta, muuda, .. (Variables: Make a Variable, set to, change by, ..) Vajalikud järgmiste ülesannete juures: Tehted ja avaldised, sh ka juhusliku arvu tegemine: Tehted (Operators) Valik / tingimus / otsustamine. Juhtimine: kui ... siis (Control: if ... then) Vastus ekraanile. Välimus: ütle (Looks: say) Edasi mõned ülesanded tavapärasest programmeerimisest. Ülesanne 1. Tädi Maali lillekast Tädi Maali tahab terassi nurka (mis on täisnurkne) ehitada kolmnurkse lillekasti. Ta paneb paika piki terassi serva jooksvate külgede pikkused (et ikka endale ka terassil ruumi jääks), samuti kasti kõrguse. Ja nüüd tahab ta teada, kui pikki laudu on tal vaja kasti kolmanda külje jaoks. Ning kui palju on vaja osta mulda. Kõigepealt tuleb mõelda läbi, kuidas ülesannet lahendada ehk koostada algoritm: a) millised on algandmed? b) milliseid tulemusi saada tahetakse? c) kuidas algandmetest tulemuseni jõuda? Ülesanne 2. Arvu arvamise mäng Tavaliselt üks mängija mõtleb arvu etteantud piirides ja teine katsub seda ära arvata. Meie ülesandes - Kiisuke Scratch (või keegi teine) mõtleb arvu ja Sina hakkad arvama. Kiisuke (või keegi teine) vastab igale arvamisele ja täpsustab, kas pakutud arv on liiga suur või liiga väike. Lihtsamal juhul lõpetatakse mäng siis, kui arv ära arvatakse. Keerulisemal juhul loendatakse pakkumiste arvu ja kui see liiga suureks kasvab, siis programm teatab, et nii rumal ikka olla ei saa, et nii kaua ühte arvu arvama peaks. Mitme pakkumisega peaks vahemikus 1 .. 100 oleva arvu ära arvama? Kuidas seda leida? Täiendada saab programmi veel sellega, et terve mäng korduma panna, küsides kasutajalt, kas ta soovib veel mängida. See tähendab uue tsükli lisamist mängutsükli ümber. Ülesanne 3. Õnneseitse (lucky seven) Kui suur on lootus võita õnnemängus? Selleks võib välja arvutada tõenäosuseid, aga võib ka mängu käiku simuleerida. Mängija veeretab kahte täringut. Kui täringutel olevate silmade summa on 7, võidab mängija 4 raha. Kui ei ole, siis kaotab 1 raha. Mängu alguses tehakse panus. Seejärel hakatakse täringut veeretama ja vastavalt rahasummat suurendama või vähendama. Mäng lõppeb, kui raha on otsas. Täringut aitab veeretada juhuslike arvude generaator. Täienduseks saab lõpus teatada, mitu korda täringuid veeretati, enne kui raha otsa sai. Kui suur oli vahepeal kõige suurem summa. Nii loendamise, rahasumma muutmise kui ka vahepealse suurima summa tuvastamiseks on oma algoritmilised võtted. Kodutöö: Korrutustabeli drilliprogramm Selle ülesande lahendust ootan meilile: kaks võimalust - kas saata fail, millel on soovitavalt nime osaks enda nimi või jagada Scratchi keskkonnas ja saata mulle link. Koosta väike drilliprogramm korrutustabeli omandamiseks. Programm peab käituma järgmiselt (programmi põhiosa): 1. Esitab korrutustehte 2. Ootab kasutajalt vastuse sisestamist 3. Kontrollib vastuse õigsust 4. Väljastab, kas vastus oli õige või väär. 5. Kokku antakse lahendamiseks 10 ülesannet. Programmi võib täiendada graafikaga: valida lavale meeldivaid tegelasi, panna neid reageerima erinevalt õigele ja valele vastusele jne. Edasi veel ideid, millega soovi korral programmi rikastada: ----------------------------------------------------------- a) Kasutaja otsustab, mitu tehet ta lahendada tahab. b) Programm teeb lisaks teavitamisele statistikat, kui palju õigesti läks. c) Programm lubab vale vastuse korral uuesti vastust sisestada d) Programm teeb tunnikontrolli ja paneb hinde. e) Programm töötab nii kaua, kuni mängija on saanud täis mingi etteantud arvu õigeid vastuseid.