palautetta viime luennosta · • lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on...

76
Palautetta viime luennosta Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus? Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin Kokonaisuuksia on useita eri tiedekunnittain, mahdoton luetella kaikkia Kysy tarvittaessa omalta opoltasi TKT-opiskelijoiden täytyy suorittaa 5op Avoimen väylän opiskelijoiden täytyy suorittaa 5op Ketään ei voi kieltää suorittamasta 5op 3op osuudesta ja 2op osuudesta tulevat eri arvosanat 3op osuus täytyy olla suoritettuna ennen kuin 2op osuuden arvosanan saa Mikä tässä nyt oli oikeastaan tärkeää? Aloitusluennot yrittävät antaa vähän pohjatietoa monesta asiasta, suurpiirteinen tietämys riittänee 71

Upload: others

Post on 08-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Palautetta viime luennosta

• Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus?

• Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin

• Kokonaisuuksia on useita eri tiedekunnittain, mahdoton luetella kaikkia

• Kysy tarvittaessa omalta opoltasi

• TKT-opiskelijoiden täytyy suorittaa 5op

• Avoimen väylän opiskelijoiden täytyy suorittaa 5op

• Ketään ei voi kieltää suorittamasta 5op

• 3op osuudesta ja 2op osuudesta tulevat eri arvosanat – 3op osuus täytyy olla

suoritettuna ennen kuin 2op osuuden arvosanan saa

• Mikä tässä nyt oli oikeastaan tärkeää?

• Aloitusluennot yrittävät antaa vähän pohjatietoa monesta asiasta, suurpiirteinen tietämys

riittänee71

Page 2: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Palautetta viime luennosta

• Näytin opiskelijakorttiani lukijaan – en saanut läsnäoloa?

• Opiskelijakortti pitää käydä rekisteröimässä erikseen ViLLEn, samoin kuin RFID-tagit tai

muut, jos opiskelijakorttia haluaa käyttää kulunvalvontaan

• Kaikki kortit eivät käy, siksi tageja jaetaan

• RFID-tagin saa kysymällä luennoitsijalta tai menemällä Agoran 4krs. huoneeseen 451D

• Opiskelijakortin voi liittää samalla ViLLEen jos se onnistuu

• Läsnäoloa ei tullut?

• Aloitusluennolla läsnäoloja merkittiin niin myöhään, etteivät ne enää rekisteröityneet

• Unohdit näyttää ViLLEä!

• Niin unohdin. Deadlineihin on kuitenkin vielä niin paljon aikaa, että ensi viikon

tutoriaaleissa kaikki selvinnee

72

Page 3: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Ohjelmointikielet ja

peruskäsitteet

Page 4: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisältö

• Pythonin esittely

• Ohjelmointikielet ja peruskäsitteet

• Muuttujat

• Valinta

Page 5: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Pythonista

• Kurssilla käytetty ohjelmointikieli

• Tulkattava kieli

• Ohjelma muunnetaan suoritettavaan muotoon lause kerrallaan ohjelmaa suoritettaessa

• Tämä kurssi ei kuitenkaan ole ”Python-kurssi”

• Vältetään Pythonille ominaisia piirteitä

• Kirjoitetaan yksinkertaista koodia

Page 6: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Pythonista

• Ladattavissa www.python.org/download/

• Ei kurssin kannalta välttämätöntä asentaa ollenkaan

• Jos asennat, asenna v2.7.x (älä uusinta 3.x versiota)

• ViLLE käyttää 2.7-versiota, ja näiden versioiden välillä on monia eroja

• Jos et käytä Windowsia, Python saattaa olla jo asennettuna

• Kokeile terminaalissa python komentoa

• Verkosta löytyy palveluita pythonin suorittamiseen, joka saattaa pieneen

testailuun riittää

• Esim http://repl.it/languages/python

Page 7: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Algoritmin ymmärtäminen

• Prosessorin tulee kyetä tulkitsemaan algoritmi

• Ymmärtää esitysmuoto

• Kyetä suorittamaan operaatiot

• Algoritmin esityksen ymmärtäminen jakautuu kahteen vaiheeseen:

1. Ymmärtää symbolit joilla algoritmi esitetään

