{"id":8269,"date":"2023-03-10T16:39:27","date_gmt":"2023-03-10T14:39:27","guid":{"rendered":"https:\/\/blue.pri.ee\/ttu\/?p=8269"},"modified":"2026-03-22T21:15:12","modified_gmt":"2026-03-22T19:15:12","slug":"pr2et7-dunaamiline-malu-1","status":"publish","type":"post","link":"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/","title":{"rendered":"PR2ET7: D\u00fcnaamiline m\u00e4lu 1"},"content":{"rendered":"<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\/laborid\/pr2et7-dunaamiline-malu-1\/#Praktikumi_materjal\" >Praktikumi materjal<\/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\/laborid\/pr2et7-dunaamiline-malu-1\/#Praktikumi_ulesanded\" >Praktikumi \u00fclesanded<\/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\/laborid\/pr2et7-dunaamiline-malu-1\/#Ulesanne_W07-1_Juhuandmete_generaator\" >\u00dclesanne [W07-1]: Juhuandmete generaator<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Nouded\" >N\u00f5uded<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Toovoog\" >T\u00f6\u00f6voog<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Qsordi_vordlusfunktsioon\" >Qsordi v\u00f5rdlusfunktsioon<\/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\/laborid\/pr2et7-dunaamiline-malu-1\/#Testimine\" >Testimine<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Lisaulesanne_1_W07-2_Valjundfaili_formaat\" >Lisa\u00fclesanne 1 [W07-2]: V\u00e4ljundfaili formaat<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Nouded-2\" >N\u00f5uded<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Lisaulesanne_2_W07-3_Seadistused\" >Lisa\u00fclesanne 2 [W07-3]: Seadistused<\/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\/laborid\/pr2et7-dunaamiline-malu-1\/#Nouded-3\" >N\u00f5uded<\/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-12\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Parast_seda_tundi_peaksid\" >P\u00e4rast seda tundi peaksid<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/#Taiendav_materjal\" >T\u00e4iendav materjal<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Praktikumi_materjal\"><\/span>Praktikumi materjal<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Slaidid: <a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/slaidid-et\/2025\/07_dynaamiline_malu.pdf\"><strong>D\u00fcnaamiline m\u00e4lu 1<\/strong><\/a><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Praktikumi_ulesanded\"><\/span>Praktikumi \u00fclesanded<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Selle praktikumi \u00fclesandeks on luua juhuandmete generaator. \u00dclesannet laiendab kaks lisa\u00fclesannet.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Ulesanne_W07-1_Juhuandmete_generaator\"><\/span>\u00dclesanne [W07-1]: Juhuandmete generaator<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Praktikumi\u00fclesandeks on koostada juhuandmetega andmefaili generaator. Selliseid generaatoreid kasutatakse sageli rakenduste testimiseks enne, kui saadakse ligip\u00e4\u00e4s reaalsetele andmetele. P\u00e4ris mitmetes selle kursuse praktikumi\u00fclesandes on testandmed genereeritud sarnasel viisil.<\/p>\n<p>NB! Kuigi \u00fcks soovituslikest juhuandmete genereerimise viisidest on kasutada tehisaru, siis alati ei t\u00f6\u00f6ta see just kuigi h\u00e4sti v\u00f5i osutub absurdselt kalliks &#8211; nt kui soovid genereerida miljoneid ridu keerukaid andmeid.<\/p>\n<p><strong>Lae alla aluskood: <a href=\"https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/aluskoodid\/7_generator_starter.zip\">https:\/\/blue.pri.ee\/ttu\/files\/iax0584\/aluskoodid\/7_generator_starter.zip<\/a><\/strong><\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Ehita oma rakendus ette antud aluskoodi p\u00f5hjale<\/li>\n<li>K\u00fcsi kasutajalt, mitu kirjet ta soovib genereerida. \u00dclempiiri luua ei tohi!<\/li>\n<li>K\u00f5ik kirjed salvestatakse genereerimise k\u00e4igus struktuurimassiivi, mis luuakse kasutades d\u00fcnaamilist m\u00e4lu<\/li>\n<li>Vali juhuslikult etteantud valimitest v\u00e4lja eesnimi, perenimi ja\u00a0 \u00f5ppekava kood<\/li>\n<li>Genereeri juhuslikult sisseastumispunktid (nt 24,7)\n<ul>\n<li>Punktid on vahemikus 10,0 &#8211; 30,0 punkti. Otspunktid on kaasatud.<\/li>\n<li>T\u00e4psus on 0,1 punkti<\/li>\n<\/ul>\n<\/li>\n<li>Sorteeri genereeritud andmed perenime j\u00e4rgi. Kui perenimed \u00fchtivad, sorteeri eesnime j\u00e4rgi.<\/li>\n<li>V\u00e4ljund kirjuta faili j\u00e4rgnevas vormingus:<br \/>\n<span class=\"lang:default highlight:0 decode:true crayon-inline\">&lt;indeks&gt; &lt;perenimi&gt; &lt;eesnimi&gt; &lt;\u00f5ppekava kood&gt; &lt;sisseastumispunktid&gt;<\/span><\/p>\n<ul>\n<li>Indeks on unikaalne t\u00e4isarv. Esimese kirje indeks on 0, igal j\u00e4rgneval suureneb see 1 v\u00f5rra.<\/li>\n<\/ul>\n<\/li>\n<li>Veendu, et kogu m\u00e4lu on programmi l\u00f5ppedes vabastatud kasutades Valgrind&#8217;i<\/li>\n<\/ul>\n<h5><span class=\"ez-toc-section\" id=\"Toovoog\"><\/span>T\u00f6\u00f6voog<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Loo vajalik struktuuri kirjeldus, salvesta see p\u00e4isefaili<\/li>\n<li>K\u00fcsi kasutajalt mitu kirjet tuleks genereerida<\/li>\n<li>K\u00fcsi m\u00e4lu vajalike kirjete hoidmiseks. Kontrolli, et m\u00e4lu saadi!<\/li>\n<li>Genereeri vajalikud kirjed\n<ul>\n<li>Iga isiku jaoks pead genereerima k\u00f5ik v\u00e4ljad juhuslikult<\/li>\n<li>Eesnimi, perenimi ja \u00f5ppekavakood tuleb juhuslikult valida olemasolevatest valimitest. Selleks pead genereerima t\u00e4isarvu (nt mitmes eesnimi valimist)<br \/>\n<em>Vihje: Sa v\u00f5id nime kas kopeerida enda struktuuri v\u00f5i hoiustada vaid viita nimele<\/em><\/li>\n<li>Genereeri vastuv\u00f5tupunktid (10,0 &lt;= punktid &lt;= 30,0 t\u00e4psusega 0,1)<br \/>\n<em>Vihje: M\u00f5tle matemaatilistele omadustele &#8211; nt mis vahe on 30 ja 300!? rand() funktsioon tagastab alati t\u00e4isarvu ning seda muuta ei saa.<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Sorteeri massiiv\n<ul>\n<li>M\u00f5tle ka miks on siin halb idee kasutada eksponentsiaalse keerukuse kasvuga meetodeid (<em>bubble\/insertion\/selection<\/em>)<\/li>\n<\/ul>\n<\/li>\n<li>Kirjuta andmed v\u00e4ljundfaili<\/li>\n<li>Vabasta m\u00e4lu<\/li>\n<\/ul>\n<p>Kontrolli oma rakendust kasutades valgrindi! Seda mitte ainult l\u00f5pus, vaid ka siis, kui rakendus k\u00e4itub imelikult v\u00f5i jookseb kokku!<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Qsordi_vordlusfunktsioon\"><\/span>Qsordi v\u00f5rdlusfunktsioon<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Pakun v\u00e4lja kaks erinevat v\u00f5rdlusfunktsiooni v\u00f5imalust. Vali see millest saad paremini aru, v\u00f5i kirjuta enda lahendus.<\/p>\n<p>Esimene n\u00e4ide kasutab t\u00fc\u00fcbiteisendusi jooksvalt, v\u00e4ltides lisamuutujate loomise vajadust.<\/p>\n<pre class=\"toolbar:1 lang:c decode:true\">int ComparCandidate(const void *a, const void *b)\r\n{\r\n    \/\/ Get comparison for last names\r\n    int ret = strcmp(((candidate *)a)-&gt;lName, ((candidate *)b)-&gt;lName);\r\n    \r\n    \/\/ When last names match, return difference by first name\r\n    if (ret == 0)\r\n        return strcmp(((candidate *)a)-&gt;fName, ((candidate *)b)-&gt;fName);\r\n    \r\n    \/\/ return difference by last name\r\n    return ret;\r\n}<\/pre>\n<p>Teine n\u00e4ide sisaldab lisaviitasid, mis v\u00f5tavad t\u00e4iendavalt m\u00e4lu, kuid lihtsustavad koodi loetavust.<\/p>\n<pre class=\"toolbar:1 lang:c decode:true \">int ComparCandidate(const void *a, const void *b)\r\n{\r\n    \/\/ Temporary cast pointers for readability\r\n    candidate *pA = (candidate *)a;\r\n    candidate *pB = (candidate *)b;\r\n\r\n    \/\/ Get comparison for last names\r\n    int ret = strcmp(pA-&gt;lName, pB-&gt;lName);\r\n    \r\n    \/\/ When last names match, return difference by first name\r\n    if (ret == 0)\r\n        return strcmp(pA-&gt;fName, pB-&gt;fName);\r\n    \r\n    \/\/ return difference by last name\r\n    return ret;\r\n}<\/pre>\n<h5><span class=\"ez-toc-section\" id=\"Testimine\"><\/span>Testimine<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<p>Rakenduse v\u00e4ljund on v\u00f5rdlemisi lihtne ja l\u00fchike<\/p>\n<pre class=\"theme:cisco-router toolbar:2 nums:false nums-toggle:false lang:default highlight:0 decode:true\">risto@risto-lt3-tux:~\/Nextcloud\/work\/ttu\/teaching\/_generic\/prog2\/lab\/wk7_generator\/generator_solution$ valgrind .\/generator\r\n==12389== Memcheck, a memory error detector\r\n==12389== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==12389== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==12389== Command: .\/generator\r\n==12389==\r\nThe database contains:\r\n103 first names\r\n105 last names\r\n3 curriculum codes\r\n\r\nHow many candidates to generate?\r\n&gt; 500\r\n\r\nSuccessfully generated 500 entries\r\nSuccessfully written 500 lines to generated_candidates.txt\r\n==12389==\r\n==12389== HEAP SUMMARY:\r\n==12389==     in use at exit: 0 bytes in 0 blocks\r\n==12389==   total heap usage: 6 allocs, 6 frees, 13,016 bytes allocated\r\n==12389==\r\n==12389== All heap blocks were freed -- no leaks are possible\r\n==12389==\r\n==12389== For lists of detected and suppressed errors, rerun with: -s\r\n==12389== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)\r\n<\/pre>\n<p>Kontrolli oma v\u00e4ljundfaili ning veendu tulemuste korrektsuses. Sinu v\u00e4ljundfail saab olema erinev, andmed on juhuslikult genereeritud.<\/p>\n<pre class=\"toolbar:2 lang:default highlight:0 decode:true \">0 Aas Heidy IACB 27.9\r\n1 Aas Juhan IACB 29.6\r\n2 Aas Reet IACB 18.2\r\n3 Aasa Anne EARB 10.1\r\n4 Aasa Julia MVEB 13.8\r\n5 Aasa Sven EARB 14.5\r\n6 Aasa Taavi MVEB 16.1\r\n7 Aasa Urve EARB 29.4\r\n8 Aasa Valdo IACB 21.2\r\n9 Allik Ivari IACB 21.3\r\n10 Allik Kerttu MVEB 29.8\r\n11 Allik Kerttu MVEB 21.4\r\n12 Allik Laivi MVEB 24.2\r\n13 Allik Peeter IACB 22.3\r\n14 Allik Rainer IACB 17.5<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_1_W07-2_Valjundfaili_formaat\"><\/span>Lisa\u00fclesanne 1 [W07-2]: V\u00e4ljundfaili formaat<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Esimese lisa\u00fclesande k\u00e4igus lisad oma lahendusele CSV formaadi toe. Kasutaja saab valida sobiva v\u00e4ljundformaadi &#8211; kas t\u00fchikutega v\u00f5i komadega eraldatud v\u00e4ljundfail.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded-2\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>Lisa oma programmile v\u00f5imekus genereerida andmeid CSV formaadis\n<ul>\n<li>Esimene rida CSV failis peab olema p\u00e4is, mis sisaldab genereeritud andmev\u00e4ljade nimetusi<\/li>\n<li>Sellele j\u00e4rgnevad genereeritud andmeread. Iga andmev\u00e4li peab olema eraldatud komaga. NB! CSV failis koma j\u00e4rele t\u00fchik ei k\u00e4i!<\/li>\n<\/ul>\n<\/li>\n<li>K\u00fcsi kasutajalt kummas formaadis ta soovib faili genereerida (t\u00fchikutega eraldatud v\u00f5i CSV) ning genereeri sobilik v\u00e4ljundfail.<\/li>\n<li>T\u00fchikutega eraldatud faili laiendiks peab olema <span class=\"lang:default highlight:0 decode:true crayon-inline \">.txt<\/span>\u00a0, komadega eraldatud faili laiendiks peab olema <span class=\"lang:default highlight:0 decode:true crayon-inline\">.csv<\/span> .<\/li>\n<li>Veendu, et CSV fail on korrektselt genereeritud &#8211; proovi avada v\u00f5i importida genereeritud faili kasutades Libreoffice Calc&#8217;i v\u00f5i Microsoft Office&#8217;it ja kontrolli kas v\u00e4ljad tuvastati korrektselt.<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Lisaulesanne_2_W07-3_Seadistused\"><\/span>Lisa\u00fclesanne 2 [W07-3]: Seadistused<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Selles lisa\u00fclesandes muudame oma generaatori paindlikumaks ja lisame seadistuste v\u00f5imekuse.<\/p>\n<h5><span class=\"ez-toc-section\" id=\"Nouded-3\"><\/span>N\u00f5uded<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ul>\n<li>K\u00f5ik seaded tuleb hoida struktuuri liikmetena &#8211; loo uus struktuuri kirjeldus seadistuste hoidmiseks<\/li>\n<li>K\u00f5igil seadistustel peavad olema vaikev\u00e4\u00e4rtused<\/li>\n<li>Kui kasutaja ei soovi seadistusi muuta, peab programm kasutama vaikev\u00e4\u00e4rtusi. Kuidas kasutaja muutmissoovist teada peab andma, v\u00f5id ise otsustada.<br \/>\n<em>N\u00e4iteks v\u00f5ib programm seda esimese asjana k\u00e4ivitudes k\u00fcsida v\u00f5i saab kasutaja k\u00e4ivitada programmi kindla k\u00e4sureaargumendiga, mis seadistuse avab.<\/em><\/li>\n<li>Kasutajal peab soovi korral olema v\u00f5imalik muuta j\u00e4rgnevaid seadistusi\n<ul>\n<li>Millised andmev\u00e4ljad genereeritakse (iga andmev\u00e4lja peab olema v\u00f5imalik sisse-v\u00e4lja l\u00fclitada)<\/li>\n<li>V\u00e4ljundfaili nimi (ainult nimeosa, faililaiend valitakse automaatselt l\u00e4htuvalt valitud v\u00e4ljundformaadist!)<\/li>\n<li>V\u00e4ljundformaadi valik (lisa\u00fclesande 1 osa, t\u00f5sta struktuuri sisse)<\/li>\n<li>Genereeritavate kirjete arv (baas\u00fclesande osa, t\u00f5sta struktuuri sisse)<\/li>\n<li>Sisseastumispunktide vahemik (alam- ja \u00fclempiir)<\/li>\n<\/ul>\n<\/li>\n<li>NB! Genereeritavate kirjete arvu tuleb k\u00fcsida olenemata sellest, kas kasutaja soovis seadeid muuta v\u00f5i mitte. Eesm\u00e4rk on hoida k\u00f5ik seadistused vastavas struktuuris koos.<\/li>\n<li>Kasutajale tuleb kuvada \u00fclevaade genereerimisel kasutavatest seadetest. Seda olenemata kas ta soovis neid muuta v\u00f5i mitte.<\/li>\n<\/ul>\n<p>M\u00e4rkus: Soovi korral v\u00f5id seadistuste v\u00e4\u00e4rtusi hoida eraldi failis, kuid see pole vajalik. Kasutaja tehtud muudatusi seadetesse ei ole vaja meeles pidada j\u00e4rgmisel programmi k\u00e4ivitamisel. K\u00fcll aga kui sa soovid seadefaili kasutada, siis veendu, et kasutaja saab seadistusi muuta l\u00e4bi programmi (ilma, et ta peaks seadefaili k\u00e4sitsi muutma).<\/p>\n<p>Vihje: Siin saab kolmikoperaatorit h\u00f5lpsasti \u00e4ra kasutada<br \/>\n<span class=\"lang:default decode:true crayon-inline \">printf(&#8220;First name: %10s\\n&#8221;, settings.genFirstName ? &#8220;Yes&#8221;: &#8220;No&#8221;); <\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Parast_seda_tundi_peaksid\"><\/span>P\u00e4rast seda tundi peaksid<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Oskama kasutada d\u00fcnaamilist m\u00e4lu<\/li>\n<li>Oskama kontrollida, kas programmis on m\u00e4lulekkeid<\/li>\n<li>Teadma, mis olukorras on d\u00fcnaamilist m\u00e4lu m\u00f5istlik kasutada ja millal mitte<\/li>\n<li>Teadma d\u00fcnaamilise m\u00e4lu v\u00f5ludest ja valudest<\/li>\n<li>Tegema vahet pinum\u00e4lul ja kuhjal ning mis muutujad kuhu l\u00e4hevad.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Taiendav_materjal\"><\/span>T\u00e4iendav materjal<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>K\u00e4sitsi m\u00e4lu haldamine<br \/>\n<strong><a href=\"https:\/\/beej.us\/guide\/bgc\/html\/split\/manual-memory-allocation.html#manual-memory-allocation\">https:\/\/beej.us\/guide\/bgc\/html\/split\/manual-memory-allocation.html#manual-memory-allocation<\/a><\/strong><\/li>\n<li>M\u00e4lulekked<br \/>\n<strong><a href=\"https:\/\/www.geeksforgeeks.org\/what-is-memory-leak-how-can-we-avoid\/\">https:\/\/www.geeksforgeeks.org\/what-is-memory-leak-how-can-we-avoid\/<\/a><\/strong><\/li>\n<li>M\u00e4lulekete kontroll Valgrindiga<br \/>\n<strong><a href=\"https:\/\/valgrind.org\/docs\/manual\/quick-start.html\">https:\/\/valgrind.org\/docs\/manual\/quick-start.html<\/a><\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Praktikumi materjal Slaidid: D\u00fcnaamiline m\u00e4lu 1 Praktikumi \u00fclesanded Selle praktikumi \u00fclesandeks on luua juhuandmete generaator. \u00dclesannet laiendab kaks lisa\u00fclesannet. \u00dclesanne [W07-1]: Juhuandmete generaator Praktikumi\u00fclesandeks on koostada juhuandmetega andmefaili generaator. Selliseid generaatoreid kasutatakse sageli rakenduste testimiseks enne, kui saadakse ligip\u00e4\u00e4s reaalsetele andmetele. P\u00e4ris mitmetes selle kursuse praktikumi\u00fclesandes on testandmed genereeritud sarnasel viisil. NB! Kuigi \u00fcks soovituslikest &hellip; <a href=\"https:\/\/blue.pri.ee\/ttu\/laborid\/pr2et7-dunaamiline-malu-1\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">PR2ET7: D\u00fcnaamiline m\u00e4lu 1<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[97,176],"tags":[],"class_list":["post-8269","post","type-post","status-publish","format-standard","hentry","category-laborid","category-pr2-et"],"_links":{"self":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/types\/post"}],"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=8269"}],"version-history":[{"count":13,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8269\/revisions"}],"predecessor-version":[{"id":11313,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/posts\/8269\/revisions\/11313"}],"wp:attachment":[{"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/media?parent=8269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/categories?post=8269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue.pri.ee\/ttu\/wp-json\/wp\/v2\/tags?post=8269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}