Kodutöö II

Kodutöö üldnõudedKodutöö ülesande variantNäidislahendus

Kodutöö II raames tuleb luua programm ja koostada aruanne tehtud töö kohta.

Kodutöö 2 põhilisteks aspektideks on funktsioonide kasutamine ja programmi testimine erinevate sisendiga kasutades voo suunamist.  Kuna lähteandmeid võib olla erinevates testfailides erinev arv, on andmete kogus antud enne andmeid. Kahedimensionaalse massiivi puhul oleks eelnevalt antud kaks numbrit.

Näiteks leidmaks tudengite keskmist hinnet võiks olla sisendfaili sisu: 9 1 0 4 5 5 3 5 4 2

Esimene number 9 ütleb mitu hinnet sellele järgneb ning seejärel on 9 hinnet.

 Aruande sisu [struktuurinäidis]

  • Tiitelleht
  • Autorideklaratsioon
  • Sisukord
  • Ülesande püstitus
  • Programmi  selgitus struktureeritult (miinimum 2 A4, max 3 A4 lehte)
    • Mis su programmi eesmärk on? St mida programm teeb?
    • Programmi töövoog (mis järjekorras mida tehakse)
    • Kõigi funktsioonide detailne kirjeldus
      • Funktsiooni nimetus, kirjeldus, kõrvalmõjud
      • Funktsiooni parameetrid ja tagastatav väärtus – nende andmetüübid ja tähendus (semantika). Võib sisaldada ka tingimusi lähteandmetele – nt eeldatakse, et edastatav väärtus on positiivne täisarv
    • Programmi lähteandmed (kust need tulevad, mis formaadis need peavad olema, mis järjekorras neid oodatakse)
    • Eriolukorrad ja nende lahendamine (olukorrad, kui programm peab oma töö vea tõttu peatama. Kuidas neid kontrollitakse / lahendatakse? Siia käivad ka juhud, mida pole autor lahendada suutnud olemasolevate teadmiste põhjalt, kuid on teadlik nende eksisteerimisest)
    • jne
  • Ekraanitõmmis(ed)
    Näita kindlasti voo suunamise kasutamist. 
  • Kasutatud kirjandus
    Nii internetist kui raamatust leitud materjalid mida kasutasid. Sealjuures ka kui sõber või kursakaaslane ulatas abikäe ning jagas midagi enda koodist.

Enne esitamist veendu, et (nõuded)

  • Täidetud on kõik koodimisstiilis etteantud nõuded, sealhulgas:
    • Kood on trepitud ja tühikud ning reavahetused seal, kus vaja
    • Kõik funktsioonide, muutujate, preprotsessori makrote nimetused on arusaadavad, eesmärgipärased ja õigesti vormistatud
    • Puuduvad maagilised numbrid
    • Puuduvad globaalsed muutujad
    • Muutujate deklaratsioonid on ainult funktsioonide alguses
    • Kood on kommenteeritud
    • Failidel on päis
    • Kasutatud vaid vajalike teeke
    • Kõik funktsioonid on kommenteeritud (NB! Vaata kuidas funktsiooni kommenteeritakse)
  • Koodis on realiseeritud vähemalt minimaalselt nõutud funktsioonid, kuid neid võib olla rohkem, kui see on eesmärgipärane
  • Programm peab töötama suvaliste andmetega (St me võime testimiseks muuta lähteandmeid, kuid me ei muuda andmetüüpe). Testimiseks kasutame me voo ümbersuunamist, juhindu ettantud näidisfailist!
  • Andmevahetus toimub funktsioonidega ainult parameetrite kaudu. Funktsiooni tagastused ja keerukamad lahendused on lubatud, globaalmuutujad mitte.
  • GOTO kasutamine pole lubatud.
  • Funktsioonide prototüübid asuvad päises, funktsioonide sisu pärast main() funktsiooni

Tähtajad, punktid, boonused

Teise kodutöö väärtuseks on 15p.

Maksimaalse tulemuse saamiseks peab lisaks korrektsele tööle olema järgitud ka koodimisstiilis esitatud nõudeid.

Terviklik kodutöö tuleb esitada hiljemalt 25.04.2021

Tähtaja ületamisel iga hilinetud nädal võtab 1p maksimumist alla kuni 10p piirini. Miinuspunktid lukustuvad vaid juhul, kui töö on esitatud täismahus.

Kodutöö eest saadud punkte on võimalik parandada punktide lukustamise kuupäevani. Sellisel juhul on töö ja sooritatud paranduste kaitsmine kohustuslik.

Esitades korrektselt lahendatud ja vormistatud töö ennetähtaegselt on võimalik saada kuni 2 boonuspunkti.

  • Enne 20.04.2021 23:59 esitatud töö: 1p
  • Enne 15.04.2021 23:59 esitatud töö: 2p

Boonuspunktide saamiseks peavad olema kõik esitatud nõuded täidetud. Poolikute või vigaste lahenduste eest boonuspunkte pole võimalik saada. Juhul kui esitatud töö ei täida kõiki nõudeid esmakordsel esitamisel kaob õigus selle töö eest boonuspunkte saada.

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 *.pdf (Adobe PDF formaadis) ja kõik vajalikud koodifailid. Vajadusel lisa ka Makefile. Kompileeritud kujul programmi mitte lisada!

Esitamine käib ainult elektroonselt. Kindlasti järgi järgmisi nõudeid, et su töö ikka kenasti kohale jõuaks ja hinne õigele inimesele saaks.

Failide nimed on kujul Kodutoo_II_Eesnimi_Perenimi_123456ABCD

Kodutöö tuleb esitada moodle kaudu: https://moodle.taltech.ee/enrol/index.php?id=3347

Meeldetuletus! Sa ei pea ega tohiks oma programmis faile üritada lugeda. Failide kasutamine on läbi voo suunamise (stream redirection).

NB! Tegu on vaid osalise lahendusega, mis demonstreerib osasid testimisest ja koodimisstiilist. Esitamisele kuuluvast loe täpsemalt nõuete alt.

 

Koodinäidise vaatamiseks kliki siin
Koodi testimise näidislahenduseks piilu siia

Testimiseks kasutan mitut erinevat andmefaili katmaks erinevaid olukordi, mis tekkida võivad.

Test 1:

Output:

Capture

Test 2:

Output:

Capture2