{"id":682,"date":"2016-03-07T07:00:16","date_gmt":"2016-03-07T05:00:16","guid":{"rendered":"http:\/\/www.blue.pri.ee\/ttu\/?page_id=682"},"modified":"2026-03-25T17:18:10","modified_gmt":"2026-03-25T15:18:10","slug":"kodutoo-ii","status":"publish","type":"page","link":"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/","title":{"rendered":"Kodut\u00f6\u00f6 II"},"content":{"rendered":"<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-chevron su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Selgitused v\u00f5tmete kohta (PK\/FK)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<p>PK (<em>primary key<\/em>) &#8211; primaarv\u00f5ti, unikaalne tunnus, millega tuvastada \u00e4ra konkreetset kirjet (andmebaasi rida). T\u00fc\u00fcpiliselt on see kas t\u00e4isarvuline v\u00e4\u00e4rtus v\u00f5i UUID, kuid ei pea ilmtingimata seda olema. \u00dche tabeli v\u00f5i faili kohta saab olla vaid \u00fcks primaarv\u00f5ti. K\u00f5igis tabelites v\u00f5i failides peab olema primaarv\u00f5ti.<\/p>\n<p>FK (<em>foreign key<\/em>) &#8211; v\u00e4lisv\u00f5ti. Selle abil luuakse seos teises tabelis v\u00f5i failis oleva primaarv\u00f5tmega. Kui primaarv\u00f5ti ja v\u00e4lisv\u00f5ti \u00fchtivad, siis need 2 kirjet on seotud. \u00dches failis v\u00f5ib olla mitu erinevat v\u00e4lisv\u00f5tit ning v\u00e4lisv\u00f5tmed ei ole unikaalsed.<\/p>\n<p>Primaarv\u00f5ti ja v\u00e4lisv\u00f5ti moodustavad omavahel relatsioonilise suhte.<\/p>\n<p>Nt: \u00fchel inimesel v\u00f5ib olla mitu last; \u00fchel inimesel v\u00f5ib olla mitu kinnisvaraobjekti; \u00fche t\u0161eki peal v\u00f5ib olla mitu toodet; \u00fchel \u00f5pilasel v\u00f5ib olla mitu aine deklaratsiooni;\u00a0<\/div><\/div>\n<p>Kodut\u00f6\u00f6 II raames tuleb luua programm ja koostada aruanne tehtud t\u00f6\u00f6 kohta. Kodut\u00f6\u00f6 fookuses on d\u00fcnaamilise m\u00e4lu kasutamine ning suuremahulisema rakenduse kirjutamine.<\/p>\n<p><strong>NB! See kodut\u00f6\u00f6 on eelnevatest mahukam ja keerukam! Planeeri oma aega vastavalt!<\/strong><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Kodutoo_variant\" >Kodut\u00f6\u00f6 variant<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Nouded_loodavale_rakendusele\" >N\u00f5uded loodavale rakendusele<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Nouded_koodimisstandardile_ja_keskkonnale\" >N\u00f5uded koodimisstandardile ja keskkonnale<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Lahenduse_uldised_nouded\" >Lahenduse \u00fcldised n\u00f5uded<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Sisendfaili_nouded\" >Sisendfaili n\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Aruande_mall\" >Aruande mall<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Aruanne\" >Aruanne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Lisaulesanne_boonuspunktide_teenimiseks\" >Lisa\u00fclesanne boonuspunktide teenimiseks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Tahtaeg_ja_punktid\" >T\u00e4htaeg ja punktid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Esitamine\" >Esitamine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Tulemused_ja_tagasiside\" >Tulemused ja tagasiside<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/#Kodutoo_parandamine\" >Kodut\u00f6\u00f6 parandamine<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Kodutoo_variant\"><\/span>Kodut\u00f6\u00f6 variant<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<!-- iframe plugin v.6.0 wordpress.org\/plugins\/iframe\/ -->\n<iframe loading=\"lazy\" src=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/kodutoo2\/index_en.html\" width=\"100%\" height=\"100\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n\n<h3><span class=\"ez-toc-section\" id=\"Nouded_loodavale_rakendusele\"><\/span>N\u00f5uded loodavale rakendusele<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Loodav rakendus peab j\u00e4lgima k\u00f5iki parimaid praktikaid, mida on tutvustatud Programmeerimine 1 ning Programmeerimine 2 aines.<\/p>\n<p>Keerukamad lahendused ning \u00f5ppeaines katmata teemade rakendamine on lubatud, kui need on korrektselt dokumenteeritud ning aruandes on p\u00f5hjendatud motivatsioon nende kasutamiseks sedasi, et lugejale on ilmne t\u00f6\u00f6 autori kompetents nende teemade valdamises.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Nouded_koodimisstandardile_ja_keskkonnale\"><\/span><span id=\"Nouded_koodimisstandardile_ja_keskkonnale\" class=\"ez-toc-section\"><\/span>N\u00f5uded koodimisstandardile ja keskkonnale<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>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\u00e4\u00e4rtust (nt lihtsustab mingit tegevust). P\u00f5hjendus tuleb tuua v\u00e4lja aruandes.<\/p>\n<p>Lisaks C standardteekidele tohid kasutada ka C POSIX ja GNU C teeke ja laiendusi. Kolmanda osapoole teekide kasutamine v\u00e4ljaspool eelmainituid tuleb eelnevalt kokku leppida \u00f5ppej\u00f5uga!<\/p>\n<p>Esitatud lahendus kompileeritakse ja testitakse arvutiklassis oleva Linux seadistusega v\u00f5rdv\u00e4\u00e4rses keskkonnas (nt OpenSUSE SLED-15 SP5 ja GCC-12) v\u00f5i v\u00e4rskeima jooksva Ubuntu versiooniga (Ubuntu Linux 25.10 ja GCC 15 v\u00f5i v\u00e4rskem). \u00dchilduvus teiste operatsioonis\u00fcsteemidega (Windows, MacOS) ei ole vajalik.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Lahenduse_uldised_nouded\"><\/span><strong>Lahenduse \u00fcldised n\u00f5uded<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>Programmi l\u00e4htekood peab olema t\u00fckeldatud enamaks kui \u00fcheks failiks. T\u00e4pne failide arv ja jaotus on autori otsustada.\n<ul>\n<li>Minimaalselt peab olema rakendus t\u00fckeldatud koodi- ja p\u00e4isefailiks<\/li>\n<li>Mitme koodifaili\u00a0 kasutamisel v\u00f5i koodi t\u00fckeldamisel alamkaustadesse tuleb lisada Makefile oma lahenduse kompileerimiseks<\/li>\n<\/ul>\n<\/li>\n<li>Andmed loetakse programmi m\u00e4llu kahest eraldi andmefailist<\/li>\n<li>Vaikimisi andmefailide nimed peavad olema rakendusse sisse kirjutatud. Soovi korral v\u00f5ib k\u00e4surea argumente kasutada, kuid see ei tohi olla eeldus programmi kasutamiseks.<\/li>\n<li>Andmed hoitakse d\u00fcnaamiliselt loodud andmestruktuurides\n<ul>\n<li>Andmestruktuurina v\u00f5id kasutada d\u00fcnaamiliselt moodustatud massiive, ahelloendeid, puid vmt<\/li>\n<li>K\u00fcsitav m\u00e4lumaht peab olema s\u00f5ltuv andmefaili pikkusest<\/li>\n<li>Rakendus peab k\u00fcsima t\u00e4pselt nii palju m\u00e4lu kui andmete hoiustamiseks on vajalik<\/li>\n<li>Rakendus peab toimima ka siis, kui andmefailide pikkused muutuvad<\/li>\n<li>\u00dchtegi tehislikku piirangut andmekirjete arvule ei tohi rakendusse kodeerida<\/li>\n<li>Muutuva pikkusega andmev\u00e4ljad (nt s\u00f5ned) tuleb h\u00f5ivata\u00a0 kasutades d\u00fcnaamilist m\u00e4lu, vastavalt vajaminevale m\u00e4lumahule. Kindla pikkusega massiivid ja s\u00f5ned j\u00e4\u00e4vad staatiliseks.<\/li>\n<li>Ajutistele puhvritele piirangud ei rakendu, tohib kasutada nii staatilist kui d\u00fcnaamilist m\u00e4lu.<\/li>\n<\/ul>\n<\/li>\n<li>Loodavad struktuurid peaksid olema sobilikud sinu \u00fclesande variandile\n<ul>\n<li>Minimaalselt pead hoidma struktuurides k\u00f5ik andmev\u00e4ljad, mis on failides<\/li>\n<li>Sa v\u00f5id lisada t\u00e4iendavaid liikmeid struktuuridesse<\/li>\n<li>Sa v\u00f5id lisada t\u00e4iendavaid struktuure toetamaks \u00fclesande lahendust<\/li>\n<li>Kui andmed <strong>sisaldavad kuup\u00e4evasid v\u00f5i kellaaegu,<\/strong> tuleb nende hoiustamiseks luua alamstruktuur (<em>nested structure<\/em>) v\u00f5i kasutada sobilikku olemasolevat andmestruktuuri <span class=\"lang:c highlight:0 decode:true crayon-inline \">time.h<\/span>\u00a0 teegist<\/li>\n<\/ul>\n<\/li>\n<li>K\u00f5ik rakenduse toimingud on korratavad programmist <strong>v\u00e4ljumata!<\/strong>\n<ul>\n<li>Loo men\u00fc\u00fc struktuur, mille abil saab k\u00e4ivitada alam\u00fclesandeid<\/li>\n<li>Iga \u00fclesanne sinu variandis tekitab minimaalselt \u00fche men\u00fc\u00fcvaliku.<\/li>\n<li>Soovi korral v\u00f5id lisada men\u00fc\u00fcvalikuid, mis ei ole \u00fclesande variandis kirjeldatud (nt silumisvalikud)<\/li>\n<li>Iga tegevuse tulemus kuvatakse ekraanil<\/li>\n<li>Programmist peab olema v\u00f5imalik v\u00e4ljuda men\u00fc\u00fc abil<\/li>\n<\/ul>\n<\/li>\n<li>Kui \u00fclesande raames tehakse muudatus andmetesse &#8211; st lisatakse, muudetakse v\u00f5i kustutatakse andmeid, peab muudatus j\u00e4\u00e4davalt salvestuma. St kui rakendus suletakse ja uuesti k\u00e4ivitatakse, peavad olema kasutusel muudetud andmed<\/li>\n<li>Rakendus peab oma t\u00f6\u00f6st kirjutama logifaili\n<ul>\n<li>Iga kasutaja tegevus rakenduses logitakse<\/li>\n<li>\u00dcks logikirje rea kohta<\/li>\n<li>Iga logikirje peab sisaldama kuup\u00e4eva ja kellaaega<\/li>\n<li>Logis peavad salvestuma ka kasutajale mitten\u00e4htavad s\u00fcndmused (nt programmi k\u00e4ivitamine, edukas sisendfaili lugemine jne)<\/li>\n<li>Varasemad kasutuslogid peavad s\u00e4ilima<\/li>\n<\/ul>\n<\/li>\n<li>Programm peab pakkuma m\u00f5istlikku kasutajakogemust (UX \u2013\u00a0<em>user experience<\/em>)\n<ul>\n<li>Kui kasutaja suunatakse alammen\u00fc\u00fcsse, peab tal olema v\u00f5imalik sealt tagasi liikuda tegevust l\u00f5pule viimata<\/li>\n<li>Programm peab arusaadavalt teavitama kasutajat vigade esinemisel. Vea kirjeldus peab olema v\u00f5imalikult t\u00e4pne (abistav probleemi lahendamisel). K\u00f5ik veateated kirjutatakse <span class=\"lang:c highlight:0 decode:true crayon-inline \">stderr<\/span>\u00a0\u00a0standardvoogu.<\/li>\n<li>Kui kasutajalt oodatakse sisendit, peab rakendus seda arusaadavalt v\u00e4ljendama. Kui sisend peab olema kindlalt vormindatud, tuleb kasutajale kuvada eelnevalt sobilik vorming. V\u00f5imalusel lisada ka n\u00e4ide oodatavast sisendist.<\/li>\n<li>Kui programm sisaldab otsingut, filtreerimist v\u00f5i grupeerimist, peab kriteeriumile vastavate tulemuste puudumine olema kasutajale arusaadavalt v\u00e4ljendatud<\/li>\n<\/ul>\n<\/li>\n<li>Programmis puuduvad m\u00e4lulekked, raisatud v\u00f5i vabastamata ressursid. K\u00f5ik ressursid, mida loodud rakendus t\u00f6\u00f6 jaoks h\u00f5ivab, tuleb enne programmi sulgemist vabastada (kontrolli Valgrindiga!)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Sisendfaili_nouded\"><\/span>Sisendfaili n\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Kokku tuleb luua ja kasutada kahte andmefaili. Andmefailides peavad olema ainult \u00fclesande variandis kirjeldatud andmev\u00e4ljad.<\/li>\n<li>Andmed on seotud PK-FK (primaarv\u00f5tme-v\u00e4lisv\u00f5tme paarina)\n<ul>\n<li>Andmete vahel on null v\u00f5i enam seos (<em>zero to many<\/em>) &#8211; nt \u00fcks \u00f5pilane saab deklareerida mitu \u00f5ppeainet; \u00f5pilane ei pea olema deklareerinud \u00fchtegi \u00f5ppeainet<\/li>\n<\/ul>\n<\/li>\n<li>T\u00f6\u00f6 autor\u00a0<strong>loob<\/strong> m\u00f5lema sisendfaili andmemudeli vastavalt enda parimatele oskustele ja teadmistele. Sinna hulka kuuluvad andmev\u00e4ljade eraldaja, j\u00e4rjekord, sisu, keerukus jne. T\u00f6\u00f6 autor <strong>dokumenteerib\u00a0<\/strong>andmemudeli ja selle loomisel tehtud otsused programmiga kaasa antavas dokumendis.<\/li>\n<li>T\u00f6\u00f6 autor koostab andmefaili vastavalt kirjeldatud andmemudelile. Loodud andmefail laetakse \u00fcles koos esitatava t\u00f6\u00f6ga.\n<ul>\n<li>Esimene fail (kus paikneb ainult primaarv\u00f5ti) peab sisaldama v\u00e4hemalt 10 kirjet. Teine fail (mis sisaldab ka v\u00e4lisv\u00f5tit) peab sisaldama v\u00e4hemalt 15 kirjet.<\/li>\n<li>Kui autor esitab mitu andmefailide komplekti (nt veaolukordade demonstreerimiseks), kehtib pikkuse n\u00f5ue vaid \u00fchele komplektile.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Aruande_mall\"><\/span>Aruande mall<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aruande malliks kasuta Kodut\u00f6\u00f6 1 raames v\u00e4lja toodud malle (<a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-i\/\">https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/kodutoo-i\/<\/a>) ning kohanda see ise sobivaks antud kodut\u00f6\u00f6le.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Aruanne\"><\/span>Aruanne<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aruande sisuline pool peaks j\u00e4\u00e4ma 3 \u2013 6 A4 lehek\u00fclje vahele, lisandub jooniste maht.<\/p>\n<p><strong>R\u00f5hk on korralikult struktureeritud dokumentatsioonil!<\/strong>\u00a0V\u00e4ldi jutustamist (erandina kokkuv\u00f5te).<\/p>\n<ul>\n<li>Tiitelleht<\/li>\n<li>Autorideklaratsioon<\/li>\n<li>L\u00fchendite ja m\u00f5istete s\u00f5nastik (vajadusel)<\/li>\n<li>Sisukord<\/li>\n<li>Jooniste loetelu<\/li>\n<li>Tabelite loetelu<\/li>\n<li>\u00dclesande p\u00fcstitus (variant)<\/li>\n<li>Lahenduse detailne kirjeldus (<strong>v\u00e4ldi tekstim\u00fc\u00fcre!<\/strong>)\n<ul>\n<li data-select-like-a-boss=\"1\">Programmi l\u00fchikirjeldus &#8211; st mida teeb?<\/li>\n<li><span style=\"font-style: inherit;\">Programmi t\u00f6\u00f6voog (<em>mis j\u00e4rjekorras mida tehakse, l\u00fchidalt ja \u00fcldistatult. V\u00e4ldi detailidesse minekut! Umbes pool lehek\u00fclge).<\/em><\/span><\/li>\n<li>Projekti struktuur \u2013 failide nimetused, l\u00fchike selgitus. Kui kood on jaotatud kaustadesse, selgitada t\u00fckeldust.<br \/>\nSoovituslik: lisada rakenduse <span class=\"lang:c highlight:0 decode:true crayon-inline \">tree<\/span>\u00a0 v\u00e4ljund<\/li>\n<li>Andmestruktuuride ( <span class=\"lang:c highlight:0 decode:true crayon-inline \">struct<\/span>\u00a0\u00a0) kirjeldus\n<ul>\n<li>Struktuuri l\u00fchikirjeldus (eesm\u00e4rk)<\/li>\n<li>Struktuuri detailid (v\u00e4lja nimi, andmet\u00fc\u00fcp, kirjeldus, n\u00e4idisv\u00e4\u00e4rtus), vormindatud tabelina<\/li>\n<\/ul>\n<\/li>\n<li>Loendite ( <span class=\"lang:c highlight:0 decode:true crayon-inline \">enum<\/span>\u00a0\u00a0) kirjeldus (kui esineb)\n<ul>\n<li>Loendi nimi, kirjeldus, v\u00f5imalikud v\u00e4\u00e4rtused<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-style: inherit;\">Eriolukordade anal\u00fc\u00fcs ja lahendamin<\/span><span style=\"font-style: inherit;\">e<\/span>\n<ul>\n<li>Probleemi kirjeldus<\/li>\n<li>Probleemi seisukord (kas lahendatud, leitud alternatiivne v\u00f5imalus v\u00f5i on see j\u00e4tkuvalt aktuaalne)<\/li>\n<li>Kui probleem on lahendatud, siis kuidas selle lahendasid<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Andmefailide struktuuri kirjeldus\n<ul>\n<li>\u00dche kirje struktuur (andmev\u00e4ljade j\u00e4rjekord, andmev\u00e4lja ja andmekirje eraldajad, \u2026)<\/li>\n<li>Iga andmev\u00e4lja kirjeldus \u2013 nimetus, andmet\u00fc\u00fcp, n\u00e4idisv\u00e4\u00e4rtus, kirjeldus, piirangud nende olemasolul (nt pikkus, vahemik, keelatud v\u00e4\u00e4rtused)<\/li>\n<li>\u00dche andmerea n\u00e4idis<\/li>\n<\/ul>\n<\/li>\n<li>Lisa\u00fclesanne (kui lahendasid lisa\u00fclesande)<\/li>\n<li>Kokkuv\u00f5te\n<ul>\n<li data-select-like-a-boss=\"1\">Kirjuta m\u00f5ni lause oma l\u00e4henemisest \u00fclesandele ja t\u00f6\u00f6protsessi kohta.<\/li>\n<li data-select-like-a-boss=\"1\">Kirjuta m\u00f5ni lause \u00fclesandest ja selle keerukusest sinu jaoks.<\/li>\n<li data-select-like-a-boss=\"1\">Kui v\u00f5imalik, hinda \u00fclesande sooritamise ajalist mahtu.<\/li>\n<li data-select-like-a-boss=\"1\">Kas soovitad \u00fclesannet kasutada ka tulevikus? Kas ja mida muudaksid?<\/li>\n<li data-select-like-a-boss=\"1\">T\u00e4iendavad kommentaarid, emotsioonid, m\u00f5tted.<\/li>\n<\/ul>\n<\/li>\n<li>Kasutatud kirjandus (vajadusel)\n<ul>\n<li>Viitamiseks kasutatakse IEEE stiili<br \/>\nTalTechi juhend:\u00a0<a href=\"https:\/\/haldus.taltech.ee\/sites\/default\/files\/2024-05\/IEEE_stiilis_viitamine_2024%20%281%29.pdf\">https:\/\/haldus.taltech.ee\/sites\/default\/files\/2024-05\/IEEE_stiilis_viitamine_2024%20%281%29.pdf<\/a><br \/>\nAmetlik juhend:\u00a0<strong><a href=\"https:\/\/journals.ieeeauthorcenter.ieee.org\/wp-content\/uploads\/sites\/7\/IEEE_Reference_Guide.pdf\">https:\/\/journals.ieeeauthorcenter.ieee.org\/wp-content\/uploads\/sites\/7\/IEEE_Reference_Guide.pdf<\/a><\/strong><\/li>\n<li>K\u00f5ik mis ei olnud kaetud selle \u00f5ppeaine raames ja mida sa ei loonud iseseisvalt.<\/li>\n<li>Ka n\u00e4iteks s\u00f5bra v\u00f5i kursusekaaslase abi tuleks viidata:\u00a0<a href=\"https:\/\/libraryguides.vu.edu.au\/ieeereferencing\/personalcommunication\">https:\/\/libraryguides.vu.edu.au\/ieeereferencing\/personalcommunication<\/a><\/li>\n<li>Tehisaru kasutus (nt ChatGPT) peab\u00a0 olema viidatud \u2013 mis ulatuses ja mille jaoks kasutasid<\/li>\n<li>Viited allikatele peavad olema t\u00e4psed.\u00a0<em>N\u00e4iteks viitena stackoverflow.com v\u00f5i google.com ei sobi. Viide peab olema konkreetsele lehek\u00fcljele kust informatsioon p\u00e4rineb.<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Ekraanit\u00f5mmis(ed) t\u00f6\u00f6tavast programmist\n<ul>\n<li>Ekraanit\u00f5mmised v\u00f5ivad olla esitatud kas lisana v\u00f5i p\u00f5imituna lahenduse kirjelduse sisse<\/li>\n<li>Ekraanit\u00f5mmistel peab n\u00e4itama nii programmi t\u00f6\u00f6d tavaolukorras kui eriolukordades<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Lisaulesanne_boonuspunktide_teenimiseks\"><\/span>Lisa\u00fclesanne boonuspunktide teenimiseks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 eest on v\u00f5imalik saada kuni 15 boonuspunkti. Boonuspunktide saamiseks peavad lisa\u00fclesande raames tehtud t\u00e4iendused olema aruandes kirjeldatud. Boonuspunkte on v\u00f5imalik ka saada osaliselt, kui k\u00f5ik n\u00f5uded ei ole t\u00e4idetud.<\/p>\n<p>Boonuspunktide saamiseks tuleb lisaks \u00fclesande baasn\u00f5uetele t\u00e4ita j\u00e4rgmised n\u00f5uded<\/p>\n<ul>\n<li>Kood peab olema korrektselt struktureeritud. Kompileerimiseks tuleb kasutada Makefile&#8217;i.\n<ul>\n<li>Kood on t\u00fckeldatud mitmeks koodi- ja p\u00e4isefailiks<\/li>\n<li>Kood peab olema jaotatud alamkaustadesse (st k\u00f5ik failid ei tohi paikneda juurkaustas)<\/li>\n<li>Makefile&#8217;is tuleb minimaalselt tuleb kasutada muutujaid CFLAGS ja CC.<\/li>\n<li>Makefile peab minimaalselt sisaldama retsepte <span class=\"lang:c highlight:0 decode:true crayon-inline \">all<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline \">clean<\/span>\u00a0.<\/li>\n<li>Makefile peab olema kirjutatud selliselt, et see toetaks ainult uuendatud koodifailide \u00fcmberkompileerimist<\/li>\n<li>\u00dclej\u00e4\u00e4nud Makefile&#8217;i keerukus on j\u00e4etud autori otsustada<\/li>\n<\/ul>\n<\/li>\n<li>Logimise jaoks pead looma iseseisva teegi\n<ul>\n<li>Teek peab olema t\u00e4ielikult s\u00f5ltumatu. <span class=\"lang:c highlight:0 decode:true crayon-inline\">extern<\/span> &#8217;i kasutada ei tohi.<\/li>\n<li>Teek peab toetama logifaili nime seadistamist<\/li>\n<li>Teek peab toetama erinevaid logimise tasemeid. Tasemed peavad olema realiseeritud loendi t\u00fc\u00fcbina.<\/li>\n<li>Teek peab toetama logitaseme m\u00e4\u00e4ramist. Logisid mis on madalama t\u00e4htsusega kui m\u00e4\u00e4ratud logimise tase ei v\u00e4ljastata.<\/li>\n<li>Iga logimise v\u00e4ljakutsel tuleb m\u00e4\u00e4rata vastava logikirje tase<\/li>\n<li>K\u00f5ik olekumuutujad (logifaili nimetus, failiviit, logimise tase jne) hoiustatakse logi teegi sisemiselt. Nende poole ei tohi otse p\u00f6\u00f6rduda, vaid selleks peab kasutama logimise teegi vastavaid funktsioone.<\/li>\n<\/ul>\n<\/li>\n<li>Programm peab olema v\u00f5imeline t\u00f6\u00f6tama tekstiv\u00e4ljadega, mis koosnevad mitmest s\u00f5nast.<\/li>\n<li>Aruandesse tuleb lisada t\u00e4iendav esimese astme nummerdatud pealkiri \u201cLisa\u00fclesanded\u201d.\n<ul>\n<li>Kirjelda lisa\u00fclesande raames lisatud funktsionaalsust<\/li>\n<li>Selgita kuidas saab sinu logimise teeki kasutada teistes projektides, kui seda sooviks teha m\u00f5ni teine arendaja? Lisa spetsifikatsioon peamiste funktsioonide kohta, mida peaks teadma inimene, kes sinu teeki kasutada soovib &#8211; st milliseid funktsioone ta saab (v\u00f5i peaks) sinu teegist v\u00e4lja kutsuma. \u00c4ra loetle funktsioone, mis on loodud teegi sisemise t\u00f6\u00f6 jaoks.<\/li>\n<li>Selgita oma valitud andmefaili formaadi tugevusi ja n\u00f5rkusi. Kas sinu valitud formaadil on piiranguid andmetele, mida see selles hoida saab?<\/li>\n<li>Selgita oma Makefile&#8217;i koostamisel tehtud otsuseid &#8211; millised k\u00e4sud, muutujad jms otsustasid lisada ning miks. Kas j\u00e4tsid ka midagi teadlikult v\u00e4lja? Loetle k\u00f5ik Makefile&#8217;is olevad retseptid, mis on m\u00f5eldud otse v\u00e4lja kutsumiseks (st ei ole m\u00f5eldud vaid osana teisest retseptist)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Tahtaeg_ja_punktid\"><\/span>T\u00e4htaeg ja punktid<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"color: #ff0000;\"><strong>Terviklik kodut\u00f6\u00f6 tuleb esitada hiljemalt 26.04.2026<\/strong><\/span><\/p>\n<p>Kodut\u00f6\u00f6 t\u00e4htaja \u00fcletamisel v\u00e4hendatakse t\u00f6\u00f6 eest saadavat l\u00f5pptulemust 1 punkti v\u00f5rra iga esitamist\u00e4htajast \u00fcle l\u00e4inud p\u00e4eva eest. Maksimaalselt v\u00e4hendatakse tulemust 30 punkti v\u00f5rra.<\/p>\n<p>Kui kodut\u00f6\u00f6 kohta tekib t\u00e4iendavaid k\u00fcsimusi v\u00f5i esineb kahtlusi autorluses, hinnatakse kodut\u00f6\u00f6 tulemusega 0 punkti. Sellisel juhul tuleb punktide saamiseks kodut\u00f6\u00f6 kaitsta.<\/p>\n<p>Vajadusel rakendatakse [<a href=\"https:\/\/haldus.taltech.ee\/sites\/default\/files\/2020-10\/Terviktekst_IT-teaduskonna%20%C3%B5ppuri%20akad%20tavade%20rikkumise%20ja%20v%C3%A4%C3%A4ritu%20k%C3%A4itumise%20menetlemise%20kord.pdf\">V\u00e4\u00e4ritu k\u00e4itumise menetlemise korda<\/a>].<\/p>\n<p><strong>Viimane p\u00e4ev kodut\u00f6\u00f6 esitamiseks ja kaitsmiseks on m\u00e4rgitud sissejuhatavatel slaididel. P\u00e4rast antud kuup\u00e4eva kodut\u00f6id esitada ei ole v\u00f5imalik!<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Esitamine\"><\/span>Esitamine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 esitatakse Moodle kursuses Kodut\u00f6\u00f6 2 \u00fclesande alla.<\/p>\n<p data-select-like-a-boss=\"1\">Esitada tuleb j\u00e4rgnevad failid<\/p>\n<ol>\n<li data-select-like-a-boss=\"1\">Dokumentatsioon (PDF)<\/li>\n<li data-select-like-a-boss=\"1\">K\u00f5ik vajalikud koodi- ja p\u00e4isefailid (.c ja .h) programmi kompileerimiseks<\/li>\n<li data-select-like-a-boss=\"1\">Andmefailid programmi jooksutamiseks<\/li>\n<\/ol>\n<p>Olenevalt loodud lahendusest\u00a0 v\u00f5ib olla vajalik esitada ka Makefile (mitu koodifaili, teine koodimisstandard, lisa\u00fclesanne, ..).<\/p>\n<p>Failide nimetamiskuju: <span class=\"lang:c highlight:0 decode:true crayon-inline\">HW2_&lt;lastname&gt;[_filename]<\/span><\/p>\n<p>M\u00e4rkus: Nimetamiskuju kehtib vaid Moodlesse otse laetavate failide kohta. Kui laed koodi \u00fcles zip arhiivina, siis arhiivi sees paiknevatele failidele nimekuju ei kehti. PDF peab olema \u00fcles laetud eraldi failina, olenemata kas rakenduse on esitatud kokku pakituna v\u00f5i mitte!<\/p>\n<p>N\u00e4ide (eraldi failid):<\/p>\n<p style=\"padding-left: 30px;\">HW2_Tamm.c<br \/>\nHW2_Tamm.h<br \/>\nHW2_Tamm_report.pdf<br \/>\nHW2_Tamm_data_students.txt<br \/>\nHW2_Tamm_data_grades.txt<\/p>\n<p>N\u00e4ide (kokku pakituna):<\/p>\n<p style=\"padding-left: 30px;\">HW2_Tamm_project.zip<br \/>\nHW2_Tamm_report.pdf<\/p>\n<p><strong>NB! Kui sa muutsid failide nimesid vahetult enne \u00fcleslaadimist, siis veendu, et su rakendus on j\u00e4tkuvalt kompileeritav ja t\u00f6\u00f6tab!<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tulemused_ja_tagasiside\"><\/span>Tulemused ja tagasiside<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>P\u00e4rast t\u00f6\u00f6 kontrollimist leiad Moodlest oma punktid ning tagasiside (n\u00e4htav vaid hinnetelehet!).\u00a0 Korralikult tehtud t\u00f6\u00f6 korral v\u00f5ib tagasiside puududa.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kodutoo_parandamine\"><\/span><span id=\"Kodutoo_parandamine\" class=\"ez-toc-section\"><\/span><span id=\"Kodutoo_parandamine\" class=\"ez-toc-section\"><\/span>Kodut\u00f6\u00f6 parandamine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kodut\u00f6\u00f6 tulemust on v\u00f5imalik parandada kuni kodut\u00f6\u00f6de lukustamise kuup\u00e4evani. Parandatud kodut\u00f6\u00f6d kuuluvad kaitsmisele.<\/p>\n<p>Kodut\u00f6\u00f6 parandamiseks vaata esmalt l\u00e4bi oma t\u00f6\u00f6 tagasiside. Seej\u00e4rel v\u00f5ta \u00fchendust \u00f5ppej\u00f5uga, et kokku leppida parandamise protsess.<\/p>\n<p>NB! Kui t\u00f6\u00f6 parandamise k\u00e4igus osutub vajalikuks enama kui poole t\u00f6\u00f6 muutmine, loetakse seda uue t\u00f6\u00f6 esitamiseks, millelt v\u00f5idakse arvestada maha miinuspunktid vastavalt esitamise ajale.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kodut\u00f6\u00f6 II raames tuleb luua programm ja koostada aruanne tehtud t\u00f6\u00f6 kohta. Kodut\u00f6\u00f6 fookuses on d\u00fcnaamilise m\u00e4lu kasutamine ning suuremahulisema rakenduse kirjutamine. NB! See kodut\u00f6\u00f6 on eelnevatest mahukam ja keerukam! Planeeri oma aega vastavalt! Kodut\u00f6\u00f6 variant N\u00f5uded loodavale rakendusele Loodav rakendus peab j\u00e4lgima k\u00f5iki parimaid praktikaid, mida on tutvustatud Programmeerimine 1 ning Programmeerimine 2 aines. &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-ii\/kodutoo-ii\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Kodut\u00f6\u00f6 II<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":17,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"page-templates\/code-width.php","meta":{"footnotes":""},"class_list":["post-682","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/comments?post=682"}],"version-history":[{"count":29,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/682\/revisions"}],"predecessor-version":[{"id":11332,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/682\/revisions\/11332"}],"up":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/17"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}