Kodutöö II

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

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

Kodutöö II põhilisteks aspektideks on funktsioonide kasutamine ja dokumenteerimine ning programmi testimine erinevate sisendiga kasutades voo suunamist.

Aruande mall

Aruande malliks kasuta Kodutöö 1 raames välja toodud malle (https://blue.pri.ee/ttu/programmeerimine-i/kodutoo-i/) ning kohanda see ise sobivaks antud kodutööle.

 Aruande sisu

  • Tiitelleht
  • Autorideklaratsioon
  • Lühendite ja mõistete sõnastik (kui eksisteerib)
  • Sisukord
  • Jooniste ja tabelite loetelu (kui eksisteerib)
  • Ülesande püstitus
  • Loodud lahenduse kirjeldus (vahemikus 2 – 4 A4 lehekülge). Kirjeldus peab olema struktureeritud kasutades tabeleid, loendeid, alampealkirju, ühelaiusi kirjastiile jne. Kirjeldus ei tohi olla üks suur müür teksti!
    • Mis su programmi eesmärk on? St mida programm teeb?
    • Programmi lähteandmete kirjeldus (kust lähteandmed tulevad, mis formaadis need olema peavad, mis järjekorras sisendeid oodatakse ning mis piirangud sisenditele on)
    • Programmi töövoog (mis järjekorras mida tehakse, lühidalt ja üldistatult)
    • Enda loodud funktsioonide detailne kirjeldus (tabeli kujul või struktureeritult kasutades erinevaid kirjalaade ja joondusi)
      • Funktsiooni nimetus ja kirjeldus
      • Funktsiooni parameetrid ja tagastatav väärtus (andmetüüp, selgitus, piirangud väärtusele)
    • 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 ning ka pakutavad lahendused probleemidele, mille lahendust ei ole koodis realiseeritud!)
    • jne
  • Kokkuvõte
  • Ekraanitõmmis(ed) töötavast programmist
    • Kindlasti näita programmi töötamas kasutades voo suunamist
    • Ekraanitõ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.
  • Kasutatud kirjandus (kui eksisteerib)
    Nii internetist kui raamatust leitud materjalid mida kasutasid. Internetist leitud viited peavad olema täpsed, st nt viitena stackoverflow.com ei sobi. Ka sõbra või kursusekaaslase loodud ja mida kasutad tuleb viidata – see pole sinu originaallooming.

Programmi sisend

Programm saab oma sisendi kasutades voo suunamist. Loodud programm peab olema kasutatav ka sisestades andmeid klaviatuurilt (ilma voogu ümber suunamata).

Maksimaalne andmete hulk ühedimensioonilise massiivi puhul on 15 liiget, kahedimensioonilise massiivi puhul 15×15.

Koos ülesande variandiga oleme andnud kaasa 2 faili näidissisenditega, millega saad oma lahendust testida. Proovi kindlasti oma lahendust mõlemaga neist. Kitsamate erijuhtude jaoks peaksid tegema täiendavaid teste – näiteks kuidas su programm töötab kui sisendandmeid on vaid 1?

Sinu programmi sisendandmete lugemise järjestus peab vastama näidisfailides olevale. Sisendfaili struktuuris on esimene number alati sellele järgneva massiivi liikmete arv. Kui tegu on maatriksitega, siis selle suuruse määravad esimesed 2 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.

Programmi nõuded

  • Kood peab lähtuma seni õpitud praktikatest.
  • Kood peab vastama kas C90 või C99 standardile.
  • Kood peab kasutama standardteeke ja olema operatsioonisüsteemist sõltumatu.
  • Koodis puuduvad kasutamata komponendid (nt teegifailid, muutujad mida ei kasuta).
  • Programmi sisendandmete järjestus peab olema sama nagu seda on variandiga kaasa antud näidisfailides.
  • Programmi on loodud piisavad kaitsed, et absurdselt suured/väikesed ja soovitud vahemikust väljas olevad numbrid programmi katki ei tee.
  • Programm ei pea suutma end kaitsta olukordade eest, kus näiteks oodatud arvu asemel sisestatakse sõne. Sisendi andmetüüpe me testimisel ei muuda.
  • Programm peab olema võimeline töötama kuni 15 sisendiga, kuid sisendeid võib olla ka näiteks 1 või 2. Kõigil juhtudel peab väljund olema arusaadav ja korrektne.
  • Sinu programmi testime me kasutades voo suunamist. St programmi sisend jõuab sinuni kasutades stdin standarvoogu. Käsurea argumentide ja faili lugemine otse pole lubatud.
  • Koodis on realiseeritud vähemalt minimaalselt nõutud funktsioonid. Tõenäoliselt on neid mõistlik aga rohkem teha.
  • Kui koodis tekib kordusi, siis tuleb selle asemel luua funktsioon ning seda korduvalt kasutada.
  • Andmevahetus toimub funktsioonidega ainult edastavate parameetrite ja tagastuse kaudu. Globaalmuutujate kasutamine pole lubatud!
  • Funktsioonide prototüübid asuvad faili päises, funktsioonide sisu pärast main() funktsiooni. Eraldi päisefaili kasutamine on lubatud.
  • 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
    • Kood on kommenteeritud
    • Faili päises on kommentaar mis kirjeldab programmi, autorit jne
    • Kõik funktsioonid on kommenteeritud (NB! Vaata kuidas funktsiooni kommenteeritakse)
    • GOTO kasutamine pole lubatud.

Tähtajad, punktid, boonused

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

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

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 28.11.2021 23:59 esitatud töö: 2p
  • Enne 01.12.2021 23:59 esitatud töö: 1p

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 Adobe PDF formaadis ning kõik vajalikud koodifailid programmi kompileerimiseks.

Failide nimed peavad algama Kodutoo_II_Eesnimi_Perenimi_üliõpilaskood.
Näiteks:

Kodutoo_II_Anti_Tiib_112211IACB_kood.c
Kodutoo_II_Anti_Tiib_112211IACB_aruanne.pdf

Kodutöö tuleb esitada Moodle kaudu: https://moodle.taltech.ee/mod/assign/view.php?id=122192

Tulemused ja tagasiside

Pärast töö kontrollimist lisatakse Moodlesse töö eest saadud punktid. Töö juurest leiad tagasiside kommentaarina juhul, kui oled ühel või teisel põhjusel punkte kaotanud. Tagasiside võib esineda ka juhul kui töö eest saadi maksimumpunktid.

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