<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?action=history&amp;feed=atom&amp;title=IAG0581_-_Programmeerimine_I_%282015%29</id>
		<title>IAG0581 - Programmeerimine I (2015) - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://strudel.pld.ttu.ee/wiki/e/index.php?action=history&amp;feed=atom&amp;title=IAG0581_-_Programmeerimine_I_%282015%29"/>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0581_-_Programmeerimine_I_(2015)&amp;action=history"/>
		<updated>2026-05-20T08:06:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0581_-_Programmeerimine_I_(2015)&amp;diff=2475&amp;oldid=prev</id>
		<title>Hkinks: backed up 2015/2016 page (by SublimeText.Mediawiker)</title>
		<link rel="alternate" type="text/html" href="https://strudel.pld.ttu.ee/wiki/e/index.php?title=IAG0581_-_Programmeerimine_I_(2015)&amp;diff=2475&amp;oldid=prev"/>
				<updated>2016-08-11T10:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;backed up 2015/2016 page (by SublimeText.Mediawiker)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[IAG0581 - Programming I|English course page]] [[File:United Kingdom.png|32px|link=IAG0581 - Programming I]]&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;
* '''[https://docs.google.com/document/d/1uf-X2HZC73b0U4mVBCY7D9wrrgBvu5UtlQJ5yvSJ90I/pub Teated]'''&lt;br /&gt;
* '''[https://docs.google.com/spreadsheets/d/1MSrsvUsdJUbMzJ5MYUwNSj0BjIJKyZVvDaLv8uKlTMM/pubhtml?gid=882379455&amp;amp;single=true Tulemused]'''&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/Materials ===&lt;br /&gt;
''Vladimir Viies'' - http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAG0581,IAG0582,PROGRAMMEERIMINE/PR1/&lt;br /&gt;
&lt;br /&gt;
''Risto Heinsar'' - http://www.blue.pri.ee/ttu/programmeerimine-i/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vanad materjalid&lt;br /&gt;
&lt;br /&gt;
''Helena Kruus'' - http://www.tud.ttu.ee/im/Vladimir.Viies/materials/Helena_materjalid/iag0581/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Moodle materjalid ===&lt;br /&gt;
Ise registeerumisega kursususele &amp;quot;IAG0581 Programmeerimine I&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
https://moodle.e-ope.ee/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Praktikumitunnid (Õppejõud Vladimir Viies) ===&lt;br /&gt;
==== 4. nädal ====&lt;br /&gt;
[http://ati.ttu.ee/wiki/images/Praktikum4.pdf Slaidid]&lt;br /&gt;
&lt;br /&gt;
[[C/prefix_and_postfix|Lisa lugemist]]&lt;br /&gt;
==== 5. nädal ====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/labs/praktikum5.pdf Rühmatöö]&lt;br /&gt;
==== 6. nädal ====&lt;br /&gt;
Näide alamprogrammide loomisest kasutades funktsioone:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; collapse=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* funktsioone saab deklareerida kahel viisil: */&lt;br /&gt;
// funktsiooni deklaratsioon ja kohe defineerimine&lt;br /&gt;
int findSquare(int number) {&lt;br /&gt;
  return number*number;  // funktsioon peab tagastama int tüüpi muutuja ja v6tab sisendiks int tyypi argumendi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// prototyyp (funktsiooni deklaratsioon) ja definitsioon eraldi&lt;br /&gt;
void input(int *value);&lt;br /&gt;
void output(int v);     &lt;br /&gt;
&lt;br /&gt;
//peafunktsioon&lt;br /&gt;
int main(void) {&lt;br /&gt;
  int n;         // deklareerime muutuja n, mis asub nt aadressil x01&lt;br /&gt;
  input(&amp;amp;n);     // anname funktsioonile edasi tema aadressi (x01), kuhu kysitakse tema väärtus&lt;br /&gt;
&lt;br /&gt;
  // kutsume välja ruudu leidmise funktsiooni, andes ette muutuja n väärtuse ja talletame tulemuse muutujasse vastus&lt;br /&gt;
  int vastus = findSquare(n);&lt;br /&gt;
&lt;br /&gt;
  // väljastame leitud vastuse, andes selle (väärtuse) ette väljastusfunktsioonile&lt;br /&gt;
  output(vastus);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* sisestusfunktsioon.&lt;br /&gt;
void tüüpi funktsioon - ei tagastata midagi.&lt;br /&gt;
argumendina antakse ette pointer, &lt;br /&gt;
milles hoitakse muutuja asukohta mälus.&lt;br /&gt;
*/&lt;br /&gt;
void input(int *value) {&lt;br /&gt;
  printf(&amp;quot;Sisesta n:\n&amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d&amp;quot;, value);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* v2ljastusfunktsioon&lt;br /&gt;
argumendina antakse ette v22rtus&lt;br /&gt;
*/&lt;br /&gt;
void output(int v) { &lt;br /&gt;
  printf(&amp;quot;%d\n&amp;quot;, v);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kui sisestatavaid andmeid on palju ja testimisel klaviatuurilt sisestamine läheb pikaks, siis ei ole keelatud suvalisi sisendandmeid genereerida. Näide sellest, kuidas suvalist arvu genereerida C-s: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; collapse=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt; // aja küsimine&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt; // srand ja rand&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  srand(time(NULL));&lt;br /&gt;
  int randomNumber = rand()%10 +1; // suvaline number 1-10&lt;br /&gt;
  printf(&amp;quot;%d\n&amp;quot;, randomNumber);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== 8. nädal ====&lt;br /&gt;
Näiteid kasutaja sisestuse valideerimisest&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; collapse=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
/* sisestused arvu kontrolliga. Mõned näited, mis lasevad kasutajsõbralikumat sisestust luua.&lt;br /&gt;
Scanf ei ole üldiselt niivõrd interaktiivseks sisestuseks mõeldud. Ta eeldab kindla formaadiga sisestust ja kui seda ette ei anta,&lt;br /&gt;
siis loetakse mida võimalik ja minnakse edasi lihtsalt. Andmed mida lugeda ei suudetud, jäetakse stdin puhvrisse alles ja see tekitab&lt;br /&gt;
edaspidi probleeme.&lt;br /&gt;
&lt;br /&gt;
Üldiselt mida nende asemel soovitatakse on fgets() ja sscanf(); &lt;br /&gt;
*/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#define EX 3 // näite valik&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    int arv;&lt;br /&gt;
    &lt;br /&gt;
    # if EX==1&lt;br /&gt;
    // scanf kasutamine sisestuse kontrolliks&lt;br /&gt;
    while(1) {&lt;br /&gt;
        printf(&amp;quot;Sisesta arv\n&amp;quot;);&lt;br /&gt;
        if (scanf(&amp;quot;%d&amp;quot;, &amp;amp;arv) != 1) { &lt;br /&gt;
            printf(&amp;quot;Viga sisestusel\n&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            // peame puhvri tühjaks tegema, et arvu küsimine tsüklisse kinni ei jääks&lt;br /&gt;
            int c;&lt;br /&gt;
            while ( (c = getchar()) != '\n' &amp;amp;&amp;amp; c != EOF ) { } &lt;br /&gt;
        } else { &lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;Loeti %d\n&amp;quot;, arv);&lt;br /&gt;
    # endif&lt;br /&gt;
    &lt;br /&gt;
    # if EX==2&lt;br /&gt;
    // fgets ja sscanf&lt;br /&gt;
    char buffer[256];&lt;br /&gt;
    while (1) {&lt;br /&gt;
        printf(&amp;quot;Sisesta arv\n&amp;quot;);&lt;br /&gt;
        if (fgets(buffer, sizeof(buffer), stdin)) {&lt;br /&gt;
             if ( sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;arv) ) { // sisestusest püütakse filtreerida formaadi järgi välja täisarv&lt;br /&gt;
                printf(&amp;quot;Sisestati naturaalarv %d\n&amp;quot;, arv);&lt;br /&gt;
                break;&lt;br /&gt;
            } else printf(&amp;quot;Sisestati string %s\n&amp;quot;, buffer);       &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # endif&lt;br /&gt;
        &lt;br /&gt;
    # if EX==3&lt;br /&gt;
    // isdigit näide&lt;br /&gt;
    char buffer[256];&lt;br /&gt;
    while (1) {&lt;br /&gt;
        printf(&amp;quot;Sisesta arv\n&amp;quot;);&lt;br /&gt;
        if (fgets(buffer, sizeof(buffer), stdin)) {&lt;br /&gt;
            int i;&lt;br /&gt;
            int int_flag = 1; // eeldame et tegu on täisarvuga algul&lt;br /&gt;
            for (i = 0; i &amp;lt; sizeof(buffer) &amp;amp;&amp;amp; buffer[i] != '\n'; i++) { //käime kõik elemendid läbi, kuni jõuame lõpuni või reavahetuseni&lt;br /&gt;
                if (!isdigit(buffer[i])) {&lt;br /&gt;
                    int_flag = 0;&lt;br /&gt;
                    printf(&amp;quot;%c pole number.\n&amp;quot;, buffer[i]);&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (int_flag &amp;amp;&amp;amp; i&amp;gt;0) {&lt;br /&gt;
                arv = atoi(buffer);&lt;br /&gt;
                printf(&amp;quot;Sisestati arv %d\n&amp;quot;, arv);&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # endif&lt;br /&gt;
            &lt;br /&gt;
    # if EX==4&lt;br /&gt;
    // atoi kasutamine sisestuse valideerimiseks&lt;br /&gt;
    char buffer[256];&lt;br /&gt;
    while (1) {&lt;br /&gt;
        printf(&amp;quot;Sisesta arv\n&amp;quot;);&lt;br /&gt;
        scanf(&amp;quot;%s&amp;quot;, &amp;amp;buffer);&lt;br /&gt;
        // atoi - string to integer conversion. Proovime kas õnnestus. Kui ei õnnestunud, siis tagastab 0. Samas see tähendab ka et 0 sisetamine on viga.&lt;br /&gt;
        if ( (arv = atoi(buffer)) != 0) { &lt;br /&gt;
            printf(&amp;quot;Sisestati arv %d.\n&amp;quot;, arv);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # endif&lt;br /&gt;
                &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== 13. nädal ====&lt;br /&gt;
[http://ati.ttu.ee/~hkinks/iag0581/examples/file_string/file_string.c Failist lugemine]&lt;br /&gt;
==Õppetöö==&lt;br /&gt;
===Punktisüsteem===&lt;br /&gt;
* 15p - I kontrolltöö&lt;br /&gt;
* 15p - II kontrolltöö&lt;br /&gt;
* 15p - I kodutöö&lt;br /&gt;
* 15p - II kodutöö&lt;br /&gt;
* 40p - Tunnitöö&lt;br /&gt;
* 10p - Boonus&lt;br /&gt;
&lt;br /&gt;
Hinne&lt;br /&gt;
* &amp;lt; 50p - 0&lt;br /&gt;
* 50p - 1&lt;br /&gt;
* 60p - 2&lt;br /&gt;
* 70p - 3&lt;br /&gt;
* 80p - 4&lt;br /&gt;
* 90p - 5&lt;br /&gt;
&lt;br /&gt;
===Loengud===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kuupäev !! Teema !! Tähtaeg&lt;br /&gt;
|-&lt;br /&gt;
| 10.09.2015 || algoritmi mõiste ||&lt;br /&gt;
|-&lt;br /&gt;
| 24.09.2015 || arvsüsteemid, ekstreemumid ja mullsort, kalender ||&lt;br /&gt;
|-&lt;br /&gt;
| 08.10.2015 || UML, Shell sort. || I kodutöö  algoritmi kaitsmine&lt;br /&gt;
|-&lt;br /&gt;
| 22.10.2015 || kontrolltöö kirjutamine (algoritmi koostamine) || '''I kontrolltöö''' &lt;br /&gt;
|-&lt;br /&gt;
| 05.11.2015 || C Keel, põhilaused, dialoogprogramm. || '''I kodutöö''' (algoritm + programmikood)&lt;br /&gt;
|-&lt;br /&gt;
| 19.11.2015 || sortimisagoritmi realiseerimine, alamprogrammid ||&lt;br /&gt;
|-&lt;br /&gt;
| 03.12.2015 || kontrolltöö kirjutamine (programmikood) || '''II kontrolltöö''' ja '''II kodutöö ''' &lt;br /&gt;
|-&lt;br /&gt;
| 17.12.2015 || Arvestustöö (juhul kui on vaja) ||&lt;br /&gt;
|}&lt;br /&gt;
http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAG0581,IAG0582,PROGRAMMEERIMINE/PR1/prog_I__est/Progra1Kalender15.xls&lt;br /&gt;
&lt;br /&gt;
===I Kodutöö ülesanne===&lt;br /&gt;
http://www.tud.ttu.ee/im/Vladimir.Viies/materials/IAG0581,IAG0582,PROGRAMMEERIMINE/PR1/prog_I__est/Kodune_I.pdf&lt;br /&gt;
&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;
=== 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;
&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)&lt;br /&gt;
&lt;br /&gt;
Klassi arvutites terminali käsk '''geany'''&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 - http://argouml.tigris.org/ (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>Hkinks</name></author>	</entry>

	</feed>