IAX0583 - Programmeerimine I
Contents
Viited
Materjalid
Aine õppejõudude materjalid
Vanad materjalid
Moodle materjalid
Ise registeerumisega kursususele "IAG0581 Programmeerimine I".
I Kodutöö ülesanne
I kodutöö ülesande genereerimine
I kodutöö tähtaeg on 8. nädal. Esitades hiljem, läheb iga järgnev nädal puntkisummast maha 1 punkt.
Praktikumid
Jooksvad pratkikumi materjalid tekivad GITi repositooriumi:
http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581
1. nädal
Tutvumine töövahendite ja GIT-iga. Tasemetesti tegemine, et saada esmast tagasisidet õpilaste üldise taseme kohta. Tasemetesti põhjal kursusepunkte ei anta, kuid eduka tegemise puhul saab soovitada eelarvestuse tegemist 2. loengul.
Vastused kirjutada endale meelepärases vormis, näiteks kasutades LibreOffice (konsooli käsk libre) ja valmis töö salvestada kasutades GIT-i. Juhul kui GIT-i kasutamine ei õnnestu esimesel korral, siis saata vladimir.viies@gmail.com .
2. nädal
Tutvumine sorteerimisalgoritmidega.
3. nädal
Jätkamine sorteerimisalgoritmidega. Sularahaautomaadi ülesanne. http://gitlab.pld.ttu.ee/Hannes.Kinks/iag0581/blob/master/Praktikum3/%C3%9Clesanded.md (Ülesande detailid võivad kuni praktikumi alguseni muutuda)
Töö praktikumis
Arvutiklassis töötamise kohta üldiselt: Arvutiklassis töötamise juhend
Üksikasjalik kaugtöö juhend piltidega EST ENG
Töö alustamisel terminalis on vaja paika seada töökeskkond käsuga cad
Versioonihaldus
Praktikumitundides on kohustuslik kasutada oma koodi hoiustamiseks versioonihaldustarkvara Git ja hoiustada seda serveris
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:
- Logides sisse ID-kaardiga aadressil http://pass.ttu.ee
- Pöörduda ruumi ICT-410 või SOC-128
Esmakordsel sisenemisel tuleks kõige pealt kursuse tarbeks luua oma projekt. Selleks tuleks vajutada nupul New project.
Seejärel avaneval lehel tuleks oma projektile anda nimi iag0581. Lisaks tuleks veenduda, et projekti avalikuse seade on internal. Vastav nimi ja avalik projekt on oluline selleks, et me leiaksime teie tehtud tööd üles. Lõpuks vajutage Create project.
Sellega on repositoorium loodud.
Mis on Git?
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. Giti repositoorium on lisaks üks variant oma programmi lähtekoodi avalikustamiseks või tehtud projektide portfoolio hoidmiseks. Oma Giti repositooriumi hoidmiseks on erinevaid veebisaite, kus on võimalik oma koodi tasuta hoida. Näiteks: github, bitbucket, gitlab.
Git-i allalaadimine
Kõikides klassiarvutites on Git eelnevalt paigaldatud ja selle kasutamiseks tuleks avada lihtsalt terminal.
Kodus kasutamiseks tuleks Git kõigepealt alla laadida lingilt
Installeerimisel küsitavad sätted võib jätta vaikimisi nii nagu on.
Git-i kasutamine
Alustada tuleks sellest, et avame terminali (või Git bash Windows-i puhul).
Kloonimine
Eeldades, et Git-i repositoorium on tehtud (kui ei ole, vaata Versioonihaldus), tuleks see kõigepealt omale kohalikku arvutisse alla kloonida. 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:
git clone http://gitlab.pld.ttu.ee/heli.kopter/iag0581.git
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. Kui kasutaja ja parool klapivad, siis peaks esmakordsel kloonimisel tekkima sõnum
warning: You appear to have clone and empty repository. Checking connectivity.. done.
Järgnevalt liigume äsja loodud kausta kasutades cd käsku (Change Directory).
cd iag0581
Staging area
Nüüd on võimalik meil kausta iag0581 lisada faile. Kausta võiks organiseerida kaustadesse järgnevalt:
- Kodutöö 1
- Kodutöö 2
- Praktikum 1
- Praktikum 2
- ...
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. Järgmisena tuleks märku anda ka Gitile, et lisasime uue faili kasutades käsku git add <faili nimi>. Lihtsaim viis lisamaks kõik failid, mille oleme lisanud on kasutada käsku:
git add .
Selleks, et veenduda kas Git tõepoolest sai sellest aru ja lisas, võime kirjutada
git status
Selle peale peaks tulema vastus:
$> git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: Kodune1/hw1_et.pdf
Commit
Järgmisena tuleks teha commit, millega sisuliselt tekitame ühe versiooni oma repositooriumis olevatest failidest ja kuhu saame tulevikus tagasi pöörduda vajadusel.
git commit -m "Kommentaar versiooni kohta, milliseid muudatusi tehti."
git commit -m "esimene commit" [master (root-commit) 630c631] esimene commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Kodune1/hw1_et.pdf
Selle toiminguga on fail kindlalt Git-i ajaloos kirjas. Et näha Git-i ajalugu, kirjuta sisse käsk:
git log
Et log vaatest väljuda, tuleb vajutada klaviatuuril Q klahvi.
Push
Nüüd kui muudatused on salvestatud lokaalselt, tuleks need ka üles laadida serverisse, kust neid oleks võimalik hiljem alla laadida ka teistest arvutitest. 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.
git push origin master
git push origin master Username for 'http://gitlab.pld.ttu.ee': test Password for 'http://test@gitlab.pld.ttu.ee': Counting objects: 4, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 255.45 KiB | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) To http://gitlab.pld.ttu.ee/test/iag0581.git * [new branch] master -> master
Peale käsu sisestamist ja enterile vajutamist küsitakse taaskord kasutajat ja parooli. Kui soovite kindlaks teha, et kõik õnnestus edukalt, saate minna repositooriumile ligi kasutades veebibrauserit ja veenduda, et lisatud failid on sealt nähtavad.
Pull
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.
git pull
Et vältida võimalikke konflikte, siis tuleks kindlasti enne uute muudatuste tegemiseks tööd alustada sellega, et annate käsu git pull.
Lisainfo
Siinkohal on selgitatud ainult Git-i põhifunktsionaalsuse kasutamine, kuid tegelikult on tal palju teisigi funktsioone, mille kohta saate iseseisvalt juurde lugeda.
- Git-i ametlik dokumentatsioon - https://git-scm.com/doc
- Spikker - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
Programmeerimistarkvara
Kompileerimine terminalis
Terminalis kompileerimiseks on käsk gcc.
Näiteks kui programmikood on failis hello.c, siis kompileerimiseks tuleks anda käsk
gcc –o hello hello.c
See tekitab binaarfaili hello, milles võime veenduda kasutades käsku ls. Järgnevalt on see võimalik tööle panna käsuga
./hello
Windowsi all käsitsi gcc-ga kompileerimiseks võib kasutada nt:
- MinGW - http://www.mingw.org/
- Cygwin - http://www.cygwin.com/
C/C++ Integreeritud programmeerimiskeskkonnad (IDE)
- Code::Blocks - http://www.codeblocks.org/ (Windows, Linux, Mac OS)
Klassi arvutites terminali käsk codeblocks
- Geany - http://www.geany.org/ (Windows, Linux)
Klassi arvutites terminali käsk geany
- Orwell Dev-C++ - http://sourceforge.net/projects/orwelldevcpp/ (Windows)
Süntaksi värvimisega tekstiredaktorid
- SciTE - http://www.scintilla.org/SciTE.html (Windows, Linux, Mac OS)
Klassi arvutites terminali käsk SciTE
- Notepad++ - http://notepad-plus-plus.org/ (Windows)
Diagrammide joonistamisvahendid
- ArgoUML - http://argouml.tigris.org/ (Windows, Linux)
Klassi arvutites terminali käsk argouml
- Astah Community - http://astah.net/download#community (Windows, Linux, Mac OS)
Klassi arvutites terminali käsk astah-com
- yEd - http://www.yworks.com/en/products_yed_about.html. (Windows, Linux, Mac OS)
Klassi arvutites terminali käsk yEd
- Jackson System Programming (JSP) Editor - http://www.his.se/english/university/contact/staff/henrik-engstrom/jsp-editor/ (Windows, Linux, Mac OS)
Klassi arvutites terminali käsk jsp