Oppimateriaali perustuu kevään 2010 kurssiversion materiaaliin ja Arto Wiklan ohjelmointisivustoon. Materiaalin copyright © (aakkosjärjestyksessä): Matti Luukkainen, Matti Paksula, Arto Vihavainen, Arto Wikla. Materiaalia saa vapaasti käyttää itseopiskeluun. Muu käyttö vaatii luvan.

Ohpe-harjoitukset s2010: 1/6 (6.-10.9.)

(Muutettu viimeksi 2.9.2010, sivu perustettu 26.8..2010.)

Nämä harjoitukset liittyvät oppimateriaalin lukuihin I Algoritmeja (Scala): 1-15.

Harjoitustehtävien otsikoilla on värikoodaus: Vihreät tehtävät on syytä tehdä joka tapauksessa. Värittämättömiä ei ole ihan pakko tehdä, mutta nekin ovat hyvin hyödyllisiä ja myös vaikuttavat pisteisiin. Keltaiset tehtävät ovat vähän haastavampia. Nekin lasketaan mukaan harjoituspisteitä määrättäessä, mutta ilmankin niitä harjoituksista voi saada maksimipisteet.

Huom: Jokaisen ohjelmatiedoston alkuun on kirjoitettava kommenttina harjoituskerta, tehtävän numero ja tekijän nimi tyyliin:

// 1. harjoitukset, tehtävä 1.3, Oili Opiskelija

Ohjelman kirjoitus ja suoritus - vakiotulostuksia

Nimi

Tee ohjelma, joka kirjoittaa nimesi näytölle.

Hei Maailma!

Tee ohjelma, joka kirjoittaa näytölle seuraavan tekstin:

Hoi Maailma!
Hello World!
Ciao il Mondo!
Hejssan Världen!

Ohpe

Tee ohjelma, joka kirjoittaa näytölle seuraavan tekstin:

####	#  #	####	####
#  #	#  #	#   #	#
#  #	####	####	###
#  #	#  #	#       #
####	#  #	#       ####

Kuusi

Tee ohjelma, joka kirjoittaa näytölle seuraavan tekstin:

    *
   ***
  *****
 *******
*********
    *

Laskentaa muuttujien arvoilla

Huom! Näissä neljässä tehtävässä sijoita arvoja muuttujiin ja käytä muuttujia laskemisessa, älä siis vain tulosta vakiotekstiä! Toisaalta älä vielä lue arvoja käyttäjältä.

Summa

Tee ohjelma joka tulostaa seuraavaa

3 plus 7 on 10
42 plus 3 on 45

Miinus

10 miinus 7 on 3
45 miinus 3 on 42

Kerto

6 kertaa 6 on 36
11111 kertaa 11111 on 123454321

Jako

128 jaettuna 8 on 16
5 jaettuna 3 on 1.66666666666667

Syötteen lukemista

Summaaja

Ohjelma pyytää kaksi kokonaislukua ja ilmoittaa näiden summan.

Anna ensimmäinen luku: 6
Anna toinen luku: 2
Niiden summa on 8

Jakaja

Ohjelma pyytää kaksi kokonaislukua ja jakaa ensimmäisen toisella. Varmista, että 3 / 2 = 1.5

Anna ensimmäinen luku: 3
Anna toinen luku: 2
3/2 = 1.5

Niukka

Ohjelma voittaa aina, mutta niukasti:

Arvaa luku: 5
Minun lukuni on 6, hävisit niukasti!

Rutka

Arvaa luku: 5
Minun lukuni on 235, hävisit rutkasti!

Ikätervehdys

Tee ohjelma, joka kysyy käyttäjältä nimen ja tämän jälkeen iän. Tämän jälkeen ohjelma tervehtii käyttäjää ja kertoo samalla tämän iän.

Mikä on nimesi: Matti
Mikä on ikäsi: 14

Hei Matti, olet siis 14!

Ikien summa

Ensimmäisen nimi: Matti
Kuinka vanha Matti on?
14

Toisen nimi: Arto
Kuinka vanha Arto on?
12

Matti ja Arto ovat yhteensä 26 vuotta.

Nelilaskin

Anna ensimmäinen luku: 3
Anna toinen luku: 2

Summa:       3 + 2 = 5
Erotus:      3 - 2 = 1
Tulo:        3 * 2 = 6 
Osamäärä:    3 / 2 = 1.5
Jakojäännös: 3 % 2 = 1

Lukujen keskiarvon laskeminen

Anna kolme lukua:
4
12
7
Lukujen 4, 12 ja 7 keskiarvo on: 7.666666666666667

Valintaa

Kumpi luvuista suurempi?

Anna ensimmäinen luku: 8
Anna toinen luku: 3
8 on suurempi kuin 3

Entä jos luvut ovat yhtä suuret? Miten ohjelman tulisi tässä tilanteessa toimia?

Pariton vai parillinen?

