programmeerimise alusedkodu.ut.ee/~eno/progral13/progralused2013loeng1.pdf · 2013-02-14 · alused...

50
1 Programmeerimise alused 1. loeng Eno Tõnisson 13. veebruar 2013

Upload: others

Post on 06-Feb-2020

3 views

Category:

Documents


1 download

TRANSCRIPT

1

Programmeerimise alused

1. loeng

Eno Tõnisson

13. veebruar 2013

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

10

Jaotus

• Loeng 16

• Arvutipraktikum 16

• Iseseisev töö 48

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

24

Programmi ja algoritmi mõiste.

Algoritmi esitusviisid, plokkskeemid.

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

Kas Python sai oma nime Monty

Pythoni järgi?

38 1. 2.

0%0%

1. Jah

2. Ei

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.

Kas tahvlil vasakul olev

plokkskeem on õige?

46 1. 2.

0%0%

1. Jah

2. Ei

Kas tahvlil paremal olev

plokkskeem on õige?

47 1. 2.

0%0%

1. Jah

2. Ei

Loengu tempo oli

48 1. 2. 3.

0% 0%0%

1. liiga kiire

2. paras

3. liiga aeglane

Materjal tundus

49 1. 2. 3.

0% 0%0%

1. liiga lihtne

2. parajalt jõukohane

3. liiga keeruline

Suur tänu osalemast ja

kohtumiseni!

50