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. Aruanne peab olema korrektselt struktureeritud ja põhjalik. Aruande kvaliteet on osa kodutöö hindest.
Aruanne peab vastama IT teaduskonna lõputöö juhendile: https://haldus.taltech.ee/sites/default/files/2021-01/ITT_loputoode_juhend_EST.pdf
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 (MS Word)
Lae alla kodutöö mall: https://blue.pri.ee/ttu/files/iax0583/mallid/mall_et_pr1_kod1.dotx
Mallis on iga pealkirja all selgitav tekst või mõned näpunäiteid konkreetse peatüki kohta. Juhindu nendest kodutöö vormistamisel! Enne kodutöö esitamist kustuta sinisega kirjutatud selgitavad tekstid ära!
Malli struktuuri tohid muuta vastavalt vajadusele, näiteks lisades sinna täiendavaid alampeakirju.
Malli on sinu eest loodud mitmed kirjalaadi, mis vastavad vormistamisnõuetele ja mida peaksid kasutama – näiteks tavalise teksti kirjutamiseks tuleb kasutada kirjalaadis body text või tabeli pealkirjad kirjalaadis Table_head.
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 (MS Word, OpenOffice)
Kui soovid kasutada üldist malli ja seda ise kohandada, leiad selle siit:
http://www.tud.ttu.ee/im/Aila.Lainurm/ITT_Autorikomplekt/
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!
Aruandes peaksid olema kajastatud järgmised komponendid:
- Tiitelleht
- Autorideklaratsioon
- Lühendite ja mõistete sõnastik (vajadusel)
- Sisukord
- Jooniste ja tabelite loetelu (vajadusel)
- Ülesande püstitus ja variant
- Funktsiooni 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 vähemalt 3/4 A4 lehekülge, maksimaalselt 2 A4 lehekülge. Kirjeldus peab olema arusaadavalt struktureeritud. Kasutada tuleks tabeleid, loetelusid jt struktuurseid elemente. Kirjeldus ei tohi olla üks suur müür teksti!
- Programmi tööd kirjeldav algoritm UMLis.
- Kokkuvõte
- Kirjuta mõni lause oma tööprotsessi kohta.
- Kirjuta mõni lause ülesandest ja selle keerukusest.
- Kui võimalik, hinda ülesande ajalist mahtu.
- Täiendavad kommentaarid, emotsioonid, mõtted
- Kasutatud kirjandus (vajadusel)
- Kõik mis ei olnud kaetud selle õppeaine raames ja mida sa ei loonud iseseisvalt.
- Ka näiteks sõbra või kursusekaaslase abi tuleb viidata: https://libraryguides.vu.edu.au/ieeereferencing/personalcommunication
- Kui kasutasid tehisintellekti (nt ChatGPT), peab ka selle kasutus olema viidatud.
- Viited allikatele peavad olema täpsed. Näiteks viitena stackoverflow.com või google.com ei sobi. Viide peab olema konkreetsele leheküljele kust informatsioon pärineb.
- Ära unusta teksti sisse viiteid panemast kus sa neid allikaid kasutasid!
- Lisa: Ekraanitõmmis(ed) töötavast programmist
- Ekraamitõmmised peaksid illustreerima erinevaid situatsioone millega sinu programm toime tuleb
- Ekraanitõmmised võivad olla pandud lisana, kuid võivad olla ka põimitud lahenduse kirjelduse sisse.
Olulised märkused aruande vormistamisel
Tegu on loeteluga tüüpilistest vigadest esitamisel:
- Tiitellehele ülaossa tuleb märkida kuhu aruannet esitatakse, mitte kus õpitakse. St näiteks kus kohas töötab see inimene, kellele aruanne lugemisele läheb. Minimaalselt ülikooli ja instituudi nimi.
- Veendu, et aasta number on korrektne ka tiitellehel
- Aruande vormistamisel tuleb kasutada mallis kirjeldatud stiile ja automaatselt genereeritavaid elemente (sisukord, tabelite ja jooniste loetelu, kasutatud kirjandus). Näiteks:
- Tavaline tekst peab olema stiiliga “body text”
- Esimese astme pealkiri peab olema stiiliga “Heading 1”
- Sisukorda, jooniste ja tabelite loetelu ei tohiks käsitsi kirjutada! Need on automaatselt genereeritud elemendid.
- Puuduva sisuga pealkirju ja tühju lehekülgi aruandes olla ei tohi.
- Kõikide pealkirjade all peab olema teksti. Pealkiri, mille alla kuulub vaid joonis, pole piisav!
- Tabelitel ja joonistel peavad olema pealkirjad.
- Tabelid ja joonised peavad olema tekstis viidatud. Vajadusel täiendavalt kommenteeritud.
- Selgitus on korralikult struktureeritud – st ei ole üks monoliitne tekstiplokk! Kasuta alampealkirju, tabeleid, loetelusid jne.
- Algoritm peab olema loetav. Soovitatav on lisada oma dokumenti eksporditud vektorgraafika.
- Aruandesse tohib koodi panna vaid minimaalselt oma teksti illustreerimiseks. Aruanne ei tohi sisaldada kogu programmikoodi. Programmikood esitatakse eraldi failina.
- Aruandes on vaid välja lõigatud pildid sinu loodud programmist, mitte tekstiredaktorist ega tervest tööekraanist.
Nõuded koodimisstandardile ja keskkonnale
Loodav programm peab olema kirjutad C programmeerimiskeeles. Kasutada tohib C90 ja C99 koodistandardeid. Kokkuleppel tohib kasutada ka uuemaid standardeid (nt C11, C17).
Lisaks C standardteekidele tohid kasutada ka C POSIX ja GNU C teeke. Teiste teekide kasutamine väljaspool eelnimetatut ainult kokkuleppel!
Loodav programm peab töötama Linux keskkonnas. Eelistatud on operatsioonisüsteemist sõltumatu lahendus. Kood kompileeritakse ja testitakse laboris oleva Linux seadistusega võrdväärses keskkonnas (nt OpenSUSE SLED-15 SP5 või Ubuntu Linux 22.04 koos GCC-12 kompilaatoriga).
Nõuded koodile
Programmi kood peab vastama järgnevatele nõuetele:
- Kood peab lähtuma seni õpitud praktikatest.
- Koodis ei tohi olla kasutatud GOTO lauseid.
- Koodis ei tohi olla kasutatud globaalmuutujaid.
- Koodis ei ole kasutatud muutuva pikkusega massiive (VLA – variable length array)
- Koodis puuduvad kasutamata komponendid (nt teegifailid, muutujad mida ei kasuta).
- Kõik leitavad tulemused tuleb salvestada ja kuvada selleks sobiliku massiivi või massiivide kaudu.
- Maksimaalselt arvutatakse ja kuvatakse 20 tulemust, olenemata variandist.
- Kood vastab esitatud koodimisstiilile, muuhulgas (kuid mitte ainult!)
- 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 korrektse UML tegevusdiagrammiga
- Algoritm tükeldab programmi loogilisteks tükkideks kasutades ujumisradu / eraldisi (swim lane)
- Algoritmis on kajastatud massiivide indekseerimist.
Muuhulgas tasub kontrollida ka, et puuduksid järgnevad tüüpvead:
- 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 reaalsed.
- Puuduvad tupikud – st kõikjalt on võimalik saada lõppu.
- Kõigist tsüklitest on võimalik väljuda
Kasutaja loodud funktsioonid
Kodutöö 1 on lubatud kirjuta ühe monoliitse main funktsioonina, eraldi funktsioone luua ei ole vaja. Küll aga ei ole see ka keelatud. Funktsioonide kasutamisel arvesta järgnevate nõuetega
- Globaalmuutujad on keelatud. Andmevahetus käib parameetrite ja tagastavate väärtuste abil.
- Funktsioonidel on prototüübid, millele järgneb main funktsioon. Funktsiooni keha (deklaratiivne osa) paikneb pärast main funktsiooni.
- Funktsioonid on koodis kommenteeritud vastavalt koodimisstiili nõuetele
Lisaülesanne boonuspunktide teenimiseks
Kodutöö eest on võimalik saada kuni 2 boonuspunkti.
Boonuspunktide saamiseks tuleb lisaks ülesande baasnõuetele täita järgmised nõuded
- Programm tuleb tükeldada mõistliku suurusega eesmärgipärasteks funktsioonideks
- Funktsioonid peavad olema dokumenteeritud vastavalt kirjeldusele “Kasutaja loodud funktsioonid” peatükis.
- Funktsiooni väärtuste arvutamine ja väljastus peavad asuma erinevates funktsioonides.
- Vähemalt üks funktsioonidest peab omama tagastust.
- 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 täiendav esimese astme pealkiri “Lisaülesanded”.
- Kirjelda lisaülesande raames lisatud funktsionaalsus
- Kirjelda oma mõttekäiku kuidas otsustasid millised sinu loodud funktsioonid olema saavad
- Kirjelda oma valitud sisendikomplektid ning põhjenda miks just need osutusid valituks
Tähtajad
Terviklik kodutöö tuleb esitada hiljemalt 27.10.2024 23:59:59 (kohalik aeg)
Kodutöö tähtaja ületamisel vähendatakse lõpptulemust 1 punkti võrra igal hilinetud nädala kohta. Maksimaalselt vähendatakse tulemust 5 punkti võrra, st esitades töö 7 nädalat hiljem kaotad ikkagi 5 punkti töö tulemusest.
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 Kodutoo_I_Eesnimi_Perenimi_üliõpilaskood.
Näiteks:
Kodutoo_I_Anti_Tiib_112211IACB_kood.c
Kodutoo_I_Anti_Tiib_112211IACB_aruanne.pdf
Kodutöö tuleb esitada Moodle kaudu: https://moodle.taltech.ee/mod/assign/view.php?id=535829
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 miinuspunktid vastavalt esitamise ajale.