Transcript
Page 1: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

Osnove programiranja IIOsnove programiranja II

Biometrija & računalništvoUL, Biotehniška fakulteta, Oddelek za zootehniko

Page 2: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 2

Ponovitev pojmov

• Program

• Programiranje

• Spremenljivka

• Polje

Page 3: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 3

Osnovni ukazi (oz. stavki)

• Ukaz –“definiramo nekaj nekam, da naj računalnik nekaj naredi”

• Štirje tipi ukazovprireditve in (aritmetični) izrazipogojni stavki in vejitve zankefunkcije & klici funkcij

Page 4: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 4

Prireditve in izrazi

spremenljivka = izraz

priredi lahko je konstanta,spremenljivka,

aritmetični izrazlahko tudi element polja

Page 5: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 5

Pogojni stavki in vejitve

• Če je izpolnjen pogoj, se izvedejo eni ukazi, sicer pa drugi

• Dve obliki:IF-THENIF-THEN-ELSE

Page 6: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 6

Sintaksa ukaza IF-THEN

IF <pogoj> THEN<ukaz_1>;

<naslednji_ukaz>;

IF <pogoj> THEN DO;<ukaz_1>;<ukaz_2>;…END;

<naslednji_ukaz>;

blok ukazov

Page 7: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 7

Pomen ukaza IF-THEN

• Če je pogoj izpolnjen, potem ukaz_1; in za njim naslednji_ukaz;

• Če pogoj ni izpolnjen, samo naslednji_ukaz;

Page 8: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 8

IF-THEN

Vstop

Izhod

Preveritev pogoja

Ukaz_1

DANE

Naslednji_ukaz

Page 9: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 9

Primer ukaza IF-THEN

IF (spr > 12) THENspr = spr / 2;

spr = spr * 2;

V: Kakšen je rezultat, če ima pred tem sprvrednost 12, in kakšen, če ima vrednost 18?

O: _____________

Page 10: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 10

Sintaksa ukaza IF-THEN-ELSE

IF <pogoj> THEN<ukaz_A>;

ELSE<ukaz_B>:

<naslednji_ukaz>;

Pomen ukaza:Če je pogoj izpolnjen, potem ukaz_A; ,

sicer ukaz_B; in za tem naslednji_ukaz;

Page 11: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 11

IF-THEN-ELSE

Vstop

Izhod

Preveritev pogoja

Ukaz_A

DANE

Ukaz_B

Naslednji_ukaz

Page 12: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 12

Primer ukaza IF-THEN-ELSE

IF (spr > 12) THENspr = spr / 2;

ELSEspr = spr * 2;

spr = spr + 5;

V: Kakšen je rezultat, če ima pred tem sprvrednost 12, in kakšen, če ima vrednost 18?

O: _____________

Page 13: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 13

Zanke

• Tri vrste zank:

NaštevalneDO WHILEDO UNTIL

Page 14: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 14

Naštevalna zanka

Vstop

Izhod

Ukazi

DA

NE

Page 15: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 15

Naštevalna zanka

vsota=0;DO i = 1 TO 7 BY 1;

vsota = vsota + vektor[i]END;

V: Kakšen je rezultat, če imamo vektor={3,7,2,8,-1,0,5}?

O: _____________

i se samodejno spreminja

Page 16: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 16

Sintaksa ukazov DO WHILEin DO UNTIL

DO WHILE <pogoj> <ukaz_1>;<ukaz_2>;

END;<naslednji_ukaz>;

DO UNTIL <pogoj> <ukaz_1>;<ukaz_2>;

END;<naslednji_ukaz>;

Page 17: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 17

Pomen ukazov DO WHILEin DO UNTIL

• DO WHILE Dokler je pogoj izpolnjen, izvajaj ukaz_1; in ukaz_2; znova in znova; potem pa izvedi naslednji_ukaz;

• DO UNTIL Dokler pogoj ni izpolnjen, izvajaj ukaz_1; in ukaz_2; znova in znova; potem pa izvedi naslednji_ukaz;

Page 18: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 18

DO WHILE

Vstop

IzhodPreveritev pogoja

Ukaz_1DA

NE

Naslednji_ukaz

Ukaz_2

Page 19: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 19

DO UNTIL

Vstop

IzhodPreveritev

pogoja

Ukaz_1

DANE

Naslednji_ukaz

Ukaz_2

Page 20: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 20

Primer zanke DO WHILE

i = 1;vsota=0;DO WHILE (i <= 7);

vsota = vsota + vektor[i];i = i + 1;

END;

V: Kakšen je rezultat, če imamo vektor={3,7,2,8,-1,0,5}?

izvaja se dokler je tole res

Page 21: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 21

Primer zanke DO UNTIL

i = 1;vsota=0;DO UNTIL (i > 7);

vsota = vsota + vektor[i];i = i + 1;

END;

V: Kakšen je rezultat, če imamo vektor={3,7,2,8,-1,0,5}?

izvaja se dokler se tole ne izpolni oz. dokler ni res

Page 22: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 22

Funkcije in klici funkcij

• Včasih neko operacijo pogosto uporabljamo

• Zato to operacijo “zapakiramo” v nekaj, čemur pravimo funkcija ali podprogram

• Za funkcije velja, da lahko …

Page 23: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 23

Za funkcije velja, da lahko:

• Enak problem rešimo enkrat in to rešitev večkrat uporabimo ->posplošitev ali abstrakcija

• Obsežno opravilo razdelimo na več manjših opravil ->modularizacija

• Ne zanima nas, kako se problem reši, samo, da se reši ->zakrivanje ali enkapsulacija

Page 24: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 24

Pojem “Črne škatle”

• Ne zanima nas, kaj se dogaja znotraj funkcije

• Kot uporabnika pa nas zanimakako pristopiti k funkciji: njeno ime, kaj potrebuje, kaj dobimo nazajkako rokovati s funkcijo: kam postaviti funkcijo, kaj se bo zgodilo, ko funkcija zaključi delo, kako vpliva na okolje

Page 25: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 25

Podpis funkcije

• Odgovori na vprašanje, kako pristopiti k funkciji

• Sestavljajo joIme funkcijeParametriRezultat

Page 26: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 26

Pogodba funkcije

• Odgovori na vprašanje, kako rokovati s funkcijo

• Ureja razmerje med ustvarjalcem (programerjem) funkcije in tistim, ki funkcijo uporablja (uporabnikom)

Page 27: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 27

Elementi pogodbe

• Opis (Desc:) – kaj funkcija počne

• Parametri (Parms:) – katere vhodne parametre potrebuje funkcija

• Rezultati (Result:) – kaj dobimo ven

• Predpogoj (Pre:) – kaj mora biti izpolnjeno, da bo funkcija pravilno delovala

Page 28: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 28

Elementi pogodbe (nadalj.)

• Popogoj (Post:) – obvezuje ustvarjalca funkcije in je izpolnjen, če je predpogoj izpolnjen in če funkcija pravilno deluje

• Okolje (Env:) – kako delovanje funkcije vpliva na okolje

Page 29: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 29

Sledenje programu

• Določimo točke sledenja –v njih potem opazujemo vrednosti spremenljivk med izvajanjem programa

• Vrste sledenjaročnoz izpisovanjemz razhroščevalnikom (debugerjem)

Page 30: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 30

Primer sledenja programa

i = 1;vsota=0;DO WHILE (i <= 7);

vsota = vsota + vektor[i];i = i + 1;

END;

V: Sledi za primer, ko je vektor={3,7,2,8,-1,0,5}

A

BCD

V

Točk

e sl

eden

ja

Page 31: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 31

Primer sledenja progr. (nadalj.) Točka sledenja vektor i vsota

