2. Vuokaaviot 2.1
Sisällys aavioiden rakenne. aavioiden piirto symboleita yhdistelemällä. aavion osan toistaminen silmukalla. simerkkejä. 2.2
Vuokaaviot Graafinen kieli algoritmien kuvaamiseen. Muodostetaan yhdistelemällä symboleja suuntajanoilla (nuolilla). Symboli sisältää joko vapaamuotoisena tekstinä tai muuttujien ja operaatioiden avulla kuvatun algoritmin vaiheen. ja loppu Toiminto Päätös Suuntajana aavio suoritetaan (ajetaan) seuraamalla nuolia alkusymbolista alkaen ja loppusymboliin päätyen. 2.3
Vuokaaviot tenevät yleensä ylhäältä alas ja vasemmalta oikealle: Suunta länsimaisesta kirjoituksesta. Tilan loppuessa voi piirtää muutenkin. Aina yksi alku- ja yksi loppusymboli. Symboleista lähtevien nuolien lukumäärä on yksikäsitteinen. Symboleihin tulevien nuolien lukumäärässä tulkinnan varaa. Huom! Tämä on kaikista yksinkertaisin vuokaavio. 2.4
Oven avaaminen (versio 1) sitetään AvaaOvialgoritmi vuokaavioina. nsimmäisessä versiossa algoritmin vaiheet kuvataan peräkkäisissä vaiheissa vapaamuotoisena tekstinä. Vedä kahvasta Tartu kahvaan Vedettävä malli? Työnnä kahvasta Toisessa versiossa avaaminen on kuvattu silmukan avulla. 2.5
Lähtevät nuolet symbolista lähtee aina vain yksi nuoli. symbolista ei lähde nuolia. Toimintosymbolista lähtee aina vain yksi nuoli. Päätössymbolista lähtee aina kaksi nuolta, jotka vastaavat kyllä- () ja ei- () päätöksiä. 2.6
Tulevat nuolet symboliin ei tule nuolia. Muihin symboleihin 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. alvoilla ja mallivastauksissa pyritään käyttämään selvyyden vuoksi jälkimmäistä piirtotapaa, jolloin tulevia nuolia on aina yksi. 2.7
Silmukka Usein on tarpeen suorittaa uudelleen vuokaavion osa. Tämä onnistuu silmukan avulla. oostuu päätöksestä, joka yhdistetään nuolella toistettavaan vuokaavion osaan, josta piirretään nuoli takaisin päätökseen. Päätös sijoitetaan usein siten, että se on silmukan ensimmäiseksi suoritettava osa. Toisinaan on luontevampaa sijoittaa päätös silmukan loppuun. Silmukointi jatkuu niin kauan kuin päätös on silmukkaan johtavaan nuolen suuntainen. Jos päätös on muotoiltu virheellisesti, algoritmi saattaa joutua ikuiseen silmukkaan. 2.8
Oven avaaminen (versio 2) Algoritmin toiseen versioon on lisätty silmukat, joissa ovea joko vedetään tai työnnetään kahvasta kunnes ovi on auki. olmas versio on tarkempi siinä käytetään muuttujia ja operaatioita. Avattava lisää? Vedä kahvasta Tartu kahvaan Vedettävä malli? Avattava lisää? Työnnä kahvasta 2.9
Oven avaaminen (versio 3) Muuttuja kulma [-90º,90º] on oven ja seinän välinen kulma: kulma Lisäksi käytetään muuttujia ovi ja kahva, joita käsitellään tartu-, vedettävä-, vedä- ja työnnä-operaatioilla. kulma < 70º vedä(kahva) kulma 0 tartu(kahva) vedettävä(ovi) kulma > -70º työnnä(kahva) 2.10
eskiarvon laskeminen uvataan keskiarvon x = laskeminen vuokaaviolla. Laske keskiarvo n i= 1 x i / n Lisätään luku- ja tulostustoiminnot Lue luvut Laske Tulosta keskiarvo Lukujen lukemiseen ja summan laskemiseen tarvitaan silmukka. Voi myös olla, että lukuja ei anneta. Tähän täytyy varautua. 2.11
eskiarvon laskeminen Lisää lukuja? Lukuja? Laske Tulosta keskiarvo Lue luku Tulosta ilmoitus Summaa aaviosta ei käy vielä ilmi laskemisen logiikka kuten keskiarvon kaavasta: uinka toteuttaa silmukka? uinka määritellä Laskelaatikon sisältö tarkemmin? aavaa vastaavaan esitystarkkuuteen päästään vain muuttujien avulla. 2.12
eskiarvon laskeminen Otetaan käyttöön muuttujat: x on luettu luku (termi x i ), i on laskuri, josta selviää monesko silmukan kierros on meneillään (termin indeksi), summa vastaa lukujen summaa (Σx i ), lkm vastaa lukujen lukumäärää (indeksin yläraja n) ja ka on lukujen keskiarvo ( x). Huom! Silmukka voidaan toteuttaa usealla eri tavalla. Oletetaan nyt, että lukujen lukumäärä voidaan selvittää ennen silmukan aloitusta. x = n i= 1 x i / n 2.13
eskiarvon laskeminen summa 0 lkm lue() i 1 i lkm x lue() summa summa + x i i + 1 lkm > 0 ka summa / lkm tulosta(ka) tulosta( i lukuja! ) 2.14
Pohdintaa Vuokaavioiden hyötyjä: Helposti ymmärrettäviä ja intuitiivisia. Soveltuvat monimutkaistenkin algoritmien esittämiseen. Ongelmia: Graafinen esitys poikkeaa paljon useimmista ohjelmointikielistä. Algoritmin tarkentaminen kasvattaa kaaviota nopeasti. aavioiden piirtäminen työlästä. 2.15