Vuokaavio

lgoritmien suunnittelemiseen ja kuvaamiseen käytetään usein vuokaavioita. Vuokaaviot ovat ymmärrettävä ja intuitiivinen graafinen kieli ja ne soveltuvat monimutkaistenkin algoritmien esittämiseen. Vuokaaviot rakennetaan yhdistämällä symboleita nuolilla. Kukin symboli pitää sisällään algoritmin vaiheen. Kaavio suoritetaan seuraamalla kaaviota alusta loppuun nuolia seuraten. Oikealla on esimerkki yksinkertaisesta vuokaaviosta.

Yleensä vuokaaviot etenevät ylhäältä alas ja vasemmalta oikealle. Vuokaavioita myös koskee muutamat muut universaalit säännöt. Tarkastele toteutuvatko kaikki säännöt vuokaaviossa 1.

• Alku- ja loppusymboleita on aina yksi kutakin yhtä vuokaaviota kohti.

• Alku- ja loppusymbolia kuvataan usein pehmeäkulmaisella suorakulmiolla.

• Symbolista voi lähteä vain yksi nuoli.

• Symboleihin voi tulla enemmän kuin yksi nuoli.

• Alkusymbolista lähtee vain yksi nuoli.

• Loppusymbolista ei lähde nuolia.

• Toimintosymbolista lähtee aina vain yksi nuoli.

• Toimintosymbolia kuvataan usein teräväkulmaisella suorakulmiolla.

• Päätössymbolista lähtee aina kaksi, KYLLÄ- ja EI-nuoli.

• Päätössymbolia kuvataa usein salmiakkikuviolla.

• Alkusymboliin ei tule nuolia.

• Muihin symboleihin tulee aina yksi tai useampi nuoli.

• Kun symboliin tulee useampi nuoli toteutaan se vuokaaviossa usein yhdistämällä nuolia.

Vuokaavio 1

Silmukka

Silmukka on vuokaavion osa, jonka prosessi tai prosesseja on tarkoitus toistaa niin kauan, että haluttu päämäärä on saavutettu. Silmukka oteutetaan liittämällä vuokaavion runkoon halutut prosessit valintasymbolilla ja palaamalla silmukan prosessien jälkeen samaan valintasymboliin. Valintasymboli sijoitetaan useimmiten siten, että se on silmukan ensimmäiseksi suoritettava osa mutta toisinaan valintasymboli sijoitetaan myös silmukan loppuun.

Huomaa, että vuokaavion silmukkaa vastaa Python-ohjelmointikielessä for- ja while-rakenteet. Erityisesti vuokaavion silmukkaa on helppo verrata while-rakenteeseen, jossa while + ehto vastaa vuokaavion valintasymbolia ja seuraavien rivien käskyt prosesseja.

Silmukka pyörii niin kauan kuin valintasymbolin nuoli johtaa silmukkaan. Päätöksen tai silmukan prosessit voi myös muotoilla virheellisesti ja luoda ns. ikuisen silmukan. Mikä oheisesta vuokaaviosta tekee ns. ikuisen silmukan?

Tarkastellaan vielä alla olevaa vuokaaviota ja vastaavaa Python-koodia. Kummankin tarkoituksena on siis kerätä käyttäjältä lukuja ja ilmoittaa käyttäjälle kerättyjen lukujen keskiarvo.

Vuokaavio kerättyjen lukujen keskiarvon laskemiseksi.

Python-koodi kerättyjen lukujen keskiarvon laskemiseksi.

Koodissa (b) käsky ”keskiarvo = {}” aloittaa uuden projektin nimellä ’keskiarvo’. Käsky ”lukusilmukka = True” määrittelee muuttujan ’lukusilmukka’ todeksi (True) kunnes toisin käsketään. Käskyt ”sum = 0” ja ”i = 0” määrittelevät muuttujien ’sum’ ja ’i’ alkuarvot nolliksi. Käsky ”while lukusilmukka:” johdattelee silmukkaan niin kauan kunnes muuttuja ’lukusilmukka’ on epätotta (False).

ukusilmukassa ohjelma kysyy käyttäjältä ”Onko lisää lukuja? Vastaa kyllä tai ei. ” tallentaen vastauksen muuttujaan ’repeat’, minkä jälkeen if-rakenteella on toteutettu joko ’lukusilmukan’ katkaiseminen käskyllä ”lukusilmukka = False” tai sen jatkaminen. Silmukan pyöriessä ohjelma kysyy käyttäjältä lukua käskyllä ”score = int(input(”Mikä luku? ”)) tallentaen käyttäjän arvon ’input’ kokonaislukuna ’int’ muuttujaan ’score’. Sen jälkeen muuttujaa ’i’ kasvatetaan yhdellä ja loppusummaan ’sum’ lisätään saatu luku ’score’.

Silmukan katketessa lasketaan keskiarvo käskyllä ”keskiarvo = sum/i” ja tulostetaan käyttäjälle halutut tulokset käskyllä ”print”. Tutustutaan seuraavassa luvussa tarkemmin Python-koodin rakentamiseen ja muutamien yksinkertaisten matemaattisten algoritmien toteuttamiseen ohjemointikielellä.

Harjoituksia

  1. Selitä miksi vuokaaviot ovat erinomainen työväline algoritmien suunnittelemiseen ja kuvaamiseen.

2. Toteuta Python-koodi materiaalin Mustikanpoimintavuokaaviosta. (Vuokaavio 1)

3. Tee vuokaavio. Tekemäsi vuokaavion on tarkoitus auttaa Pythonohjelman suunnittelussa.

• Ohjelma kerää käyttäjältä listan luvuista eroteltuna välilyönnillä.

• Ohjelma alustaa listan käyttäjältä saadusta listasta.

• Ohjelma tulostaa listan.

• Ohjelma alustaa muuttujan listan pituudelle.

• Ohjelma järjestää listan pienimmästä suurimpaan.

• Ohjelma etsii listan mediaanin if-rakenteen avulla.

• Ohjelma tulostaa listan mediaanin.

4. . Kirjoita tehtävästä 3 Python koodi.

5. Tarkastellaan ohjelmointiluvun harjoitustehtävää:

Laadi ohjelma joka haarukoi funktion f(x)=0,5·sin(3x) nollakohdat halutulta väliltä ja palauttaa nollakohdan likiarvon 5 desimaalin tarkkuudella.

Laadi tehtävälle vuokaavio.

6. Tarkastellaan 18.03.2020 yo-kokeen B1-osan tehtävää 6. Tehtävänäsi ratkaista tehtävä Geogebran avulla ja laatia jälkikäteen vuokaavio siitä, kuinka ratkaisit tehtävän Geogebran avulla.