Tehtäväehdotuksia

Tuntitehtäviä

Muuttujat ja niiden esittely

  1. Kopioi Esittely.java hakemistoosi. Katsele ohjelmaa tekstinkäsittelyohjelmassa. Pohtikaa yhdessä tai kavereiden kanssa seuraavia kysymyksiä:
    1. Mitä ohjelman sisältö tarkoittaa, kun ajattelet sitä taikalaatikoiden kannalta?
    2. Minkä tyyppisiä muuttujia on esitelty, mitä arvoja voit pistää kuhunkin muuttujaan ja mitä et?
    3. 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.
    4. Voiko rivien järjestystä muuttaa? Voit taas kokeilla, jos haluat.
    5. 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.
    6. Voiko tiedoston suorittaa? Kokeile suorittaa. Tapahtuuko mitään? Miksi?
    Animaatio

Sijoitukset

  1. Kopioi Mina.java hakemistoosi, käännä ja suorita se. Avaa nyt tiedosto tekstinkäsittelyohjelmassa ja katsele ohjelmaa.
    1. Etsi ohjelman kohta, jossa esitellään käytettävät muuttujat. Mitä sinun on muuttujan esittelyssä (määrittelyssä) kerrottava?
    2. 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.
    3. 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.
    4. Käännä ja suorita ohjelma. Saitko ruutuun oman esittelysi?
    5. Lisää ohjelmaan int-tyyppinen muuttuja syntymäVuosi. Tee lisäys a-kohdassa löytämääsi muuttujien esittelykohtaan, lempikirjaimen esittelyn perään.
    6. Laita esittelemääsi muuttujaan tämän vuoden vuosiluku.
    7. 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.
    8. Käännä ja suorita ohjelma. Saitko esittelyn perään tulostumaan vuosiluvun?
    9. Tallenna ohjelma disketille ja vaihda diskettejä kaveriesi kanssa. Käännä ja suorita kaveriesi ohjelmat, niin opit heistä lisää :)
    Animaatio

  2. 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.
    1. Katsele ohjelmaa. Mitä sijoituksissa tapahtuu, kun ajattelet muuttujia taas taikalaatikoina?
    2. 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

  1. Katsele ohjelmaa Mina.java. Huomaat, että muuttujat on esitelty ja sen jälkeen muuttujiin on sijoitettu arvot.
    1. Muuta ohjelmaa siten, että sijoituslauseissa annettavat arvot annetaan jo esittelyn yhteydessä. Esim. String etunimi = "Matti";
    2. Poista ohjelmasta siellä olevat myöhemmät erilliset sijoituslauseet.
    3. 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.
    4. 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 :)

  1. 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.
    1. Mistä tässä on kysymys? Mihin tilanteeseen tämä katkelma antaa toimintaohjeen?
    2. Mitä lisätietoja sinun piti olettaa, että saatoit arvata a-kohdan vastauksen?
    3. Lisää olettamasi asiat tekstiin, esim. rivien väliin tai käyttämällä tarralappuja.
    4. Miten katkelma liittyy ohjelmointiin?
  2. 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. 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

  1. 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.
    1. 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.
    2. Selviääkö tuosta ohjelmasta helposti sinulle, mikä itse asiassa on se oikea desimaaliluku, jota ohjelmoija on tarkoittanut?
    3. 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ö.
    4. Suorita ohjelma ja totea, että nyt voit olla varma, että kaikki luvut ovat samoja. Ohjelma toimii nyt oikein.
    5. Voitko sijoitettuasi piin likiarvon vakioon sijoittaa sinne myöhemmin muuta numeroa? Entä jos olisitkin käyttänyt muuttujaa?
    6. 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

  1. Mitä eroa on tavallisella laatikolla ja taikalaatikolla (muuttujalla) ? Miksi taikalaatikoiden yhteydessä puhutaan laatikon muodosta, miten se liittyy muuttujan käsitteeseen?
  2. Minkälaisia arvoja seuraaviin muuttujiin voidaan laittaa?
    1. int vuosi;
    2. char luokka;
    3. double pii;
    4. String etunimi;
  3. Seuraavien muuttujien tyypit ovat selvästi ristiriidassa muuttujalle annetun nimen kanssa. Korjaa muuttujien tyypit vastaamaan nimeään.
    1. int lause;
    2. char vuosi;
    3. double kirjain;
  4. Voisiko edellisen tehtävän muuttujia käyttää, vaikka nimet vihjaavatkin ihan muuhun tyyppiin, kuin mitä on määritelty?
  5. Piirrä kuvasarja jostakin tunnilla käydystä esimerkistä (esim. Terveystarkastus.java). Kuvasarjan tulee esittää sijoitusoperaatioita laatikkojen avulla.
  6. Mitä eroa on vakiolla ja muuttujalla?
  7. Kirjoita paperille Java-ohjelma, joka ratkaisee seuraavan tehtävän: