Ratkaistu: / tehtävää

Ohjausrakenteet Pythonissa

Tässä materiaalissa palautellaan mieleen Pythonin ehto- ja silmukkarakenteet.

Ehtorakenteet

Ehtorakenteiden avulla ohjelman suoritus voi vaihdella sen mukaan, mitä tietoja sille kulloinkin annetaan. Eli ehtorakenteilla testataan annetun ehdon totuusarvo ja toimitaan sen mukaan ohjelmassa.
if luku < 10:
    print("Luku on pienempi kuin 10")
elif luku < 100:
    print("Luku on pienempi kuin 100")
elif luku < 1000:
    print("Luku on pienempi kuin 1000")
else:
    print("Luku on yhtä suuri tai suurempi kuin 1000")
Yllä siis, jos ehto luku < 10n toteutuu, tulostetaan ruudulle teksti Luku on pienempi kuin 10 ja poistutaan rakenteesta.
Muistetaan, että Pythonissa sisennys on osa syntaksia: se määrittää, mitkä rivit kuuluvat samaan koodilohkoon. Samalla sisennystasolla olevat rivit kuuluvat samaan lohkoon. Tässä esimerkissä if-lauseen ehdon toteutuessa suoritetaan siihen kuuluva sisennetty koodilohko, ja sama pätee rakenteen muihin haaroihin.
Eri ohjelmointikielissä erot ovat pääasiassa syntaktisia. Ehtorakenne perustuu if-haaraan, ja se voi sisältää myös muita ehdollisia haaroja sekä valinnaisen lopullisen else-haaran. Pythonissa muut ehdolliset haarat kirjoitetaan elif-lauseilla. Haaroja tarkastellaan kirjoitetussa järjestyksessä ja valitaan ensimmäinen haara, jonka ehto toteutuu.
Okei, no miten ehtolauseen totuusarvo sitten selvitetään?
Esimerkki. Tässä kysytään käyttäjältä valintaa eri laskutoimitusten välillä ja suoritetaan valittu toiminto. else-lausekkeella ilmoitetaan virhetilanteesta, kun mikään ehdoista ei toteutunut.
valinta = input("Tee valintasi: ").strip().lower()
if valinta == "p" or valinta == "pituus":
    pituus()
elif valinta == "m" or valinta == "massa":
    massa()
elif valinta == "t" or valinta == "tilavuus":
    tilavuus()
elif valinta == "l" or valinta == "lämpötila":
    lampotila()
else:
    print("Valitsemaasi toimintoa ei ole olemassa")

Ehdollista toistoa

Tuttu
while-lause
toistaa silmukassa olevaa koodilohkoaan niin kauan kuin
ehtolause
on totta. Silmukan yleisin käyttö Ohjelmoinnin alkeissa oli erinäisten syötteiden tarkistimessa ja uudelleenkysymisessä, koska while-silmukka sopii parhaiten tilanteisiin joissa toistojen lukumäärää ei tiedetä ennalta.
Esimerkki.
a = 1
s = 0
print("Anna yhteenlaskettava luku")
print("Yhteenlasku lopetetaan numerolla 0")
while a != 0:
    print("summa:", s)
    a = int(input("yhteenlaskettava: "))
    s = s + a
print("Kokonaissumma =", s)

Numeroitua toistoa

Numeroitu toisto toteutetaan
for-silmukalla
, jolla käydään läpi
iteroitava
objekti (esim. lista) tai jokin numeroitu alue range()-funktiolla.
kukat = ['Ruusu', 'Orvokki', 'Auringonkukka']
for kukka in kukat:
    print(kukka)
Ja...
for i in range(0, 10):
    print(i)
Tässä i on
silmukkamuuttuja
. Jos muistat missä i ja kumppanit yleensä esiintyivät Ohjelmoinnin alkeissa, saatat muistaa range-silmukan: for i in range(0, 10) (turha 0 lisätty vertailun helpottamiseksi), jolla käydään käpi annettu lukualue.
Yleisen for-silmukan peruskäyttö monissa muissa ohjelmointikielissä muistuttaakin paljon tätä range-silmukkaa.

Lopuksi

Nyt voidaankin siirtyä selvittämään miten C-kielessä ohjausrakenteet on toteutettu. Luvassa on uutta asiaa, mm. uusia ohjausrakenteita..
?