2. Vuokaaviot
description
Transcript of 2. Vuokaaviot
2.1
2. Vuokaaviot
2.2
Sisällys• Kaavioiden rakenne.• Kaavioiden piirto symboleita yhdistelemällä.• Kaavion osan toistaminen silmukalla.• Esimerkkejä.
2.3
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.
• Kaavio suoritetaan (ajetaan) seuraamalla nuolia alkusymbolista alkaen ja loppusymboliin päätyen.
Alku ja loppu
Toiminto
Päätös
Suuntajana
2.4
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.• Symboleista lähtevien nuolien
lukumäärä on yksikäsitteinen.• Symboleihin tulevien nuolien
lukumäärässä tulkinnan varaa.
Alku
Loppu
Huom! Tämä on kaikista yksinkertaisin vuokaavio.
2.5
Oven avaaminen (versio 1)• Esitetään AvaaOvi-
algoritmi vuokaavioina.• Ensimmäisessä
versiossa algoritmin vaiheet kuvataan peräkkäisissä vaiheissa vapaa-muotoisena tekstinä.
• Toisessa versiossa avaaminen on kuvattu silmukan avulla.
Alku
Loppu
K E
Tartu kahvaan
Vedettävä malli?
Työnnä kahvastaVedä kahvasta
2.6
Lähtevät nuolet• Alkusymbolista lähtee aina vain
yksi nuoli.• Loppusymbolista ei lähde nuolia.• Toimintosymbolista lähtee aina
vain yksi nuoli.• Päätössymbolista lähtee aina
kaksi nuolta, jotka vastaavat kyllä- (K) ja ei- (E) päätöksiä.
Loppu
Alku
K
E...
...
...
...
2.7
Tulevat nuolet• Alkusymboliin 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.• Kalvoilla ja mallivastauksissa pyritään
käyttämään selvyyden vuoksi jälkimmäistä piirtotapaa, jolloin tulevia nuolia on aina yksi.
Loppu
Alku
K
E...
...
...
...
2.8
Silmukka• Usein on tarpeen suorittaa
uudelleen vuokaavion osa. Tämä onnistuu silmukan avulla.
• Koostuu 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.
• 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.
...
...
...
• Toisinaan on luontevampaa sijoittaa päätös silmukan loppuun.
...
...
...
2.9
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.
• Kolmas versio on tarkempi – siinä käytetään muuttujia ja operaatioita.
Alku
Loppu
K E
Tartu kahvaan
Vedettävä malli?
Avattavalisää?
Työnnä kahvasta
K
Avattavalisää?
Vedä kahvasta
K
E E
2.10
Oven avaaminen (versio 3)• Muuttuja kulma[-90º,90º]
on oven ja seinän välinen kulma:
• Lisäksi käytetään muuttujia ovi ja kahva, joita käsitellään tartu-, vedettävä-, vedä- ja työnnä-operaatioilla.
kulma
Alku
Loppu
K E
tartu(kahva)
vedettävä(ovi)
kulma > -70º
työnnä(kahva)
K
kulma < 70º
vedä(kahva)
K
kulma ← 0
E E
2.11
Keskiarvon laskeminen• Kuvataan keskiarvon
laskeminen vuokaaviolla.
Laske keskiarvo
Alku
Loppu
Lue luvut
Tulosta keskiarvo
Laske
Alku
Loppu
Lisätään luku- ja tulostustoiminnot
Lukujen lukemiseen ja summan laskemiseen tarvitaan silmukka.
Voi myös olla, että lukuja ei anneta. Tähän täytyy varautua.
nxxn
ii /
1
2.12
Keskiarvon laskeminen• Kaaviosta ei käy vielä ilmi
laskemisen logiikka kuten keskiarvon kaavasta:− Kuinka toteuttaa silmukka?− Kuinka määritellä Laske-
laatikon sisältö tarkemmin?• Kaavaa vastaavaan
esitystarkkuuteen päästään vain muuttujien avulla.
Lisää lukuja? Lue luku
Tulosta ilmoitus
Laske
Alku
Loppu
Lukuja?
K
EE
K
Tulosta keskiarvo
Summaa
2.13
Keskiarvon laskeminen• Otetaan käyttöön muuttujat:
− x on luettu luku (termi xi),− i on laskuri, josta selviää monesko silmukan kierros on
meneillään (termin indeksi),− summa vastaa lukujen summaa (Σxi),− lkm vastaa lukujen lukumäärää (indeksin yläraja n) ja− ka on lukujen keskiarvo ( ).
• Huom! Silmukka voidaan toteuttaa usealla eri tavalla. Oletetaan nyt, että lukujen lukumäärä voidaan selvittää ennen silmukan aloitusta.
nxxn
ii /
1
x
2.14
Keskiarvon laskeminen
i ≤ lkm x ← lue()
tulosta(″Ei lukuja!″)
ka ← summa / lkm
Alku
Loppu
lkm > 0
K
EK
E
tulosta(ka)
lkm ← lue()
summa ← 0
summa ← summa + x i ← i + 1
i ← 1
2.15
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.− Kaavioiden piirtäminen työlästä.