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
© Copyright 2024