Pseudokoodit vaikeat
Koodin vasemmalla puolella olevat numerot kuvastavat rivejä.
SUOMEKSI myös
Tehtävä 1. Mitä tapahtuu tässä pseudokoodissa? Selitä vastaus riveittäin.
1. def kahvin_keittäminen():
2. suodatinpaperi = 0
3. kahvi = 0
4. tarvittava_määrä = 6
5. kahvinkeitin_käynnissä = False
6. kahvia_pannussa = 0
7.
8. suodatinpaperi = lisää_suodatinpaperi(suodatinpaperi)
9.
10. while kahvi < tarvittava_määrä:
11. kahvi = lisää_kahvia(kahvi)
12.
13. kahvinkeitin_käynnissä = True
14.
15. if kahvinkeitin_käynnissä == True:
16. while tiputtaa_vettä(kahvi,kahvia_pannussa) == True:
17. kahvia_pannussa= kahvia_pannussa + 1
18.
19. return kahvia_pannussa

- Määritellään funktio kahvin_keittäminen()
- Alustetaan muuttuja suodatinpaperi arvoon nolla, koska sitä olla vielä lisätty.
- Alustetaan muuttuja kahvi nollaksi. koska kahvia ei ole vielä laitettu suodattimeen.
- Määritellään tarvittava määrä kahvia (6), jotta voidaan tarkistaa, onko kahvia tarpeeksi.
- Alustetaan kahvinkeitin_käynnissä arvoon False, koska keitin ei ole vielä käynnissä.
- Alustetaan muuttuja kahvia_pannussa arvoon 0, koska pannussa ei ole vielä kahvia.
- Tyhjä rivi
- Lisätään suodatinpaperi kutsumalla funktiota lisää_suodatinpaperi(suodatinpaperi). Pseudokoodi ei kerro tarkalleen, mitä funktio palauttaa, mutta oletettavasti se palauttaa päivitetyn suodatinpaperin määrän (esimerkiksi yhden lisätyn suodatinpaperin).
- Tyhjä rivi
- While‑silmukka: niin kauan kuin kahvia on vähemmän kuin tarvittava määrä
- lisätään kahvia kutsumalla funktiota lisää_kahvia(kahvi), joka palauttaa uuden kahvin määrän.
- Tyhjä rivi
- Käynnistetään kahvinkeitin asettamalla kahvinkeitin_käynnissä = True.
- Tyhjä rivi
- Tarkistetaan ehto: jos kahvinkeitin on käynnissä,
- Ajetaan while‑silmukkaa, jonka ehto on tiputtaa_vettä(kahvi, kahvia_pannussa) == True. Pseudokoodi ei näytä, miten tiputtaa_vettä‑funktio toimii, mutta voidaan päätellä, että funktio palauttaa joko True tai False tilanteen mukaan. Kun funktio lopulta palauttaa False (esimerkiksi silloin kun kahvia ei ole enää jäljellä tai pannussa on tarpeeksi kahvia), silmukka päättyy.
- kahvia_pannussa-muuttujaan lisätään yksi. Tämän muuttujan on tarkoitus kuvata kahvinkeittimen tippumista.
- Tyhjä rivi
- Palautetaan muuttuja kahvia_pannussa, joka kertoo lopullisen kahvin määrän pannussa.
Tehtävä2: Tee tästä vuokaaviosta pseudokoodi. Kirjoita suomenkielisenä pseudokoodina.

Voit kuvata vuokaavion prosessivaiheita kuvitteellisilla funktioilla, esim.
- pyöräilemällä_kouluun() (koko prosessin funktio)
- pyöräile_kouluun()
- saavuitko_kouluun()
- lukitse_pyörä()
Valinta- symbolin Kyllä / Ei vastaa koodeissa booleaneja Tosi / Epätosi, mitkä ovat englanniksi True / False
Voit tehdä vastauksen ”niin kauan kuin”-rakenteella tai ”jos-muuten”-rakenteella. Helpompi versio on ”niin kauan kuin”-rakenne.
1. pyöräilemällä_kouluun():
2.
3. pyöräile_kouluun()
4.
5. niin kauan kuin saavuitko_kouluun() == Epätosi:
6. pyöräile_kouluun()
7.
8. lukitse_pyörä()

Voit lisätä alkuun, että kyseessä on funktio. ”niin kauan kuin” kuvastaa while‑silmukkaa. Tämä tarkoittaa, että tiettyä toimintoa toistetaan niin pitkään, kun ehto on voimassa (True).
1. pyöräilemällä_kouluun():
2.
3. pyöräile_kouluun()
4.
5. jos saavuitko_kouluun() == Epätosi:
6. pyöräilemällä_kouluun()
7.
8. muuten:
9. lukitse_pyörä()

Voit lisätä alkuun, että kyseessä on funktio.”jos” kuvastaa if‑lausetta ja ”muuten” kuvastaa else‑haaraa.
Näiden avulla ohjelma valitsee, mitä reittiä seurataan ehtolauseen perusteella.
Käytetään rekursiota. Kutsumalla koko pyöräilemällä_kouluun()‑funktion varmistat, että jokaisen ajokerran jälkeen ehto tarkistetaan. Jos toistaisit vain pyöräile_kouluun()‑kutsua, suoritus etenisi yhden pyöräilyvaiheen jälkeen suoraan “muuten”‑haaraan ilman uutta ehtotarkistusta. Tämä veisi ohjelman väärään kohtaan vuokaaviossa. Rekursion avulla koko prosessi suoritetaan aina kokonaisuutena, kunnes kouluun on saavutettu.
