Sellelt lehelt leiad väikesed kodutööd, mis tuleb esitada vastava klassitunni ajal.
Pane tähele, et sarnaselt laboritega võivad ka kodutööd uueneda jooksvalt semestri vältel – mõned kodutööd võidakse lisada, mõned eemaldada või nende sisu võib muutuda. Küll aga ei tee me sisulisi uuendusi juba möödunud kodutöödes ega siis, kui kodutöö tähtajani on jäänud vähem kui nädal aega (st kodutöö nädalaks 4 ei muutu pärast kolmanda nädala klassitunni toimumist).
Tähtaeg: nädal 2
Ülesanne 1: Loe läbi alustamisejuhend, täida etteantud ülesanded: Alusta siit
Ülesanne 2: Lahenda ülesanne keskmise palga kohta
Selleks pead koostama C-keelse programmi [W02-4] ja sellele üks-üheselt vastava algoritmi UML tegevusdiagrammina [W02-5].
Rakenduse nõuded:
- Kasutajalt küsitakse tööpäeva alguse ja lõpu kellaaeg
- Kasutajalt küsitakse tööpäevade arv kalendrikuus
- Kasutajalt küsitakse tunnipalk
- Leia ja väljasta
- Kui palju teenib kasutaja ühes päevas
- Kui palju teenib kasutaja ühes kalendrikuus
- Väljasta, kas see on alla, üle või täpselt Eesti keskmine brutopalk. Kasuta viimase avaldatud kuu palganumbrit (nt juuni 2025).
https://www.stat.ee/et/avasta-statistikat/valdkonnad/tooelu/palk-ja-toojoukulu/keskmine-brutokuupalk
Näiteks:
- Algus 9, lõpp 16, tunnipalk 11, tööpäevi kuus 21.
- Päevane sissetulek 77, kuu sissetulek 1617.
- See on madalam kui Eesti keskmine brutokuupalk.
Abiks: Sissejuhatus algoritmidesse ja UMLi
Lahendus kaitstakse praktikumitunnis. Veendu, et sul oleks kättesaadav: C-keelne programmikood, algoritm pildi kujul (nt PNG) ja algoritm projektifaili kujul (näiteks vpp). Soovitus on need üles laadida ülikooli P kettale, nt SFTP juhendit kasutades
Tähtaeg: nädal 3
Ülesanne: Toidukaalu programmi edasiarendus [W03-5]
Võta aluseks oma teise nädala teine tunnitöö, mille raames lõid toidukaalu rakenduse.
Lisa rakendusele järgnev funktsionaalsus
- Kaalu lubatud mõõtevahemik on 0 – 50 kg
- Kaalu mõõtemääramatus on +-10 grammi + 1% lugemi väärtusest (massist).
- Näiteks kui kaal näitab massiks 2,00 kg, siis tegelik mass võib olla vahemikus 1,97 – 2,03 kg.
- Menüü peab olema kahetasemeline
- Esimese taseme menüüst valitakse toote kategooria (nt puuviljad, juurviljad). Sul peab olema vähemalt 3 kategooriat.
- Teise taseme menüüst valitakse valitud kategooriasse kuuluv toode. Igas kategoorias peab olema vähemalt 3 toodet.
- Kasutajale pakutav hind peab arvestama kogu mõõtemääramatuse kasutaja kasuks – st mitte selle eest raha küsima. Näiteks kui kaal näitab massiks 2,00 kg, siis kasutajalt tohib küsida raha 1,97 kg eest.
- Veateated peavad olema arusaadavad ja vastama veale, mis tekkis. Rakendus peab olema võimeline tuvastama
- Toode pole kaalu peal. Arvestada tuleb mõõtemääramatust mõlemas suunas (nt kui kaalul on -6 grammi või +3 grammi, siis mõlemal juhul puudub toode kaalult).
- Kaalu näit vigane (nt kaalumisplaat tõstetud)
- Ülekaal (üle sertifitseeritud mõõtevahemiku)
- Tundmatu tootekategooria
- Toode puudub vastavas tootekategoorias / tundmatu toode
Lahendus kaitstakse praktikumitunnis. Veendu, et sul on kättesaadav C-keelne lähtekood.
Tähtaeg: nädal 4
Ülesanne: Modelleeri oma kolmanda nädala teise tunnitöö (poekassa koos tsüklitega sisendi kontrolliks) algoritm tegevusdiagrammina.
Loodav diagramm peab olema üks-üheses vastavuses sinu tunnitööga.
Mõned olulised kohad ja näpunäited
- Tsüklite modelleerimisel tuleb tsükkel komponentideks
- algväärtus, tingimus, tsükli sisu jms, vastavalt mida konkreetne tsükkel realiseerimiseks vajab.
- tingimuse paigutamisel tuleb arvestada kas tegu on eel- või järelkontrolliga tsükliga
- Kui tsükli sees on if lause, siis see tähendab, et sul on antud kontekstis kaks tingimust vaja modelleerida – tsükli tingimus ning tingimuslause tingimus. Veendu, et paigutad need õigetesse asukohtadesse ja järjekorras. Kombineerida üheks neid üldjuhul ei tohi.
-
break lauset ei modelleerita tegevusena (action), vaid tavalise noolena (control flow), vastavalt kus kohas programmivoog tööd jätkaks pärast
break lauset.
Mõttekäik: break lause tulemusel ei tehta mitte midagi, vaid suundutakse järgnevate tegevuste juurde. - Ära unusta koondumisi – kui kaks või enam voogu liituvad, peab enne seda olema koondumine (merge node)
- Kui tekib olukord, kus üks nool tuleb sisse ja üks läheb välja, siis koondumist ei kasutata – see “lihtsustub välja”
- Algoritm on programmeerimiskeelest sõltumatu. Selgitada tuleb tegevuste jada, mitte kopeerida 1:1 programmist lauseid algoritmi!
- St see ei tohi sisaldada programmeerimiskeelseid lauseid – nt printf, scanf
- Tingimuslausete ja matemaatiliste tehete juures võib olla abistav kirjutada see välja nii sõnadega kui koodilausena. Näiteks
- Algväärtustan PIN kordade arvu loenduri kolmeks, st pinAttemptsleft = 3
- Suurendan loendurit i ühe võrra, st i++
Tegu on küll keerukama näitega, kuid mõningast inspiratsiooni võid leida https://blue.pri.ee/ttu/ressursid/sissejuhatus-algoritmidesse-ja-umli/uml-naide-positiivsete-arvude-massiivi-salvestamine/.
Lahendus kaitstakse praktikumitunnis. Veendu, et sul on ligipääs nii diagrammile projekti kui pildi kujul.
Tähtaeg: nädal 5
Kodutööd selleks nädalaks antud ei ole. Veendu, et sul poleks praktikumides võlgu, vajadusel lahenda tagantjärgi ülesandeid ja kaitse need ära.
Tähtaeg: nädal 6
Kodutöö: Kirjutada programm vastavalt püstitusele: Vanuselise jaotuse looja
Tähtaeg: nädal 7
Ülesande eesmärgiks on olemasoleva programmikoodi tõlgendamine ja algoritmina modelleerimine.
- Lae alla programmikood, mis tuleb modelleerida: post.c
- Ülesanne põhineb 5. algoritmiülesandel (pakikaalude suhted): algoritmimise ülesanded
- Igal algoritmi perspektiivist olulisele koodilausele peab vastama tegevus, mis on sõnaliselt kirjutatud. Koodi kopeerimine algoritmi puhtal kujul ilma selgitusena ei ole piisav (nt minInd = i üksikuna ei selgita mida selle koodilausega soovitakse teha)
- Visuaalseid detaile ei modelleerita (nt mitu tühikut, mitu kohta pärast koma, joondamine jne)
Tähtaeg: nädal 8
…
Tähtaeg: nädal 9
…