• Käytetyn kielen aakkosto

• Käytetyn kielen kielioppi

2. Ymmärtää jokaisen askeleen merkitys

Page 8: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Kielen syntaksi – miten ohjelma kuvataan?

• Kielen syntaksi:

• Määrittää kielen lauseiden muodon eli kielioppisäännöt

• Määrää miten kielen symboleja saa laillisesti käyttää

• Syntaksi siis määrää, millaisia ovat kielen oikein muodostetut lauseet.

• Syntaktisesti oikea ohjelma noudattaa kielen syntaksia

• Esimerkki: yhteenlaskukieli: <lhs> + <rhs>

• Oikeita kielen lauseita: a + b, 5 + 2

• Vääriä: + 2, b +, + + +

Page 9: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Kielen semantiikka – mitä ohjelma tarkoittaa?

• Kielen semantiikka

• Oppi lauseiden merkityksestä eli tiettyjen ilmaisujen merkitys kielessä

• Semantiikka määrää, mitä kielen lauseet tarkoittavat.

• Semantiikka vastaa siis kysymykseen Mitä?

• Esimerkkejä:

Hauki on kala. (syntaktisesti ja semanttisesti oikein)

Delfiini on kala. (syntaktisesti oikein, semanttisesti väärin)

Page 10: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Ohjelmointikielten semantiikka

• Luonnollisiin kieliin verrattuna yksinkertaista

• Syntaksi ja semantiikka eroteltu ohjelmointikielissä

• Algoritmin askeleet voivat olla syntaktisesti oikein, mutta semanttisesti merkityksettömiä

Page 11: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Ohjelmointikielen kielioppi

• Ohjemointikielten syntaksi nykyään tarkasti määritelty

• 60-luvulta lähtien syntaksi määritelty käyttäen kielioppia

• Esim. Pascal-kielen kielioppi koostuu n. 150 kielioppisäännöstä

• Kielioppisäännöt määrittävät kielen syntaksin täsmällisesti

• Ohjelmointikielten semanttiikkaa ei (yleensä) kyetä määrittelemään

täsmällisesti

Page 12: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Algoritmin suorittaminen

• Algoritmin suorittaakseen tulee

1. tuntea algoritmin kuvauksessa käytetyt symbolit

2. osata liittää kuhunkin askeleeseen sen merkitys

3. kyetä suorittamaan operaatiot

• Ohjelmointikielen kääntäjä suorittaa vaiheet 1 ja 2

• Kääntäjä muuttaa ohjelman jokaisen askeleen sopiviksi operaatioiksi

• Prosessori suorittaa operaatiot (vaihe 3)

Page 13: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Syntaksivirheet

• Syntaksivirhe tarkoittaa kielen syntaksin rikkomista

• Virhe estää virheellisen lauseen suorittamisen

• Usein yksikin virhe estää koko ohjelman suorittamisen

• Pythonissa tämä pätee

• Esimerkkejä:

• syntaksivirhe Pythonissa, mutta ei C:ssä

a++

• kirjoitusvirhe varatussa sanassa

funktion doSomething()

Page 14: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Virheiden havaitseminen

• Syntaksivirheet havaitaan vaiheessa 1 (kielen kuvauksen tunteminen)

• Jotkin semanttiset virheet vaiheessa 2 (askeleiden merkitys)

• Jotkin semanttiset virheet vaiheessa 3 (operaatioiden suoritus)

• Koska Python on tulkattava kieli, vaiheiden 2 ja 3 virheet havaitaan vasta

ohjelman suorituksen aikana

• Vaiheen 1 virheet havaitaan suorituksen alussa (syntaksi tarkistetaan)

Page 15: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Virheiden havaitseminen - esimerkki

• Esimerkkilause: “Kirjoita viikon n:nnen päivän nimi.”

• Syntaktisesti oikein

• Semanttinen oikeellisuus voidaan tarkastaa vasta suoritettaessa

• Lause on semanttisesti oikein vain tietyille n:n arvoille

• n:n arvo tiedetään vasta silloin

Page 16: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Loogiset virheet

