<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://strudel.pld.ttu.ee/wiki/e/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Trkal</id>
		<title>ATI public wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://strudel.pld.ttu.ee/wiki/e/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Trkal"/>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php/Special:Contributions/Trkal"/>
		<updated>2026-04-23T05:31:22Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3090</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3090"/>
				<updated>2022-04-08T06:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [https://ati.ttu.ee/wiki/e/index.php/File:MKKT.pdf siit]. See ülesanne on ainult raskustaseme näidis. Oma ülesanne tuleb õpilastel ise luua.&amp;lt;br /&amp;gt;&lt;br /&gt;
Labori failid leiab [https://pld.ttu.ee/~trkal/mikrokontrollerid/ siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrolleri programmeerimis tarkvara leiab [https://ww1.microchip.com/downloads/en/DeviceDoc/MPLABX-v4.01-windows-installer.exe siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Kui on vaja kasutada mõnda uuemat versiooni, siis need leiab [https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide#tabs siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vaja on ka kompilaatorit [https://ww1.microchip.com/downloads/en/DeviceDoc/xc32-v4.00-full-install-windows-x64-installer.exe xc-32].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3089</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3089"/>
				<updated>2022-04-07T10:25:50Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [https://ati.ttu.ee/wiki/e/index.php/File:MKKT.pdf siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Labori failid leiab [https://pld.ttu.ee/~trkal/mikrokontrollerid/ siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrolleri programmeerimis tarkvara leiab [https://ww1.microchip.com/downloads/en/DeviceDoc/MPLABX-v4.01-windows-installer.exe siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Kui on vaja kasutada mõnda uuemat versiooni, siis need leiab [https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide#tabs siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vaja on ka kompilaatorit [https://ww1.microchip.com/downloads/en/DeviceDoc/xc32-v4.00-full-install-windows-x64-installer.exe xc-32].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3088</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3088"/>
				<updated>2022-04-07T10:23:02Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [https://ati.ttu.ee/wiki/e/index.php/File:MKKT.pdf siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Labori failid leiab [https://pld.ttu.ee/~trkal/mikrokontrollerid/ siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrolleri programmeerimis tarkvara leiab [https://ww1.microchip.com/downloads/en/DeviceDoc/MPLABX-v4.01-windows-installer.exe siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Kui on vaja kasutada mõnda uuemat versiooni, siis need leiab [https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide#tabs siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vaja on ka kompilaatorit [https://www.microchip.com/en-us/tools-resources/develop/mplab-xc-compilers xc-32].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3087</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3087"/>
				<updated>2022-04-06T11:02:10Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: /* E-Õpe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [https://ati.ttu.ee/wiki/e/index.php/File:MKKT.pdf siit].&amp;lt;br /&amp;gt;&lt;br /&gt;
Labori failid leiab [https://pld.ttu.ee/~trkal/mikrokontrollerid/ siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3086</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3086"/>
				<updated>2022-04-06T10:59:37Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [https://ati.ttu.ee/wiki/e/index.php/File:MKKT.pdf siit].&lt;br /&gt;
Labori failid leiab [https://pld.ttu.ee/~trkal/mikrokontrollerid/ siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=File:MKKT.pdf&amp;diff=3085</id>
		<title>File:MKKT.pdf</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=File:MKKT.pdf&amp;diff=3085"/>
				<updated>2022-04-06T10:58:35Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3084</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3084"/>
				<updated>2022-03-03T20:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://ati.ttu.ee/wiki/e/images/3/33/Database_lab.docx.pdf Andmebaaside labori abi kodust töötamiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=File:Database_lab.docx.pdf&amp;diff=3083</id>
		<title>File:Database lab.docx.pdf</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=File:Database_lab.docx.pdf&amp;diff=3083"/>
				<updated>2022-03-03T20:19:05Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3082</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3082"/>
				<updated>2022-01-25T15:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3080</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3080"/>
				<updated>2022-01-25T15:46:38Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Sorteerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583Programmeerimine/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&amp;lt;br /&amp;gt;&lt;br /&gt;
Kui genereerimine ei tööta 100% (näiteks valemi asemel prinditakse $$) siis tuleb proovida brauseril lubada javascript. Kui see ei ole võimalik siis tuleb valem leida manuaalselt Ülesande Kirjeldusest.&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3079</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3079"/>
				<updated>2022-01-24T08:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3078</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3078"/>
				<updated>2022-01-24T08:43:51Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3077</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3077"/>
				<updated>2022-01-24T08:43:14Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3076</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3076"/>
				<updated>2022-01-24T08:42:51Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3075</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3075"/>
				<updated>2022-01-24T08:41:31Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3074</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3074"/>
				<updated>2022-01-24T08:41:13Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2_22/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3073</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3073"/>
				<updated>2022-01-24T08:40:29Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: chanegs to materials path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3072</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3072"/>
				<updated>2022-01-24T08:38:10Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583Programmeerimine/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3071</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3071"/>
				<updated>2022-01-24T08:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583Programmeerimine/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3070</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3070"/>
				<updated>2022-01-24T08:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3069</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3069"/>
				<updated>2022-01-23T22:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3068</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3068"/>
				<updated>2022-01-23T22:07:36Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3067</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3067"/>
				<updated>2022-01-23T22:07:20Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2022 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3066</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3066"/>
				<updated>2022-01-23T22:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 202 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop Virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3065</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3065"/>
				<updated>2022-01-23T22:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2022 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3064</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3064"/>
				<updated>2022-01-23T22:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 sügis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse töölaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3063</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3063"/>
				<updated>2022-01-23T22:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 sügis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/virtuaalne-toeoelaud-virtual-desktop virtuaalse täälaua juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3062</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3062"/>
				<updated>2022-01-23T22:01:09Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 sügis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3061</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3061"/>
				<updated>2021-10-06T15:34:13Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 sügis] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://livettu.sharepoint.com/sites/ProgreI2021sgis/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings%2FMeeting%20in%20%5FGeneral%5F%2D20211005%5F082331%2DMeeting%20Recording%2Emp4&amp;amp;parent=%2Fsites%2FProgreI2021sgis%2FShared%20Documents%2FGeneral%2FRecordings Soreerimise loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3060</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3060"/>
				<updated>2021-08-31T15:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 sügis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3059</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3059"/>
				<updated>2021-08-31T15:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 sügis] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3058</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3058"/>
				<updated>2021-08-30T17:21:25Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: 30.08 edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf Faili ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3057</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3057"/>
				<updated>2021-08-30T17:18:24Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: edit 30.08&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend - Video]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Kontrolltöö 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3056</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3056"/>
				<updated>2021-03-30T14:25:41Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public  Funktsioonid II kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid. Stringitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf Funktsioonid geomeetria tunniülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3055</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3055"/>
				<updated>2021-03-29T06:57:55Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: 1-&amp;gt;2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
29.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3054</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3054"/>
				<updated>2021-03-29T06:57:27Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: balance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
19.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 10. nädal, kodutöö2 selgitus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3053</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3053"/>
				<updated>2021-03-14T19:57:36Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: kuup2evad edasi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 10. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 11. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3052</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3052"/>
				<updated>2021-02-16T22:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: cr lf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi. &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public Funktsioonid II loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid 9. nädala kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf PR1 praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/45ff0e4b-ed01-4b6a-96d3-db09266c5cfe/public Loeng 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/133fbe3b-3951-4476-8e35-c0202d81f4a1/public Praktikum 13. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3051</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3051"/>
				<updated>2021-02-16T22:00:49Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: kdt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi.&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/kuup.txt Kodutöö nädalal 4 (kuupäevad)] &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public Funktsioonid II loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid 9. nädala kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf PR1 praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/45ff0e4b-ed01-4b6a-96d3-db09266c5cfe/public Loeng 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/133fbe3b-3951-4476-8e35-c0202d81f4a1/public Praktikum 13. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3050</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3050"/>
				<updated>2021-02-03T07:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: reg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3049</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3049"/>
				<updated>2021-02-03T07:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: reg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1A7OahtaYR-4YRK8uFF8nh14cfLqXF735Qz72ksRLvXs/edit?usp=sharing Kontaktõppele registreerimine]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi.&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public Funktsioonid II loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid 9. nädala kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf PR1 praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/45ff0e4b-ed01-4b6a-96d3-db09266c5cfe/public Loeng 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/133fbe3b-3951-4476-8e35-c0202d81f4a1/public Praktikum 13. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3048</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3048"/>
				<updated>2021-01-31T12:45:14Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: kuup2evad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/14AXT08xTwv5BU7uiFVopFbspaAxT5EJjI2pWj2Kx2sU/edit?usp=drive_web&amp;amp;ouid=110958304628248477593 Punktide tabel 2021 kevad] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö maatriksid]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi.&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö maatriksitehted]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public Funktsioonid II loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid 9. nädala kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf PR1 praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/45ff0e4b-ed01-4b6a-96d3-db09266c5cfe/public Loeng 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/133fbe3b-3951-4476-8e35-c0202d81f4a1/public Praktikum 13. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3047</id>
		<title>IAX0583 - Programmeerimine I</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAX0583_-_Programmeerimine_I&amp;diff=3047"/>
				<updated>2021-01-26T16:46:03Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: harno moodle eemaldatud&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0581 - Programming I|In English]] [[File:United Kingdom.png | 32px | link=IAG0581 - Programming I]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/11HOyagpuq4EE3FxhFT4g22wdx_vDahPZsXuj5zGR5f4/edit?usp=sharing Punktide tabel 2020 sügis] - Tabelit uuendatakse kord nädalas&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
Ülesanded võib lahendada oma arvutis, kaugelt ligipääsu juhend on lisaks, kui on vajadus kasutada kooli arvutit kompileerimiseks või oma varasematele koodidele ligipääsuks.&amp;lt;br /&amp;gt;&lt;br /&gt;
Sisse logimisel on vaja ainult kasutajanime, doomeni (@ttu.ee, @taltech.ee jne) ärga kasutage.&amp;lt;br /&amp;gt;&lt;br /&gt;
Parooli sisestamisel ei ole tähmärke näha aga sisestus töötab, kirjutage oma parool ja vajutage ENTER.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Kooli arvutis math.h teeki kasutava koodi kompileerimiseks tuleb kasutada tähist -lm&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/suusahype.c Kodutöö 30.10.2020]&lt;br /&gt;
Realiseerida võimalikult palju funktsioone ette antud prototüüpide järgi.&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d24406d9-7d96-4a52-aaeb-15f2d0e91e55/public Rühmatöö nädal 10 - esitlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/ddf8d069-35d6-4adb-a95e-a9338bbc96c4/public Funktsioonid lindistus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/maatrikstehted.doc Kodutöö 04.11.2020]&amp;lt;br /&amp;gt;&lt;br /&gt;
Realiseerida kõik maatriksi tehted eraldi funktsioonidega&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/proto.c Sisestus eraldi ja koos - näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksam/koondtöö - ennem registreerimist palun esitage mõlemad kodutööd]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Programmeerimine%20I%2017.pdf Ülesanded ja materialid 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/32017c93-28f0-4cc6-9cff-5c50606778e5/public Loeng 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/PR1%20loeng_24_03.pdf Abimaterjalid ja lisaülesanne 8. nädala loeng]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2dbbd871-75be-4bf2-8a2a-83303a65376e/public 8. nädala praktikumi ülesannete sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr1%2024%20est.pdf 8. nädala praktikumi ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/e3b6086e-9d33-4087-839a-d3450957ef58/public Funktsioonid loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/2f91704b-82e4-41eb-9fd4-5cb5db303064/public Funktsioonid II loeng 9. nädala]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Funktsiooni1.pdf Funktsioonid 9. nädala kodutöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/82cc668f-2778-47a2-804a-6e2cc790c295/public Teine kontrolltöö]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/pr%201%20eesti%20.pdf PR1 praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/8d9e8bef-821c-4e7f-84a1-1f974edc9c9e/public Kordamine kontrolltööks 11. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/45ff0e4b-ed01-4b6a-96d3-db09266c5cfe/public Loeng 12. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/133fbe3b-3951-4476-8e35-c0202d81f4a1/public Praktikum 13. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Progr1Failid&amp;amp;kasut.pdf Loeng 14. nädal slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/e3250a5f-6eb2-487d-8a1c-d3795c081147/public Loeng 15. nädal salvestus]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koodi failid saata vladimir.viies@gmail.com ja trkal@ati.ttu.ee&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kodutöö 2 jaoks valige variant vastavalt oma martikli numbri viimasele numbrile&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/pR0583est/prog_I_est20/PR1kodunet%c3%b6%c3%b6_2.doc Kodutöö 2 link]&lt;br /&gt;
== Viited == &lt;br /&gt;
* [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=ET&amp;amp;p_open_node2=&amp;amp;p_id=100807&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;_ainer_kood=iag0581 Ainekaart]&lt;br /&gt;
* [http://ati.ttu.ee/index.php?page=4110&amp;amp;aine=IAG0581 Aine leht TTÜ lehel]&lt;br /&gt;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://ati.ttu.ee/wiki/index.php/Git_manual Git manual EN]&lt;br /&gt;
&lt;br /&gt;
=== Materjalid ===&lt;br /&gt;
==== Aine õppejõudude materjalid ====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR1_IAX0583/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[https://codingmeta.com/ Jan Toodre]&lt;br /&gt;
&lt;br /&gt;
====Vanad materjalid====&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/ Helena Kruus]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IAG0581 - Programmeerimine I (2015)|Eelmise aasta materjalid]]&lt;br /&gt;
&lt;br /&gt;
==== Moodle materjalid ====&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAX0583 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=3347&lt;br /&gt;
&lt;br /&gt;
==I Kodutöö ülesanne==&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf Ülesande kirjeldus]&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1.html I kodutöö ülesande genereerimine ]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/T%c3%96%c3%96%20VORMISTAMINE.doc Vormistamisnõuded]&lt;br /&gt;
&lt;br /&gt;
[http://blue.pri.ee/ttu/koodimisstiil/ Koodimisstiil]&lt;br /&gt;
&lt;br /&gt;
I kodutöö tähtaeg on '''8. nädal'''. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi: &lt;br /&gt;
&lt;br /&gt;
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581&lt;br /&gt;
&lt;br /&gt;
== Töö praktikumis ==&lt;br /&gt;
&lt;br /&gt;
Arvutiklassis töötamise kohta üldiselt: [[Arvutiklassis töötamise juhend]]&lt;br /&gt;
&lt;br /&gt;
Üksikasjalik kaugtöö juhend piltidega [http://ati.ttu.ee/wiki/images/Kaugtoo_juhend.pdf EST] [http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html ENG]&lt;br /&gt;
&lt;br /&gt;
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga '''cad'''&lt;br /&gt;
&lt;br /&gt;
=== Versioonihaldus ===&lt;br /&gt;
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris&lt;br /&gt;
&lt;br /&gt;
'''[http://gitlab.pld.ttu.ee gitlab.pld.ttu.ee] '''&lt;br /&gt;
&lt;br /&gt;
Sisselogimiseks tuleks kasutada oma ülikooli Uni-ID kasutajat ja parooli. Kui te ei tea oma kasutajat või parooli, siis Uni-ID saamiseks või parooli vahetamiseks on järgmised võimalused:&lt;br /&gt;
*Logides sisse ID-kaardiga aadressil http://pass.ttu.ee&lt;br /&gt;
*Pöörduda ruumi ICT-410 või SOC-128&lt;br /&gt;
&lt;br /&gt;
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul '''New project'''. &lt;br /&gt;
[[File:Git_create_project.png|200px|thumb|none|Nupp projekti loomiseks]]&lt;br /&gt;
Seejärel avaneval lehel tuleks oma projektile anda nimi '''iag0581'''. Lisaks tuleks veenduda, et projekti avalikuse seade on '''internal'''. &lt;br /&gt;
Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage '''Create project'''. &lt;br /&gt;
[[File:Git_create_repo.png|200px|thumb|none|Projekti loomise leht]]&lt;br /&gt;
Sellega on repositoorium loodud.&lt;br /&gt;
&lt;br /&gt;
====Mis on Git?====&lt;br /&gt;
Git on enimkasutatav versioonihaldustarkvara, mis võimaldab hõlpsasti programmikoodi sisaldavaid projekte hallata. Git on väärtuslik tööriist just suurte projektide puhul, mis hõlmab palju erinevaid arendajaid, kuid on hea vahend ka väikeste projektide paremaks organiseerimiseks. Ta võimaldab meeles hoida ajalugu erinevatest projekti versioonidest ja arendusharudest ning neid liita vajadusel. &lt;br /&gt;
Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks.&lt;br /&gt;
Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: [https://github.com github], [https://bitbucket.org bitbucket], [https://gitlab.com gitlab].&lt;br /&gt;
&lt;br /&gt;
====Git-i allalaadimine====&lt;br /&gt;
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.&lt;br /&gt;
&lt;br /&gt;
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt &lt;br /&gt;
&lt;br /&gt;
https://git-scm.com/downloads&lt;br /&gt;
&lt;br /&gt;
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.&lt;br /&gt;
&lt;br /&gt;
====Git-i kasutamine====&lt;br /&gt;
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).&lt;br /&gt;
&lt;br /&gt;
===== Kloonimine =====&lt;br /&gt;
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata [[IAG0581 - Programmeerimine I#Versioonihaldus|Versioonihaldus]]), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. &lt;br /&gt;
Oletades, et teie Uni-ID on ''Heli.Kopter'', siis repositoorium peaks asuma ''http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git'' ning selle alla kloonimiseks on käsk ''git clone'':&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git&amp;lt;/source&amp;gt;&lt;br /&gt;
Järgnevalt küsitakse teilt kasutajanime ja parooli. Nagu mainitud eelnevalt, siis selleks on teie Uni-ID. Lisaks, parooli sisestamisel ei maksa välja teha sellest, et tärne (*) ei teki parooli kohale - sisestus toimib sellegipoolest nagu peab.&lt;br /&gt;
Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum&lt;br /&gt;
 warning: You appear to have clone and empty repository.&lt;br /&gt;
 Checking connectivity.. done.&lt;br /&gt;
Järgnevalt liigume äsja loodud kausta kasutades ''cd'' käsku (Change Directory).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;cd iag0581&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Staging area =====&lt;br /&gt;
Nüüd on võimalik meil kausta ''iag0581'' lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:&lt;br /&gt;
* Kodutöö 1&lt;br /&gt;
* Kodutöö 2&lt;br /&gt;
* Praktikum 1&lt;br /&gt;
* Praktikum 2&lt;br /&gt;
* ....&lt;br /&gt;
Alustame näiteks sellest, et laeme koduse töö kirjelduse alla lehelt http://ati.ttu.ee/~hkinks/iag0581/hw1/hw1_et.pdf ning paigutame selle esimese kodutöö kausta.&lt;br /&gt;
Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku ''git add &amp;lt;faili nimi&amp;gt;''. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git add .&amp;lt;/source&amp;gt;&lt;br /&gt;
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git status&amp;lt;/source&amp;gt;&lt;br /&gt;
Selle peale peaks tulema vastus:&lt;br /&gt;
 $&amp;gt; git status&lt;br /&gt;
 On branch master&lt;br /&gt;
 &lt;br /&gt;
 Initial commit&lt;br /&gt;
 &lt;br /&gt;
 Changes to be committed:&lt;br /&gt;
   (use &amp;quot;git rm --cached &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
 &lt;br /&gt;
         new file:   Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
===== Commit =====&lt;br /&gt;
Järgmisena tuleks teha ''commit'', millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git commit -m &amp;quot;Kommentaar versiooni kohta, milliseid muudatusi tehti.&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
 git commit -m &amp;quot;esimene commit&amp;quot;&lt;br /&gt;
 [master (root-commit) 630c631] esimene commit&lt;br /&gt;
  1 file changed, 0 insertions(+), 0 deletions(-)&lt;br /&gt;
  create mode 100644 Kodune1/hw1_et.pdf&lt;br /&gt;
&lt;br /&gt;
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git log&amp;lt;/source&amp;gt;&lt;br /&gt;
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.&lt;br /&gt;
&lt;br /&gt;
===== Push =====&lt;br /&gt;
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest.&lt;br /&gt;
Muudatuste üles laadimiseks on käsk ''git push''. ''Origin'' on välise repositooriumi aadress, kust algselt selle alla laadisime. ''Master'' on peamise haru nimi. Peale esimest pushi võib need ära jätta, kuna siis Git oskab ise eeldada kuhu soovime üles laadida. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git push origin master&amp;lt;/source&amp;gt;&lt;br /&gt;
  git push origin master&lt;br /&gt;
 Username for 'http://gitlab.pld.ttu.ee': test&lt;br /&gt;
 Password for 'http://test@gitlab.pld.ttu.ee':&lt;br /&gt;
 Counting objects: 4, done.&lt;br /&gt;
 Delta compression using up to 8 threads.&lt;br /&gt;
 Compressing objects: 100% (2/2), done.&lt;br /&gt;
 Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done.&lt;br /&gt;
 Total 4 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To http://gitlab.pld.ttu.ee/test/iag0581.git&lt;br /&gt;
  * [new branch]      master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli.&lt;br /&gt;
Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Git_files1.png|200px|thumb|none|Projektis olevate failide nägemiseks kliki 'Files'.]]&lt;br /&gt;
| [[File:Git_files2.png|200px|thumb|none|Järgneval lehel peaks näha olema lisatud failid.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Pull =====&lt;br /&gt;
Viimase põhilise Git-i käsu selgitamiseks eeldame, et teil on oma Git-i repositoorium alla kloonitud nii kodu- kui klassiarvutisse. Nüüd kui te teete muudatusi oma failides praktikumitunni jooksul, siis kodus olevas arvutis on repositoorium endiselt vanas seisus. Selleks, et uuendada oma kodus oleva repositooriumi seisu, on vaja muudatused alla laadida kasutades käsku ''git pull''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; collapse=&amp;quot;false&amp;quot;&amp;gt;git pull&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu ''git pull''.&lt;br /&gt;
&lt;br /&gt;
===== Lisainfo =====&lt;br /&gt;
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.&lt;br /&gt;
&lt;br /&gt;
*Git-i ametlik dokumentatsioon  - https://git-scm.com/doc&lt;br /&gt;
*Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&lt;br /&gt;
&lt;br /&gt;
=== Programmeerimistarkvara ===&lt;br /&gt;
====Kompileerimine terminalis====&lt;br /&gt;
&lt;br /&gt;
Terminalis kompileerimiseks on käsk '''gcc'''.&lt;br /&gt;
&lt;br /&gt;
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk&lt;br /&gt;
&lt;br /&gt;
 gcc –o hello hello.c&lt;br /&gt;
&lt;br /&gt;
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga &lt;br /&gt;
&lt;br /&gt;
 ./hello&lt;br /&gt;
&lt;br /&gt;
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt: &lt;br /&gt;
&lt;br /&gt;
* MinGW	- http://www.mingw.org/&lt;br /&gt;
* Cygwin - http://www.cygwin.com/&lt;br /&gt;
&lt;br /&gt;
====C/C++ Integreeritud programmeerimiskeskkonnad (IDE)====&lt;br /&gt;
* Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''codeblocks'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Geany - http://www.geany.org/ (Windows, Linux)&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Süntaksi värvimisega tekstiredaktorid ===&lt;br /&gt;
[[File:Scite.png|200px|thumb|none|SciTE]]&lt;br /&gt;
* SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''SciTE'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Notepad++ - http://notepad-plus-plus.org/ (Windows)&lt;br /&gt;
&lt;br /&gt;
=== Diagrammide joonistamisvahendid ===&lt;br /&gt;
&lt;br /&gt;
* ArgoUML - https://argouml.en.softonic.com/ (Windows, Linux)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''argouml'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''astah-com'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''yEd'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''jsp'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Argouml.png|200px|thumb|none|argoUML]]&lt;br /&gt;
| [[File:Yed.png|200px|thumb|none|yEd]]&lt;br /&gt;
| [[File:Jsp.png|thumb|none|Jackson System Programming (JSP) Editor]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3046</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3046"/>
				<updated>2021-01-26T16:44:28Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: harno link asendatud taltech lingiga&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.taltech.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3045</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3045"/>
				<updated>2021-01-25T08:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: ül1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/esimene_tund21K.pdf 25.01.2021 ülesanded]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3044</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3044"/>
				<updated>2021-01-25T07:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: sissejuhatuse link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_21_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3043</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3043"/>
				<updated>2021-01-25T06:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: sissejuhatus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PROG2kev21/abi2/Progr%20II_20_%20IAX0584.pptx Sissejuhatus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3042</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3042"/>
				<updated>2021-01-25T06:54:23Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: kdt1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/Pr2_kodu_I/ Kodutöö 1 variandid]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3041</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3041"/>
				<updated>2021-01-25T06:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: punk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2021 kevad]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3040</id>
		<title>IAG0582 - Programmeerimine II</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0582_-_Programmeerimine_II&amp;diff=3040"/>
				<updated>2021-01-25T06:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;Trkal: failit66tlus video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[IAG0582 - Programming II|English course page]] [[File:United Kingdom.png|32px|link=IAG0582 - Programming II]]&lt;br /&gt;
=E-Õpe=&lt;br /&gt;
[https://echo360.org.uk/media/11978039-2c11-49b1-8413-a6e697faa718/public Failitöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/16o9_bTWsDoVP_Jw-qJoLn4qZIKC16axpq3_i9L18CxM/edit?usp=sharing Punktitabel 2020 sügis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1E6bMhDcp9GmTKups8Ukic9mlkeodfFp24oAg4uV6rAA/edit?usp=sharing PostgreSQL oma arvutisse paigaldamise juhend]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/292565ef-e01e-4859-91c7-06f3f8fc3d78/public Kodutöö 2 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/SQL3ja5.c SQL labori 3. ja 5. ül näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/stac3.c Stacki näide]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/dyn/ kodu1 näidis]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1uFQgAoKpQ_KS2JWnZgwGb_ZpC7U-MXXXJNs-WMCwaXo/edit?usp=sharing Abimaterjalid iseseisvaks õppimiseks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/7535cd84-4e53-4700-867d-81fe314c416e/public Putty juhend video eesti keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/c250b333-a223-4e47-a994-a787423ee8ef/public Putty juhend video inglise keeles]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;[https://docs.google.com/spreadsheets/d/1zMMFVKR-wr4klmn75XScgJY_sCgo5641sxTJSDVwrBU/edit?usp=sharing Eeleksamile registreeumine]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.google.com/document/d/1qfV3LKe8fIb_Tlc5J2N95bXf3xWHZOvHA63gNdmXI9M/edit?usp=sharing Eksamile registreerumine - peale eksamieelduse kätte saamist ning kodutööde esitamist]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf Kaugelt ligipääsu juhend]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/yl%202%2018.pdf Ülesanded 7. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
18.03 Ülesande jaoks laeti ülesse juba tehtud kood, seetõttu palun tehke ära lisa ülesanne ja kodune ülesanne, kus tuleb lisaks muuta Linked List Double Linked Listiks (https://www.geeksforgeeks.org/doubly-linked-list/).&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/6e950c0b-ebe3-4cda-9a0a-cd39edc9a76b/public Sissejuhtus 8. nädala ülesannete jaoks]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Pr2%2025.pdf Ülesanded 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/lisayl.pdf Lisa ülesanne 8. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/838c8643-4d1a-4f07-9a5f-d2ff79b45646/public Loeng 9. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/prest0104est.pdf 9. nädala ülesanne]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/Kodut%c3%b6%c3%b6%203.pdf Kodutöö 3]&amp;lt;br /&amp;gt;&lt;br /&gt;
Koodi kirjutamine toimub enda arvutis kasutades isevalitud tekstiredaktorit(NP++/Geany/VSCode/vms).Kompileerimine toimub kooliarvutis kasutades kaugligipääsu.Kirjutatud kood tuleb tõsta enda arvutist kooli arvutisse kasutades programmi WinSCP(juhend http://pld.ttu.ee/~trkal/Download%20PuTTY.pdf ).P ketas on WinSCP-s nimega StudentsHome. Kui kood on üle tõstetud tuleb see kooli arvutist üles leida, kooliarvutis saab folderite vahel liikuda kasutades käsku &amp;quot;cd&amp;quot;(change directory, nt &amp;quot;cd P&amp;quot;, tagasi saab minna kasutades &amp;quot;cd .&amp;quot;), folderi sisu saab vaadata käsuga &amp;quot;ls&amp;quot;(list).Kui käsk &amp;quot;ls&amp;quot; näitab ületõstetud programmi saab seda kompileerida käsuga &amp;quot;gcc&amp;quot;(nt &amp;quot;gcc failinimi.c&amp;quot;, andmebaasi failide puhul &amp;quot;gcc failinimi.c -lpq&amp;quot;). Kui programm ei kompileeru näitab terminali aken erroreid. Kui kompileerimine õnnestus saab kompileeritud programmi jooksutada käsuga &amp;quot;./a.out&amp;quot;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/ce4c0be0-18b5-4969-a7f6-421f4a84b005/public Praktikum 10. nädal]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://echo360.org.uk/media/4e8955dc-f0be-40d0-b75c-f8269d762bdf/public Ühe kontrolltöö2 töö põhjalikum lahkamine (inglise keeles)]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://echo360.org.uk/media/d5d1f69d-132a-46e6-9f83-5904f0efe62b/public Silumine ja veatöötlus]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://pld.ttu.ee/~trkal/E/ss%20est.pdf silumise ja veatöötluse slaidid]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Kodutöö 2 variant valitakse matrikli numbri viimase numbri järgi&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAX0583%2cIAX0584PROGRAMMEERIMINE/PR2_iax0584/Pr2eesti/PR220k/home_kodune2Pr2/ Link kodutöö kahe variantidele]&lt;br /&gt;
&lt;br /&gt;
== Materjalid == &lt;br /&gt;
[https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=3&amp;amp;p_lang=ET&amp;amp;p_open_node2=107&amp;amp;p_session_id=2886060&amp;amp;p_id=100821&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING Ainekaart]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/ Vladimir Viies]&lt;br /&gt;
&lt;br /&gt;
[http://www.blue.pri.ee/ttu/ Risto Heinsar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~lembit/prog2/ Lembit Jürimägi]&lt;br /&gt;
&lt;br /&gt;
===Vanad materjalid===&lt;br /&gt;
&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582 Hannes] [http://git.hkinks.com/hkinks/iag0582/tree/master/ Kinks]&lt;br /&gt;
&lt;br /&gt;
[http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0582/ ''&amp;lt;u&amp;gt;Helena Kruus&amp;lt;/u&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
===Moodle materjalid===&lt;br /&gt;
Ise registreerumisega kursusele &amp;quot;IAX0584 Programmeerimine II&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
https://moodle.hitsa.ee/course/view.php?id=4710&lt;br /&gt;
&lt;br /&gt;
== Praktikumid ==&lt;br /&gt;
&lt;br /&gt;
==Üldstruktuur==&lt;br /&gt;
Antud kursus on jätk kursusele „Programmeerimine I“, milles pearõhk oli pööratud ülesande lahendusalgoritmi koostamisele. „Programmeerimine II“ annab lisaks vajalike teadmisi algoritmi realiseerimisele  kõrgkeele(C,C++,Java) keskkonnas.&lt;br /&gt;
&lt;br /&gt;
Kursus on jaotatud 4ks mooduliks, kus iga moodul sisaldab näiteülesandeid, mis tuleb õppimise käigus kindlasti läbi lahendada.&lt;br /&gt;
Kahes esimeses moodulis on komplektid teemaakohaseid  ülesandeid, millest vähemalt ühe lahenduse peaks saatma kursuse tuutorile, et kontrollida enda mõttekäiku. &lt;br /&gt;
&lt;br /&gt;
Kahes viimases moodulis on testid koos vastustega – soovitus:vastuseid mitte eelnevalt piiluda. Vastasel juhul võib tekkida näiv tunne ülesande lihtsuse ja materjali arusaadavuse kohta.&lt;br /&gt;
&lt;br /&gt;
Kolmandas moodulis on individuaalne kohustuslik kodune töö, mille lahendus tuleb vormistada vastavalt kursuse üldosas toodud juhendile.&lt;br /&gt;
Neljas moodul sisaldab  kodust ülesannet, mille lahendamist tuleks teha rühmatööna. Rühm peaks koosnema 3 liikmest ja selle moodustamine võiks toimuda kas foorumi kaudu või siis tuutori poolt. Ülesandes on jällegi kindlalt eristatavad osad: 1- sideandmebaasiga, päringud  2- andmetöötlus, vastavalt ülesandele 3-kasutajaliides algandmete sisestamiseks ja tulemuse kuvamiseks.&lt;br /&gt;
&lt;br /&gt;
Erandjuhuna võib õppija sooritada selle kodutöö üksinda, viimane on reegliks mikrokontrolleri programmeerimise valimisel kodutööks.&lt;br /&gt;
&lt;br /&gt;
===Ainerõhud moodulites===&lt;br /&gt;
C programmi koostamisel on eriline koht viitadel, millede asjatundlik kasutamine muudab programmi kiiremaks ja effektiivsemaks.&lt;br /&gt;
Programmi töö käigus saab andmete poole pöörduda kas muutuja nime kaudu(keskkond seostab ise asukohaga mälus) või viida kaudu(sisaldab andmete asukoha mäluaadressit). Eriti selgelt väljendub viimase kasutamise effektiivsus töös massiividega. On selge, et ühest programmi moodulist , teise programmi moodulisse  massiivi edastamine palju ressursinõudlikum, kui ainult selle esimese elemendi edastus. Viidaga teeme aga just viimast!&lt;br /&gt;
&lt;br /&gt;
Teine tee andmetöötluse effektiivsuse tõstmiseks on andmete ühildamine ühtseks muutujaks. Näiteks kui on meil ülesanne, kus nõutakse üliõpilaste keskmiste hinnete leidmist, on sellise struktuurse  muutuja kasutamine, mis sisaldab nii üliõpilase identifikaatorit, kui tema hindeid, tunduvalt arusaadavam, kui mitme erineva massiivi kasutuselevõtt. Objektorienteeritud programmeerimises(OOP) minnakse aga veelgi edasi ja ühendatakse struktuursed andmed neid töötlevate programmimoodulitega.&lt;br /&gt;
Kahes esimeses moodulis tuleb peatähelepanu keskendada viida mõistele ja selle kasutamise võimalustele.&lt;br /&gt;
Operatsioonisüsteem eraldab igale programmile sisemälus teatud mälu. Andmetele eraldavat osa juhib programm, kasutades kas statilist või dünaamilist mälueraldamist. Esimesel juhul peab kogu eraldatav mälu olema kirjeldatud programmi töö alguseks. Teisel juhul ei , töö käigus  saab mälu vajadus muutuda.&lt;br /&gt;
&lt;br /&gt;
Kolmas moodul ongi pühendatud dünaamilisele mälujaotusele, mis sisaldab alati kahte tegevust: mälu hõivamist ja selle vabastamist.  Üheks mälu dünaamilise kasutamise võtteks on rekursiooni kasutamine. Viimane võimaldab veel taandada ülesande keerukust, näiteks n! leidmine  asendub (n-1)! Leidmisega.Rekursiooni vale kasutamine aga „kurnab“ arvutiressursse. Selle temaatika kinnistamiseks tuleb sooritada esimene kodutöö.&lt;br /&gt;
&lt;br /&gt;
Neljas moodul on kokkuvõtlik ja võimaldab teise kodutöö sooritamisel kontrollida eelnenu omandamise taset. Samuti lõppeb neljas moodul kontrolltöö sooritamisega, mis annab eelduse edukaks eksamiks.&lt;br /&gt;
Moodulis pakutav , OOP tutvustav materjal, on lisamaterjali staatuses ja selle valdamine eksamil ei ole kohustuslik, kuid meeldiv võimalus näidata enda häid teadmisi.&lt;br /&gt;
&lt;br /&gt;
== Õppetöö ==&lt;br /&gt;
=== Kontrolltööd ===&lt;br /&gt;
I kontrolltöö 6. nädal kirjed ja failid (25p)&lt;br /&gt;
&lt;br /&gt;
II kontrolltöö 12. nädal dünaamiline mälujaotus (25p)&lt;br /&gt;
&lt;br /&gt;
Kontrolltööd toimuvad loengus.&lt;br /&gt;
&lt;br /&gt;
=== Kodused tööd ===&lt;br /&gt;
I kodune töö - 15p kirjed ja failid&lt;br /&gt;
&lt;br /&gt;
II kodune töö - 15p dünaamiline mälujaotus, rekursiivsus&lt;br /&gt;
&lt;br /&gt;
III kodune töö - 10p valikuline:&lt;br /&gt;
* mikrokontrolleri ülesanne&lt;br /&gt;
* andmebaasi ülesanne&lt;br /&gt;
Esimesed kaks kodust tööd peavad olema tehtud enne eeleksamit 16 nädal neljapäev. Kolmanda koduse töö tähtaeg kuni eksamisessiooni lõpuni.&lt;br /&gt;
&lt;br /&gt;
=== Praktika ===&lt;br /&gt;
Kokku on praktika eest võimalik kokku saada 36p&lt;br /&gt;
* kohaloleku eest 0.5p (kokku max 7p)&lt;br /&gt;
* tunniülesanded kokku max 36p. Sellest kuni 24p moodustavad kaks külalispraktikumi:&lt;br /&gt;
** andmebaasi praktikum max 12p&lt;br /&gt;
** mikrokontrolleri praktikum max 12p&lt;br /&gt;
&lt;br /&gt;
=== Eksamieeldus === &lt;br /&gt;
# Eeleksami soorituse eelduseks on 51p enne 15ndat nädalat.&lt;br /&gt;
# Eksami soorituse eelduseks eksamisessioonil on 50p (praktika + kontrolltöö 1 + kontrolltöö 2 + boonus (max 10p))&lt;br /&gt;
&lt;br /&gt;
=== Eksam === &lt;br /&gt;
Eksami hinne kujuneb välja järgmiste punktide arvelt:&lt;br /&gt;
Kodutöö 1 + kodutöö 2 + kodutöö 3 + kirjalik eksamitöö(max 65p)&lt;br /&gt;
&lt;br /&gt;
Plagiaadikahtluse puhul on esitatud töö hindeks 1p. Punktide parandamiseks tuleb osata oma tööd kaitsta.&lt;br /&gt;
&lt;br /&gt;
==3. Kodutöö==&lt;br /&gt;
Kolmanda kodutöö tegemiseks on üliõpilasel valikuvabadus. Mõlemad kodutööd on sissejuhatuseks spetsiifilisematesse teemadesse. &lt;br /&gt;
# Andmebaasi ülesanne - Suunaga rohkem tarkvara ja infosüsteemide poole andes ülevaate andmebaaside kasutusest ja PostgreSQL andmebaasimootorist. Ülesande käigus tuleb luua minimalistlik õppeinfosüsteem, mis suhtleks andmebaasiga.&lt;br /&gt;
# Mikrokontrolleri ülesanne - Suunaga riistvaralähedasema programmeerimise poole. Ülesande käigus õpitakse mikrokontrollerit programmeerima.&lt;br /&gt;
===Andmebaasi kodutöö===&lt;br /&gt;
''Teemat puudutav [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/db_praks.pdf tunniülesanne]''&lt;br /&gt;
&lt;br /&gt;
* Antud ülesande kaal on 10p.&lt;br /&gt;
* Ette on antud olemasolev PostgreSQL andmebaas, mis sisaldab endas lihtsa kursuste haldamiseks mõeldud infosüsteemi andmeid. &lt;br /&gt;
Kõigepealt tuleks registreerida oma tudengikoodiga, mille tulemusena loodakse tudengikoodi nimega kasutaja ja sellele vastav andmebaas. Loodavas andmebaasis on olemas õigused nii kirjete lugemiseks, kui ka lisamiseks, muutmiseks ja kustutamiseks.&lt;br /&gt;
 '''[http://ewis.pld.ttu.ee/reg Registreerimine]'''&lt;br /&gt;
* Andmed ühendumiseks:&lt;br /&gt;
 Host: ewis.pld.ttu.ee&lt;br /&gt;
 Andmebaas: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Port: 5432&lt;br /&gt;
 Kasutaja: ''&amp;lt;tudengikood&amp;gt;''&lt;br /&gt;
 Parool: ''&amp;lt;registreerimisel valitud parool&amp;gt;''&lt;br /&gt;
* Andmebaasi visuaalseks haldamiseks võib kasutada mõnda selleks ettenähtud tarkvara, nt&lt;br /&gt;
** PgAdmin III&lt;br /&gt;
** [http://ewis.pld.ttu.ee/mywebsql/ MyWebSQL]&lt;br /&gt;
** [http://ewis.pld.ttu.ee/phpPgAdmin/ phpPgAdmin]&lt;br /&gt;
* Andmestruktuur&lt;br /&gt;
[[File:Is_struct.png]]&lt;br /&gt;
* Kui on vajadus algne andmebaas taastada, siis selleks võib kasutada järgnevat SQL koodi - [http://ati.ttu.ee/~hkinks/iag0582/3%20kodune/create_tables.sql Link]&lt;br /&gt;
* Kodutöö saata aadressile '''trkal@ati.ttu.ee'''&lt;br /&gt;
====Ülesanded====&lt;br /&gt;
Koostada tekstipõhise kasutajaliidesega programm, mis võimaldaks kasutada järgmist funktsionaalsust:&lt;br /&gt;
# Tudengi lisamine. Kasutajalt küsitakse: eesnimi, perekonnanimi, sünnikuupäev. Programm peaks looma iga tudengi jaoks unikaalse tudengikoodi. (2p)&lt;br /&gt;
# Tudengi muutmine ja kustutamine. (2p)&lt;br /&gt;
# Aine lisamine, muutmine, kustutamine. (2p)&lt;br /&gt;
# Hinde lisamine õpilasele vastava aine eest. Hinde lisamisel peaks ka uuendama kaalutud keskhinnet (student.average_grade) võttes arvesse ainepunkte (subject.credits). (2p)&lt;br /&gt;
# Tudengite otsing kkh põhjal. Nt. otsimaks keda eksmatrikuleerida, peaks saama anda ette tingimuse ''kaalutud keskhinne &amp;lt; 1'' või kellele cum laude anda tingimusel ''kaalutud keskhinne &amp;gt; 4.8''. (2p)&lt;br /&gt;
&lt;br /&gt;
Programm peab liidestuma etteantud andmebaasiga ning kasutama seda andmete lugemiseks ja hoiustamiseks.&lt;br /&gt;
&lt;br /&gt;
Suureks plussiks on:&lt;br /&gt;
* Sisendi valideerimine ehk programm ei jookse kokku ega lähe tsüklisse, kui sisestatakse näiteks numbri asemel täht.&lt;br /&gt;
* Makefile kasutus kompileerimisel.&lt;br /&gt;
&lt;br /&gt;
====PostgreSQL teegiga koodi kompileerimine====&lt;br /&gt;
Selleks, et kirjutada C koodi, mis ühenduks PostgreSQL andmebaasiga, on vaja eelnevalt paigaldada vastav ''connector'' teek (libpq) ja kompilaatorile selgeks teha, kust neid leida.&lt;br /&gt;
&lt;br /&gt;
Kompileerida on kõige lihtsam kasutades TTÜ klassiarvuteid, kus on PostgreSQL eelnevalt paigaldatud. Selleks tuleks SSH abil ühenduda mõnda klassiarvutisse. Selle kohta on põhjalikumad juhendid:&lt;br /&gt;
*[http://ati.ttu.ee/wiki/index.php/Arvutiklassis_t%C3%B6%C3%B6tamise_juhend#Ligip.C3.A4.C3.A4s_v.C3.A4ljastpoolt_.C3.BClikooli_sisev.C3.B5rke Üldisem info väljastpoolt sisevõrku töötamise kohta]&lt;br /&gt;
*[http://mini.li.ttu.ee/~priit/IAY0340.2013/ssh_setup/putty_guide.html Piltidega juhend Putty kohta]&lt;br /&gt;
&lt;br /&gt;
Kui on sellegipoolest soovi enda arvutis kõnealune libpq teek ise paigaldada, siis abiks on järgnev juhend:&lt;br /&gt;
*[[PostgreSQL setup]]&lt;br /&gt;
&lt;br /&gt;
Kompileerides tuleks kindlasti lisada oma C koodis vastav teek:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;pgsql/libpq-fe.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Kui olete teegi ise paigaldanud, siis selle asukoht võib varieeruda ja peaksite asendama nt ''#include &amp;lt;libpg-fe.h&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Kompileerimisel tuleb anda ka lisaargument linkerile '''-lpq'''. Näiteks ''gcc -o program main.c -lpq''.&lt;br /&gt;
&lt;br /&gt;
====Abimaterjalid====&lt;br /&gt;
* [http://www.postgresql.org/docs/9.1/interactive/index.html PostgreSQL dokumentatsioon]&lt;br /&gt;
* [http://ati.ttu.ee/~hkinks/iag0582/praktikum11/sql-cheat-sheet.pdf SQL cheatsheet]&lt;br /&gt;
* Ülesannet võib lahendada meelepärases programmeerimiskeeles. C kohta on olemas näidiskood ja põhjalikum juhis kompileerimiseks. Java puhul on toodud samuti näidisprogramm, kuid ülejäänud keelte puhul tuleks PostgreSQL andmebaasiga ühenduse loomine iseseisvalt selgeks teha.&lt;br /&gt;
&lt;br /&gt;
=====C Näidiskood=====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0582/praktikum11/psql.c Näidiskood] - loob ühenduse eelnimetatud PostgreSQL andmebaasiga ja pärib 10 esimest kirjet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrokontrolleri ülesanne ===&lt;br /&gt;
Juhendi leiab [http://pld.ttu.ee/~trkal/mikrokontrollerid/MKKT.pdf siit].&lt;/div&gt;</summary>
		<author><name>Trkal</name></author>	</entry>

	</feed>