T�ana loengus
Administratiivinfo
De�nitsioonid: programmeerimine, programm, arvuti
Ajalugu
Programmeerimiskeeled
Python
2 / 25
Administratiivinfo
�Uldinfo
LTAT.03.001 (MTAT.03.100) 6 ainepunkti.
{ Loengud (32 tundi){ Arvutipraktikumid (32 tundi){ Iseseisev t�o�o (92 tundi)
Toimumised:
Loeng T12; Vanemuise 46 - 225Praktikum N10,12,16; Liivi 2, �Ulikooli 17, Ostwaldi 1,Nooruse 1Konsultatsioon K18; Liivi 2 - 405
Kursuse veebileht:https://courses.cs.ut.ee/2017/programmeerimine/
Mitteavalikud materjalid Moodle 'i keskkonnas:
http://moodle.ut.ee/
3 / 25
Administratiivinfo
Eesm�argid
Kursuse eesm�argiks on anda alusteadmised
programmeerimise p~ohikonstruktsioonidest ning
esmased oskused algoritmide ja programmide
koostamiseks.
4 / 25
Administratiivinfo
~Opiv�aljundid
Kursuse l�abinud �uli~opilane:
oskab kasutada p~ohilisi programmeerimiskonstruktsioone:muutuja, avaldis, omistuslause, tingimuslause, ts�ukkel,alamprogramm, rekursioon, andmevahetus kasutaja jafailidega;
tunneb p~ohilisi andmet�u�upe ja -struktuure (t�ais- jaujukomarvud, t~oev�a�artused, s~oned, j�arjendid) ning oskabkasutada vastavaid standardoperatsioone;
oskab anal�u�usida ja �uksikasjalikult selgitada programmit�o�o k�aiku ning programmi modi�tseerida ja laiendada;
oskab luua lihtsamale �ulesandele vastava algoritmi,koostada ja korrektselt vormistada lahendusprogrammining seda siluda ja testida.
5 / 25
Administratiivinfo
Hinde kujunemine
Hinne kujuneb praktikumides ja eksamil kogutud punktidesummana.
Praktikumid (kuni 30 punkti):
{ kontrollt�o�o (arvestus){ praktikumides osalus ja kodu�ulesanded (10 punkti){ t�arn�ulesanded (10 punkti){ projekt (10 punkti)
Eksam (kuni 80 punkti)
{ 2 vaheeksamit (20 + 20 = 40 punkti){ l~oputest (40 punkti)
NB! Enne vaheeksameid peab kontrollt�o�o olema arvestatud.
NB! Igast eksamiosast tuleb saada v�ahemalt 50%.
6 / 25
Administratiivinfo
Hindeskaala
Hinne PunkteA suurep�arane � 91B v�aga hea 81� 90C hea 71� 80D rahuldav 61� 70E kasin 51� 60F puudulik 0� 50
7 / 25
Administratiivinfo
Kahe eelmise aasta hinnete jaotus
2015 2016
8 / 25
Administratiivinfo
Eeleksam
Neile, kes juba oskavad programmeerida
Koosneb kahest osast:
{ Valikvastustega test (esmasp. 11.sept. kell 18){ Arvutis programmeerimine (teisip. 12.sept. kell 18)
Registreerimiseks saata mail [email protected]
{ hiljemalt p�uhap. 10.sept
9 / 25
Administratiivinfo
"Programmeerimise alused" MOOCi l�abinud
Kes on l�abinud MOOC-i "Programmeerimise alused", peaksregistreeruma praktikumir�uhma inf3 v~oi inf9.
Antud r�uhmades toimub ~oppet�o�o kiirema ajagraa�ku alu-sel, aga kursuse l�abimise tingimused on samad, mis teistesr�uhmades.
10 / 25
Administratiivinfo
Ajakava
4 28.09 kontrollt�o�o9 02.11 1. vaheeksam
16 21.12 projekti esitlus09.01 / 15.01 2. vaheeksam11.01 / 17.01 l~oputest22.01 / 23.01 j�arelvaheeksamid24.01 j�arell~oputest
11 / 25
Administratiivinfo
V�aljav~otteid varasemast tagasisidest (1)
K�aige praksides, tehke kodused t�o�od �ara, siis on lihtne aineka algajatele!
~Oppeainega tuleks tegeleda j�arjepidevalt
Lihtne aine ja v�aga hea v~oimalus head hinnet saada.Soovitan kindlasti lahendada t�arn�ulesandeid!
Kui sa oskad progeda on aine igav, kui ei oska, saad k~ovastiselgemaks
�upris raske, kui pole programmeerimisega varem tegelenud.Algajale �uli ajamahukas aine - arvesta v~oimalusega, et seej�a�ab sul v~olgu v~oi saad v�aga halva hinde.
. . .
12 / 25
Administratiivinfo
V�aljav~otteid varasemast tagasisidest (2). . .
Keeruline aine, eriti kui programmeerimisega �uldsekokkupuudet pole. �Arge laske end eksitada sellest, et algulon kerge. Iseseisvalt tuleb palju vaeva n�aha ja v~oimalikultpalju �ulesandeid l�abi teha. Ka praktikumides v~oiks t�o�otadamitte oodata, et keegi ~oige lahenduse ette n�aitab. Loengusp�o�orake t�ahelepanu clickeri k�usimustele, eriti viimastes,sest l~oputest on nendega v�aga sarnane.
Kui programmeerimine on sinu jaoks uus, ole valmis v�agasuureks t�o�oks ning ajakuluks, ole j�arjepidev ning �ara kardaabi k�usida. Varu kannatust, sest l~opuks tasub sinu vaev �ara.
13 / 25
Kirjandus
P~ohi~opik
Veebi~opik kursuse kodulehel
Pythoni raamatuid
J. Elkner, P. Wentworth, A. Downey, C. Meyers.How to Think Like a Computer Scientist: Learning
with Python. 3rd edition.
J. Zelle. Python Programming: An Introduction to
Computer Science. 2nd edition. 2010.
14 / 25
Mis on programmeerimine?
e-teatmik (www.vallaste.ee)
programmeerimine Programmide kirjutamine.
programm Organiseeritud k�asujada, mis t�aitmiselp~ohjustab arvuti k�aitumist etteantud viisil. Ilma prog-rammideta on arvutid kasutud.
arvuti, raal, kompuuter Programmeeritav masin.
15 / 25
Mis on programmeerimine?
e-teatmik (www.vallaste.ee)
programmeerimine Programmide kirjutamine.
programm Organiseeritud k�asujada, mis t�aitmiselp~ohjustab arvuti k�aitumist etteantud viisil. Ilma prog-rammideta on arvutid kasutud.
arvuti, raal, kompuuter Programmeeritav masin.
15 / 25
Mis on programmeerimine?
e-teatmik (www.vallaste.ee)
programmeerimine Programmide kirjutamine.
programm Organiseeritud k�asujada, mis t�aitmiselp~ohjustab arvuti k�aitumist etteantud viisil. Ilma prog-rammideta on arvutid kasutud.
arvuti, raal, kompuuter Programmeeritav masin.
15 / 25
Mis on programmeerimine?
e-teatmik (www.vallaste.ee)
programmeerimine Programmide kirjutamine.
programm Organiseeritud k�asujada, mis t�aitmiselp~ohjustab arvuti k�aitumist etteantud viisil. Ilma prog-rammideta on arvutid kasutud.
arvuti, raal, kompuuter Programmeeritav masin.
15 / 25
Mis on programmeerimine?
Vikipeedia (et.wikipedia.org)
Programmeerimine on arvutiprogrammide l�ahtekoodi kirju-tamise, testimise, silumise ja haldamise tegevuste jada.
Arvutiprogramm (tavaliselt lihtsalt "programm") on arvu-tile arusaadav k�askluste kogum.
Arvuti ehk kompuuter ehk raal on programmjuhtimisegaandmet�o�otlusseade.
16 / 25
Babbage'i anal�u�utiline masin
1837. a. esitas Charles Babbage(1791{1871) anal�u�utilise masinakirjelduse �uldiste matemaatilistev~orrandite lahendamiseks.
Sisuliselt oli esimene universaalne ar-vuti, millest f�u�usiliselt valmis siiskiainult osaline protot�u�up (1910).
Masin kasutas j~ouallikana aurumoo-torit ning koosnes "veskist" (mill) ja"laost" (store).
Laos sai hoida kuni 1000 arvu (iga�ukskuni 50 k�umnendkohta).
Veski oli v~oimeline teostama arit-meetlisi ja v~ordlustehteid ning arvu-tama ruutjuurt.
17 / 25
Babbage'i anal�u�utiline masin
Anal�u�utilist masinat juhiti perfokaartide abil.
Kasutati kolme liiki perfokaarte:aritmeetiliste operatsioonide, arv-konstantide ning veski-lao vahelisesuhtluse tarvis.
"Programmeerimiskeel" v~oimaldaskasutada nii hargnemis- kui ts�ukli-konstruktsioone.
1843. a. esitas Ada Lovelace (1815-1852) kirjelduse, kuidas arvutatadaanal�u�utilise masinaga Bernoulli arve.
Antud kirjeldust peetakse esimeseksarvutiprogrammiks.
18 / 25
Programmeerimiskeeled
Programmeerimiskeel: programmide kirjutamiseks m~oeldudtehiskeel.
On de�neeritud s�untaksi- ja semantikareeglite abil, mism�a�aravad vastavalt programmide struktuuri ja t�ahenduse.
Programmeerimiskeelte p~olvkonnad:
{ 1. p~olvkond { masinkood;{ 2. p~olvkond { assemblerkeeled;{ 3. p~olvkond { k~orgtasemekeeled;{ . . .
19 / 25
Masinkood
Arvutis on k~oik andmed binaarkujul . . .
. . . see kehtib ka masinkoodis programmide kohta!
N�aide: MIPS arhitektuuri masinkoodi k�ask "liita aadressitel
1 ja 2 olevad arvud ning salvestada resultaat aadressile 6"
00000000001000100011000000100000
20 / 25
Masinkood
Arvutis on k~oik andmed binaarkujul . . .
. . . see kehtib ka masinkoodis programmide kohta!
N�aide: MIPS arhitektuuri masinkoodi k�ask "liita aadressitel
1 ja 2 olevad arvud ning salvestada resultaat aadressile 6"
000000 00001 00010 00110 00000 100000
opkood
1. aadress
2. aadress
sihtaadress
nihke suurus
funktsioon
20 / 25
Assemblerkeeled
Assemblerkeeled kasutavad k�askude jaoks mnemoonilisikoode.
Samuti lubavad kasutada aadressite jaoks nimesid.
MIPS n�aide uuesti:
add $1, $2, $6
Kuna arvutid t�o�otavad siiski ainult binaarkoodisprogrammidega, siis tuleb assemblerkeeles kirjutatudprogramm transleerida masinkoodi.
Vastavat translaatorit nimetatakse assembleriks.
asm assembler obj
21 / 25
K~orgtasemekeeled
Masinkoodis ja assemblerkeeltes kirjutatud programmid onmadalatasemelised: nad on tugevalt platvormist s~oltuvad ningneid on suhteliselt keeruline kirjutatada, neist aru saada jahallata.
Tavaliselt kasutatakse programmeerimisel nn. k~orgtasemekeeli,millede k�asustik ja struktuur on abstraktsemad ning l�ahedasemadinimkeeltele.
S~oltuvalt arvutusmudelist, millel keel baseerub, liigitataksek~orgtasemekeeli erinevatesse paradigmadesse.
K�aesolevas kursuses vaatleme p~ohiliselt imperatiivsesse pa-radigmasse kuuluvaid keeli, mis baseeruvad von Neumanniarvutusmudelil.
N�aiteid imperatiivsetest keeltest: Fortran, Cobol, Pascal, C,(Java), (Python)
22 / 25
Python
Loodi 1991. a. Guido van Rossumi poolt.
P~ohiomadused:
{ multi-paradigmaline;{ d�unaamiliselt rangelt t�u�ubitud;{ automaatse m�aluhaldusega;{ taandetundlik s�untaks;{ interpreteeritakse l�abi baitkoodi.
Kursuses kasutame Pythoni versiooni 3.
# HelloWorld.py
def helloWorld():print ("Hello, world!")
23 / 25
J�argmiseks korraks
Registreeruda ainele ~OIS-is (kes veel ei ole) ja v~otta osa ar-vutipraktikumist.
Enne esimest praktikumi:
{ lugeda ~opikust l�abi Ptk. 1 "Sissejuhatus";{ installeerida arvutisse Python (Thonny);{ lahendada ja Moodle'isse �ules laadida 1. �ulesandelahendus (kilpkonnaga maja joonistamine);
{ soovi korral osaleda kolmap�aevases konsultatsioonis(K18; Liivi 2-405).
Kui tekkis k�usimusi, mille kohta soovite j�argmises loengusvastust, siis need v~oib saata hiljemalt esmasp�aeva l~ounaksmailiga [email protected] ja/v~oi [email protected].
24 / 25
Suur t�anu osalemast
ja
kohtumiseni!