2. Vuokaaviot

15
2.1 2. Vuokaaviot

description

2. Vuokaaviot. Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. Graafinen kieli algoritmien kuvaamiseen. Muodostetaan yhdistelemällä symboleja suuntajanoilla (nuolilla). - PowerPoint PPT Presentation

Transcript of 2. Vuokaaviot

Page 1: 2. Vuokaaviot

2.1

2. Vuokaaviot

Page 2: 2. Vuokaaviot

2.2

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

Page 3: 2. Vuokaaviot

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

Page 4: 2. Vuokaaviot

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.

Page 5: 2. Vuokaaviot

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

Page 6: 2. Vuokaaviot

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...

...

...

...

Page 7: 2. Vuokaaviot

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...

...

...

...

Page 8: 2. Vuokaaviot

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.

...

...

...

Page 9: 2. Vuokaaviot

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

Page 10: 2. Vuokaaviot

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

Page 11: 2. Vuokaaviot

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

Page 12: 2. Vuokaaviot

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

Page 13: 2. Vuokaaviot

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

Page 14: 2. Vuokaaviot

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

Page 15: 2. Vuokaaviot

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ä.