Skip to content

Ohjaus eli kontrollirakenteet

Kolme perusrakennetta

Ohjelmoinnissa käytetään kolmea perusrakennetta:
- Peräkkäis-rakenne
- Ehto-rakenne
- Toisto-rakenne.

Ohjelmoinnin kolme perusrakennetta

Ehto-rakenteet

if-ehtolause

Valintarakenteista if-lausetta käytetään testaamaan onko sulkeissa annettu lauseke kokonaisuudessaan tosi tai epätosi. Ainoastaan siinä tapauksessa, että ehtolause on tosi, suoritetaan ehtolauseen jälkeinen lauseke tai lauselohko. Suoritettavat lauseet sisennetään! Oletuksena Pythonissa on että sisennys on neljä välilyöntiä.

if ehto: 
    lause
    lause

if-lauseeseen on mahdollisuus liittää else-lohko, joka suoritetaan, jos varsinainen if-lauseen ehto ei toteudu.

if ehto: 
    lause1
    lause2
else
    lause_n1
    lause_n2 

Ehtolauseita voidaan myös ketjuttaa. Tällöin toteutuneen ehdon jälkeen ei enään tarkisteta jäljelle jääneitä ehtoja. Tällöin puhutaan if elif -lauseryhmästä.

if ehto1:
  komento
elif ehto2: 
  komento
elif ehto3: 
  komento
else: 
 komento

Tässä muutamia esimerkkejä:

#esimerkki 1
money = 8
if money < 10:
    print("Money is less than 10 euros. You can not withdraw money!");

#esimerkki 2    
#if - elif - else
txt = input("Anna jokin luku: ")
number = int(txt)
if number == 10:
    print("numero on 10")
elif number < 10:
    print("numero on pienempi kuin 10")
elif number >= 20:
    print("numero on suurempi tai yhtäsuuri kuin 20")
else:
    print("numero on 11 ja 19 välissä")
Voit yhdistää useamman ehdon and- ja or -operaattorilla. Seuraavassa esimerkissä annetun luvun täytyy olla nollaa suurempi ja pienempi kuin kymmenen.
num = int(input("Anna jokin nollaa suurempi ja kymmentä pienempi luku "))
if (num > 0 and num < 10):
    print("Annoin kelvollisen luvun")

Ehtolauseiden loogiset operaattorit

Operaattori Tehtävä Esimerkki
== yhtäkuin if number == 10:
!= erisuuri kuin if number != 10:
< pienempi kuin if number < 10:
> suurempi kuin if number > 10
<= pienempi tai yhtäsuuri kuin if number <= 10:
>= suurempi tai yhtäsuuri kuin if number >= 10:
not ei ole tosi if not valid:

Zen

Ehtorakenteista muodostuu ohjelman logiikka, eli toisin sanottuna sen älykkyys. Vaikka näennäisesti ehtolauseet on melko helppo ymmärtää ne voivat väärin käytettynä olla erittäin monimutkaisia ja vaikeita. Myös suurin osa loogisista ohjelmointivirheistä tapahtuu ehto- ja toistolauseissa. Joten ole tarkkana kun kirjoitat ehtolauseita ;-)

Toistorakenteet

while-toistolause

While-silmukka on yksinkertainen toistorakenne. Siinä testataan onko ehtolause tosi ja silmukan sisällä olevien lauseiden toistaminen jatkuu niin kauan aikaa, kun ehto pysyy totena. Heti kun ehto ei enään ole voimassa, sovelluksen suoritus jatkuu toistolausetta seuraavasta lauseesta.

while ehto:
  clause1
  clause2
  clauseX

Alla oleva esimerkki tulostaa luvut 1-10:

count = 1
while count <= 10:
  print(count)
  count+=1

for-toistolause

Toistorakennetta for käytetään yleensä yksinkertaisissa toistolauseissa, joissa toistomäärä on tiedossa. for-silmukka toistaa lausetta tai lauseita, kunnes toistoehto ei ole enää voimassa. for-silmukkaa käytetään käymään läpi haluttu sekvenssi joka voi olla lista, tuple, sanakirja, joukko tai merkkijono. Python kielen for silmukka on yksinkertaisempi kuin muiden ohjelmointikielten ja toimii kuin iteraattorimenetelmä muissa olio-ohjelmointikielissä. for-silmukan avulla voimme suorittaa joukon lauseita, kerran jokaiselle listan, tuplen jne. kohteelle.

Alla oleva esimerkki tulostaa kuusi lukua, luvut nollasta viiteen:

for x in range(6):
    print(x)
toisto

Alla oleva esimerkki tulostaa yhdestä viiteen tähtimerkkiä:

a = ""
for i in range(5):
    a = a + "*"
    print(a)
toisto

Alla oleva esimerkki tulostaa names-listan nimet konsolille:

names = ["Annika", "Jack", "Mårten"]
for x in names:
  print(x)
toisto

Vinkki for-loopilla voi käydä läpi myös merkkijonon, kokeile mitä tekee seuraava koodi:

for x in "Python Rules": print(x)

break-hyppylause

break-lauseella voidaan katkaista toistolauseen toisto. while ja for toistolauseiden sisällä on mahdollista käyttää break ja continue kontrollilauseita.

break katkaisee silmukan suorituksen ja poistuu silmukkakoodista suorittamatta silmukan loppua.

while True: 
    luku = int(input("Anna jokin kokonaisluku "))
    if luku < 0:
        print("poistutaan loppista, hei hei")
        break
    else:
        print("Annoit luvun ", luku)

#ohjelman suoritus jatkuu täältä jos annetaan nollaa pienempi luku
print("Taas mennään...")