29

Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

Programmeerimine

1.loeng

Varmo Vene

Arvutiteaduse InstituutTartu �Ulikool

email: [email protected]

Page 2: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

T�ana loengus

Administratiivinfo

De�nitsioonid: programmeerimine, programm, arvuti

Ajalugu

Programmeerimiskeeled

Python

2 / 25

Page 3: Programmeerimine - ut · 2018. 9. 1. · 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

Page 4: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

Administratiivinfo

Eesm�argid

Kursuse eesm�argiks on anda alusteadmised

programmeerimise p~ohikonstruktsioonidest ning

esmased oskused algoritmide ja programmide

koostamiseks.

4 / 25

Page 5: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 6: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 7: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 8: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

Administratiivinfo

Kahe eelmise aasta hinnete jaotus

2015 2016

8 / 25

Page 9: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 10: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 11: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 12: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 13: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 14: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 15: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 16: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 17: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 18: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 19: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 20: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 21: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 22: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 23: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 24: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 25: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 26: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 27: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 28: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/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

Page 29: Programmeerimine - ut · 2018. 9. 1. · De nitsioonid: programmeerimine, programm, arvuti Ajalugu Programmeerimiskeeled Python 2/25

Suur t�anu osalemast

ja

kohtumiseni!