• Syntaktisesti oikea, virheellisen tuloksen antava ohjelma sisältää loogisen

virheen

• Loogiset virheet voidaan havaita esim. vertaamalla algoritmin tuottamaa print

oikeaksi tiedettyyn tulokseen

• Edellyttää oikein tuloksen tuntemista

• Esim. Lukujen summan laskevan algoritmin tulos tunnetaan

• Loogiset virheet vaikeampi havaita kuin syntaktiset ja semanttiset

• Voidaan välttää tuomalla algoritmin semantiikka selvästi esille

• Kuvaavien nimien käyttö

• Ohjelmakoodin sijoitetut kommentit

Page 17: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Algoritmin suoritusjärjestys - peräkkäisyys

• Algoritmin lauseet suoritetaan algoritmin

määräämässä järjestyksessä

• Peräkkäisyys (sequential) on yksi algoritmien

perusohjausrakenteista (flow of control)

• Peräkkäisessä ohjelmassa lauseet suoritetaan

• Yksi kerrallaan

• Täsmälleen kerran

• Siinä järjestyksessä kuin ne ovat algoritmissa

• Viimeisen lauseen suoritus päättää algoritmin suorituksen

Page 18: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Lause ja lauseke

• Algoritmin yksittäisiä käskyjä (tai komentoja) kutsutaan lauseiksi (statement)

• Lause on yksi suoritettava osa lausekielistä ohjelmaa, joka koostuu useista lauseista

• Lausekkeella (expression) tarkoitetaan

• Luku- tai muita arvoja (2, “muumi”, 523.3)

• Muuttujaviittauksia

• Erilaisia laskutoimituksia (+, -, *, /) tai

• Muita operaatioita sisältävää ilmausta

• Lausekkeella on sen osista määräytyvä yksikäsitteinen arvo

Page 19: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Lause ja lauseke

• Lauseen ja lausekkeen ero: lausekkeella on arvo, lauseella ei

• Lauseketta ei voi käyttää yksinään, sen on oltava lauseen osa

• Lausekkeiden asema tosin vaihtelee eri ohjelmointikielissä

• Lausekkeita:

3 + 4

x + 7 * y

• Lauseita:

a = 3 + 4

b = 3 * a

Page 20: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Operaattorit

• Operaattori määrää mitä lasketaan

• Binääriset operaattorit

• Aritmeettiset operaattorit

• Plus, miinus, kerto, …

• Asetusoperaattori (seuraavaksi)

• Vertailuoperaattorit <, >, =, …

• Loogiset operaattorit (ja, tai, ..)

• Unaariset operaattorit

• Negaatio (esim -5)

• Ja monia muita kielestä riippuen

Page 21: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Operandit

• ”Objekteja”, joita operaattori käyttää arvon laskemiseen

Esim: 4 + 2, operaattori on + ja operandeja ovat 4 ja 2.

-42, operaattori on – ja operandi on 42.

Page 22: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Muuttujat

Page 23: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Muuttujat

• Algoritmin halutun tuloksen saavuttamiseen käytetään usein apuna

muuttujia (variables)

• Muuttuja

• On nimi, johon on liitetty jokin arvo

• Arvo voi muuttua algoritmin suorituksen aikana

• Tarkoittaa usein tietokoneen muistipaikkaa

• Algoritmin käskyt muuttavat muistipaikkojen sisältöä (eli muuttujien arvoja)

Muuttuja

Page 24: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Muuttujan alustus ja arvon asetusAsetuslause eli sijoituslause antaa

muuttujalle arvon tai muuttaa sen arvoaesim

muuttuja = lauseke x = 4 + 2

• Muuttuja on sen muuttujan nimi jonka arvo

halutaan asettaa

• Lauseke on tälle muuttujalle sopivan arvon

tuottava lauseke

Page 25: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Muuttujan alustus ja arvon asetusesim

muuttuja = lauseke x = 4 + 2

• Asetuslauseen semantiikka:

– Lasketaan asetuslauseen oikean puolen

saama arvo

– Asetetaan saatu arvo vasemman puolen

muuttujan (uudeksi) arvoksi

– Jos muuttujalla oli ennestään arvo, se häviää

• Oikealla puolella olevan lausekkeen

jokaisella muuttujalla oltava arvo

Page 26: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause ja ohjelmointikielet

• Joissakin kielissä muuttujilla on jokin oletusarvo (esim. 0 lukuarvoille)

• int x

• Pythonissa esitellylle muuttujalle on asetettava arvo

• x = 0

Page 27: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause esimerkkejä

y = 4 + 3

• Muuttujan y arvo lauseen suorittamisen jälkeen?

Page 28: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause esimerkkejä

y = 4 + 3

• Muuttujan y arvo lauseen suorittamisen jälkeen?

• Vastaus: 7

Page 29: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause esimerkkejä

x = 5

y = x

• Muuttujan x arvo on ensimmäisen lauseen suorittamisen jälkeen 5.

• Muuttujan y arvo on toisen lauseen suorittamisen jälkeen sama kuin x:n arvo,

eli 5.

Page 30: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause esimerkkejä

x = 8

y = x + 2

x = 4

• Muuttujien x ja y arvot ohjelman suorittamisen jälkeen?

Page 31: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Asetuslause esimerkkejä

x = 8

y = x + 2

x = 4

• Muuttujien x ja y arvot ohjelman suorittamisen jälkeen?

• Muuttujan x arvo on ensimmäisen lauseen suorittamisen jälkeen 8.

• Muuttujan y arvo on 2. lauseen suorittamisen jälkeen x:n arvo plus 2, eli 10.

• Muuttujan x arvo on viimeisen lauseen suorittamisen jälkeen 4. Lause ei

muuta y:n arvoa, eli y:n arvo on edelleen 10.

Page 32: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Tyypit

• Muuttujiin ja lausekkeisiin liittyy tyypin käsite

• Tyyppi kertoo, millainen arvo muistipaikkaan tallennetaan

• Tyyppi määrittää myös arvon tallennusmuodon tietokoneen muistiin

Page 33: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisäänrakennettuja tyyppejä Pythonissa

Tyyppi Esimerkkejä

arvoista

Kokonaisluku 4

-95

0

Liukuluku 3.14

-123.66

Totuusarvo True

False

Merkkijono ”erkki merkkijono

esimerkki”

””

Page 34: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Muuttujan tyyppi Pythonissa

• Pythonissa muuttujalla ei ole tyyppiä, vaan arvolla, joka muuttujaan on

tallennettu

• => Python on ns. dynaamisesti tyypitetty kieli

• Muuttujan arvon tyyppi voi muuttua suorituksen aikana

• Esim:

x=2

x=“hei maailma”

Page 35: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Staattinen tyypitys

• Pythonin muuttujat ovat dynaamisesti tyypitettyjä

• Vastakohta tälle on staattinen tyypitys

• Tällöin muuttujan tyyppi määräytyy täysin kääntämisvaiheessa, eikä se voi

muuttua ajon aikana

• Muun kuin oikeantyyppisen arvon tallentaminen muuttujaan ei ole sallittua

• Muuttujat alustetaan ilmaisemalla muuttujan tyyppi

• Esim. Javassa:

int x = 3;

Tai:

int x;

x =3

Page 36: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Staattinen tyypitys

• Pythonin muuttujat ovat dynaamisesti tyypitettyjä

• Vastakohta tälle on staattinen tyypitys

• Tällöin muuttujan tyyppi määräytyy täysin kääntämisvaiheessa, eikä se voi

muuttua ajon aikana

• Muun kuin oikeantyyppisen arvon tallentaminen muuttujaan ei ole sallittua

• Muuttujat alustetaan ilmaisemalla muuttujan tyyppi

• Esim. Javassa:

int x = 3;

Tai:

int x;

x =3

Page 37: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Tulostaminen Pythonissa

• print-käskyllä voi tulostaa vakioita ja muuttujien arvoja

• Esim:

print “erkki merkkijono esimerkki”

• Pilkulla voi erottaa eri vakioita tai muuttujia

• Tulostukseen pilkulla eroteltujen osien väliin lisätään välilyönti

• Esim:

x=12

print “x:n arvo on”, x

• Tulostaa:

