Kodutöö I

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) argumendid ning kuvada nendes punktides arvutatud tulemused. 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 neis punktides, kus argument kuulub funktsiooni määramispiirkonda. Kui argument x ei kuulu määramispiirkonda, tuleb y-veerus  kuvada “puudub”. Kompleksarvulise väärtuse võib soovi korral esitada kujul: reaalosa + imaginaarosa, kuid võib piirduda ka märkusega y tulbas ‘kompleksarvuline’.

Programmi sisendite väärtused sisestatakse kasutaja poolt klaviatuurilt. Kõik sisendid, peale sammude arvu N, peavad toetama reaalarve. Sammude arv N on täisarvuline. Küsitavad sisendid sõltuvad ülesande personaalsest variandist.

Töö raames tuleb koostada ja esitada C keeles kirjutatud programmi kood, algoritm UML tegevusdiagrammina ja aruanne tehtud töö kohta.

Kodutöö ülesannet selgitav video

 

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/

Aruanne peab olema keelekasutuselt ja pikkuselt mõistlik ja jõukohane nii kirjutajale kui lugejale. Väldi põhjendamatult keerukat sõnakasutust (nt mõisted, mida sa ise ei oskaks selgitada) ning tegevuste uhkemaks kirjutamist, kui need tegelikult on.

Kasuta kodutöö 1 dokumenteerimiseks etteantud aruande malli! Mall sisaldab kõiki vajalikke vormistusstiile ning on kohandatud kodutöö 1 nõuetele vastavalt. Mall sisaldab lisaks selgitusi, mida sinult erinevates alampunktides oodatakse.

Aruande kohandatud mall

Lae alla kodutöö mall: https://blue.pri.ee/ttu/files/iax0583/mallid/mall_2026_et.dotx

Mallis on iga pealkirja all selgitav tekst oodatavast sisust. Juhindu abitekstidest aruande sisu koostamisel! Enne kodutöö esitamist kustuta sinisega kirjutatud selgitavad abitekstid ära! Pärast abitekstide kustutamist uuenda kõik loetelud – sisukord, jooniste ja tabelite loetel. Seejärel salvesta dokument PDF failina.

Malli struktuuri tohid muuta vastavalt vajadusele, näiteks lisades sinna täiendavaid pealkirju ja alapeakirju.

Tutvu aruande kirjutamise juhendiga enne malli kasutamist, et vältida vormistusvigu ning kasutada malli efektiivsemalt!

Alternatiivsed mallid

Teaduskonna mallidest on saadaval ka originaal MS Wordi mall, mille põhjal lõime kohandatud malli. Täiendavalt on saadaval LaTeXi mall. Kui soovid tööd alustada originaalmalliga, tuleb see kohandada vastavalt eespool esitatud kohandatud mallis olevatele selgitustele!

Teaduskonna ametliku MS Word malli leiad siit: https://taltech.ee/infotehnoloogia-teaduskond/lopetajale#p43358

Teaduskonna ja ülikooli LaTeXi mallid leiad siit: https://www.overleaf.com/latex/templates/tagged/taltech

Aruande sisu

Esimese kodutöö puhul lähtu sisu struktureerimisel aruande kohandatud mallist!

Aruanne 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 kirjelduse 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)
  • Tehisaru kasutamine
  • 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)
  • Lisa: Ekraanitõmmis(ed) töötavast programmist
    • Ekraanitõ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 aastate jooksul kohanud:

  • Tiitellehele ülaossa tuleb märkida kuhu aruannet esitatakse (mallis eeltäidetud), mitte kus õpitakse
  • Vale aastaarv tiitellehe jaluses
  • Aruandes ei kasutata mallis eelseadistatud stiile põhitekstile, pealkirjadele
  • Aruandes tühi lehekülg
  • Peatükile (millel puudub tekstiline sisu) järgneb vahetult alampeatükk, joonis või tabel. Eelnimetatud elementide ja pealkirja vahele peab jääma vähemalt üks lõik sisulist teksti.
  • Peatükk sisaldab vaid joonist või jooniseid, kuid neid pole kirjeldatud ega viidatud tekstis
  • 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. Probleeme põhjustab nii värviskeem kui ka liiga väike teksti suurus.
  • Aruandesse tohib lisada programmikoodist vaid üksikuid koodiridu oma teksti illustreerimiseks. Aruanne ei ole õige koht suures mahus programmikoodi esitamiseks.
  • Ekraanitõmmis peab sisaldama vaid olulist – st sinu loodud programmi, mitte sinu töölauda
  • Lisade kasutamisel peavad olema lisad viidatud teksti sees
  • Kasutamata mõisted ja muu näidissisu tuleb aruandest eemaldada