V {3,7,2,8,-1,0,5} 1 /A {3,7,2,8,-1,0,5} 1 0B {3,7,2,8,-1,0,5} 1 3C {3,7,2,8,-1,0,5} 2 3B {3,7,2,8,-1,0,5} 2 10C {3,7,2,8,-1,0,5} 3 10B {3,7,2,8,-1,0,5} 3 12C {3,7,2,8,-1,0,5} 4 12B {3,7,2,8,-1,0,5} 4 20C {3,7,2,8,-1,0,5} 5 20…

Page 32: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 32

Primer sledenja progr. (nadalj.) Točka sledenja vektor i vsota

B {3,7,2,8,-1,0,5} 6 19C {3,7,2,8,-1,0,5} 7 19B {3,7,2,8,-1,0,5} 7 24C {3,7,2,8,-1,0,5} 8 24D {3,7,2,8,-1,0,5} 8 24

…B {3,7,2,8,-1,0,5} 5 19C {3,7,2,8,-1,0,5} 6 19

Rezultat

Page 33: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 33

Načrtovanje funkcije

• Funkcija = podprogram = del programa• Faze načrtovanja funkcije

Koncept ali načrtFormalizacija • Samo pisanje programa• Programski jezik (C, C++, Java, SAS …)

Preveritev delovanja• Sledenje

Page 34: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 34

Primer pisanja funkcije

int SestejDoNic(int n)/* Desc: funkcija sešteva vsa števila od n do 0

Parms: celo število, do katerega sešteva

Result: ΣiPre: /Post: /Env: /

*/

podpis

pogodbai=0

n

Page 35: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 35

Primer (nadalj.)

• Koncept: sešteva n + (n-1) + (n-2) + … + (n-n)

• Ideja: uporabili bomo števec, ki bo štel od n do 0 -> naštevalno zankoštevec odštevapotrebujemo začetno vsoto -> spremenljivkosproti prištevamo števila delni vsoti

Page 36: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 36

Primer (nadalj.)

int SestejDoNic(int n) {int DelnaVsota = 0;DO i = n TO 0 BY -1;

DelnaVsota = DelnaVsota + i;END;RETURN DelnaVsota;

}

Page 37: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 37

Sledenje funkciji

• Postavite točke sledenja• Sledite funkciji za klic

SestejDoNic(3)SestejDoNic(0)SestejDoNic(-1)

• Pri zadnjem klicu se zanka ne ustavi ->• Dopolniti moramo pogodbo

Page 38: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 38

Popravek pogodbe

int SestejDoNic(int n)/* Desc: funkcija sešteva vsa števila od n do 0

Parms: celo število, do katerega sešteva

Result: ΣiPre: (n >= 0)Post: /Env: /

*/

i=0

n

Page 39: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 39

Isti primer – malo drugače

int SestejDoNic (n) {IF (n = 0) THEN

RETURN 0;ELSE

RETURN n + SestejDoNic (n-1);}

rekurzija = ko funkcija uporablja samo sebe

Page 40: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 40

Isti primer – še malo drugače

int SestejDoNic (n) {IF (n = 0) THEN

RETURN 0;ELSE

zacasno = SestejDoNic (n-1);RETURN n + zacasno;

}

Page 41: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 41

Sledimo funkciji …

int SestejDoNic (n) {IF (n = 0) THEN

RETURN 0;ELSE

zacasno = SestejDoNic (n-1);RETURN n + zacasno;

}

A

B

CD

Page 42: Osnove programiranja II - University of Ljubljana · Osnove programiranja II Biometrija & računalništvo UL, Biotehniška fakulteta, Oddelek za zootehniko. 31.3.2005 Programiranje

31.3.2005 Programiranje II 42

Sledenje funkciji

SestejDoNic(2)

SestejDoNic(1)

SestejDoNic(0)

točka sl. n zacasno

točka sl. n zacasno

točka sl. n zacasno

C 2 /A 2 /

C 1 /

A 1 /

A 0 /B 0 /

rezultat = 0rezultat = 1

D 1 0rezultat = 3

D 2 1

I.

II.

III.

IV.