2.6 Modulaarisuus

38
2.6 Modulaarisuus Modulaarisuus tarkoittaa algoritmien suunnittelussa sitä, että algoritmi jaetaan pieniksi hyvin määritellyiksi paloiksi eli moduuleiksi. Tässä jakamisessa voidaan käyttää asteittaisen tarkentamisen menetelmää. Modulaarisuus- käsitteen ymmärtäminen on osa suunnittelumenetelmän ymmärtämistä, eikä siten välttämättä liity mihinkään ohjelmointikieleen.

description

2.6 Modulaarisuus. Modulaarisuus tarkoittaa algoritmien suunnittelussa sitä, että algoritmi jaetaan pieniksi hyvin määritellyiksi paloiksi eli moduuleiksi. Tässä jakamisessa voidaan käyttää asteittaisen tarkentamisen menetelmää. Modulaarisuus-käsitteen - PowerPoint PPT Presentation

Transcript of 2.6 Modulaarisuus

Page 1: 2.6  Modulaarisuus

2.6 Modulaarisuus

Modulaarisuus tarkoittaa algoritmien suunnittelussa sitä, että algoritmi jaetaan pieniksi hyvinmääritellyiksi paloiksi eli moduuleiksi.

Tässä jakamisessa voidaan käyttää asteittaisentarkentamisen menetelmää. Modulaarisuus-

käsitteenymmärtäminen on osa suunnittelumenetelmän ymmärtämistä, eikä siten välttämättä liity mihinkäänohjelmointikieleen.

Page 2: 2.6  Modulaarisuus

2.6.1. Abstraktiot

Uusia asiakokonaisuus: puutteellinen käsitteellinen malli

Luotu malli = abstraktioMallin tuottaminen = abstrahointiAbstraktio on siis tarkasteltavan asian yksin-kertainen ja (usein) epätarkka malli.Abtraktion tulee kuitenkin olla riittävä, mutta ei välttämättä täydellinen kuvaus tarkasteltavan asian tai ilmiön rakenteesta, ominaisuuksista ja käyttäytymisestä.

Page 3: 2.6  Modulaarisuus

2.6.1. Abstraktiot …

Abstraktiivinen ajattelu = kyky nähdä metsä puilta.

Page 4: 2.6  Modulaarisuus

2.6.1. Abstraktiot …

Abstraktiotaso: mitkä kohteen yksityiskohdat jaominaisuudet on piilotettu mallin sisälle ja mitkänäkyvät ulospäin.

Abstraktioon tehdään liittymiä, joiden kauttaulkomaailman kanssa "kommunikoidaan".

Ulkoisen maailman kannalta abstraktio =sille määritellyt liittymät.

Page 5: 2.6  Modulaarisuus

2.6.1. Abstraktiot …

Abstraktioita tietojen-käsittelytieteessä:

KoneabstraktioKontrolliabstraktioTietoabstraktio.

Page 6: 2.6  Modulaarisuus

Koneabstraktio (suoritusmalli)kuvaa koneen loogista toimintaaluo pohjan ohjelmointikielen käskyjen ja laskun tilan määrittelyllelaskun tila mahdollistaa koneen tarkastelun käsitteellisessä mielessä.

Page 7: 2.6  Modulaarisuus

Kontrolliabstraktioyleisiä ohjelmointikielistä riippumattomia rakenteita, mm. peräkkäisyys, valinta ja toisto.

Page 8: 2.6  Modulaarisuus

2.6.1 Abstraktiot …

Tietoabstraktiokuvaa tiedon rakenteen ja sen operaatiotmahdollistaa näiden esittämisen ohjelmointikielen keinoinkapseloi tiedon rakenteen ja operaatiot siten, ettäulkomaailma pääsee käsiksi abstraktioon vain operaatioiden kautta

Page 9: 2.6  Modulaarisuus

2.6.2 Moduulit

Eri ohjelmointikielissä moduulista käytetään nimitystä

proseduuri (procedure)rutiini (routine)alirutiini (subr.)funktio (function)aliohjelma (subprogram)

Moduulin käyttöä sanotaan moduulin kutsuksi (call).

Page 10: 2.6  Modulaarisuus

moduulit…

moduulit tulisi suunnitella niin, että ne olisivat mahdollisimman riippumattomia toisistaanalgoritmin pitäisi olla myös ihmiselle ymmärrettävä voidaan vakuuttautua algoritmin virheettömyydestä ja algoritmia voidaan myöhemmin muuttaamodulaarisuus mahdollistaa ristiriitaisten tavoitteiden saavuttamisen: sellaisen kuvaustavan, joka olisi sekä robotin/tietokoneen että ihmisen helposti ymmärrettävissä

