Kodutöö I: Funktsiooni y = f(x) tabuleerimine
Kodutöö I raames tuleb sul luua tarkvaraline lahendus, mis võimaldab ettemääratud kitsenduste põhjal leida funktsiooni y = f(x) väärtusi ning kuvab tulemused leitud punktides. Tulemused peavad olema joondatud tabeli kujul [ vt printf() kasutamise vihjeid ], mille veergudeks on argumendi x ja funktsiooni y = f(x) väärtused, st:
Argument (xi) | Funktsiooni väärtus kohal yi=f(xi) |
x1 | y1 |
x2 | y2 |
… | … |
xn | yn |
Valemid xi ja yi arvutamiseks leiad oma personaalsest variandist.
Funktsiooni väärtus kuvatakse ainult siis, kui see eksisteerib. Kui funktsiooni väärtus pole antud argumendi x korral määramispiirkonnas, tuleb y veergu väljastada ‘puudub’. Kompleksarvulise väärtuse võib soovi korral esitada kujul: reaalosa + imaginaarosa, kuid võib piirduda samuti märkusega y tulbas ‘kompleksarvuline’. Maksimaalselt tuleb leida 20 tulemust.
Programmi sisendid tulevad klaviatuurilt, vastavalt kasutaja soovile. Kõik sisendid, peale sammude arvu N, peavad toetama reaalarve. Sammude arv N on täisarvuline.
Töö raames tuleb koostada ja esitada C keeles kirjutatud programmi kood, algoritm UML tegevusdiagrammina ja aruanne tehtud töö kohta.
Kodutöö variant
Aruanne
Kodutöö raames tuleb esitada põhjalik aruanne tehtud töö kohta. Aruande kvaliteet on osa kodutöö hindest.
Aruanne peab vastama IT teaduskonna lõputöö juhendile. Malli kasutamise kohta oleme koostanud lühijuhendi, mille leiad siit: https://blue.pri.ee/ttu/ressursid/aruande-vormistamise-juhend/
Kasuta kodutöö 1 dokumenteerimiseks etteantud aruande malli! Mall sisaldab juba kõiki vajalike vormistusstiile ning on kohandatud kodutöö 1 nõuetele vastavalt.
Aruande kohandatud mall
Lae alla kodutöö mall: https://blue.pri.ee/ttu/files/iax0583/mallid/mall_2025_et.dotx
Mallis on iga pealkirja all selgitav tekst oodatavast sisust. Juhindu sellest aruande sisu koostamisel! Enne kodutöö esitamist kustuta sinisega kirjutatud selgitavad tekstid ära!
Malli struktuuri tohid muuta vastavalt vajadusele, näiteks lisades sinna täiendavaid pealkirju ja alampeakirju.
Tutvu aruande kirjutamise juhendiga enne malli kasutamist, et vältida vormistusvigu ning kasutada malli otstarbekohaselt!
Aruande üldine mall (LaTeX)
Ülikooli ametlikud LaTeX mallid on saadaval siin: https://www.overleaf.com/latex/templates/tagged/taltech. Kasutada tuleks bakalaureuse / magistritöö malle ning kohandada neid vastavalt ülesande nõuetele (vt kohandatud mall).
Aruande üldine mall
Kui soovid kasutada üldist malli ja seda ise kohandada, leiad selle siit:
https://taltech.ee/infotehnoloogia-teaduskond/lopetajale#p43358
NB! Üldist malli kasutades vaata läbi kohandatud mall, et kõik nõuded saaksid kenasti kajastatud!
Aruande sisu
Esimese kodutöö puhul lähtu sisu struktureerimisel aruande kohandatud mallist!
Aruande struktuur peab sisaldama järgnevaid komponente
- Tiitelleht
- Autorideklaratsioon
- Lühendite ja mõistete sõnastik (vajadusel)
- Sisukord
- Jooniste ja tabelite loetelu (vajadusel)
- Ülesande püstitus ja variant
- Funktsiooni y=f(x) analüüs
- Funktsiooni kirjeldus (teosta funktsiooni analüüs)
- Visualiseeritud funktsiooni graafik(ud)
Selleks võid kasutada näiteks [google’it], [wolfram alphat], excelit või mõnda teist meelepärast tööriista.
- Lahenduse kirjeldus
- Tekstiline kirjeldus. Juhindu mallis olevatest pidepunktidest. Tekstilise kirjeldus pikkus on vahemikus 1 – 2 A4 lehekülge, millele lisanduvad joonised. Kirjeldus peab olema arusaadavalt struktureeritud.
- Programmi töövoog
- Programmi tööd kirjeldav algoritm tegevusdiagrammina
- Eriolukordade analüüs (lihtsustatud riskianalüüs)
- Kokkuvõte
- Kirjuta mõni lause oma lähenemisest ülesandele ja tööprotsessi kohta
- Kirjuta mõni lause ülesandest ja selle keerukusest sinu jaoks
- Kui võimalik, hinda ülesande sooritamise ajalist mahtu
- Kas soovitad ülesannet kasutada ka tulevikus? Kas ja mida muudaksid?
- Täiendavad kommentaarid, emotsioonid, mõtted
- Kasutatud kirjandus (vajadusel)
- Viitamiseks kasutatakse IEEE stiili
TalTechi juhend: https://haldus.taltech.ee/sites/default/files/2024-05/IEEE_stiilis_viitamine_2024%20%281%29.pdf
Ametlik juhend: https://journals.ieeeauthorcenter.ieee.org/wp-content/uploads/sites/7/IEEE_Reference_Guide.pdf - Kõik mis ei olnud kaetud selle õppeaine raames ja mida sa ei loonud iseseisvalt.
- Ka näiteks sõbra või kursusekaaslase abi tuleks viidata: https://libraryguides.vu.edu.au/ieeereferencing/personalcommunication
- Tehisaru kasutamine peab olema viidatud korrektselt vastavalt ülikooli seatud reeglitele
- Viited allikatele peavad olema täpsed. Näiteks viitena stackoverflow.com või google.com ei sobi.
- Viitamiseks kasutatakse IEEE stiili
- Lisa: Ekraanitõmmis(ed) töötavast programmist
- Ekraamitõmmised peavad illustreerima erinevaid olukordi, millega sinu programm toime tuleb
- Ekraanitõmmised võivad olla esitatud töö lisades või põimitud lahenduse kirjelduse sisse
Märkus: Kui kasutad tunnis seni läbi võtmata võtteid ja keelelisi konstruktsioone, pead nende tööpõhimõtte ja kasutuse eelised lahenduses selgitama aruandes, mille arvelt võid lahenduse kirjeldust pikendada..
Korduma kippuvad vead aruandes
Tegu on loeteluga tüüpilistest vigadest, mida oleme näinud aastate jooksul
- Tiitellehele ülaossa tuleb märkida kuhu aruannet esitatakse (mallis eeltäidetud), mitte kus õpitakse
- Vale aastaarv number tiitellehe allosas
- Aruandes ei kasutata mallis eelseadistatud stiile põhitekstile, pealkirjadele
- Aruandes tühi lehekülg
- Peatükile (millel puudub igasugune sisu) järgneb vahetult alampeatükk
- Peatükk sisaldab vaid joonist või jooniseid, kuid neid pole kirjeldatud
- Tabelitel peavad olema pealkirjad, joonistel allkirjad
- Tabelid ja joonised peavad olema tekstis viidatud ristviitega
- Selgitus on esitatud suure monoliitse lõiguna – peab olema struktureeritud (lõigud, alampeakirjad, tabelid, joonised jms)
- Algoritm ei ole loetav – see peab olema paberile väljatrükitud kujul loetav
- Aruandesse tohib koodi panna vaid minimaalselt oma teksti illustreerimiseks. Aruanne ei tohi sisaldada kogu programmikoodi.
- Ekraanitõmmis peab sisaldama vaid olulist – st sinu loodud programmi, mitte kogu sinu ekraanil sisalduvat
- Lisade kasutamisel peavad olema lisad viidatud teksti sees
- Kasutamata mõisted ja muu näidissisu, mida töös ei kasutata
Nõuded koodimisstandardile ja keskkonnale
Loodav programm peab olema kirjutad C programmeerimiskeeles. Kasutada tohib C90 ja C99 koodistandardeid. Uuemate standardite (C11, C17, C23) kasutamine on lubatud, kui see pakub lisandväärtust. Põhjendus tuleb tuua välja aruandes.
Lisaks C standardteekidele tohid kasutada ka C POSIX ja GNU C teeke ja laiendusi. Teiste teekide kasutamine väljaspool eelmainituid tuleb eelnevalt kokku leppida õppejõuga!
Esitatud lahendus kompileeritakse ja testitakse arvutiklassis oleva Linux seadistusega võrdväärses keskkonnas (nt OpenSUSE SLED-15 SP5 ja GCC-12) või soovitusliku koduse seadistusega (Ubuntu Linux 24.04 ja GCC-13). Ühilduvus teiste operatsioonisüsteemidega (Windows, MacOS) ei ole vajalik.
Nõuded lahendusele
Programm tuleb koostada lähtuvalt seni õpitud praktikatest.
Muuhulgas peavad olema täidetud järgnevad nõuded
- Koodis ei ole kasutatud goto lauseid
- Koodis ei ole kasutatud globaalmuutujaid
- Koodis ei ole kasutatud muutuva pikkusega massiive (VLA – variable length array)
- Koodis puuduvad kasutamata komponendid (nt teegifailid, muutujad mida ei kasuta)
- Maksimaalselt arvutatakse ja kuvatakse 20 tulemust, olenemata variandist
- Kõik sisendid (peale sammude arvu) peavad toetama reaalarve
- Kood on tükeldatud funktsioonideks
- funktsioonide koostamisel lähtu õpitud praktikatest ja koodimisstiili nõuetest
- ükski funktsioon, sh main funktsioon, ei tohi sisaldada lohisevat spagett-koodi
- main() funktsioon olema koodi kõige esimene funktsioon, enda loodud funktsioonid peavad paiknema pärast main() funktsiooni
- Kood vastab esitatud koodimisstiilile, muuhulgas (kuid mitte ainult!)
- Koodimisstiil on ühtlane kogu faili ulatuses
- Failil on korrektne päis koos autori andmete, kuupäeva ja lühikirjeldusega
- Kood on kommenteeritud
- Muutujate nimed on arusaadavad ning kirjutatud korrektses stiilis
- Kood on trepitud, koodiread on lubatud maksimaalse pikkusega ja tühikud vajalikes kohtades
- Koodis puuduvad maagilised numbrid
Nõuded algoritmile
Üldised nõuded algoritmile
- Algoritm on vormistatud standardile vastava UML tegevusdiagrammiga
- Algoritm tükeldab programmi loogilisteks tükkideks kasutades ujumisradu / eraldisi (swim lane).
NB! Algoritm kirjeldab funktsionaalsust, mitte kasutaja loodud funktsioone lähtekoodis!
Veendu, et töös ei esineks järgnevaid tüüpvigu
- Kõigil sõlmedel on juures tingimus (mille alusel valitakse sõlmest väljuv tee)
- Kõigil sõlmedest väljuvatel kaartel on märgitud mis olukorras programmivoog antud kaare valib (true/false, switch case väärtused)
- Kui mitu voogu koonduvad pärast tingimust, peab selleks olema kasutatud koondumise sõlme (merge node)
- Kõikidesse kaartesse on võimalik saada – st tingimused peavad olema loogilisel tasemel saavutatavad
- Puuduvad tupikud – st kõikjalt on võimalik saada vähemalt ühte lõppu
- Kõigist tsüklitest on võimalik väljuda
Lisaülesanne boonuspunktide teenimiseks
Kodutöö eest on võimalik saada kuni 15 boonuspunkti. Boonuspunktide saamiseks peavad lisaülesande raames tehtud täiendused olema aruandes kirjeldatud.
Boonuspunktide saamiseks tuleb lisaks ülesande baasnõuetele täita järgmised nõuded
- Koodis tuleb arvude hoiustamiseks kasutada massiive
- Massiivide täitmine ning väljastus peavad paiknena erinevates funktsioonides
- Lisaks võimalusele kasutajal sisestada algandmeid arvutuste tegemiseks peab programmi olema sisse kodeeritud algväärtuste komplektid, mida kasutaja saab soovi korral käivitada.
- Kasutaja peab saama valida kas ta soovib ise algväärtusi sisestada või soovib ta kasutada eelseadistatud komplekti
- Programmis peab olema minimaalselt 2 eelseadistatud komplekti väärtusi, mis demonstreerivad sinu programmi funktsioneerimist erinevates situatsioonides
- Programmiga peab olema võimalik korduvalt arvutusi sooritada ilma programmist väljumata. Kasutajal peab olema võimalus soovi korral programm sulgeda.
- Aruandesse tuleb lisada esimese astme pealkiri “Lisaülesanne”, milles
- Kirjelda lisaülesande raames lisatud funktsionaalsust
- Kirjelda oma valitud sisendikomplektid ning põhjenda miks just need osutusid valituks
Tähtajad
Terviklik kodutöö tuleb esitada hiljemalt 19.10.2025 23:59:59 (kohalik aeg)
Kodutöö tähtaja ületamisel vähendatakse töö eest saadavat lõpptulemust 1 punkti võrra iga esitamistähtajast üle läinud päeva eest. Maksimaalselt vähendatakse tulemust 50 punkti võrra, st esitades töö 60 päeva hiljem kaotad ikkagi kuni 50 punkti.
Kui kodutöö kohta tekib täiendavaid küsimusi või esineb kahtlusi autorluses, hinnatakse kodutöö tulemusega 0 punkt. Sellisel juhul tuleb punktide saamiseks kodutöö kaitsta.
Vajadusel rakendatakse [Vääritu käitumise menetlemise korda].
Viimane päev kodutöö esitamiseks ja kaitsmiseks on märgitud sissejuhatavatel slaididel. Pärast antud kuupäeva kodutöid esitada ei ole võimalik!
Esitamine
Esitada tuleb dokumentatsioon Adobe PDF formaadis ning kõik vajalikud koodifailid programmi kompileerimiseks.
Failide nimed peavad algama K1_Perenimi_üliõpilaskood.
Näiteks:
K1_Kuusk_112211IACB_kood.c
K1_Kuusk_112211IACB_aruanne.pdf
Kodutöö esitatakse Moodle kaudu.
Tulemused ja tagasiside
Pärast töö kontrollimist leiad Moodlest oma punktid ning tagasiside (nähtav vaid hinnetelehet!). Korralikult tehtud töö korral võib tagasiside puududa.
Kodutöö parandamine
Kodutöö tulemust on võimalik parandada kuni kodutööde lukustamise kuupäevani. Parandatud kodutööd kuuluvad kaitsmisele.
Kodutöö parandamiseks vaata esmalt läbi oma töö tagasiside. Seejärel võta ühendust õppejõuga, et kokku leppida parandamise protsessis.
NB! Kui töö parandamise käigus osutub vajalikuks enama kui poole töö muutmine, loetakse seda uue töö esitamiseks, millelt võidakse arvestada maha hilinemine vastavalt paranduse esitamise kuupäevale.