Harjoitus 1 (viikko 37)

Harjoitus 1 (viikko 37)
• Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle ([email protected]).
• Kolmesta symbolista (aloitus- ja lopetussymbolit ja yksi toimintosymboli) koostuvia vuokaavioita ei hyväksytä vastaukseksi mihinkään alla olevista tehtävistä. Kaavioissa on siis oltava ainakin neljä symbolia.
• Operaatioita sisältävissä vuokaavioissa näppäimistöltä lukeminen hoidetaan esimerkiksi luennolla käsitellyllä lue-operaatiolla tai jollakin vastaavalla itse määritellyllä operaatiolla. Samoin näytölle tulostamiseen voi käyttää luentokalvoilla esiintynyttä tulosta-operaatiota tai omaa operaatiota. Tehtävissä ei ole
tärkeintä se, miten luetaan ja tulostetaan vaan algoritmien hahmottelu vuokaavion avulla.
• Löydät tietoa vuokaavioiden piirrosta kurssisivujen Linkit | Vuokaavioiden piirto -kohdasta.
• Ensi viikolla pidettävissä mikroharjoituksissa saa apua ongelmakohtiin. Keskiviikon klo 12–14 ryhmässä (ML40) avustetaan hieman enemmän kuin muissa ryhmissä.
• Palauta vastauksesi WETO-järjestelmään viimeistään ensi viikon torstaina 10.9. klo 12.00.
• Mallivastaukset esitellään luentosaliharjoituksissa ensi viikon perjantaina 11.9. klo 12–14 (B3116).
1. Selvitä mitä liitteessä 1 vuokaaviona esitetyn algoritmin mukaan tapahtuu, kun
a) ei laiskota pahasti,
b) laiskottaa pahasti ja koira ei ole paikalla ja
c) laiskottaa pahasti ja koira on paikalla, mutta koira onkin megalomaanikko.
2. Selitä kuinka elämää eletään liitteessä 2 annetun vuokaavion mukaan.
3. Kuvaa jokin algoritmi vapaamuotoisesti (ilman muuttujia ja operaatioita) vuokaaviona.
Esitä myös mahdollisesti tarvittavat oletukset. Huomaa, että algoritmisi ei saa olla luentomateriaalissa esitetty esimerkki.
4. Oletetaan, että pyöräilijä ajaa pyörätietä ja aikoo ylittää ajoradan pyörätien jatketta myöten. Ajorataa liikkuvan autoilijan tulee tällöin väistää pyöräilijää, jos autoilijalle on osoitettu liikennemerkillä (kärkikolmio tai stop-merkki) väistämisvelvollisuus tai jos autoilija
kääntyy pyörätien jatkeen yli. Muussa tapauksessa pyöräilijän tulee väistää autoilijaa.
Piirrä vapaamuotoinen vuokaavio (ei muuttujia ja operaatioita), joka kertoo kumpi väistää
edellä annettujen sääntöjen mukaan.
5. Maanpinnan läheisyydessä putoava kappale kiihtyy tasaisesti 9,81 m/s2. Kun oletetaan,
että kappaleen alkunopeus on nolla ja että ilmanvastusta ei ole, putoamisnopeus v = 9,81
m / s2· t, missä t on putoamisaika sekunteina. Esimerkiksi kahden sekunnin kuluttua putoamisnopeus on 9,81 m / s2 · 2 s = 19,62 m / s.
Esitä vuokaaviona muuttujia ja operaatioita sisältävä algoritmi, jonka kysyy käyttäjältä
putoamisajan ja tulostaa laskemansa putoamisnopeuden näytölle. Algoritmi tulostaa virheilmoituksen, jos aika on negatiivinen (< 0).
6. Esitä vuokaaviona muuttujia ja operaatioita sisältävä algoritmi, jonka lukee aluksi käyttäjältä kokonaislukujen välin ala- ja ylärajan. Tämän jälkeen ohjelma lukee luvun ja päättelee kuuluuko se välille. Oletetaan, että ala- ja yläraja kuuluvat väliin.
Jos syötteet ovat esimerkiksi 1, 10 ja 7, niin ohjelma ilmoittaa luvun kuuluva välille, koska 1 ≤ 7 ≤ 10. Huomaa, että kaikki vertailuoperaattorit ovat kaksioperandisia. Et voi tästä
syystä päätellä edellisen esimerkin tapaan suoraan kolmea lukua keskenään vertaamalla
onko luku välillä, vaan joudut tekemään kaksi erillistä päätöstä.
Tarkista ennen päättelyä, että rajat ovat järkeviä. Ohjelma tulostaa virheilmoituksen, jos
alaraja on ylärajaa suurempi.
Lausekielinen ohjelmointi I | Syksy 2015 | Jorma Laurikkala
1/4
Harjoitus 1 (viikko 37)
7. Tehtävänäsi on laskea ostoskorin hinta. Korissa on yksi tai useampia tuotteita. Kutakin
tuotetta voi olla yksi tai useampia kappaleita. Kullekin tuotteelle tunnetaan kappalehinta.
Tee muuttujia ja operaatioita käyttävä vuokaavio, joka kysyy aluksi käyttäjältä korin tuotteiden lukumäärän. Tämän jälkeen käyttäjältä kysytään kunkin tuotteen kappalemäärä ja
kappalehinta. Lopuksi tulostetaan hinta.
Oletetaan esimerkiksi, että korissa on kolme tuotetta: yksi suklaalevy (1,5 e / kpl), viisi
vanhaa autoa (0,25 e / kpl) ja kaksi perunalastupussia (2 e / kpl). Tällöin herkkukorin hinta on 1 · 1,5 e + 5 · 0,25 e + 2 · 2 e = 6,75 e.
Tarvitset algoritmiisi laskurin ohjaaman silmukan, joka suoritetaan yhtä monta kertaa
kuin korissa on tuotteita.
Oletetaan, että syötteet ovat järkeviä. Esimerkiksi kappalehinta on aina nollaa suurempi.
8. Java-ohjelmointi aloitetaan ensi viikolla. Tarvitset ohjelmoinnissa komentoikkunaa ja Java JDK -ohjelmistoa. Näistä on kerrottu kurssisivujen Ohjelmointivälineitä-kohdan alla.
Kirjaudu ensin joko omalle tai mikroluokan koneelle. Asenna omalle koneellesi tarvittaessa Java JDK kurssisivujen ohjeiden mukaan, koska tässä tehtävässä pitää käynnistää tutustumismielessä Java-kääntäjä. Java JDK on mikroluokkien koneilla valmiina.
Tee kurssille oma kansio. On suositeltavaa, teet kurssikansioon kansiot harjoituksille ja
tähän kansioon vielä kansiot kullekin viikkoharjoituskerralle. Esimerkiksi toisen harjoituksen tiedostot voisivat olla kansiossa laki1 | harjoitukset | harjoitus2. Mikroluokan koneella kansiot kannattaa tehdä kotihakemistoon (X-asemalle), koska C-asemalle tehdyt
tiedostot ja hakemistot tuhoutuvat, kun kirjaudut koneelta ulos.
Avaa koneella komentoikkuna ja siirry siinä cd-komennolla johonkin luomistasi kansioista. Voit vaihtaa Windowsissa asemaa kirjoittamalla aseman kirjaimen ja heti sen perään
kaksoispisteen ja painamalla sitten Enter. Esimerkiksi mikroluokan koneilla kotihakemistoon pääsee kirjoittamalla x: ja painamalla Enter.
Pyydä lopuksi Java-kääntäjää kertomaan versionsa kirjoittamalla komento:
javac -version
ja painamalla Enter-näppäintä. Ota komentoikkunasta kuvankaappaus ja palauta kaappaus
WETO järjestelmään, jos näytölle tulostui Java-kääntäjän versio. Harkitse Java JDK:n
päivittämistä uudempaan, jos kääntäjän versio on kovin vanha (esimerkiksi 1.6).
Tarkista virhetilanteessa, että kirjoitit komennon oikein ja että koneellasi on varmasti Java
JDK. (Java JRE ei sisällä kääntäjää.) Mac-järjestelmissä vanhan JDK:n käyttö saattaa olla
tietoturvasyistä estetty.
Löydät ohjeita kuvan kaappaamiseen yksittäisestä ikkunasta eri käyttöjärjestelmissä esimerkiksi täältä: https://en.wikipedia.org/wiki/Screenshot.
Liitteessä 3 on annettu esimerkkisuoritus kurssin vastuuopettajan työkoneella.
Lausekielinen ohjelmointi I | Syksy 2015 | Jorma Laurikkala
2/4
Harjoitus 1 (viikko 37)
Liite 1: Algoritmi kotitehtävien tekoon ja välttelyyn. Oletetaan, että tehtävät ovat paperilla ja
että todella huono tuuri on mahdollista (http://dilbert.com/strip/1991-03-27).
Alku
ei
Laiskottaako sinua
pahasti?
kyllä
ei
Ryhdistäydy
Onko paikalla koira?
Tee tehtävä
kyllä
Onko tehtäviä tekemättä?
kyllä
ei
Suunnitteleeko
koira maailman
valloitusta ja kaikkien ihmisten alistamista?
ei
kyllä
Syötä kotitehtävät koiralle
Syö kotitehtävät
Loppu
Lausekielinen ohjelmointi I | Syksy 2015 | Jorma Laurikkala
3/4
Harjoitus 1 (viikko 37)
Liite 2: Naiivi algoritmi onnellisen elämän elämiseen. Oletetaan helppo elämä.
Alku
Oletko
onnellinen?
kyllä
Oletko
elossa?
ei
Voitko
muuttaa
elämääsi?
ei
ei
kyllä
kyllä
Tee muutos
Elä elämääsi
Loppu
Liite 3: Hakemiston vaihtoja cd-komennolla ja Java-kääntäjän version tarkistus Windows 7 käyttöjärjestelmän komentoikkunassa.
Lausekielinen ohjelmointi I | Syksy 2015 | Jorma Laurikkala
4/4