x:n arvo on 12

Page 38: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke

Page 39: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke

Aritmeettinen lauseke on lauseke, jonka arvo

on luku

esim. 3 * x + y

(jos muuttujat x ja y ovat lukuarvoisia)

• Käytössä operaatiot:• +

• -

• * (kertolasku)

• / (jakolasku)

• % (jakojäännös)

• ** (potenssi)

Page 40: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke

• Lauseketta laskettaessa arvo lasketaan vasemmalta oikealle

• 1. Potenssi ** on vahvin (lasketaan ensin)

• 2. Aritmeettiset operaattorit *, / ja % lasketaan tämän jälkeen

• 3. Operaattorit + ja - ovat heikompia

• Ts. sama laskujärjestys kuin matematiikassa

• Voidaan käyttää sulkeita laskujärjestyksen osoittamiseksi

• Ei kannata olla liian “nokkela”, epäselviä lausekkeita on hyvä selventää

sulkeilla

• Esim: y+x**3%2 voisi kirjoittaa: y + ((x**3) % 2)

Page 41: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke - esimerkkejä

3 * x + 2

• Lasketaan ensin 3*x, johon lisätään 2.

• Esim jos x:n arvo on 4, tulee lausekkeen arvoksi 14.

Page 42: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke - esimerkkejä

3 * (x + 2)

• Lasketaan ensin x + 2, jonka tulos kerrotaan 3:lla.

• Esim jos x:n arvo on 4, tulee lausekkeen arvoksi 18.

Page 43: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke - esimerkkejä

z = 4 * (x + y - 1)

• Lasketaan ensin x + y, jonka tuloksesta vähennetään 1.

• Seuraavaksi kerrotaan tämä 4:llä.

• Lopuksi sijoitetaan saatu arvo muuttujaan z.

• Mikä tulee z:n arvoksi jos x:n arvo on 4 ja y:n -2?

Page 44: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke - esimerkkejä

z = 4 * (x + y - 1)

• Lasketaan ensin x + y, jonka tuloksesta vähennetään 1.

• Seuraavaksi kerrotaan tämä 4:llä.

• Lopuksi sijoitetaan saatu arvo muuttujaan z.

• Mikä tulee z:n arvoksi jos x:n arvo on 4 ja y:n -2?

