{"id":10475,"date":"2025-09-01T15:56:17","date_gmt":"2025-09-01T13:56:17","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?page_id=10475"},"modified":"2025-09-01T21:56:29","modified_gmt":"2025-09-01T19:56:29","slug":"tere-c-2025","status":"publish","type":"page","link":"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/","title":{"rendered":"tere.c (2025)"},"content":{"rendered":"<div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#5c0808;border-radius:7px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#8f3b3b;color:#FFFFFF;border-top-left-radius:5px;border-top-right-radius:5px\">T\u00f5lkimisel<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:5px;border-bottom-right-radius:5px\">Leht on t\u00f5lkimisel. Osa lehe sisust v\u00f5ib olla ingliskeelne.<\/div><\/div>\n<p>J\u00e4rgnevad n\u00e4ited on koostatud \u00fcleskirjutisena esimesest \u00f5ppetunnist, mis aitab sul tunni praktilist poolt meelde tuletada. Tekst v\u00f5ib sisaldada t\u00e4iendavaid kommentaare, mida klassiruumis ei esitatud.<\/p>\n<p>Antud lehelt leiad j\u00e4rgneva sisu<\/p>\n<ul>\n<li>Tere koodi esimene osa, lineaarne s\u00fcndmuste voog<\/li>\n<li>Tere koodi teine osa, tinglik s\u00fcndmuste voog<\/li>\n<li>C-keelsete programmide s\u00fcntaks ja koodimisstiil<\/li>\n<li>UML tegevusdiagrammid m\u00f5lema koodin\u00e4ite kohta<\/li>\n<li>T\u00e4iendavad kommentaarid m\u00f5lema programmi kohta<\/li>\n<\/ul>\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-i\/koodinaited\/tere-c-2025\/#terec_esimene_osa_lineaarne_sundmuste_voog\" >tere.c esimene osa: lineaarne s\u00fcndmuste voog<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Esimese_osa_algoritm\" >Esimese osa algoritm<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Esimese_osa_pseudokood\" >Esimese osa pseudokood<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Esimese_osa_UML_tegevusdiagramm\" >Esimese osa UML tegevusdiagramm<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Programmikood\" >Programmikood<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Keelereeglid_ja_koodimisstiil\" >Keelereeglid ja koodimisstiil<\/a><\/li><\/ul><\/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-i\/koodinaited\/tere-c-2025\/#terec_teine_osa_tinglik_programmivoog\" >tere.c teine osa: tinglik programmivoog<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Tegevusdiagramm\" >Tegevusdiagramm<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/#Programmikood-2\" >Programmikood<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"terec_esimene_osa_lineaarne_sundmuste_voog\"><\/span>tere.c esimene osa: lineaarne s\u00fcndmuste voog<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Esimeses osas loome lihtsa kalkulaatori inimese vanuse leidmiseks. Kalkulaatorisse on lihtsuse huvides j\u00e4etud sisse m\u00f5ningad puuduj\u00e4\u00e4gid, et mitte \u00f6elda vead. Osad neist saavad adresseeritud programmi teises osas, kuid m\u00f5ningate jaoks on vaja rohkem eelteadmisi, mida oleks esimesel n\u00e4dalal liiga palju tahta.<\/p>\n<p>K\u00f5ik j\u00e4rgnevad n\u00e4ited sisaldavad t\u00e4iendavaid kommentaare.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Esimese_osa_algoritm\"><\/span>Esimese osa algoritm<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Algoritm peab kirjeldama lahenduseks vajaminevat s\u00fcndmuste jada \u00fcheselt ning detailselt. Algoritmide kirjelduseks saab kasutada\u00a0 erinevaid t\u00e4histusi, nt pseudokoodi, tegevusdiagramme, voodiagramme jne. Selles \u00f5ppeaines fokusseerime UML tegevusdiagrammidele, kuid aeg-ajalt kasutame ka teisi esitlusviise. T\u00e4nased n\u00e4ited on esitatud nii pseudokoodi kui tegevusdiagrammina.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Esimese_osa_pseudokood\"><\/span>Esimese osa pseudokood<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Pseudokoodis kirjeldame algoritme samm-sammulise jadana. Kirjelduses kasutatakse tavap\u00e4rast k\u00f5nekeelt ja erinevates programmeerimiskeeltes kasutatavaid \u00fcldlevinud m\u00f5isteid. Pseudokood peab olema v\u00f5imalikult inimloetav, s\u00e4ilitades oma struktuurse \u00fclesehituse. Pseudokoodi kirjutamisel puuduvad otsesed reeglid.<\/p>\n<pre class=\"lang:c highlight:0 decode:true\">- Tervita kasutajat\r\n- K\u00fcsi kasutajalt s\u00fcnniaasta\r\n- Arvuta kasutaja v\u00f5imalik (t\u00f5en\u00e4oline) vanus\r\n- V\u00e4ljasta vanus<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Esimese_osa_UML_tegevusdiagramm\"><\/span>Esimese osa UML tegevusdiagramm<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Tegevusdiagramme kasutatakse eesk\u00e4tt algoritmide visualiseerimiseks. Diagrammi koostamisele kulub rohkem aega, kuid nad pakuvad mitmeid eeliseid, muuhulgas on UML standardiseeritud keel ja diagrammi formaat on h\u00f5lpsamini loetav mitte-arendajale. Enamjaolt kasutavad erinevaid UML diagramme suurettev\u00f5tted ja valitsused, mis vajavad t\u00e4pset spetsifikatsiooni, rahvusvahelist sertifitseerimist ja standardiseeritust.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt1_en.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10458\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt1_en.png\" alt=\"\" width=\"304\" height=\"362\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt1_en.png 499w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt1_en-252x300.png 252w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><\/a><\/p>\n<p>Tegevusdiagrammide juures on oluline, et need oleksid programmeerimiskeelest s\u00f5ltumatud ning inimloetavad. M\u00e4rka eelnevas diagrammist j\u00e4rgnevaid komponente<\/p>\n<ul>\n<li>Algoritmi alguses on tegevuse alguse s\u00fcmbol (<em>initial node<\/em>)<\/li>\n<li>Nooltega n\u00e4idatakse algoritmi kontrollvoogu (<em>control flow<\/em>)<\/li>\n<li>Tegevused kirjeldavad tegevusi inimloetavalt, j\u00e4ttes v\u00e4lja programmeerimiskeeltes olulised m\u00e4rks\u00f5nad, keelereeglid, kujunduse jne<\/li>\n<li>Algoritm l\u00f5ppeb tegevuse l\u00f5pu s\u00fcmboliga (<em>final node<\/em>)<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Programmikood\"><\/span>Programmikood<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Programmikoodis tutvume C-keelsete programmide p\u00f5histruktuuriga. Enamik programme algavad loeteluga teekidest, mis v\u00f5imaldavad rakendusel kasutada teekide kogumike. N\u00e4iteks\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">stdio.h<\/span>\u00a0 teek v\u00f5imaldab kasutada mitmeid sisend-v\u00e4ljundk\u00e4ske. Kuigi rakendus seda ei kasuta, siis n\u00e4iteks <span class=\"lang:c highlight:0 decode:true crayon-inline\">math.h<\/span>\u00a0 teek v\u00f5imaldaks kasutada matemaatilisi funktsioone.<\/p>\n<p>Teekidele j\u00e4rgneb\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioon pea k\u00f5ige olulisem funktsioon. C keeles kirjutatud programmid alustavad koodi t\u00e4itmist\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioonist, t\u00e4ites koodi rida-rea haaval j\u00e4rjestikuliselt. Main funktsiooni l\u00f5pus paikneb <span class=\"lang:c highlight:0 decode:true crayon-inline \">return<\/span>\u00a0 lause, l\u00f5petab funktsiooni t\u00e4itmise. \u00dchtlasi antud n\u00e4ites l\u00f5petab see ka programmi t\u00f6\u00f6.<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * File:        hello.c\r\n * Author:      Risto Heinsar\r\n * Created:     01.09.2014\r\n * Edited:      23.07.2025\r\n *\r\n * Description: This is the first hello.c example showing program flow without \r\n *              any conditionals and basic input-output function calls.\r\n *\/\r\n\r\n\/\/ Includes the standard input-output library (printf, scanf)\r\n#include &lt;stdio.h&gt;\r\n\r\n\/\/ The program always starts from the main() function\r\nint main(void)\r\n{\r\n    \/\/ Print the greeting in the terminal.\r\n    printf(\"Hello!\\n\");\r\n    printf(\"This program determines the approximate age of a person\\n\\n\");\r\n\r\n    \/\/ Variable declaration, type int (integer), variable name \"year\"\r\n    int year;\r\n    \r\n    \/\/ Prompt the user and read the year of birth as integer\r\n    printf(\"Please enter your year of birth: \");\r\n    scanf(\"%d\", &amp;year);  \r\n    \r\n    \/\/ Calculating the rough estimate of the age\r\n    int age = 2025 - year; \r\n\r\n    \/\/ Printing the result\r\n    printf(\"You are most likely %d years of age\\n\", age);\r\n\r\n    \/\/ The program finished successfully. Integer 0 indicates success.\r\n    return 0; \r\n}<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Keelereeglid_ja_koodimisstiil\"><\/span>Keelereeglid ja koodimisstiil<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>S\u00fcntaks ehk keelereeglid on komplekt reegleid, mille j\u00e4lgimine on kohustuslik, et programmikood oleks arvutile arusaadav. See h\u00f5lmab endas k\u00f5iksugu n\u00f5udeid programmikoodi struktureerimisel (nt komad, punktid, semikoolonid, m\u00e4rks\u00f5nad jne). Iga programmeerimiskeel omab veidi erisuguseid reegleid, mida tuleb teada, kuid suurel osal programmeerimiskeeltest on ka \u00fcsna suur \u00fchisosa reeglites (sageli on programmeerimiskeeled inspireeritud \u00fcksteisest ning kasutatakse laialt levinud h\u00e4id praktikaid). Lisaks v\u00f5ib juhtuda, et erinevates programmeerimiskeeltes t\u00e4histavad samad s\u00fcmbolid erinevaid asju!<\/p>\n<p>Toome v\u00e4lja m\u00f5ningad olulised s\u00fcntaksi ehk keelereeglid eelnevast programmikoodist<\/p>\n<ul>\n<li>Iga lause l\u00f5ppeb semikooloniga<\/li>\n<li>Igas programmis peab olema\u00a0<span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioon. Programmi t\u00e4itmist alustatakse\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span>\u00a0 funktsioonist.<\/li>\n<li><span class=\"lang:c highlight:0 decode:true crayon-inline\">main()<\/span> funktsioonid paiknevad koodilaused on \u00fcmbritsetud avaneva \u00a0<span class=\"lang:c highlight:0 decode:true crayon-inline\">{<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline\">}<\/span>\u00a0 sulguva loogelise suluga. Koodi mis j\u00e4\u00e4b nende sulgude vahele kutsume\u00a0<strong>koodiplokiks<\/strong>. See \u00fchtlasi defineerib \u00e4ra ka skoobi, millest r\u00e4\u00e4gime veidi hiljem.<\/li>\n<li>S\u00f5ne (t\u00e4hem\u00e4rkide jada, ingl. <em>string<\/em> ) \u00fcmbritsetakse jutum\u00e4rkidega, nt . <span class=\"lang:c highlight:0 decode:true crayon-inline\">&#8220;This is a string&#8221;<\/span><\/li>\n<li>Kommentaarid algavad kahe kaldkriipsuga\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">\/\/<\/span>\u00a0 (v\u00f5i \u00fcmbritsetakse\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">\/*<\/span>\u00a0 ja\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline\">*\/<\/span>\u00a0 s\u00fcmbolitega)<\/li>\n<li>Funktsioonikutsed koosnevad funktsiooni nimest, millele j\u00e4rgnevad \u00fcmarsulud. Eelnevas programmis kasutasime kahte erinevat funktsiooni,\u00a0 <span class=\"lang:c highlight:0 decode:true crayon-inline \">printf()<\/span>\u00a0 ja <span class=\"lang:c highlight:0 decode:true crayon-inline \">scanf()<\/span>\n<ul>\n<li>Funktsioonile edastatavad argumendid paiknevad sulgude sees<\/li>\n<li>Kui argumente on mitu, eristatakse need komadega<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Koodimisstiili \u00fcle otsustame meie ise, eesm\u00e4rgiga tagada koodi loetavus ja hallatavus.\u00a0<\/strong>Koodimisstiili j\u00e4rgimine ei m\u00f5juta seda kas programmikood on kompileeritav, k\u00e4ivitatav v\u00f5i kui hea on programmi j\u00f5udlus. Enamasti m\u00e4\u00e4ratakse stiilin\u00f5uded meeskonnasiseselt v\u00f5i ettev\u00f5tte poolt, kelle heaks t\u00f6\u00f6tad. Selles kursuses oleme koodimisstiili n\u00f5uded m\u00e4\u00e4ranud meie, sinu \u00f5ppej\u00f5ud. L\u00e4hemalt n\u00f5uetest v\u00f5id lugeda stiilijuhendist, kuid toome m\u00f5ningad neist ka siin v\u00e4lja<\/p>\n<ul>\n<li>Muutujad deklareeritakse \u00fcldiselt vahetult enne nende kasutusele v\u00f5tmist<\/li>\n<li>Iga fail algab kommentaariga, mis kirjeldab \u00e4ra programmi eesm\u00e4rgi, autori ja kuup\u00e4eva<\/li>\n<li>T\u00fchje ridu kasutame erinevate koodiosade ja loogiliste osade eraldamiseks visuaalselt<\/li>\n<li>Kommentaarid on enamasti vahetult enne koodiridu, mida nad selgitavad. Kahe kaldkriipsu j\u00e4rel on t\u00fchik. Kommentaar algab suure algust\u00e4hega.<\/li>\n<li>Algav ja l\u00f5ppev loogeline sulg, mis t\u00e4histavad koodiploki algust ja l\u00f5ppu, on joondatud samale kaugusele vasakust \u00e4\u00e4rest.<\/li>\n<li>Loogelised sulud paiknevad eraldi ridadel<\/li>\n<li>Koodiploki sees paiknev kood (loogeliste sulgude vahel) on trepitud \u00fche v\u00f5rra<\/li>\n<li>Funktsiooni argumentide loetelus j\u00e4rgneb komale alati t\u00fchik<\/li>\n<li>Muutujate nimed kasutavad kaameliK\u00fc\u00fcruMeetodit (ingl. <em>camel case<\/em>). Esimene s\u00f5na algab v\u00e4ikese t\u00e4hega, j\u00e4rgnevad s\u00f5nad algavad suure t\u00e4hega.<\/li>\n<li>Muutuja nimetusest peab olema v\u00e4lja loetav muutuja eesm\u00e4rk (sisu)<\/li>\n<li>K\u00f5igi operaatorite ees ja j\u00e4rel on t\u00fchik (nt matemaatilised operaatorid nagu +, -. \/, *; omistamise operaator =; v\u00f5rdluse operaatorid &lt;, &gt;, ==, != jne)<\/li>\n<li>Koodirea pikkus ei tohi \u00fcletada 80 t\u00e4hem\u00e4rki. Kui koodirida osutub pikemaks, tuleb see poolitada.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"terec_teine_osa_tinglik_programmivoog\"><\/span>tere.c teine osa: tinglik programmivoog<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Teises programmi osas on meie eesm\u00e4rk muuta vanuse arvutamist t\u00e4psemaks. Selleks tutvustame tingimuslauset, mis arvutab vanuse erinevalt vastavalt kas kasutaja s\u00fcnnip\u00e4ev oli juba \u00e4ra olnud v\u00f5i on alles ees. Sedasi saame oma programmi \u00fche varasema vea \u00e4ra parandatud.<\/p>\n<p>M\u00e4rka j\u00e4rgnevat algoritmi ja programmikoodi lugedes, et kuigi enamasti on n\u00fc\u00fcd programm t\u00e4pne, j\u00e4\u00e4b sellegi poolest \u00fcks veaolukord programmi sisse! Vaata, kas leiad \u00fcles?!<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Tegevusdiagramm\"><\/span>Tegevusdiagramm<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>J\u00e4rgneva lahenduse kirjeldame esmalt \u00e4ra diagrammi kujul. Muudatused algsesse rakendusse on j\u00e4rgnevad:<\/p>\n<ul>\n<li>Meil on vaja teada, kas kasutaja s\u00fcnnip\u00e4ev on sel aastal juba \u00e4ra olnud v\u00f5i alles ees. Selleks lisame \u00fche t\u00e4iendava tegevuse (<em>action<\/em>).<\/li>\n<li>Lisame juurde tingimuse, mis tagab erineva valemi kasutamise vastavalt kas s\u00fcnnip\u00e4ev oli juba \u00e4ra v\u00f5i mitte. Selleks peame lisama\n<ul>\n<li>hargnemise (<em>junction node<\/em>), mis alustab tingimuslauset<\/li>\n<li>koondumise (<em>merge node<\/em>), mis l\u00f5petab tingimuslause<\/li>\n<li>kommentaari, mille sees kirjeldame \u00e4ra tingimuse<\/li>\n<li>t\u00f5ene\/v\u00e4\u00e4r v\u00e4ljundid tingimusest, et teaks milline kontrollvoog on \u00f5ige ehk millise tee peame valima<\/li>\n<\/ul>\n<\/li>\n<li>L\u00f5petuseks uuendasime ka v\u00e4ljundit, kuna n\u00fc\u00fcd oleme v\u00f5imelised vanust leidma k\u00f5igil peale \u00fche juhu<\/li>\n<\/ul>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt2_en.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10469\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt2_en.png\" alt=\"\" width=\"393\" height=\"481\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt2_en.png 754w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2025\/09\/hello_pt2_en-245x300.png 245w\" sizes=\"auto, (max-width: 393px) 100vw, 393px\" \/><\/a><\/p>\n<h4><span class=\"ez-toc-section\" id=\"Programmikood-2\"><\/span>Programmikood<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Oma koodi muudame vastavalt eelnevalt koostatud algoritmi kirjeldusele.<\/p>\n<p>Selleks peame lisama t\u00e4iendava p\u00e4ringu ja muutuja kasutaja sisestuse lugemiseks ning tingimuslause, mis selle p\u00f5hjal \u00f5ige valemi abil vanuse leiab.<\/p>\n<p>M\u00e4rka ka j\u00e4rgneva n\u00e4itekoodi treppimist. Meeldetuletuseks, iga koodiploki sisu on trepitud \u00fche v\u00f5rra. Kuna if\/else lause asub juba main funktsiooni koodiploki sees, siis arvutustehted trepitakse veel \u00fche v\u00f5rra kaugemale. See aitab meil kiiresti koodile peale vaadates aru saada koodi struktuurist ning aitab kaasa koodi haldamisele.<\/p>\n<p>Nagu varasemalt sai kirjutatud, on sel programmil ka \u00fcks piirjuht, mille puhul antud valem osutub valeks. Kas leidsid selle \u00fcles!?<\/p>\n<pre class=\"toolbar:2 lang:c decode:true\">\/**\r\n * File:        hello_conditional.c\r\n * Author:      Risto Heinsar\r\n * Created:     01.09.2014\r\n * Edited:      23.07.2025\r\n *\r\n * Description: This is the second hello example showing conditional program\r\n *              flow.\r\n *\/\r\n\r\n\/\/ Includes the standard input-output library (printf, scanf)\r\n#include &lt;stdio.h&gt;\r\n\r\n\/\/ The program always starts from the main() function\r\nint main(void)\r\n{\r\n    \/\/ Print the greeting in the terminal.\r\n    printf(\"Hello!\\n\");\r\n    printf(\"This program determines the approximate age of a person\\n\\n\");\r\n\r\n    \/\/ Variable declaration, type int (integer), variable name \"year\"\r\n    int year;\r\n    \r\n    \/\/ Prompt the user and read the year of birth as integer\r\n    printf(\"Please enter your year of birth: \");\r\n    scanf(\"%d\", &amp;year);  \r\n\r\n    int hasCelebratedBirthday;\r\n    printf(\"Enter 1 if you've already had your birthday this year\\n\");\r\n    printf(\"Enter 0 if you have not.\\n\");\r\n    scanf(\"%d\", &amp;hasCelebratedBirthday);\r\n\r\n    \/\/ Calculating age depending on the user's birthday\r\n    \/\/ Note: There is a bug in this code that only triggers on an edge case.\r\n    \/\/       Can you find it?\r\n    int age;\r\n    if (hasCelebratedBirthday)\r\n    {\r\n        age = 2025 - year;\r\n    }\r\n    else\r\n    {\r\n        age = 2025 - year - 1;\r\n    }\r\n    \r\n    \/\/ Printing the result\r\n    printf(\"You are %d years of age\\n\", age);\r\n\r\n    \/\/ The program finished successfully. Integer 0 indicates success.\r\n    return 0; \r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u00e4rgnevad n\u00e4ited on koostatud \u00fcleskirjutisena esimesest \u00f5ppetunnist, mis aitab sul tunni praktilist poolt meelde tuletada. Tekst v\u00f5ib sisaldada t\u00e4iendavaid kommentaare, mida klassiruumis ei esitatud. Antud lehelt leiad j\u00e4rgneva sisu Tere koodi esimene osa, lineaarne s\u00fcndmuste voog Tere koodi teine osa, tinglik s\u00fcndmuste voog C-keelsete programmide s\u00fcntaks ja koodimisstiil UML tegevusdiagrammid m\u00f5lema koodin\u00e4ite kohta T\u00e4iendavad kommentaarid &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/programmeerimine-i\/koodinaited\/tere-c-2025\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">tere.c (2025)<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":32,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/code-width-wide.php","meta":{"footnotes":""},"class_list":["post-10475","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/10475","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=10475"}],"version-history":[{"count":10,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/10475\/revisions"}],"predecessor-version":[{"id":10487,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/10475\/revisions\/10487"}],"up":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/32"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=10475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}