Vihje: parillisen luvun jakojäännös on 0, kun jaetaan luvulla 2.

Anna luku: 2
Luku 2 on parillinen
Anna luku: 7
Luku 7 on pariton

Annetun luvun ja luvun 100 etäisyys

Huomaa, että lukujen tulostusjärjestys riippuu suuruudesta (annettu luku vs. 100)

Anna luku: 82
100-82 = 18
Anna luku: 123
123-100 = 23

Arvosanat ja pisteet

Tee ohjelma, joka ilmoittaa, kurssista saatavan arvosanan. Arvosanarajat ovat:
30: 1, 35: 2, 40: 3, 45: 4, 50: 5, alle 30 on hylätty.

Anna pisteet [0-60]: 48
Arvosanaksi 48 pisteellä tulee 4	

Luvut suuruusjärjestyksessä

Anna ensimmäinen luku: 8
Anna toinen luku: 1
Anna kolmas luku: 3
Luvut suuruusjärjestykessä: 1, 3 ja 8

Toistoa

Tulosta parittomat luvut väliltä 1-99 nousevassa järjestyksessä

Käytä tässä tehtävässä while-lausetta ja muuttujaa, joka askeltaa kahden välein.

1
3
5
7
...
99

Tulosta luvut 1-100 laskevassa järjestyksessä

Käytä tässä tehtävässä while-lausetta ja muuttujaa, joka askeltaa alaspäin.

100
99
...
2
1

Tulosta lukuja annettuun rajaan asti

Mihin asti lukuja tulostetaan: 6
1
2
3
4
5
6

Tulosta parillisia lukuja annettuun rajaan asti

Mihin asti parillisia lukuja tulostetaan: 10
2
4
6
8
10 

Varmista oikea ikä

Ohjelma kysyy käyttäjän ikää niin kauan, kun käyttäjä ei ymmärrä antaa ikää, joka on väilliä 0-120. Käytä while-lausetta, jonka ehtona on syötetyn iän tarkistus.

Miten vanha olet: 121
Ei kelpaa!

Miten vanha olet: -2
Ei kelpaa!

Miten vanha olet: 7

Kiitos 7-vuotias!

Summa

Laadi ohjelma, jolla voi laskea kokonaislukujen summan. Lukuja on milloin mikin määrä. Ja nollalla ilmaistaan syöttölukujen loppuminen. Pidä huoli, että ohjelma toimii, vaikka heti aluksi syötettäisiin loppumerkiksi nolla.

Anna kokonaislukuja, 0 lopettaa:

2
-4
100
2
0

Lukujen summa on: 104

Vihje: Käytä jotain muuttujaa, vaikkapa summa, joka jonne yksi kerrallaan ynnätään syöttölukuja.

Keskiarvo

Muokkaa edellistä tehtävää siten, että ohjelma laskee ja tulostaa myös lukujen keskiarvon.

Negatiivisten ja positiivisten kokonaislukujen määrä:

Anna kokonaislukuja, 0 lopettaa:

Anna luku: 3
Anna luku: -3
Anna luku: 8
Anna luku: 2
Anna luku: 0

Positiivisia 3
Negatiivisia 1

Vihje: Käytä yhtä muuttujaa laskemaan positiivisten lukumäärää ja toista negatiivisten.

Pienin ja suurin syöttöluku

Anna kokonaislukuja, 0 lopettaa:

8
92
2
-7
32
0

Suurin luku oli 92, pienin luku oli -7.

Vihje: Tee ohjelmasta ensin versio, joka löytää suurimman syöttöluvun ja laajenna sitten ohjelma löytämään myös pienin luku.

Huomaa että nolla on nyt erikoistapaus, se ei tässä tehtävässä ole "suurin" eikä "pienin". Ohjelman toivottu toiminta erikoitapauksissa:

Anna kokonaislukuja, 0 lopettaa:

0

Ei lukuja!

Anna kokonaislukuja, 0 lopettaa:

87
0

Suurin luku oli 87, pienin luku oli 87.

Ajaraja ja yläraja

Tee ohjelma, joka ensin lukee kaksi kokonaislukua, alarajan ja ylärajan. Sitten ohjelma lukee syöttölukuja ja kirjoittaa jokaisen välillä alaraja–yläraja olevan syöttöluvun luettuaan ilmoituksen "Osui!", muiden kohdalla "Huti!". Ohjelman suoritus päättyy, kun tutkittavaksi luvuksi syötetään nolla. Lopuksi ohjelma tulostaa tilaston osumista.

Anna alaraja: 5
Anna yläraja: 8

Anna lukuja, 0 lopettaa:
1
Huti!
9
Huti!
8
Osui!
-21
Huti!
6
Osui!
9
Huti!
0

Osumia 2 kappaletta.
Huteja 4 kappaletta.

Lue ja summaa n kappaletta lukuja

Kuinka monta lukua syötät: 3
2
4
1
Lukujen summa on: 7