• Vastaus: lausekkeen arvoksi tulee 4 eli 4 * (4 + (-2) - 1.

• Huom! Aritmeettinen lauseke on tässä sijoituslauseen oikea puoli

Page 45: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Aritmeettinen lauseke - esimerkkejä

• Jakojäännösoperaattori % laskee jakojäännöksen, kun vasen puoli jaetaan

oikealla.

• Esim: jos z on 5, niin lausekkeen z % 3 arvo on 2

z = z % 2

• Tässä z:n arvoksi asetetaan 0, jos z on jaollinen kahdella, ja 1 jos z ei ole

jaollinen kahdella

Page 46: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Looginen lauseke

Page 47: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Looginen eli totuusarvoinen lauseke

Looginen tai totuusarvoinen tai ehtolauseke

on lauseke, jonka arvo on totuusarvo tosi

(true) tai epätosi (false)

esim. a < b + 1

Page 48: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Vertailuoperaattorit

• Lausekkeissa voidaan käyttää vertailuoperaattoreita

• Huom! Esimerkkilauseiden arvot riippuvat muuttujien arvoista.

• Vertailuoperaattorit vaihtelevat ohjelmointikielissä.

Vertailuoperaattori Esimerkki

Suurempi > a > 4

Pienempi < a < -2

Suurempi tai yhtäsuuri >= a >= b + 2

Pienempi tai yhtäsuuri <= b <= 0

Yhtäsuuret == a == b

Erisuuret != a != c

Huom! Kaksi yhtäsuuruusmerkkiä

Page 49: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a < 4

• Lausekkeen arvo on tosi, mikäli muuttujan a arvo on pienempi kuin 4.

Muulloin lausekkeen arvo on epätosi.

Page 50: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a >= b + 2

• Lausekkeen arvo on tosi, mikäli muuttujan a arvo on suurempi tai yhtäsuuri

kuin aritmeettisen lausekkeen b + 2. Muulloin lausekkeen arvo on epätosi.

Page 51: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a – 1 > b

• Kun a = 3 ja b = 2, mikä on lausekkeen arvo?

Page 52: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a – 1 > b

• Kun a = 3 ja b = 2, mikä on lausekkeen arvo?

• Vastaus:

• Vasen puoli: a – 1 eli 3 – 1 = 2

• Oikea puoli: b eli 2

• Vertailu on siis 2 > 2, mikä ei pidä paikkaansa joten lausekkeen arvo Epätosi

Page 53: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Loogiset operaattorit

• Totuusarvoinen lauseke voikin sisältää loogisia operaattoreita vertailujen

yhdistämiseen

• Pythonissa on käytössä mm. loogiset operaattorit and, or ja not

Page 54: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Loogiset operaattorit

lauseke1 lauseke2 lauseke1 and

lauseke2

lauseke1 or

lauseke2

not lauseke1

False False False False True

False True False True True

True False False True False

True True True True False

Page 55: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a < 0 and b < 0

• Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0.

Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo on

epätosi.

Page 56: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a < 0 or b < 0

• Milloin lausekkeen arvo on tosi?

Page 57: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

a < 0 or b < 0

• Milloin lausekkeen arvo on tosi?

• Lausekkeen arvo on tosi, mikäli muuttujan a tai b arvo on pienempi kuin 0.

Mikäli molempien arvo on nolla tai sitä suurempi, lausekkeen arvo on

epätosi.

Page 58: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

(a < 0 and b > 0) or a < b

• Mikä on lausekkeen arvo, kun a = -1, b =0?

Page 59: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Totuusarvoiset lausekkeet - esimerkkejä

(a < 0 and b > 0) or a < b

• Mikä on lausekkeen arvo, kun a = -1, b =0?

• Tosi, voidaan tarkistaa sieventämällä:

(-1 < 0 and 0 > 0) or -1 < 0

(True and False) or True

False or True

True

Page 60: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valinta- eli ehtolause

Page 61: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Ohjausrakenteet

• Peräkkäisyys on perusohjausrakenne

• Algoritmin on kuitenkin kyettävä toimimaan erilaisissa tilanteissa -> pelkkä

peräkkäisyys ei riitä

• Tarvitaan siis ohjausrakenteita eli kontrollirakenteita:

• Valinta (branching)

• Toisto (repetition)

• Ohjausrakenteet kuvaavat järjestyksen, jossa algoritmin toimenpiteet

suoritetaan

• Algoritmi koostetaan ohjausrakenteita yhdistelemällä

• Peräkkäisyys, valinta ja toisto riittävät minkä tahansa algoritmin esittämiseen

Page 62: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valinta- eli ehtolause

• Saman ongelman ratkaisemiseksi eri tilanteissa algoritmin toimittava eri

tavoin

• Algoritmin varauduttava vaihtoehtoisiin toimintoihin

• Algoritmin on siis tehtävä valinta eri toimintojen välillä

• Valinta ei saa olla satunnainen vaan sen tulee perustua yksiselitteiseen

valintaehtoon

Page 63: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valinta- eli ehtolause

if ehto:

toiminto

• if on yksinkertaisin

valinnan muoto jonkin toiminnon tekemiseen tai sen

tekemättä jättämiseen.

Page 64: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valinta- eli ehtolause

if ehto:

toiminto

• ehto on totuusarvoinen lauseke (eli arvo on

joko tosi tai epätosi)

• Ehto määrää tilanteen jossa toiminto

suoritetaan

– Jos ehto on tosi, toiminto suoritetaan muuten ei

Page 65: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valinta- eli ehtolause

if ehto:

toiminto

• toiminto voi olla yksittäinen lause tai

joukko lauseita

• Se voi siis koostua useasta toiminnosta

• Voi siis sisältää asetuslauseita,

valintalauseita, toistolauseita, jne.

Page 66: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Ehtolause - esimerkki

if a < b + 2:

a = b

• Mikäli a:n arvo on pienempi kuin b:n arvo + 2, suoritetaan toiminto.

• Tässä toiminto asettaa a:n arvoksi b:n arvon.

Page 67: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisennys

• Pythonissa sisennysten on oltava oikein!

• Sisennys määrittää mihin lohkoon lause kuuluu

• Saman lohkon lauseet sisennettävä samalle tasolle

• Esimerkki: vasemmanpuoleinen koodipätkä kasvattaa a:n arvoa aina, mutta

oikeanpuolimmainen vain jos a < b

if a < b:

a = b

a = a + 1

if a < b

a = b

a = a + 1

Page 68: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisennys Pythonissa

• Mieluiten joko välilyönneillä tai tabulaattoreilla sisennykset, ei näiden

yhdistelmällä

• (Python 2:ssa yhdistely mahdollista, Python3:ssa kielletty)

• Vain kaksoispistettä seuraavan rivi saa ja täytyy olla sisennetty enemmän

kuin edellinen rivi

• Virheellinen sisennys on syntaksivirhe: IndentationError

Oikea sisennys Virheellinen sisennys

a = 3

b = 4

c = a * 2 + b

a = 3

b = 4

c = a*2 + b

Page 69: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

if-else-lause

if-else-lause on yleisempi valinta, jossa valitaan

kahden vaihtoehtoisen toiminnon välillä:

if ehto:

toiminto1

else:

toiminto2

Page 70: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

if-else-lause

if ehto:

toiminto1

else:

toiminto2

• Mikäli ehto on tosi, suoritetaan toiminto1.

Muussa tapauksessa suoritetaan

toiminto2.

• Vain toinen toiminnoista suoritetaan

Page 71: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

if-else-esimerkki

if a > 0 and b > 0:

print “Molemmat nollaa suurempia”

else:

print “Molemmat ei nollaa suurempia”

Page 72: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

if-else –esimerkki

if x > y:

max = x

else:

max = y

• Mikäli muuttujan x arvo on suurempi kuin muuttujan y, sijoitetaan muuttujaan

max x:n arvo. Muussa tapauksessa (else-haarassa) sijoitetaan max:iin y:n

arvo.

Page 73: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisäkkäiset ehtolauseet

• Monimutkaiset loogiset lausekkeet voivat tehdä ymmärtämisestä hankalaa

• Algoritmi voidaan kirjoittaa yksinkertaisimmilla loogisilla lausekkeilla käyttäen

sisäkkäisiä ehtolauseita

Page 74: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Sisäkkäiset ehtolauseet - esimerkki

if a > b and a > c:

print "a on suurin”

• Tämä voidaan kirjoittaa sisäkkäisiä ehtolauseita käyttäen:

if a > b:

if a > c:

print "a on suurin"

• Huomaa lauseiden sisennys!

Page 75: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Kolme tai useampi vaihtoehtoa

• Useamman kuin kahden valinnan rakenne useissa kielissä ainakin kahdella tavalla

• Joko käyttämällä sisäkkäisiä if-lauseita (Tapa 1)

• Tai käyttämällä avainsanaa elif (Tapa 2)

if ehto1:

toiminto1

else:

if ehto2:

toiminto2

else:

if ehto3:

toiminto3

else:

toiminto4

if ehto1:

toiminto1

elif ehto2:

toiminto2

elif ehto3:

toiminto3

else:

toiminto4

Page 76: Palautetta viime luennosta · • Lausekkeen arvo on tosi, mikäli muuttujien a ja b arvo on pienempi kuin 0. Mikäli edes toisen arvo on nolla tai sitä suurempi, lausekkeen arvo

Valintalause ohjelmointikielissä

• Valintalause on käytettävissä kaikissa ohjelmointikielissä

• Syntaksi vaihtelee

• Monissa muissa kielissä sisennyksellä ei ole väliä, vaan lohko osoitetaan

muilla tavoilla

• Sisennysten käyttö on kuitenkin useimmissä kielissä hyvän tavan mukaista

Java Python LOLCODE

if (ehto) {

toiminto1;

} else {

toiminto2;

}

if ehto:

toiminto1

else:

toiminto2

ehto, O RLY?

YA RLY

toiminto1

NO WAI

toiminto2

OIC