Tehtäväehdotuksia
Tuntitehtäviä
Muuttujat ja niiden esittely
-
Kopioi Esittely.java hakemistoosi. Katsele ohjelmaa
tekstinkäsittelyohjelmassa. Pohtikaa yhdessä tai kavereiden kanssa
seuraavia kysymyksiä:
-
Mitä ohjelman sisältö tarkoittaa, kun ajattelet sitä
taikalaatikoiden kannalta?
-
Minkä tyyppisiä muuttujia on esitelty, mitä arvoja voit pistää
kuhunkin muuttujaan ja mitä et?
-
Määrittelyissä eri rivelllä on peräkkäin muuttujan tyyppi ja muuttujan nimi.
Kumman voit valita mielesi mukaan? Miksi? Kokeile tätä
muuttamalla mielestäsi oikeaa ja katsomalla, pystytkö kääntämään tiedoston.
-
Voiko rivien järjestystä muuttaa? Voit taas kokeilla, jos
haluat.
-
Ohjelman on myöhemmin tarkoitus tulostaa käyttäjän tiedot ruudulle.
Onko ohjelmoijan valitsemat muuttujien nimet selviä? Eli onko sinun
helppo arvata mitä noiden muuttujien sisällöt aina tarkoittavat?
Jos ei, keksi itse paremmat nimet.
-
Voiko tiedoston suorittaa? Kokeile suorittaa. Tapahtuuko mitään?
Miksi?
Animaatio
Sijoitukset
-
Kopioi Mina.java hakemistoosi, käännä ja suorita se.
Avaa nyt tiedosto tekstinkäsittelyohjelmassa ja katsele ohjelmaa.
-
Etsi ohjelman kohta, jossa esitellään käytettävät muuttujat.
Mitä sinun on muuttujan esittelyssä (määrittelyssä) kerrottava?
-
Etsi ohjelman kohta, jossa laitetaan muuttujiin Matti
Meikäläisen tiedot (nimet, ikä, lempinumero ja lempikirjain).
älä kiinnitä mitään huomiota System.out.println()-käskyihin.
-
Muuta tietoja siten, muutat Matti Meikäläisen tietojen tilalle
omat tietosi. Ennen kuin muutat, kiinnitä erityistä huomiota
siihen, onko sijoitettavan arvon ympärillä lainausmerkit tai hipsut.
-
Käännä ja suorita ohjelma. Saitko ruutuun oman esittelysi?
-
Lisää ohjelmaan int-tyyppinen muuttuja syntymäVuosi.
Tee lisäys a-kohdassa löytämääsi muuttujien esittelykohtaan,
lempikirjaimen esittelyn perään.
-
Laita esittelemääsi muuttujaan tämän vuoden vuosiluku.
-
Huomaat, että ohjelman viimeisen System.out.prinln()-lauseessa
ei ole sulkujen välissä mitään. Lisää sinne syntymäVuosi .
Huomaa, ettei nyt sanan ympärillä ole mitään lainausmerkkejä,
koska kurkistetaan muuttujan sisälle.
-
Käännä ja suorita ohjelma. Saitko esittelyn perään tulostumaan
vuosiluvun?
-
Tallenna ohjelma disketille ja vaihda diskettejä kaveriesi
kanssa. Käännä ja suorita kaveriesi ohjelmat, niin opit heistä
lisää :)
Animaatio
-
Minna on saman ikäinen kuin Jaakko. Merja taas on Jaakon ikäinen. Risto on
saman ikäinen kuin Tarmo ja Terhi on Minnan ikäinen. Jaakko on 13-
vuotias ja Tarmo 15-vuotias.
Ohjelma Ika.java tulostaa noiden kaikkien nuorukaisten iät.
-
Katsele ohjelmaa. Mitä sijoituksissa tapahtuu, kun ajattelet
muuttujia taas taikalaatikoina?
-
Katsele ohjelmaa ja muuta ohjelmaa siten, että Jaakon ikä on 20 ja Tarmon
50. Onko Minna edelleen saman ikäinen kuin Jaakko? Miksi? Entä Risto
ja Tarmo? Voit lopuksi varmistua suorittamalla ohjelman.
Animaatio
Yhdistetty esittely ja sijoitus
-
Katsele ohjelmaa Mina.java. Huomaat, että muuttujat on esitelty ja
sen jälkeen muuttujiin on sijoitettu arvot.
-
Muuta ohjelmaa siten, että sijoituslauseissa annettavat arvot
annetaan jo esittelyn yhteydessä. Esim. String etunimi = "Matti";
-
Poista ohjelmasta siellä olevat myöhemmät erilliset
sijoituslauseet.
-
Käännä ja suorita ohjelma. Jos olit suorittanut tämän ohjelman
aikaisemmin, huomasit, että tekemäsi muutokset eivät vaikuttaneet siihen,
mitä ohjelma tulosti ruudulle.
-
Ohjelma lyheni muutoksen seurauksena, onko se mielestäsi
nyt selvempi?
Kommentit
Seuraavat tehtävät voi olla hauska tehdä yhdessä ja kerätä arvauksia
esim. taululle. Voi myös kerätä kommenttitarralappuja ja kiinnittää niitä
piirtoheitinkankaalle :)
-
Etsi painike. Jos painikkeita on kaksi, valitse niistä itsellesi sopivampi ja
paina. Jos olet onnekas, ei sinun tarvitse etsiä painikkeita lainkaan, muuten sinun
on myös odotettava. Pian sinun on taas etsittävä painike. Niitä voi
olla useampia, jolloin voit valita taas itsellesi sopivimman.
Paina sitä. Jos olet tehnyt oikeita valintoja, huomaat pian
olevasi ihan muualla.
-
Mistä tässä on kysymys? Mihin tilanteeseen tämä katkelma antaa toimintaohjeen?
-
Mitä lisätietoja sinun piti olettaa, että saatoit arvata a-kohdan vastauksen?
-
Lisää olettamasi asiat tekstiin, esim. rivien väliin tai
käyttämällä tarralappuja.
-
Miten katkelma liittyy ohjelmointiin?
-
Marja on terveydenhoitaja ja tänään on Kukkalaakson yläasteen
terveystarkastus. Aina kun tarkastukseen tulee seuraava oppilas,
Marja merkitsee oppilaan nimen, luokka-asteen ja kellonajan tunnin
tarkkuudella päiväkirjaansa.
-
klo 9 jälkeen tulevat 7. luokan oppilaat Minna ja Mikko
-
klo 10 jälkeen tulevat 7. luokan oppilas Tapio sekä
8-luokan oppilaat Tero ja Minttu
-
klo 11 jälkeen tulevat 9. luokan oppilaat Kati ja Merja.
Katso ohjelmaa Terveystarkastus.java ja lisää sopiviin paikkoihin
kommentit, jotka selittävät sijoitusten syytä
(esim. "seuraavat oppilaat kaikki 7-luokkalaisia"). Ruudulle
tulostus vastaa päiväkirjaan kirjoittamista, eikä sitä tarvitse
kommentoida (eikä tulostuskäskyä täsmällisesti vielä ymmärtää).
Lisää myös ohjelman alkuun useamman rivin kommentti, joka kertoo,
mitä ohjelma tekee. Vertailkaa lisäämiänne kommentteja ryhmissä.
Vakiot
-
Katsele ohjelmaa Pii.java . Se selvästi tulostaa ruudulle monta kertaa
peräkkäin samaa desimaalilukua (desimaaliluku on matematiikassa
käytetty likiarvo, joka ilmaisee ympyrän kehän ja sen säteen
suhteen). Käskyjen väliin on tahallaan lisätty tyhjiä rivejä, joten älä
ota tästä ohjelmointityylistä mallia.
-
Onko helppoa sanoa, ovatko kaikki desimaaliluvut täsmälleen samoja?
Jos ne eivät ole, ohjelma toimii väärin, koska ohjelmoija on
tarkoittanut, että ruudulle tulostetaan kymmenen kertaa
peräkkäin sama luku.
-
Selviääkö tuosta ohjelmasta helposti sinulle, mikä itse asiassa on
se oikea desimaaliluku, jota ohjelmoija on tarkoittanut?
-
Auta ohjelmoijaa muuttamalla ohjelmaa järkevämmäksi. Luo (esittele)
int- tyyppinen vakio, jolle annat nimeksi pii . Sijoita siihen piin
oikea likiarvo 3.14159265359 (ensimmäisessä tulostuskäskyssä se
on oikein). Vaihda tulostuskäskyt tulostamaan tuon vakion
sisältö.
-
Suorita ohjelma ja totea, että nyt voit olla varma, että kaikki
luvut ovat samoja. Ohjelma toimii nyt oikein.
-
Voitko sijoitettuasi piin likiarvon vakioon sijoittaa sinne
myöhemmin muuta numeroa? Entä jos olisitkin käyttänyt muuttujaa?
-
Jos olisit käyttänyt muuttujaa vakion sijasta, voisitko olla varma,
että tulostetut luvut olisivat samoja? Entä jos ohjelma olisi
niin pitkä, ettet ehtisi tarkistamaan sitä silmämääräisesti läpi?
Kotitehtäviä
tuntitehtävissä on monia pohdintakohtia,
joita voi miettiä myös kotona
-
Mitä eroa on tavallisella laatikolla ja taikalaatikolla
(muuttujalla) ? Miksi taikalaatikoiden yhteydessä puhutaan laatikon
muodosta, miten se liittyy muuttujan käsitteeseen?
-
Minkälaisia arvoja seuraaviin muuttujiin voidaan laittaa?
-
int vuosi;
-
char luokka;
-
double pii;
-
String etunimi;
-
Seuraavien muuttujien tyypit ovat selvästi ristiriidassa muuttujalle
annetun nimen kanssa. Korjaa muuttujien tyypit vastaamaan nimeään.
-
int lause;
-
char vuosi;
-
double kirjain;
-
Voisiko edellisen tehtävän muuttujia käyttää, vaikka nimet
vihjaavatkin ihan muuhun tyyppiin, kuin mitä on määritelty?
-
Piirrä kuvasarja jostakin tunnilla käydystä esimerkistä (esim. Terveystarkastus.java).
Kuvasarjan tulee esittää sijoitusoperaatioita laatikkojen avulla.
-
Mitä eroa on vakiolla ja muuttujalla?
-
Kirjoita paperille Java-ohjelma, joka ratkaisee seuraavan tehtävän:
-
Teemu on saman ikäinen kuin Jarkko. Merja taas on Jarkon ikäinen. Jussi on
saman ikäinen kuin Kaija ja Terhi on Teemun ikäinen. Jarkko on 10-
vuotias ja Kaija 11-vuotias.