Nõuded koodimisstandardile ja keskkonnale

Loodav programm peab olema kirjutatud C-programmeerimiskeeles. Vaikimisi eeldatakse, et programm on kirjutatud C99 standardile vastavalt. Teiste standardite (C90, 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 tuleb eelnevalt õppejõuga kokku leppida!

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 26.04 ja GCC-15). Ühilduvus teiste operatsioonisüsteemidega (Windows, MacOS) ei ole vajalik.

Nõuded lahendusele

Programm tuleb koostada lähtuvalt seni õpitud praktikatest. Muu hulgas peavad olema täidetud järgmised 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 elemendid (nt teegifailid, muutujad, mida ei kasuta)
  • Maksimaalselt arvutatakse ja kuvatakse 20 tulemust
  • 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()  funksioon peab 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, makrote ja funktsioonide nimed on arusaadavad ning kirjutatud korrektses stiilis
    • Kood on trepitud, koodiread on lubatud maksimaalse pikkusega ja tühikud vajalikes kohtades
    • Koodis puuduvad maagilised arvud

Nõuded algoritmile

Algoritmile kehtivad järgmised üldnõuded:

  • Algoritm on vormistatud standardile vastava UML tegevusdiagrammiga
  • Diagrammil jaotatakse programmi tegevused loogilisteks osadeks ujumisradade (eraldised, swim lane) abil

Levinud tüüpvigade vältimiseks veendu, et:

  • Kõigi otsustussõlmede juurde on märgitud tingimus, mille alusel valitakse sõlmest väljuv tee
  • Otsustussõlmedest väljuvatel kaartel on märgitud, mis tingimusel programmivoog konkreetse kaare valib (true/false, switch case väärtused)
  • Kui mitu alternatiivset voogu koonduvad pärast tingimust, peab selleks olema kasutatud koondumise sõlme (merge node)
  • Kõik diagrammi harud on läbitavad – 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
  • Tegevusdiagrammil ei esitata kasutaja loodud funktsioone ega nende vahelisi seoseid
  • Diagramm esitab vaid lahenduses olulisi tegevusi – kosmeetilist laadi tegevusi ära esita (nt kuva horisontaalne joon)

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. Lahenduse eest on võimalik ositi punkte teenida, kuid ka selleks peab lahendatu olema dokumenteeritud aruandes.

Boonuspunktide saamiseks tuleb lisaks ülesande baasnõuetele täita järgmised nõuded

  • Koodis tuleb funktsiooni argumentide ja väärtuste hoiustamiseks kasutada massiive
    • Massiivide väärtustamine ning väljastus peavad paiknema erinevates funktsioonides
  • Lisaks võimalusele kasutajal sisestada algandmeid arvutuste tegemiseks peab programmi olema sisse kodeeritud algväärtuste komplektid, mida kasutaja saab soovi korral valida
    • Kasutaja peab saama valida, kas ta soovib ise algväärtused sisestada või soovib ta kasutada eelseadistatud väärtuste 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 valitud sisendikomplekte ning põhjenda, miks just need valisid

Tähtajad

Terviklik kodutöö tuleb esitada hiljemalt 18.10.2026 23:59:59 (kohalik aeg)

Kui kodutöö kohta tekib täiendavaid küsimusi või esineb kahtlusi autorluses, märgitakse kodutöö tulemuseks 0 punkti kuni töö eduka kaitsmiseni.

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.  Korralikult tehtud töö korral võib tagasiside puududa.

Kodutöö parandamine

Kodutöö tulemust on võimalik parandada kuni kodutöö lukustamise kuupäevani. Arvesta, et kui esitad oma kodutöö vähem kui kaks nädalat enne lukustamise kuupäevast, ei pruugi jääda piisavalt aega sinu töö hindamiseks ja sul paranduste sisse viimiseks parandamiseks.

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.