Tie koodariksi

Ohjelmoinnin alkeet

Luku 4: Toistaminen

Ohjelmoinnin merkitys on siinä, että saamme koneen toistamaan samaa asiaa automaattisesti. Tämä tarkoittaa usein, että ohjelmassa on silmukka, jonka sisällä on toistettava koodi.

For-silmukka

Seuraavassa ohjelmassa on for-silmukka, joka tulostaa lukuja:

for i in range(5):
    print(i)

Kun suoritamme ohjelman, se tulostaa seuraavat rivit:

0
1
2
3
4

Merkintä range(n) tarkoittaa, että silmukka käy läpi n ensimmäistä kokonaislukua nollasta alkaen eli luvut 0...n-1. Esimerkiksi yllä oleva silmukka käy läpi luvut 0...4 muuttujan i avulla. Jokaisen luvun kohdalla suoritetaan silmukan sisällä oleva koodi. Tässä tapauksessa koodina on print(i), eli ohjelma tulostaa luvun i.

Huomaa, että silmukan sisällä oleva koodi on sisennetty eli sen edessä on tyhjää tilaa. Saamme tämän aikaan painamalla tab-nappia rivin alussa. Sisennys ilmaisee, mitä osaa koodista tulee toistaa silmukassa. Jos sisennys puuttuu, koodi ei toimi halutulla tavalla, joten on tärkeää, että sisennys on tehty oikein.

Löydät tab-napin näppäimistöltä tästä:

Silmukan hienoutena on, että voimme kätevästi muuttaa, mitä lukuja se käy läpi. Esimerkiksi voimme muuttaa silmukkaa näin:

for i in range(8):
    print(i)

Tämän seurauksena ohjelma tulostaakin luvut 0...7:

0
1
2
3
4
5
6
7

Muita silmukoita

Merkintä range(a,b) tarkoittaa, että aloitamme luvusta a ja lopetamme juuri ennen lukua b. Esimerkiksi seuraava koodi tulostaa luvut 1...5:

for i in range(1,6):
    print(i)

Ohjelma toimii näin:

1
2
3
4
5

Merkintä range(a,b,c) tarkoittaa, että luku kasvaa c:llä joka askeleen jälkeen. Voimme esimerkiksi tulostaa parillisia lukuja näin:

for i in range(4,13,2):
    print(i)
Ohjelma toimii näin:
4
6
8
10
12
Voimme myös tulostaa lukuja suurimmasta pienimpään antamalla negatiivisen kasvatuksen:
for i in range(5,0,-1):
    print(i)
Ohjelma toimii näin:
5
4
3
2
1

Silmukan mahdollisuudet

Voimme käyttää silmukan muuttujaa haluamallamme tavalla silmukan sisällä. Esimerkiksi seuraava silmukka tulostaa joka askeleella sekä luvun i että sen neliön i*i.

for i in range(1,6):
    print("luvun",i,"neliö on",i*i)

Ohjelman tulostus on seuraava:

luvun 1 neliö on 1
luvun 2 neliö on 4
luvun 3 neliö on 9
luvun 4 neliö on 16
luvun 5 neliö on 25

Toisaalta voimme luoda myös silmukan, joka ei käytä mitenkään silmukan muuttujaa vaan vain toistaa samaa koodia. Näin on seuraavassa ohjelmassa:

for i in range(5):
    print("Heippa!")

Tämä ohjelma tulostaa viisi kertaa tekstin "Heippa!":

Heippa!
Heippa!
Heippa!
Heippa!
Heippa!

Tehtävä 1 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1, 2, 3, ..., 100.

Kirjoita ohjelma tähän:


Tehtävä 2 Ratkaisematon

Tee ohjelma, joka tulostaa parilliset luvut 2, 4, 6, ..., 100.

Kirjoita ohjelma tähän:


Tehtävä 3 Ratkaisematon

Tee ohjelma, joka tulostaa parittomat luvut 1, 3, 5, ..., 99.

Kirjoita ohjelma tähän:


Tehtävä 4 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 100, 99, 98, ..., 1.

Kirjoita ohjelma tähän:


Tehtävä 5 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 100, 97, 94, ..., 1.

Kirjoita ohjelma tähän:


Tehtävä 6 Ratkaisematon

Tee ohjelma, joka tulostaa 100 riviä, joissa lukee vuorotellen apina ja banaani.

Kirjoita ohjelma tähän: