programmeerimise alusedkodu.ut.ee/~eno/progral13/progralused2013loeng1.pdf · 2013-02-14 · alused...
TRANSCRIPT
2
Täna
• Sissejuhatus
• Programmi ja algoritmi mõiste. Algoritmi
esitusviisid, plokkskeemid.
– kasutatud J. Kiho ja V. Vene slaide
Programmeerimise alused
MTAT.03.236 (3 EAP) • Osadel erialadel kohustuslik
• Paljudel mitte
• Väga erinevaid inimesi!!!
3
Kiri 18. jaanuaril Lugupeetud matemaatika-informaatikateaduskonna inimene!
Kui Sul ei ole sõbra, sugulase või tuttavaga eriti millestki rääkida, sest ta
ei tea, mis on programmeerimine, siis on lahendus silmapiiril!
Kevadsemestri esimesel poolel toimub kursus Programmeerimise
alused (3 EAP). Nädalas on üks loeng ja üks praktikum, lisaks iseseisev
tegevus. Kursus on mõeldud teiste teaduskondade tudengitele ja
käsitleb programmeerimise põhilisi asju (muutuja, valikulause, tsükkel,
alamprogramm jms.). Eelnev programmeerimisalane ettevalmistus ei ole
vajalik, alustame täiesti
algusest. Kursus baseerub programmeerimiskeelel Python.
4
Mis teaduskonnast Te olete?
5 1. 2. 3. 4. 5. 6. 7. 8.
0% 0% 0% 0%0%0%0%0%
1. Arsti-
2. Filosoofia-
3. Kehakultuuri-
4. Loodus- ja
tehnoloogia-
5. Matemaatika-
informaatika-
6. Sotsiaal- ja haridus-
7. Usu-
8. Mõni teine
Mitu töötajat võiks Eesti IT firmad
palgata kohe?
1. 2. 3. 4.
0% 0%0%0%
1. ca 10
2. ca 100
3. ca 1000
4. ca 10000
6
Millised järgnevatest on
programmeerimiskeeled?
1. 2. 3. 4. 5. 6.
0% 0% 0%0%0%0%
1. Java
2. C#
3. Python
4. Pascal
5. Logo
6. BASIC
7
8
Programmeerimise alused
MTAT.03.236 (3 EAP)
• Kursuse läbinud üliõpilane
– on motiveeritud kasutama arvutit ja koostama
vajalikke programme oma edasise stuudiumi vältel;
– oskab programmeerimise baaskonstruktsioone
(hargnemine, tsükkel, alamprogramm) esitada nii
plokkskeemidena kui ka programmilõikudena;
– oskab tekstina püstitatud lihtsa ülesande realiseerida
arvutiprogrammina;
– omab elementaarset ülevaadet erinevate
programmeerimiskeelte eripäradest.
Jätkuaine
• Jätkuaine semestri teisel poolel:
Programmeerimise alused II
• Programmeerimise alused (3 EAP) +
Programmeerimise alused II (3 EAP) =
Programmeerimine (6 EAP)
• Eelduseks paljudele informaatika
ainetele
11
Ajad
• Loeng, Eno Tõnisson – näd. 1-8 Liivi 2-111
– K 16.15 - 18.00
• Arvutipraktikumid, – E 8.15 - 10.00 näd. 2-8 Marina Lepp J. Liivi 2-203
– E 10.15 - 12.00 näd. 2-8 Maria Gaiduk J. Liivi 2-205
– T 10.15 - 12.00 näd. 2-8 Maria Gaiduk J. Liivi 2-203
– K 8.15 - 10.00 näd. 2-8 Marina Lepp J. Liivi 2-205
– K 14.15 - 16.00 näd. 2-8 Tõnu Tamme J. Liivi 2-203
– R 8.15 - 10.00 näd. 1-8 Marina Lepp J. Liivi 2-205
– R 14.15 - 16.00 näd. 1-8 Siim Orasmaa J. Liivi 2-205
12
Arvestuseks on vaja
• teha 1. kodutöö (ülesande püstituse tähtaeg 4. praktikum, lahenduse tähtaeg 5. praktikum)
• teha 2. kodutöö (eksamiülesannete kogust, tähtaeg 7. praktikum)
• sooritada arvutipraktikumi kontrolltöö (7. praktikum)
• sooritada loengu kontrolltöö (8. nädal)
13
Tunnikontrollide roll • Igakordsete arvutipraktikumide tunnikontrollide sooritamine
kokku vähemalt 90-protsendilise edukusega vabastab arvutipraktikumi kontrolltööst.
• Igakordsete arvutipraktikumide tunnikontrollide sooritamine kokku vähemalt 70-90-protsendilise edukusega annab võimaluse arvutipraktikumi kontrolltööl valida lihtsam ülesanne.
• Igakordsete loengute tunnikontrollide sooritamine kokku vähemalt 90-protsendilise edukusega vabastab vastavast kontrolltööst.
• Igakordsete loengute tunnikontrollide tulemus vähendab loengu kontrolltöö arvestuseks vajalikku lävendit kuni 9 protsendipunkti võrra.
14
Kirjandust
• Programmeerimise algkursus
– https://courses.cs.ut.ee/all/MTAT.03.100/2012
_fall/uploads/opik/
• S. Mount, J. Shuttleworth, R. Winder.
Python for Rookies. Cengage Learning,
2008.
Loengud
• Milleks?
• Üks räägib, teised
– kuulavad ja mõtlevad kaasa
– teevad näo, et kuulavad ja mõtlevad kaasa
– ei tee isegi nägu, et kuulavad ja mõtlevad
kaasa
15
90 minutit järjest?
• Tegelikult ei jõua (hästi) jälgida, ei jõua ka
(hästi) esineda
• Vahelduseks
– klikkeriküsimused koos eelneva arutamisega
paarilisega
– vaheaeg, kasvõi 5 minutit
– …
16
Eelmise aasta Objektorienteeritud
programmeerimineOP 7. loeng
17
Üldiselt on klikkerid üks suur põhjus, miks
ma ennast iga esmaspäev
loengusse vean.
Ma usun, et klikkerite kasutamine annab
võimaluse loengus aktiivselt kaasa
lüüa ka neile tudengitele, kes muidu
kardaksid kõva häälega küsimustele
vastata.
18
Saad avaldada oma arvamust suud
lahti tegemata ja anonüümselt. Nagu
neti
kommentaator :-)
Klikkerid on huvitavad, peavad
kindlasti jääma. Alati on hea teada,
et sa
pole ainuke loll.
19
Kui on näha, et küsimusele vastatakse,
kas ebakindlalt või on läinud teatud
variantide puhul "rebimiseks", algab
diskussioon. See on mõnus ning siis
saavad ka häbelikud isendid teada, miks
nende vastusel just selline
tõeväärtus on.
Mis ilmub ekraanile?
20 1. 2. 3. 4. 5.
0% 0% 0%0%0%
n = 7
a = 3*n
print("a")
1. a
2. 21
3. 3
4. 7
5. midagi muud
Mis ilmub ekraanile?
21 1. 2. 3. 4. 5.
0% 0% 0%0%0%
n = 7
a = 3*n
print(a)
1. a
2. 21
3. 3
4. 7
5. midagi muud
Mis ilmub ekraanile?
22
1. 2. 3. 4.
0% 0%0%0%
a = 5
b = 3
a = 2
if (a > b):
print(a)
else:
print(b)
1. 2
2. 3
3. 5
4. midagi muud
Mis ilmub ekraanile?
23
1. 2. 3. 4.
0% 0%0%0%
a = 5
b = 3
a = 2
if (a > b):
print(a)
else:
print(b)
1. 2
2. 3
3. 5
4. midagi muud
25
Algoritm
• algoritm mat, info lahenduseeskiri. ◊
Ruutjuure leidmise algoritm.
(www.keelevara.ee ÕS 1999)
• algoritm Üksikasjalik eeskiri mingi
ülesande lahendamiseks. Sõna tuleb
Iraani matemaatiku Al-Khawarizmi nimest.
(www.vallaste.ee)
26
www.vallaste.ee
• programmeerimine - Programmide
kirjutamine.
• programm - Organiseeritud käsujada, mis
täitmisel põhjustab arvuti käitumist
etteantud viisil. Ilma programmideta on
arvutid kasutud.
• arvuti, raal, kompuuter -
Programmeeritav masin.
27
Ajaloost
• 1822. a. Charles Babbage
(1791-1871) analüütilise
masina idee võrrandite
lahendamiseks.
• Osaline prototüüp 1910. a.
• Aurumootor, "veski", "ladu".
• Veski oli võimeline
teostama aritmeetilisi ja
võrdlustehteid ning
arvutama ruutjuurt.
• Perfokaardid
28
Ajaloost
• 1843. a. esitas Ada
Lovelace (1815-1852)
kirjelduse, kuidas
arvutada analüütilise
masinaga Bernoulli
arve.
• Seda peetakse
esimeseks
arvutiprogrammiks.
29
Ajaloost
• 1936. a. esitas Alan Turing (1912-1954) idealiseeritud universaalse arvutusmasina kirjelduse arvutatavusega seotud teoreetiliste küsimuste uurimiseks.
• Tänapäeval kasutatakse Turingi masinaid algoritmiteoorias, keerukusteoorias ja mitmetes teistes teoreetilise arvutiteaduse harudes.
30
Ajaloost
• 1945. a. esitas John von Neumann (1903-1957) arvutiarhitektuuri, millel baseeruvad praktiliselt kõik tänapäeva arvutid.
• Olulisimaks uudseks ideeks oli, et mälus ei paikne mitte ainult andmed, vaid ka programm.
31
Programmeerimiskeeled
• Programmeerimiskeel: programmide
kirjutamiseks mõeldud tehiskeel.
• Programmeerimiskeelte põlvkonnad: • 1. põlvkond – masinkood;
• 2. põlvkond – assemblerkeeled;
• 3. põlvkond – kõrgtasemekeeled;
• . . .
32
Masinkood ja assemblerkeel
• Arvutis on kõik andmed binaarkujul see kehtib ka masinkoodis programmide kohta!
• Masinkoodis ja assemblerkeeltes kirjutatud programmid on madalatasemelised: nad on tugevalt platvormist sõltuvad ning neid suhteliselt keeruline kirjutada, neist aru saada ja hallata.
• "liita aadressidel 1 ja 2 olevad arvud ning salvestada resultaat aadressile 6“
• 00000000001000100011000000100000
• add $1, $2, $3
• Assemblerkeeles kirjutatud programm tuleb transleerida masinkoodi.
• Vastavat translaatorit nimetatakse assembleriks.
33
Kõrgkeeled
• Tavaliselt kasutatakse programmeerimisel nn.
kõrgtasemekeeli, millede käsustik ja struktuur on
abstraktsemad ning lähedasemad inimkeeltele.
– Python, Java, C, C++, Prolog, Haskell, …
• Sõltuvalt arvutusmudelist, millel keel baseerub,
liigitatakse kõrgtasemekeeli erinevatesse
paradigmadesse.
– imperatiivne
– deklaratiivne
34
Transleerimine
• Kõrgtasemekeeles kirjutatud programmide täitmiseks tuleb nad transleerida.
• Traditsiooniliselt eristatakse kaht liiki transleerimist: kompileerimine ja interpreteerimine.
• Kompileerimisel transleeritakse programm kõigepealt masinkoodi, mida on seejärel võimalik täita.
• Interpreteerimisel täidetakse programmi iga käsk koheselt pärast ta transleerimist.
• Tänapäeval kasutatakse ka mitmesuguseid vahevariante.
35
-----
---
------
---
Algoritm Ülesanne
-----
---
------
---
Programm
Programmeerimiskeel
Java
Pascal
…
Arvuti
Kompilee-
rimine Arvutiprogramm
Täitmine
Tulemused
Veateated
-------
----- -------
-----
-------
---
36
Python
• Loodi 1991. a. Guido van Rossumi poolt.
• Põhiomadused: – multi-paradigmaline;
– dünaamiliselt rangelt tüübitud;
– automaatse mäluhaldusega;
– taandetundlik süntaks;
– interpreteeritakse läbi baitkoodi.
• Kursuses kasutame Pythoni versiooni 3.
# HelloWorld.py
def helloWorld( ):
print("Hello, world!")
Kes oli programmeerimiskeele
Python looja
37 1. 2. 3. 4.
0% 0%0%0%
1. John von
Neumann
2. Guido van
Rossum
3. Robin van Persie
4. Johann Wilhelm
Friedrich
von Hezel
39
Eeskirjad, algoritm
• Negatiivsed – Ära ületa kiirust!
– Ära mine vales kohas üle tänava!
– …
• Positiivsed – koosnevad käskudest midagi teha
– tavaliselt mingi eesmärk
• Algoritm – tegutsemisjuhend, mis määrab eesmärgi saavutamiseks vajalikud operatsioonid ja nende sooritamise järjekorra
40
Algoritmi esitusviisid
• Tegevus jaotatakse sammudeks
• Plokkskeem
• Ovaalid
• Ristkülikud
Algus Lõpp
Tükeldada kartulid
41
Kartulisalati
tegemise algoritm
• Kui detailsed sammud?
• Allikas:
Ü. Kaasik, J. Kiho, M. Koit
Kuidas programmeerida
1990
• Seal on küll veidi keerulisem salat
Algus
Võtta 4
keedetud kartulit,
1 hapukurk,
3 spl. hapukoort
soola
Tükeldada
kartulid ja hapukurk
Segada kausis
koos hapukoorega
Maitsestada soolaga
Lõpp
42
Hargnev algoritm
• Kontrollplokk (vs. täiturplokk)
• Romb
• Kas-küsimus
• Alati viib välja kaks noolt
Kas? jah
ei
43
Reedel kodukohta sõitmine Algus
Kas bussis kohti
on?
Kas kulutada raha
bussisõidule?
Kas keegi võtab
peale?
Lähen bussijaama
Lähen maantee äärde
Lähen Tartu
elamiskohta tagasi
Jõuan
kodukohta
Lõpp
jah
jah
jah
ei
ei
ei
44
Kahest arvust suurima leidmine
Algus
Lõpp
Sisestada a, b
Väljastada a Väljastada b
a > b?
Andmevahetus
- +
45
Ülesanded
• Kolmest suurim. Koostada plokkskeem kolmest arvust suurima leidmiseks. Igas kontrollplokis võib olla ainult ühe võrratuse kehtimise kontroll.
• Leida testandmete komplektid. Testida.