Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Samankaltaiset tiedostot
Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

3. Muuttujat ja operaatiot 3.1

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot


11. Javan toistorakenteet 11.1

etunimi, sukunimi ja opiskelijanumero ja näillä

12. Javan toistorakenteet 12.1

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

12. Javan toistorakenteet 12.1

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Seuraavassa on esimerkki for-, while- ja do-while -lauseesta:

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Scratch ohjeita. Perusteet

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin perusteet Y Python

v 8 v 9 v 5 C v 3 v 4

Ohjelmoinnin peruskurssi Y1

KOODAUSPLÄJÄYS. Ohjelmoinnin perusteet

Ohjelmoinnin peruskurssi Y1

Algoritmit 1. Luento 1 Ti Timo Männikkö

Liite: Verkot. TKK (c) Ilkka Mellin (2004) 1

Muistutus aikatauluista

Algoritmit 1. Demot Timo Männikkö

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Lisää pysähtymisaiheisia ongelmia

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

Python-ohjelmointi Harjoitus 5

Harjoitus 3 (viikko 39)

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Ohjelmoinnin perusteet Y Python

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Ohjelmoinnin perusteet Y Python

Johdatus verkkoteoriaan 4. luento

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Tarkennamme geneeristä painamiskorotusalgoritmia

Puzzle-SM Loppukilpailu Oulu

Ohjelmoinnin perusteet Y Python

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

1. Universaaleja laskennan malleja

Ohjelmoinnin perusteet Y Python

Kenguru 2018 Ecolier (4. ja 5. luokka)

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

Ohjelmoinnin peruskurssi Y1

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

MAA02. A-osa. 1. Ratkaise. a) x 2 + 6x = 0 b) (x + 4)(x 4) = 9 a) 3x 6x

Liite 2: Verkot ja todennäköisyyslaskenta

Matematiikan tukikurssi

Tynnyrisaunan asennusohje (1013)

Partikkelit pallon pinnalla

Vektorit. Kertausta Seppo Lustig (Lähde: avoinoppikirja.fi)

Zeon PDF Driver Trial

Impedanssitomografia-peli

7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen

Venekilpailu! Esteiden väistely ja hahmon ohjaaminen

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

GeoGebra tutkivan oppimisen välineenä: havainto-hypoteesi-testaus

Matematiikan tukikurssi

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Ohjelmoinnin perusteet Y Python

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

1.1. Järjestelmän käynnistys

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 10 Ke Timo Männikkö

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

Aurinkopaneelin lataussäädin 12/24V 30A. Käyttöohje

Program matopeli; uses graph,grafiikka,crt; VAR. merkkiluettu,herkkutarkistettu : boolean;

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Vektorilla on suunta ja suuruus. Suunta kertoo minne päin ja suuruus kuinka paljon. Se on siinä.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Tilastolliset toiminnot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

LAINAUSJÄRJESTELMÄ. Kyllä. Vihermetsän lukion kirjastossa on samankaltainen, mutta monimutkaisempi lainausjärjestelmä:

5. HelloWorld-ohjelma 5.1

3. Muuttujat ja operaatiot 3.1

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

811120P Diskreetit rakenteet

Algoritmit 2. Luento 2 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

8. Näppäimistöltä lukeminen 8.1

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto.

Työryhmän jäsenen käyttöohje - RUMA-mobiilisovellus. 1. Sisäänkirjautuminen ja uloskirjautuminen

Algoritmit 2. Luento 2 To Timo Männikkö

OHJE RFID - Suoraohjauskoodin muodostamiseen Toshiba SX sarjan tulostimilla

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Transkriptio:

2. Vuokaaviot 2.1

Sisällys Kaavioiden rakenne. Kaavioiden piirto symbolta yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. Esimerkkejä: algoritmi oven avaamiseen vuokaaviona, yksikkömuunnos, peli luvun arvaukseen ja keskiarvon laskeminen. 2.2

Vuokaaviot Graafinen kieli algoritmien kuvaamiseen. Ymmärrettäviä ja intuitiivisia. Soveltuvat monimutkaistenkin algoritmien esittämiseen. Muodostetaan yhdistelemällä symboleja nuolilla. Symbolissa algoritmin vaihe. Kaavio suoritetaan (ajetaan) seuraamalla nuolia alkusymbolista alkaen ja loppusymboliin päätyen. Esimerkki: Tartu kahvaan Toiminto Vedä kahvasta, kunnes ovi on auki Päätös 2.3

Vuokaaviot Etenevät yleensä ylhäältä alas ja vasemmalta oikealle: Suunta länsimaisesta kirjoituksesta. Tilan loppuessa voi piirtää muutenkin. Aina yksi alku- ja yksi loppusymboli. Symbolsta lähtevien nuolien lukumäärä on yksikäsittnen. Symbolhin tulevien nuolien lukumäärässä tulkinnan varaa. 2.4

Lähtevät nuolet symbolista lähtee aina vain yksi nuoli. symbolista lähde nuolia. Toimintosymbolista lähtee aina vain yksi nuoli. Päätössymbolista lähtee aina kaksi nuolta, jotka vastaavat - ja päätöksiä. 2.5

Tulevat nuolet symboliin tule nuolia. Muihin symbolhin tulee aina joko yksi tai useampi nuoli. Jos symboliin tulee useampi nuoli, voidaan nuolet piirtää suoraan kiinni symboliin tai symboliin piirtää yksi nuoli, johon muut nuolet liittyvät. Kalvoilla ja mallivastauksissa pyritään käyttämään selvyyden vuoksi jälkimmäistä piirtotapaa, jolloin tulevia nuolia on aina yksi. 2.6

Algoritmi oven avaamiseen Algoritmia voidaan tarkentaa päätöksen avulla: päätös mahdollistaa toisensa poissulkevat algoritmin suorituslinjat. Algoritmia tarkennetaan edelleen kuvaamalla toistuvat toiminnot päätöstä hyödyntäen. Vedä kahvasta Tartu kahvaan Vedettävä malli? Työnnä kahvasta 2.7

Silmukka Vuokaavion osa voidaan suorittaa silmukan (loop) avulla. Koostuu päätöksestä, joka liitetään nuolella toistettavaan vuokaavion osaan, josta palataan päätökseen joko suoraan tai epäsuorasti. Päätös sijoitetaan usn siten, että se on silmukan ensimmäiseksi suoritettava osa (esiehto). Toisinaan on helpompaa sijoittaa päätös silmukan loppuun (jälkiehto). Jälkiehtoa voi käyttää vuokaavioissa huoletta, vaikka Python-kielessä onkin vain esiehto. Silmukointi jatkuu niin kauan kuin päätös on silmukkaan johtavaan nuolen suuntainen. Algoritmi saattaa joutua ikuiseen silmukkaan, jos päätös on muotoiltu virheellisesti. 2.8

Algoritmi oven avaamiseen Algoritmin uuteen versioon on lisätty silmukat, joissa ovea joko vedetään tai työnnetään kahvasta kunnes ovi on auki. Avattava lisää? Vedä kahvasta Tartu kahvaan Vedettävä malli? Avattava lisää? Työnnä kahvasta 2.9

Yksikkömuunnos Esimerkiksi pituutta ja painoa mitataan maailmanlaajuisesti eri yksiköillä. Yksikkömuunnin on tyypillinen älylaittsta löytyvä sovellus. Ohessa on esitetty yksinkertainen algoritmi jaardna mitatun pituuden muuttamiseksi metrksi. Algoritmi on vuorovaikuttnen: jaardit luetaan käyttäjältä (user) ja metrit tulostetaan näytölle (screen). Lue jaardit käyttäjältä Muunna jaardit metrksi kertomalla luvulla 0,9144 Tulosta metrit näytölle 2.10

Peli luvun arvaukseen Peli arpoo kokonaisluvun käyttäjän tuntemalta väliltä. Käyttäjän tehtävänä on arvata lukua kunnes hän osuu oikeaan. Väärin menneen arvauksen osalta käyttäjälle kerrotaan oliko luku liian pieni tai suuri suhteessa arvattavaan lukuun. Oikeasta arvauksesta onnitellaan. Algoritmiin tarvitaan silmukka, koska on hyvin epätodennäköistä, että käyttäjä arvaa luvun heti. Silmukassa luetaan arvaus ja tehdään päätöksiä, joiden avulla kerrotaan oliko arvaus mahdollisesti ali tai yli. Oikeasta vastauksesta voidaan onnitella silmukan jälkeen, koska silmukka pysähtyy vasta, kun käyttäjä arvaa oikn. Arpominen on tehtävä on ennen silmukkaa, jotta luvun arvaaminen on mahdollista vihjden avulla. 2.11

Peli luvun arvaukseen esiehdolla Valitse arvaus siten, että se ole arvattava Arvaus eri suuri kuin arvattava? Onnittele käyttäjää Arvo arvattava luku Lue arvaus käyttäjältä Arvaus pienempi kuin arvattava? Kerro arvauksen olevan liian pieni Esiehtoa käytettäessä täytyy varmistaa ennen silmukkaa, että arvaus on eri suuri kuin arvattava, jotta silmukka saadaan käynnistettyä. Ohessa sopiva valinta tehdään käyttäjän puolesta. Luentorungossa käytetään myöhemmin vain esiehtoa, vaikka jälkiehto (katso seuraava sivu) olisi luontevampi, koska Pythonissa on vain esiehtoinen silmukka. Älä huolehdi tästä, vaan valitse harjoitusten vuokaaviotehtävissä aina ratkaisuun parhaiten sopiva silmukka. Arvaus suurempi kuin arvattava? Kerro arvauksen olevan liian suuri 2.12

Peli luvun arvaukseen jälkiehdolla Arvo arvattava luku Lue arvaus Ohsessa ja edellisessä vuokaaviossa liian pienestä ja suuresta arvauksesta ilmoittavista toiminnoista voitaisiin palata suoraan arvauksen lukemiseen ja liian suuren arvauksen päätöksestä voitaisiin hypätä suoraan onnittelun tulostavaan toimintoon arvauksen ollessa oikn. Näin toimien lukujen erisuuruutta tutkivaa päätöstä tarvittaisi. Päätös on mukana, koska algoritmssa pyritään yleensä selkeyden vuoksi palaamaan silmukan alkuun vain yhtä rttiä ja samoin lopettamaan silmukka sen ehdon kautta. Älä huolestu tästäkään! Voit käyttää harjoitustehtävissä lyhyempää tapaa. Pitemmän ja lyhyemmän vuokaavion ero selviää, kun silmukoihin palataan ohjelmien merkssä. Arvaus pienempi kuin arvattava? Arvaus suurempi kuin arvattava? Arvaus eri suuri kuin arvattava? Kerro arvauksen olevan liian pieni Kerro arvauksen olevan liian suuri Onnittele käyttäjää 2.13

Keskiarvon laskeminen Keskiarvon laskennan tapaiset tiedon analysointiin liittyvät tehtävät on usn luontevaa toteuttaa tietokoneella. Ohjelma kommunikoi käyttäjänsä kanssa: luvut luetaan yksi kerrallaan ennen keskiarvon laskemista ja keskiarvo tulostetaan käyttäjälle. Ohjelmaan tarvitaan silmukka, jonka kullakin kierroksella luetaan luku ja lisätään luku summaan. Silmukka on esiehtoinen, koska voidaan olettaa, että lukujen lukumäärä tiedetään ennen silmukkaa. Ohjelmassa on varauduttava tilanteeseen, jossa lukumäärä on virheellinen ( 0). 2.14

Keskiarvon laskeminen Lisää lukuja? Lue luku käyttäjältä Lisää luku summaan Lukuja? Tulosta virhlmoitus Jaa lukujen summa niiden lukumäärällä Tulosta keskiarvo näytölle 2.15

Pohdintaa Vuokaavioiden ongelmia: Graafinen esitys poikkeaa paljon usmmista ohjelmointikielistä. Algoritmin tarkentaminen kasvattaa kaaviota nopeasti. Kaavioiden piirtäminen on työlästä. Vapaamuotoisesti tekstillä kuvaillut algoritmin vaiheet ovat liian monikäsittsiä tietokoneelle. Kuinka algoritmin esitys voidaan tarkentaa tietokoneen ymmärtämälle tasolle? 2.16