Page 11: 2.6  Modulaarisuus

moduulit ….

Moduulien rajauksessa huomioonotettaviaseikkoja:

tehtäväkokonaisuus: yksi osatehtävä / moduuliluonnollisuussopiva abstraktiotaso: alimoduulit keskenään suunnilleen samalla abstraktiotasolla

Page 12: 2.6  Modulaarisuus

moduulit…

Modulaarisuuden etuja:

selkeysluotettavuusentistä helpompi ylläpitoyleiskäyttöisyys eli kierrätys

Page 13: 2.6  Modulaarisuus

Moduulien yleiskäyttöisyydestä

Siirrettävyys: moduulia voidaan käyttää aina silloin kun sama osatehtävä esiintyy algoritmissa.Korvattavuus: moduuli voidaan helposti korvata toisella, esimerkiksi entistä tehokkaammalla moduulilla

Page 14: 2.6  Modulaarisuus

2.6.3 Parametrit

Parametrisointi lisää moduulin yleiskäyttöi-syyttä. Parametrien kautta moduulilleannetaan syöttötietoja ja joskus välitetäänulos myös käsittelyn tuloksia.

Vaikea asia ymmärtää, mutta loppujenlopuksi helpottaa (myös) ohjelmoijantyötä.

Page 15: 2.6  Modulaarisuus

Parametrit…

Esimerkkejä parametrien käytöstä:parametrit n, x ja y:

Moduuli ’pane n lusikallista x-jauhettaastiaan y’.

Ota x-jauhepurkki esiin.REPEAT n TIMES pane lusikallinen x-jauhetta astiaan y.Pane x-jauhepurkki pois.

Page 16: 2.6  Modulaarisuus

Parametrit...

Esimerkkejä parametrien käytöstä:

Moduuli ’pane lusikallinen x-jauhettaastiaan y’.

Ota lusikkaan x-jauhetta.Kaada lusikassa oleva jauhe astiaan y.

Page 17: 2.6  Modulaarisuus

Parametrit...

Esimerkkimoduulin käyttötilanteita:

1. ’Pane kolme lusikallista kaakaojauhetta astiaan kuppi’

2. ’Pane kaksi lusikallista kahvijauhetta astiaan kuppi’

3. ’Pane kymmenen lusikallista tapettiliisteri-jauhetta astiaan vesiämpäri’

Page 18: 2.6  Modulaarisuus

Parametrit...

Moduulin määrittelyssä esiintyviäparametreja sanotaan muodollisiksiparametreiksi.

Ne ovat muuttujia ja saavat alkuarvonsamoduulia käytettäessä eli kutsuttaessa.

Page 19: 2.6  Modulaarisuus

Moduulien yleiskäyttöisyydestä…

Moduulin kutsua suoritettaessa (siiskäytettäessä moduulia) kutsussa oleviaparametreja sanotaan todellisiksi.

Page 20: 2.6  Modulaarisuus

Yleiskäyttöinen moduuli on kuin musta laatikko:

tuloksetsyöttö-tiedot

moduuli

Moduuli

Page 21: 2.6  Modulaarisuus

Yleiskäyttöinen moduuli on kuin musta laatikko:

Esimerkki: moduuli nimetoikein korjaakirjoitusvirheitä (isot/pienet kirj.,)

MattiPekkaLiisaMaijaPäivi

MATTI

PekkA

lIISA

maIJa

PaiVinimetoikein

parametrina nimilista

Page 22: 2.6  Modulaarisuus

2.6.4 Proseduurit ja funktiot

Yleisessä tapauksessa moduulissa onm syöttö- ja n tulosparametria:

… …

tulos-parametreja

n kpl

syöttö-parametreja

m kplModuuli

x

Page 23: 2.6  Modulaarisuus

Proseduurit ja funktiot...

Moduuleja on kahdenlaisia:proseduuritfunktiot

Kun tulosparametreja ei ole (n=0),kyseessä on proseduuri (-tyyppinen moduuli).Kun tulosparametreja on yksi (n=1),kyseessä on funktio(-tyyppinen moduuli).

Moduuli x

Page 24: 2.6  Modulaarisuus

Funktio

Funktiomoduuli vastaa matemaattistafunktiota. Esimerkiksi funktio

f(x)=3x-1

palauttaa eri x:n (syöttöparametri)arvoilla aina yhden tuloksen (tulos-parametrin).Esim. f(0) = -1, f(10)=29 jne.

Moduuli x

Page 25: 2.6  Modulaarisuus

Funktio

Funktiotyyppinen moduuli onkin kehitettylähinnä matemaattisia sovelluksia varten.

Funktiomoduulia käytetään lausekkeen osana, esim. sqrt-funktio laskeeneliöjuuren:esim m:=12-sqrt(5)

Moduuli x

funktion kutsu

syöttöparametri

Page 26: 2.6  Modulaarisuus

Funktio

Sqrt on siis moduuli. Se on abstraktioneliöjuuren ottamisesta.

Moduuli x

sqrt

juurrettava neliöjuuri

Page 27: 2.6  Modulaarisuus

Proseduuri

Proseduurin tuottamat tulokset välittyvät yleensä takaisin syöttöparametrien kauttatai ns. sivuvaikutuksina. Tyypillinensivuvaikutus on proseduurin tekemätulostustoimenpide.

Moduuli x

Page 28: 2.6  Modulaarisuus

Funktion määrittely

Yleinen muoto:MODULE mod. nimi (mp1,…, mpN) RETURNS

palautusarvo moduulin runkoENDMODULE

mp1,…, mpN ovat muodolliset parametritModuuli x

otsikko

moduulin käskyt

Page 29: 2.6  Modulaarisuus

Funktion määrittely

Yleinen muoto:MODULE moduulin nimi (mp1,…, mpN) RETURNS palautusarvo moduulin runkoENDMODULE

Funktiomoduulin rungossa on oltava ns.RETURN-lause. Se palauttaa funktiontuloksen ja on muotoa:

RETURN lauseke

Moduuli x

otsikko

moduulin käskyt

Page 30: 2.6  Modulaarisuus

Proseduurin määrittely

Yleinen muoto:MODULE moduulin nimi (mp1,…, mpN) moduulin runkoENDMODULE

mp1,…, mpN ovat muodolliset parametrit

Moduuli x

otsikko

moduulin käskyt

Page 31: 2.6  Modulaarisuus

Ohjelman rakenteesta

Ohjelma muodostuu yhdestä taiuseammasta moduulista.

Autonominen modulaarisuus: moduulitvoivat viitata toisiinsa vapaasti.

Hierarkkinen modulaarisuus: moduulit tietynlaisessa hierarkiassa toisiinsa nähden.

Moduuli x

Page 32: 2.6  Modulaarisuus

Esimerkkimoduuleja

Kertomamoduuli:MODULE kertoma(n) RETURNS n-kertoma

k:=1WHILE n > 1 DO k:=k*n

n:=n-1ENDWHILERETURN k

ENDMODULE

Moduuli x

n!

Return lopettaa moduulin suorituksen ja palauttaa lopputuloksen

Page 33: 2.6  Modulaarisuus

Esimerkkimoduuleja...

Kertomamoduulin kutsuja:

x:=kertoma(0)

tulosta (kertoma(0))

tulosta(x*kertoma(4)+kertoma(kertoma(2)))

käskyä suoritettaessa käydään toteutta-massa kertoma-moduuli, syöttöparametrin arvona on 0.

käskyä suoritettaessa käydään toteuttamassa kertoma-moduuli kolme kertaa, syöttöparametreina arvot 4, 2! ja 2 (=2!).

tulosta-moduulin syöttöparametrina on 0!

Page 34: 2.6  Modulaarisuus

Esimerkkimoduuleja...

Moduuli x

Kertoma4

Kertoma-moduuli

24

Kertoma2 2

Kertoma6 720

Page 36: 2.6  Modulaarisuus

2.6.5 Yhteenveto

Moduulit soveltuvat luonnollisella tavalla asteittain tarkentuvaan menetelmäänModuuli on suuremman algoritmin komponentti. Komponentteihin jako yksinkertaistaa ja nopeuttaa ohjelmien suunnitteluprosessiaModuulit selkeyttävät algoritmeja ja helpottavat niiden ymmärtämistä. Algoritmien muuntelu helpottuu.

Page 37: 2.6  Modulaarisuus

2.6.5 Yhteenveto …

Moduulien oikeellisuuden tarkastelu helpottuu, koska algoritmia voidaan tarkastella ja testata paloittain.Kun algoritmin osaksi liitetään valmis moduuli, riittää kun tiedetään mitä moduuli tekee, ei tarvitse tietää sitä miten se ratkaisun tekee. Ulkoinen kuvaus riittää !

MODULE neliö (sivu)

Page 38: 2.6  Modulaarisuus

2.6.5 Yhteenveto …

Kerran suunniteltua moduulia voidaan käyttää hyväksi missä tahansa algoritmissa, jossa vastaava (osa)tehtävä esiintyy uusiokäyttöä.Moduulit voidaan koota kirjastoiksi