Tie koodariksi

Ohjelmoinnin alkeet

Luku 7: Ehdot

Tärkeässä roolissa ohjelmoinnissa ovat ehdot, joiden avulla ohjelman saa toimimaan eri tavalla eri tilanteissa riippuen muuttujien arvoista. Tavallisimmat ehdot ovat seuraavat:

ehtomerkitys
a == ba ja b ovat yhtä suuret
a != ba ja b eivät ole yhtä suuret
a < ba on pienempi kuin b
a <= ba on pienempi tai yhtä suuri kuin b
a > ba on suurempi kuin b
a >= ba on suurempi tai yhtä suuri kuin b

If-rakenne

Voimme käyttää ehtoja if-rakenteen avulla. Tässä on esimerkki koodista, jossa on ehto:

if x == 5:
    print("Heippa!")

Tässä ehtona on x == 5, mikä tarkoittaa, että muuttujan x tulee olla 5. Jos näin on, koodi tulostaa Heippa!, ja muuten koodi ei tee mitään.

Voimme myös lisätä mukaan else-haaran, joka aktivoituu, jos ehto ei päde:

if x == 5:
    print("Heippa!")
else:
    print("Moikka!")

Nyt jos x on 5, koodi tulostaa Heippa!, kuten ennenkin, mutta muuten koodi tulostaakin Moikka!.

Tässä on esimerkki monimutkaisemmasta if-rakenteesta:

if x == 1:
    print("apina")
elif x == 2:
    print("banaani")
elif x == 3:
    print("cembalo")
else:
    print("???")
Jos x on 1, koodi tulostaa apina, jos x on 2, koodi tulostaa banaani, ja jos x on 3, koodi tulostaa cembalo. Jos kuitenkin x on jotain muuta, koodi tulostaa ???.

Ehtojen yhdistäminen

Voimme luoda monimutkaisempia ehtoja sanojen and ja or avulla.

Sana and tarkoittaa, että useamman ehdon tulee päteä samaan aikaan. Esimerkiksi seuraava ehto vaatii, että x on vähintään 2 ja enintään 5:

if x >= 2 and x <= 5:
    print("Moikka!")
Sana or puolestaan tarkoittaa, että ainakin yhden ehdoista tulee päteä. Esimerkiksi seuraava ehto vaatii, että x on joko 3 tai 7:
if x == 3 or x == 7:
    print("Moikka!")
Voimme käyttää myös sulkuja selventämään, miten ehdot yhdistetään. Seuraava ehto vaatii, että joko x on 7 tai sitten x on vähintään 2 ja enintään 5:
if x == 7 or (x >= 2 and x <= 5):
    print("Moikka!")

Ehto silmukassa

Kun laitamme ehdon silmukan sisään, voimme saada silmukan toimimaan eri tavalla riippuen siitä, mikä silmukan kierros on menossa. Näin on seuraavassa koodissa:
for i in range(1,9):
    if i%2 == 0:
        print("parillinen",i)
    else:
        print("pariton",i)
Tässä on käytetty laskutoimitusta %, joka tarkoittaa jakojäännöstä. Ehto i%2 == 0 vaatii, että i:n jakojäännös 2:lla on 0 eli i on parillinen. Koodi toimii näin:
pariton 1
parillinen 2
pariton 3
parillinen 4
pariton 5
parillinen 6
pariton 7
parillinen 8

Seuraavissa tehtävissä sinun tulee laatia muuttujaan x liittyvä ehto. Esimerkiksi ehto x == 5 vaatii, että x:n arvo on 5, ja ehto x%2 == 0 vaatii, että x on parillinen.

Tehtävä 1 Ratkaisematon

Kirjoita ehto, joka vaatii, että muuttuja x on pariton.

Ehto:


Tehtävä 2 Ratkaisematon

Kirjoita ehto, joka vaatii, että muuttuja x on välillä 3...6.

Ehto:


Tehtävä 3 Ratkaisematon

Kirjoita ehto, joka vaatii, että muuttuja x on välin 3...6 ulkopuolella.

Ehto:


Tehtävä 4 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1...100. Kuitenkin aina kun luku on jaollinen kolmella, luvun sijasta tulostetaan teksti apina. Tulostuksen tulee siis alkaa seuraavasti:

1
2
apina
4
5
apina
7
...

Kirjoita ohjelma tähän:


Tehtävä 5 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1...100 niin, että peräkkäiset luvut on vaihdettu pareittain keskenään. Tulostuksen tulee alkaa seuraavasti:

2
1
4
3
6
5
...

Kirjoita ohjelma tähän:


Tehtävä 6 Ratkaisematon

Tarkastellaan lukujonoa, jossa on ensin kerran luku 1, sitten kahdesti luku 2, sitten kolmesti luku 3, jne. Lukujono alkaa siis 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ...

Tee ohjelma, joka tulostaa lukujonon 100 ensimmäistä lukua, jokainen luku omalle rivilleen.

Kirjoita ohjelma tähän:


Tehtävä 7 Ratkaisematon

Tarkastellaan lukujonoa, jossa on ensin luku 1, sitten luvut 1 ja 2, sitten luvut 1, 2 ja 3, jne. Lukujono alkaa siis 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ...

Tee ohjelma, joka tulostaa lukujonon 100 ensimmäistä lukua, jokainen luku omalle rivilleen.

Kirjoita ohjelma tähän:


Tehtävä 8 Ratkaisematon

Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on myös jaollinen 400:lla.

Tee ohjelma, joka tulostaa kaikki karkausvuodet välillä 1800...2200, jokainen vuosi omalla rivillään.

Kirjoita ohjelma tähän: