Valinta
Valitse tästä, minkä tasoisia tehtäviä haluat tehdä.
Alempana on hieman kertaavaa teoriamateriaalia.
Tehtävät on jaettu kolmeen eri vaikeustasoon. Valitse alta sinulle sopiva taso.
VALINTAAN LIITTYVÄ TEORIAMATERIAALI
Tässä osiossa käydään läpi valintaan liittyviä rakenteita ja niiden käyttöä. Materiaali vastaa sisältösuunnitelman kohtia 5.2.1-5.2.4
Ohjelman kulkua voidaan ohjata valintarakenteilla. Näitä ovat esim. ehtolauseet, kuten if-lause. Niiden ideana on suorittaa koodia sillä perusteella, toteutuuko jokin ehto.
5.2.1 Mikä on if-lause?
If-lauseella voidaan määrittää ehto, jonka toteutuessa sitä seuraava (sisennetty) koodilohko suoritetaan.
if ehto (== True):
suorita koodilohko
Jos ehto ei toteudu (ehto == False), ei tehdä mitään ja suoritus jatkuu.
Mikä on else?
If-lauseen perään voidaan lisätä else-rakenne, jolla voidaan suorittaa jälleen sisennetty koodilohko, jos ehto ei toteudu.
if ehto:
suorita tämä koodilohko
else:
suorita tämä koodilohko
Näistä suoritetaan siis aina vain jompikumpi riippuen siitä, toteutuuko ehto. Elseen ei tule ehtoa.
5.2.2 Mitkä ovat vertailuoperaattorit?
< pienempi kuin
> suurempi kuin
<= pienempi tai yhtä suuri kuin
>= suurempi tai yhtä suuri kuin
== yhtä suuri kuin
!= eri suuri kuin
Missä niitä käytetään?
Vertailuoperaattoreita voidaan käyttää muun muassa ehtolauseissa. Niillä voidaan verrata muuttujia ja arvoja keskenään. Voidaan myös asettaa muuttujan arvoksi totuusarvo käyttäen vertailuoperaattoreita esim. arvo = 1 == 2, jolloin arvoksi tulee False.
Esim.
if ehto == True:
suorita koodilohko
tai:
if ehto != True:
suorita koodilohko
tai:
if arvo < 100:
suorita koodilohko
Vertailuoperaattoreita käytetään myös mm. silmukoissa, joissa niillä asetetaan ehto, jonka toteutuessa silmukan suoritus päättyy. Silmukoita ei kuitenkaan käsitellä tässä osiossa.
5.2.3 Miten kurssilla jo esitellyt konnektiivit vertautuvat ohjelmointikielen avainsanoihin?
Python-kielessä on monta avainsanaa, joilla on vastaavuudet matemaattisissa konnektiiveissa. ’not’ on negaatio, ’and’ on konjuktio, ’or’ on disjunktio. Totuustauluja käyttäen voi päätellä, miten jokin if-lause toimii.
Esimerkkinä on ehtolause, josta luodaan totuustaulu:
if ehto or ehto2:
tee jotain
Totuustaulu olisi seuraavanlainen:
| ehto | ehto2 | ehto or ehto2 | Suoritetaan ”tee jotain” |
|---|---|---|---|
| tosi | tosi | tosi | kyllä |
| tosi | epätosi | tosi | kyllä |
| epätosi | tosi | tosi | kyllä |
| epätosi | epätosi | epätosi | ei |
Eli mikäli toinen ehdoista tai molemmat toteutuvat, suoritetaan koodilohko.
Implikaatio on kyseessä silloin, kun ehdosta A seuraa B. Jos A:sta ei seuraa B:tä, kyseessä ei ole implikaatio. Jos B ei riipu A:sta, kyseessä on silti implikaatio.
Implikaatio esimerkin kautta:
Aleksi on sanonut ostavansa Alinalle auton, jos Aleksi voittaa lotossa. A on tällöin lottovoitto ja B on auton ostaminen. Lottovoitosta seuraa auton ostaminen. Jos A toteutuu, B toteutuu, eli A takaa B:n.
Jos Aleksi ei voita lotossa, hän voi olla ostamatta Alinalle autoa, sillä lupauksessa oli ehtona lottovoitto. Aleksi voi myös ostaa Alinalle auton, vaikkei olisi voittanut lotossa, sillä rahaa voi saada muillakin tavoin ja lupauksessa ei kielletty auton ostamista ilman lottovoittoa. Implikaatio toteutuu näissä tapauksissa.
Vain jos Aleksi voittaa lotossa, eikä osta autoa, implikaatio ei toteudu, sillä lupaus on rikottu. Implikaatio on siis ikään kuin ehdollinen lupaus.
Ekvivalenssi on kyseessä silloin, kun A ja B ovat yhtäpitävät, eli A:n ja B:n totuusarvot ovat samat, eli Python-symbolein: silloin kun ehto 1 ja ehto2 yhdistettynä == -operaattorilla palauttavat True. Eli: (ehto1 == ehto2) = True. Eli toisin sanoen, jos A ja B ovat molemmat tosia tai epätosia, ekvivalenssi toteutuu.
5.2.4 Mikä on elif?
Voimme if-else-rakennetta käyttäen luoda valintarakenteita, joissa on rajallinen määrä vaihtoehtoja. Vaihtoehtoja voi kuitenkin lisätä lisäämällä elif-lauseen. Elif-lauseita voi lisätä saman if-lauseen alle rajattomasti. Elif onkin lyhennelmä sanoista else if.
Elif toimii seuraavasti:
Jos if-lauseen ehto ei päde, siirrytään elif-lauseen ehtoon.
Esim.
luku = 100
if luku > 120:
tee jotain
elif luku > 110:
tee jotain muuta
elif luku >= 100:
tee vielä jotain muuta
else:
älä tee mitään
Elif ei ole sama kuin else, sillä else ei voi sisältää ehtoa ja elifin tulee aina sisältää ehto. Kumpikaan ei voi esiintyä ilman if-lausetta (tässä kontekstissa) ja molemmat sijoittuvat aina if-lauseen jälkeen. Else tulee kuitenkin aina myös elifin jälkeen.
Hurraa! Teoriaosuus on käyty läpi. Ei kun tehtävien pariin.
