Tie koodariksi

Ohjelmoinnin alkeet

Luku 5: Lisää silmukoista

Voimme toteuttaa hyvin monenlaisia ohjelmia yhdistämällä sopivasti muuttujia ja silmukoita. Ideana on, että voimme säilyttää muuttujien avulla tietoa silmukan kierrosten välillä.

Summan laskeminen

Seuraava ohjelma laskee summan 1+2+3+...+100 muuttujan summa avulla.
summa = 0
for i in range(1,101):
    summa += i
print(summa)

Kun suoritamme ohjelman, se tulostaa seuraavan luvun:

5050

Tämä tarkoittaa, että 1+2+3+...+100 = 5050.

Ohjelma muodostuu kolmesta vaiheesta. Aluksi ohjelma luo muuttujan summa, jonka arvona on 0. Tämän jälkeen tulee silmukka, joka käy läpi luvut 1...100 muuttujan i avulla. Jokaisen luvun kohdalla silmukka kasvattaa muuttujan summa arvoa i:llä. Lopuksi silmukan jälkeen ohjelma tulostaa muuttujan summa arvon.

Tässä summa += i on lyhennysmerkintä, joka tarkoittaa samaa kuin summa = summa+i. Tämä merkintä on kätevä, koska haluamme usein kasvattaa muuttujan arvoa ohjelmoinnissa.

Ohjelman tutkiminen

Jos haluamme tutkia tarkemmin, miten ohjelma toimii, voimme siirtää print-rivin silmukan sisään:

summa = 0
for i in range(1,101):
    summa += i
    print(summa)

Nyt ohjelma tulostaa muuttujan summa arvon jokaisen luvun i lisäämisen jälkeen. Ohjelma tulostaa siis ensin summan 1, sitten summan 1+2 = 3, sitten summan 1+2+3 = 6, jne.:

1
3
6
10
15
...
5050

Lisää summia

Voimme laskea vastaavalla tavalla minkä tahansa summan muuttamalla silmukkaa. Esimerkiksi seuraava ohjelma laskee parillisten lukujen summan 2+4+6+...+100:
summa = 0
for i in range(2,101,2):
    summa += i
print(summa)
Ohjelman tulostus on seuraava:
2550
Seuraava ohjelma laskee puolestaan summan 21+22+23+...+2100:
summa = 0
for i in range(1,101):
    summa += 2**i
print(summa)
Ohjelman tulostus on seuraava:
2535301200456458802993406410750

Lukujonon tulostaminen

Tehdään vielä ohjelma, joka tulostaa 100 ensimmäistä lukua lukujonosta 1, 2, 4, 7, 11, jne. Tässä on ideana, että vierekkäisten lukujen erot ovat 1, 2, 3, 4, jne.

Käytämme ohjelmassa muuttujia luku ja ero. Muuttuja luku kertoo, mikä luku tulostetaan seuraavaksi, ja muuttuja ero kertoo, mikä on sen ero seuraavaan lukuun. Silmukan joka kierroksella ero kasvaa yhdellä.

luku = 1
ero = 1
for i in range(100):
    print(luku)
    luku += ero
    ero += 1
Ohjelman tulostus on seuraava:
1
2
4
7
11
...
4951

Tehtävä 1 Ratkaisematon

Tee ohjelma, joka laskee parittomien lukujen summan 1+3+5+...+99.

Kirjoita ohjelma tähän:


Tehtävä 2 Ratkaisematon

Tee ohjelma, joka laskee neliöiden summan 12+22+32+...+1002.

Kirjoita ohjelma tähän:


Tehtävä 3 Ratkaisematon

Luvun n kertoma n! lasketaan kaavalla 1*2*3*...*n. Esimerkiksi luvun 5 kertoma on 1*2*3*4*5 = 120.

Tee ohjelma, joka laskee luvun 100 kertoman.

Kirjoita ohjelma tähän:


Tehtävä 4 Ratkaisematon

Tee ohjelma, joka laskee summan 11+22+33+...+100100.

Kirjoita ohjelma tähän:


Tehtävä 5 Ratkaisematon

Fibonaccin lukujono on 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, jne. Lukujonon alussa on luvut 0 ja 1, ja sen jälkeen jokainen luku on kahden edellisen luvun summa.

Tee ohjelma, joka tulostaa Fibonaccin lukujonon 100 ensimmäistä lukua.

Kirjoita ohjelma tähän:


Tehtävä 6 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1...100 niin, että joka toinen luku on pienin luku, jota ei ole vielä tulostettu, ja joka toinen luku on suurin luku, jota ei ole vielä tulostettu.

Ohjelman tulee siis tulostaa luvut järjestyksessä 1, 100, 2, 99, 3, 98, jne.

Kirjoita ohjelma tähän: