{"id":4932,"date":"2020-03-02T20:52:52","date_gmt":"2020-03-02T18:52:52","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?page_id=4932"},"modified":"2025-06-20T21:11:23","modified_gmt":"2025-06-20T19:11:23","slug":"voo-suunamine","status":"publish","type":"page","link":"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/","title":{"rendered":"Voo suunamise juhis"},"content":{"rendered":"<p>Selles juhises r\u00e4\u00e4gime kuidas teha voo suunamist nii Windowsi kui Linuxi n\u00e4itel. MacOS kasutajad peaksid j\u00e4lgima Linuxi n\u00e4idet &#8211; Linuxi ja Maci k\u00e4surida on k\u00e4esolevate toimetuste jaoks samasugused (esineb siiski erinevusi mujal)<\/p>\n<p>Meeldetuletuseks, voo suunamine on programmi sisendi v\u00f5i v\u00e4ljundi \u00fcmber suunamine. St me saame n\u00e4iteks asendada sisendi lugemist klaviatuurilt etteantud sisendiga, mis on varasemalt ette valmistatud ja hoiustatud tekstifailis. Samuti saame asendada v\u00e4ljundi kuvamist terminaliaknas selle \u00fcmber suunamisega faili.<\/p>\n<p>Selles juhendis k\u00e4sitleme vaid sisendi \u00fcmbersuunamist.<\/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\/koodimisjuhendid\/voo-suunamine\/#Voo_suunamine_Linuxil\" >Voo suunamine Linuxil<\/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\/koodimisjuhendid\/voo-suunamine\/#Failide_ettevalmistus\" >Failide ettevalmistus<\/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\/koodimisjuhendid\/voo-suunamine\/#Loome_vajalikud_failid\" >Loome vajalikud failid<\/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\/koodimisjuhendid\/voo-suunamine\/#Kompileerime_programmi\" >Kompileerime programmi<\/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\/koodimisjuhendid\/voo-suunamine\/#Programmi_jooksutamine_voo_suunamisega\" >Programmi jooksutamine voo suunamisega<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Ava_kasurida\" >Ava k\u00e4surida<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Veendume_ja_asukohas_failides\" >Veendume ja asukohas failides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Programmi_kaivitamine\" >Programmi k\u00e4ivitamine<\/a><\/li><\/ul><\/li><\/ul><\/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\/koodimisjuhendid\/voo-suunamine\/#Voo_suunamine_Windowsis\" >Voo suunamine Windowsis<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Esimene_samm_failide_ettevalmistus\" >Esimene samm: failide ettevalmistus<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Loome_vajalikud_failid-2\" >Loome vajalikud failid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Kompileerime_programmi-2\" >Kompileerime programmi<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Programmi_jooksutamine_voo_suunamisega-2\" >Programmi jooksutamine voo suunamisega<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Ava_kasurida-2\" >Ava k\u00e4surida<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Veendume_ja_asukohas_failides-2\" >Veendume ja asukohas failides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Programmi_kaivitamine-2\" >Programmi k\u00e4ivitamine<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Soovitusi_paremaks_toovooks\" >Soovitusi paremaks t\u00f6\u00f6vooks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Veel_nippe\" >Veel nippe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/#Veel_lugemist\" >Veel lugemist<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Voo_suunamine_Linuxil\"><\/span>Voo suunamine Linuxil<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Antud juhend t\u00f6\u00f6tab olenemata millist Linuxi distributsiooni kasutad. St vahet pole kas sul on Linux Mint, Ubuntu, Kubuntu, Arch, SUSE v\u00f5i m\u00f5ni teine Linux. Juhend kehtib ka MacOS kasutajatele.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Failide_ettevalmistus\"><\/span>Failide ettevalmistus<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Voo suunamise teostamiseks on meil vaja kahte faili<\/p>\n<ol>\n<li>Programm, mida me testime. Programm peab k\u00fcsima klaviatuurilt sisendit (n\u00e4iteks tavaliste <span class=\"lang:default highlight:0 decode:true crayon-inline \">scanf()<\/span>\u00a0 lausetega). Programmi koodi voo suunamise jaoks muuta vaja ei ole.<br \/>\nLinuxis ja Macis programmidel laiendit (<em>file extension<\/em>) ei ole.<\/li>\n<li>Tekstifaili, mis sisaldab sisendit, mida soovime anda. See sisendfail n\u00e4eb v\u00e4lja t\u00e4pselt samasugune nagu me oleksime tavaliselt programmi t\u00f6\u00f6 ajal klaviatuurilt sisendit tr\u00fckkinud.\u00a0<strong>Oluline on, et tegu on lihtsa tekstifailiga\u00a0<\/strong>mille saad n\u00e4iteks kirjutada valmis kasutades Geanyt. MS Wordi, Libreoffice&#8217;it ja teisi keerukaid redaktoreid kasutada ei tohi.<br \/>\nLinuxis ja Mac OSis ei ole laiend tekstifailile vajalik, kuid v\u00f5ib kasutada <span class=\"lang:default highlight:0 decode:true crayon-inline \">.txt<\/span>\u00a0 laiendit<\/li>\n<\/ol>\n<p>T\u00f5en\u00e4oliselt on meil samas failis ka kolmas fail. Selleks on meie programmi kood. Sellest koodifailist saame me kompileerimise k\u00e4igus programmi, mida meil on vajalik testida. Koodifail on <span class=\"lang:default highlight:0 decode:true crayon-inline \">.c<\/span>\u00a0 laiendiga.<\/p>\n<p>Kaustast v\u00f5id leida ka neljanda faili laiendiga <span class=\"lang:default highlight:0 decode:true crayon-inline \">.o<\/span>\u00a0 ning mitme sisendi v\u00f5i koodifaili olemasolul ka neid.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Loome_vajalikud_failid\"><\/span>Loome vajalikud failid<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>NB! K\u00f5ik failid peavad minema \u00fchte kataloogi sinu arvutis!<\/p>\n<p>Esimese failina loome meie tekstifaili. Tekstifail loo soovitavalt kasutades Geanyt v\u00f5i m\u00f5nda teist lihtsat tekstiredaktorit. Anname nimeks\u00a0 n\u00e4iteks <span class=\"lang:default highlight:0 decode:true crayon-inline \">input.txt<\/span>\u00a0.<\/p>\n<pre class=\"toolbar:1 lang:c highlight:0 decode:true\" title=\"input.txt\">3 9 -4 0 -10 10 5\r\n1 -4 9 1 -7 -9 4\r\n-5 5 -5 5 -5 5 -5\r\n7 6 5 4 3 2 1\r\n1 2 3 4 5 6 7\r\n-1 -2 -3 -4 -3 -2 -1\r\n0 0 0 0 0 0 0<\/pre>\n<p>Teise failina on meie programmi l\u00e4htekood. Programm on lihtne &#8211; loeb kasutajalt maatriksisse salvestatavad v\u00e4\u00e4rtused ja seej\u00e4rel tr\u00fckib need joondatult v\u00e4lja. Anname nimeks n\u00e4iteks <span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_print.c<\/span>\u00a0.<\/p>\n<pre class=\"lang:c decode:true\" title=\"matrix_print.c\">#include &lt;stdio.h&gt;\r\n\r\n#define ARR_LEN 7\r\n\r\nint main(void)\r\n{\r\n    int matrix[ARR_LEN][ARR_LEN];\r\n\r\n    for (int i = 0; i &lt; ARR_LEN; i++)\r\n    {\r\n        for (int j = 0; j &lt; ARR_LEN; j++)\r\n        {\r\n            printf(\"Enter matrix element [%d][%d]\\n\", i + 1, j + 1);\r\n            scanf(\"%d\", &amp;matrix[i][j]);\r\n        }\r\n    }\r\n\r\n    printf(\"Entered matrix:\\n\");\r\n    for (int i = 0; i &lt; ARR_LEN; i++)\r\n    {\r\n        for (int j = 0; j &lt; ARR_LEN; j++)\r\n        {\r\n            printf(\"%6d\", matrix[i][j]);\r\n        }\r\n        putchar('\\n');\r\n    }\r\n    return 0;\r\n}<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Kompileerime_programmi\"><\/span>Kompileerime programmi<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>L\u00e4htekood valmis, kompileeri programm.<\/p>\n<p><strong>NB! P\u00e4rast igat muudatust tuleb programm uuesti kompileerida!\u00a0<\/strong>See kipub aeg-ajalt meelest minema kasutades voo suunamist. Salvestamine pole piisav.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Programmi_jooksutamine_voo_suunamisega\"><\/span>Programmi jooksutamine voo suunamisega<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Programmi jooksutamine k\u00e4ib k\u00e4surealt. \u00c4ra k\u00e4ivita oma programmi l\u00e4bi IDE (nt Geany)!.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Ava_kasurida\"><\/span>Ava k\u00e4surida<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>K\u00f5ige lihtsam meetod terminali avamiseks on esmalt v\u00f5tta lahti failivaaturis kaust kuhu salvestasid oma failid. Tee hiirega paremklikk keset t\u00fchja kohta (\u00e4ra vajuta faili peale!) ning vali &#8220;Open Terminal&#8221;.<\/p>\n<p>Selle meetodi eelis on see, et su k\u00e4suviip avatakse koheselt \u00f5igesse kausta!<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_open_terminal.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7435\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_open_terminal.png\" alt=\"\" width=\"755\" height=\"672\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_open_terminal.png 755w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_open_terminal-300x267.png 300w\" sizes=\"auto, (max-width: 755px) 100vw, 755px\" \/><\/a><\/p>\n<p><strong>NB! Kui sinu kasutatav kasutajaliides ei v\u00f5imalda avada k\u00e4suakent<\/strong> koheselt \u00f5iges kataloogis, ava enda s\u00fcsteemiga kaasa tulnud terminali programm (nt terminal, console, command prompt vms). Seej\u00e4rel navigeeri \u00f5igesse kausta.<\/p>\n<p>Navigeerimiseks k\u00e4sureal on k\u00e4sk <span class=\"lang:default highlight:0 decode:true crayon-inline \">cd<\/span> .\u00a0 Kirjutades <span class=\"lang:default highlight:0 decode:true crayon-inline \">cd ..<\/span>\u00a0 l\u00e4hed \u00fche kausta v\u00f5rra k\u00f5rgemale oma kaustapuus. Kirjutades <span class=\"lang:default highlight:0 decode:true crayon-inline \">cd kaustanimi<\/span> , l\u00e4hed vastava nimega alamkausta. Enamik k\u00e4suaknaid toetavad ka t\u00e4ielikku adresseerimist, nt <span class=\"lang:default highlight:0 decode:true crayon-inline \">cd \/home\/risto\/Desktop\/stream_demo<\/span> . Loomulikult asenda see asukoht enda arvutis oleva asukohaga. K\u00e4suga <span class=\"lang:default highlight:0 decode:true crayon-inline \">ls<\/span>\u00a0 n\u00e4ed mis hetkel praeguses kaustas asub.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Veendume_ja_asukohas_failides\"><\/span>Veendume ja asukohas failides<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Kui soovid veenduda, et su k\u00e4suviip asub \u00f5iges kohas ja ka k\u00f5ik vajalikud failid on olemas, saame kasutada k\u00e4sku <span class=\"lang:default highlight:0 decode:true crayon-inline \">ls<\/span> . Veel parem, kasutame lisana <span class=\"lang:default highlight:0 decode:true crayon-inline \">-l<\/span>\u00a0 lippu (v\u00e4ike L) mis n\u00e4itab meile ka detaile. N\u00e4iteks kirjutame <span class=\"lang:default highlight:0 decode:true crayon-inline \">ls -l<\/span>\u00a0.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_ls.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7436\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_ls.png\" alt=\"\" width=\"512\" height=\"165\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_ls.png 512w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_ls-300x97.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/p>\n<p>M\u00e4rka j\u00e4rgnevat<\/p>\n<ol>\n<li>Minu k\u00e4suviip asub aadressil <span class=\"lang:default highlight:0 decode:true crayon-inline\">~\/Desktop\/stream_demo<\/span>\u00a0, mis on \u00fchtlasi ka kaust kuhu ma selle demo jaoks failid salvestasin<\/li>\n<li>Selles kataloogis asuvad 3 faili. Minu lihttekstiline sisendfail (<span class=\"lang:default highlight:0 decode:true crayon-inline \">input.txt<\/span>\u00a0), minu programm (<span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_read<\/span>\u00a0) ja minu l\u00e4htekood (<span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_read.c<\/span>\u00a0)<\/li>\n<\/ol>\n<h5><span class=\"ez-toc-section\" id=\"Programmi_kaivitamine\"><\/span>Programmi k\u00e4ivitamine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Programmi k\u00e4ivitamiseks k\u00e4surealt tavap\u00e4raselt (ilma suunamata) kirjutame me <span class=\"lang:default highlight:0 decode:true crayon-inline\">.\/program<\/span> , kus <span class=\"lang:default highlight:0 decode:true crayon-inline \">program<\/span>\u00a0 asenda k\u00e4ivitatava programmi nimega. Eesliides <span class=\"lang:default highlight:0 decode:true crayon-inline \">.\/<\/span>\u00a0 \u00fctleb, et k\u00e4ivitatav programm asub siin samas kaustas (punkt t\u00e4histab sama kausta, kus k\u00e4suviip asub).<\/p>\n<p>Minu n\u00e4itel oleks see <span class=\"lang:default highlight:0 decode:true crayon-inline\">.\/matrix_read<\/span>\u00a0.<\/p>\n<p>Programmi k\u00e4ivitamiseks koos voo suunamisega on struktuur j\u00e4rgmine: <span class=\"lang:default highlight:0 decode:true crayon-inline\">.\/program &lt; input_data_file<\/span> .<\/p>\n<p>Minu n\u00e4itel oleks see j\u00e4llegi .<span class=\"lang:default highlight:0 decode:true crayon-inline \">\/matrix_read &lt; input.txt<\/span>\u00a0.<\/p>\n<p>J\u00e4rgnev pilt on l\u00f5igatud kahte tulpa ruumi kokkuhoiuks.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7439\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute.png\" alt=\"\" width=\"916\" height=\"508\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute.png 916w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute-300x166.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute-768x426.png 768w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_execute-672x372.png 672w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/a><\/p>\n<p>NB! K\u00e4ivitades programmi kasutades voo suunamist sisendit enam ekraanil ei n\u00e4e!<\/p>\n<p><span style=\"color: #ff0000;\">T\u00fc\u00fcpviga! Programmi l\u00e4htekoodi pole v\u00f5imalik k\u00e4ivitada, k\u00e4ivitada saab vaid programmi! St kirjutada <strong>ei tohi<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline \">.\/matrix_read.c<\/span>\u00a0.\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Voo_suunamine_Windowsis\"><\/span>Voo suunamine Windowsis<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Windowsi puhul v\u00f5ib olla variatsioone s\u00f5ltuvalt Windowsi versioonist. See t\u00e4hendab ka variatsioone \u00fche suure versiooni sees (N\u00e4iteks ka Windows 10 enda sisemiselt on erinevusi, olenevalt mis aastal viimane uuendus on sooritatud!)<\/p>\n<p>Juhend on koostatud klassikalise command prompt jaoks.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Esimene_samm_failide_ettevalmistus\"><\/span>Esimene samm: failide ettevalmistus<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Voo suunamise teostamiseks on meil vaja kahte faili<\/p>\n<ol>\n<li>Programm, mida me testime. Programm peab k\u00fcsima klaviatuurilt sisendit (n\u00e4iteks tavaliste <span class=\"lang:default highlight:0 decode:true crayon-inline \">scanf()<\/span>\u00a0 lausetega). Programmi koodi voo suunamise jaoks muuta vaja ei ole.<br \/>\nWindowsis on k\u00e4ivitatava programmi laiendiks <span class=\"lang:default highlight:0 decode:true crayon-inline \">.exe<\/span>\u00a0.<\/li>\n<li>Tekstifaili, mis sisaldab sisendit, mida soovime anda. See sisendfail n\u00e4eb v\u00e4lja t\u00e4pselt samasugune nagu me oleksime tavaliselt programmi t\u00f6\u00f6 ajal klaviatuurilt sisendit tr\u00fckkinud.\u00a0<strong>Oluline on, et tegu on lihtsa tekstifailiga\u00a0<\/strong>mille saad n\u00e4iteks kirjutada valmis kasutades Geanyt, Notepadi vms. MS Wordi, LibreOffice&#8217;it ja teisi keerukaid redaktoreid kasutada ei tohi.<br \/>\nWindowsis on tavap\u00e4raselt tekstifailide laiendiks\u00a0 <span class=\"lang:default highlight:0 decode:true crayon-inline \">.txt<\/span> .<\/li>\n<\/ol>\n<p>T\u00f5en\u00e4oliselt on meil samas failis ka kolmas fail. Selleks on meie programmi kood. Sellest koodifailist saame me kompileerimise k\u00e4igus programmi, mida meil on vajalik testida. Koodifail on <span class=\"lang:default highlight:0 decode:true crayon-inline \">.c<\/span>\u00a0 laiendiga.<\/p>\n<p>Kaustast v\u00f5id leida ka neljanda faili laiendiga <span class=\"lang:default highlight:0 decode:true crayon-inline \">.o<\/span>\u00a0 ning mitme sisendi v\u00f5i koodifaili olemasolul ka neid.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Loome_vajalikud_failid-2\"><\/span>Loome vajalikud failid<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>NB! K\u00f5ik failid peavad minema \u00fchte kataloogi sinu arvutis!<\/p>\n<p>Esimese failina loome meie tekstifaili. Tekstifail loo soovitavalt kasutades Geanyt v\u00f5i m\u00f5nda teist lihtsat tekstiredaktorit. Anname nimeks\u00a0 n\u00e4iteks <span class=\"lang:default highlight:0 decode:true crayon-inline \">input.txt<\/span>\u00a0.<\/p>\n<pre class=\"toolbar:1 lang:c highlight:0 decode:true\" title=\"input.txt\">3 9 -4 0 -10 10 5\r\n1 -4 9 1 -7 -9 4\r\n-5 5 -5 5 -5 5 -5\r\n7 6 5 4 3 2 1\r\n1 2 3 4 5 6 7\r\n-1 -2 -3 -4 -3 -2 -1\r\n0 0 0 0 0 0 0<\/pre>\n<p>Teise failina on meie programmi l\u00e4htekood. Programm on lihtne &#8211; loeb kasutajalt maatriksisse salvestatavad v\u00e4\u00e4rtused ja seej\u00e4rel tr\u00fckib need joondatult v\u00e4lja. Anname nimeks n\u00e4iteks <span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_print.c<\/span>\u00a0.<\/p>\n<pre class=\"lang:c decode:true\" title=\"matrix_print.c\">#include &lt;stdio.h&gt;\r\n\r\n#define ARR_LEN 7\r\n\r\nint main(void)\r\n{\r\n    int matrix[ARR_LEN][ARR_LEN], i, j;\r\n    for (i = 0; i &lt; ARR_LEN; i++)\r\n    {\r\n        for (j = 0; j &lt; ARR_LEN; j++)\r\n        {\r\n            printf(\"Enter matrix element [%d][%d]\\n\", i + 1, j + 1);\r\n            scanf(\"%d\", &amp;matrix[i][j]);\r\n        }\r\n    }\r\n    printf(\"Entered matrix:\\n\");\r\n    for (i = 0; i &lt; ARR_LEN; i++)\r\n    {\r\n        for (j = 0; j &lt; ARR_LEN; j++)\r\n        {\r\n            printf(\"%6d\", matrix[i][j]);\r\n        }\r\n        putchar('\\n');\r\n    }\r\n    return 0;\r\n}<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Kompileerime_programmi-2\"><\/span>Kompileerime programmi<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>L\u00e4htekood valmis, kompileeri programm.<\/p>\n<p><strong>NB! P\u00e4rast igat muudatust tuleb programm uuesti kompileerida!\u00a0<\/strong>See kipub aeg-ajalt meelest minema kasutades voo suunamist. Salvestamine pole piisav.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Programmi_jooksutamine_voo_suunamisega-2\"><\/span>Programmi jooksutamine voo suunamisega<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Programmi jooksutamine k\u00e4ib k\u00e4surealt. \u00c4ra k\u00e4ivita oma programmi l\u00e4bi IDE (nt Geany)!.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Ava_kasurida-2\"><\/span>Ava k\u00e4surida<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>K\u00f5ige lihtsam meetod terminali avamiseks on esmalt v\u00f5tta lahti failivaaturis kaust kuhu salvestasid oma failid. Seej\u00e4rel mine aadressireale ja kirjuta <span class=\"lang:default highlight:0 decode:true crayon-inline \">cmd<\/span>\u00a0 ning vajuta enter klahvi.<\/p>\n<p>Selle meetodi eelis on see, et su k\u00e4suviip avatakse koheselt \u00f5igesse kausta!<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_win_open.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7441\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_win_open.png\" alt=\"\" width=\"811\" height=\"305\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_win_open.png 811w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_win_open-300x113.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/1_win_open-768x289.png 768w\" sizes=\"auto, (max-width: 811px) 100vw, 811px\" \/><\/a><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Veendume_ja_asukohas_failides-2\"><\/span>Veendume ja asukohas failides<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Kui soovid veenduda, et su k\u00e4suviip asub \u00f5iges kohas ja ka k\u00f5ik vajalikud failid on olemas, saame kasutada k\u00e4sku <span class=\"lang:default highlight:0 decode:true crayon-inline\">dir<\/span> .\u00a0 <em>Kasutades PowerShelli klassikalise Command Prompt asemel on selle k\u00e4su nimi <span class=\"lang:default highlight:0 decode:true crayon-inline \">ls<\/span>\u00a0 (nagu Linuxis).<\/em><\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_win_dir.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7442\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_win_dir.png\" alt=\"\" width=\"433\" height=\"318\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_win_dir.png 433w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/2_win_dir-300x220.png 300w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><\/a><\/p>\n<p>M\u00e4rka j\u00e4rgnevat<\/p>\n<ol>\n<li>Minu k\u00e4suviip asub aadressil <span class=\"lang:default highlight:0 decode:true crayon-inline\">C:\\Users\\Risto\\Desktop\\vood_naide<\/span>\u00a0, mis on \u00fchtlasi ka kaust kuhu ma selle demo jaoks failid salvestasin<\/li>\n<li>Selles kataloogis asuvad 3 faili. Minu lihttekstiline sisendfail (<span class=\"lang:default highlight:0 decode:true crayon-inline \">input.txt<\/span>\u00a0), minu programm (<span class=\"lang:default highlight:0 decode:true crayon-inline\">matrix_read.exe<\/span>\u00a0) ja minu l\u00e4htekood (<span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_read.c<\/span>\u00a0)<\/li>\n<\/ol>\n<h5><span class=\"ez-toc-section\" id=\"Programmi_kaivitamine-2\"><\/span>Programmi k\u00e4ivitamine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Programmi k\u00e4ivitamiseks k\u00e4surealt tavap\u00e4raselt (ilma suunamata) kirjutame me <span class=\"lang:default highlight:0 decode:true crayon-inline\">program.exe<\/span> , kus <span class=\"lang:default highlight:0 decode:true crayon-inline\">program.exe<\/span>\u00a0 asenda k\u00e4ivitatava programmi nimega.<\/p>\n<p>Minu n\u00e4itel oleks see <span class=\"lang:default highlight:0 decode:true crayon-inline\">matrix_read.exe<\/span>\u00a0.<\/p>\n<p>Programmi k\u00e4ivitamiseks koos voo suunamisega on struktuur j\u00e4rgmine: <span class=\"lang:default highlight:0 decode:true crayon-inline\">program.exe &lt; input_data_file<\/span> .<\/p>\n<p>Minu n\u00e4itel oleks see j\u00e4llegi <span class=\"lang:default highlight:0 decode:true crayon-inline\">matrix_read.exe &lt; input.txt<\/span>\u00a0.<\/p>\n<p>J\u00e4rgnev pilt on l\u00f5igatud kahte tulpa ruumi kokkuhoiuks.<\/p>\n<p><a href=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_exec_win.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7443\" src=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_exec_win.png\" alt=\"\" width=\"909\" height=\"496\" srcset=\"https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_exec_win.png 909w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_exec_win-300x164.png 300w, https:\/\/blue.pri.ee\/ttu\/wp-content\/uploads\/2022\/10\/3_exec_win-768x419.png 768w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/a><\/p>\n<p>NB! K\u00e4ivitades programmi kasutades voo suunamist sisendit enam ekraanil ei n\u00e4e!<\/p>\n<p><span style=\"color: #ff0000;\">T\u00fc\u00fcpviga! Programmi l\u00e4htekoodi pole v\u00f5imalik k\u00e4ivitada, k\u00e4ivitada saab vaid programmi! St kirjutada <strong>ei tohi<\/strong> <span class=\"lang:default highlight:0 decode:true crayon-inline\">matrix_read.c<\/span>\u00a0.\u00a0<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Soovitusi_paremaks_toovooks\"><\/span>Soovitusi paremaks t\u00f6\u00f6vooks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Programme luues tuleb sul tihedalt ette kompileerimist ja uuendatud programmi testimist. M\u00f5ned soovitused<\/p>\n<ul>\n<li>\u00c4ra sulge k\u00e4suakent p\u00e4rast programmi testimist. J\u00e4ta see lahti. Siis ei pea sa j\u00e4rgmine kord seda uuesti avama<\/li>\n<li>Uuesti programmi testimiseks vajuta klaviatuurilt \u00fcles nooleklahvi <span class=\"lang:default highlight:0 decode:true crayon-inline \">\u2191<\/span>\u00a0. Sedasi saad oma eelneva k\u00e4su uuesti ette tuua ilma seda uuesti kirjutamata. Nooleklahve kasutades saad liikuda ringi k\u00e4skude ajaloos.<\/li>\n<li>\u00c4ra unusta enne uuesti testimist kompileerida.<\/li>\n<li>Programme saad samuti kompileerida k\u00e4surealt. N\u00e4iteks kirjutades<br \/>\n<span class=\"lang:default highlight:0 decode:true crayon-inline\">gcc -o matrix_read -Wall -Wextra -Wconversion matrix_read.c<\/span>\u00a0 kompileerid l\u00e4htekoodifaili <span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_read.c<\/span>\u00a0 programmiks <span class=\"lang:default highlight:0 decode:true crayon-inline \">matrix_read<\/span> . Kasutades \u00fclesnoolt saad k\u00e4hku liikuda k\u00e4ivitamise ja kompileerimise rea vahel. Windowsit kasutades lisa <span class=\"lang:default highlight:0 decode:true crayon-inline \">.exe<\/span>\u00a0 l\u00f5ppu, st <span class=\"lang:default highlight:0 decode:true crayon-inline\">gcc -o matrix_read.exe -Wall -Wextra -Wconversion matrix_read.c<\/span><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Veel_nippe\"><\/span><strong>Veel nippe<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Selle asemel, et kirjutada programmi v\u00f5i sisendi nimi t\u00e4ispikalt v\u00e4lja, kirjuta sellest v\u00e4lja 1-3 esimest t\u00e4hem\u00e4rki (vahel ka rohkem) ning vajuta <span class=\"lang:default highlight:0 decode:true crayon-inline \">tab<\/span>\u00a0 klahvi. See l\u00f5petab faili nime \u00e4ra sinu eest. Kui sama algusega on mitu faili v\u00f5i kausta, siis Windowsis vajuta tab klahvi kuniks \u00f5ige nimi ette tuleb. Linuxi puhul kuvatakse sulle k\u00f5ik v\u00f5imalikud l\u00f5pud ning pead m\u00f5ne t\u00e4hem\u00e4rgi juurde tr\u00fckkima. Sedasi v\u00e4hendad n\u00e4puvigade tekitamist ning s\u00e4\u00e4stad aega.<\/li>\n<li>Oma programmi testimiseks v\u00f5id teha mitu sisendfaili. N\u00e4iteks testimaks mullsorteerimise koodi tee \u00fcks fail, kus numbrid on juhuslikult, teine juba kasvavas j\u00e4rjekorras, kolmas kahanevas j\u00e4rjekorras, neljas kus on m\u00f5nda numbrit mitu korda. Sedasi saad kiiresti testida oma programme k\u00f5iksugu erinevate l\u00e4hteandmetega.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Veel_lugemist\"><\/span><strong>Veel lugemist<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Standard_streams\">https:\/\/en.wikipedia.org\/wiki\/Standard_streams<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Redirection_(computing)\">https:\/\/en.wikipedia.org\/wiki\/Redirection_(computing)<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Pipeline_(Unix)\">https:\/\/en.wikipedia.org\/wiki\/Pipeline_(Unix)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Selles juhises r\u00e4\u00e4gime kuidas teha voo suunamist nii Windowsi kui Linuxi n\u00e4itel. MacOS kasutajad peaksid j\u00e4lgima Linuxi n\u00e4idet &#8211; Linuxi ja Maci k\u00e4surida on k\u00e4esolevate toimetuste jaoks samasugused (esineb siiski erinevusi mujal) Meeldetuletuseks, voo suunamine on programmi sisendi v\u00f5i v\u00e4ljundi \u00fcmber suunamine. St me saame n\u00e4iteks asendada sisendi lugemist klaviatuurilt etteantud sisendiga, mis on varasemalt &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/koodimisjuhendid\/voo-suunamine\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Voo suunamise juhis<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":5274,"menu_order":5,"comment_status":"closed","ping_status":"closed","template":"page-templates\/code-width.php","meta":{"footnotes":""},"class_list":["post-4932","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/4932","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=4932"}],"version-history":[{"count":2,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/4932\/revisions"}],"predecessor-version":[{"id":10261,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/4932\/revisions\/10261"}],"up":[{"embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/pages\/5274"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=4932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}