2.6 Modulaarisuus
description
Transcript of 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.
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ä.
2.6.1. Abstraktiot …
Abstraktiivinen ajattelu = kyky nähdä metsä puilta.
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.
2.6.1. Abstraktiot …
Abstraktioita tietojen-käsittelytieteessä:
KoneabstraktioKontrolliabstraktioTietoabstraktio.
Koneabstraktio (suoritusmalli)kuvaa koneen loogista toimintaaluo pohjan ohjelmointikielen käskyjen ja laskun tilan määrittelyllelaskun tila mahdollistaa koneen tarkastelun käsitteellisessä mielessä.
Kontrolliabstraktioyleisiä ohjelmointikielistä riippumattomia rakenteita, mm. peräkkäisyys, valinta ja toisto.
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
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).
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ä
moduulit ….
Moduulien rajauksessa huomioonotettaviaseikkoja:
tehtäväkokonaisuus: yksi osatehtävä / moduuliluonnollisuussopiva abstraktiotaso: alimoduulit keskenään suunnilleen samalla abstraktiotasolla
moduulit…
Modulaarisuuden etuja:
selkeysluotettavuusentistä helpompi ylläpitoyleiskäyttöisyys eli kierrätys
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
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ä.
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.
Parametrit...
Esimerkkejä parametrien käytöstä:
Moduuli ’pane lusikallinen x-jauhettaastiaan y’.
Ota lusikkaan x-jauhetta.Kaada lusikassa oleva jauhe astiaan y.
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’
Parametrit...
Moduulin määrittelyssä esiintyviäparametreja sanotaan muodollisiksiparametreiksi.
Ne ovat muuttujia ja saavat alkuarvonsamoduulia käytettäessä eli kutsuttaessa.
Moduulien yleiskäyttöisyydestä…
Moduulin kutsua suoritettaessa (siiskäytettäessä moduulia) kutsussa oleviaparametreja sanotaan todellisiksi.
Yleiskäyttöinen moduuli on kuin musta laatikko:
tuloksetsyöttö-tiedot
moduuli
Moduuli
Yleiskäyttöinen moduuli on kuin musta laatikko:
Esimerkki: moduuli nimetoikein korjaakirjoitusvirheitä (isot/pienet kirj.,)
MattiPekkaLiisaMaijaPäivi
MATTI
PekkA
lIISA
maIJa
PaiVinimetoikein
parametrina nimilista
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
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
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
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
Funktio
Sqrt on siis moduuli. Se on abstraktioneliöjuuren ottamisesta.
Moduuli x
sqrt
juurrettava neliöjuuri
Proseduuri
Proseduurin tuottamat tulokset välittyvät yleensä takaisin syöttöparametrien kauttatai ns. sivuvaikutuksina. Tyypillinensivuvaikutus on proseduurin tekemätulostustoimenpide.
Moduuli x
Funktion määrittely
Yleinen muoto:MODULE mod. nimi (mp1,…, mpN) RETURNS
palautusarvo moduulin runkoENDMODULE
mp1,…, mpN ovat muodolliset parametritModuuli x
otsikko
moduulin käskyt
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
Proseduurin määrittely
Yleinen muoto:MODULE moduulin nimi (mp1,…, mpN) moduulin runkoENDMODULE
mp1,…, mpN ovat muodolliset parametrit
Moduuli x
otsikko
moduulin käskyt
Ohjelman rakenteesta
Ohjelma muodostuu yhdestä taiuseammasta moduulista.
Autonominen modulaarisuus: moduulitvoivat viitata toisiinsa vapaasti.
Hierarkkinen modulaarisuus: moduulit tietynlaisessa hierarkiassa toisiinsa nähden.
Moduuli x
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
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!
Esimerkkimoduuleja...
Moduuli x
Kertoma4
Kertoma-moduuli
24
Kertoma2 2
Kertoma6 720
Kilpikonnagrafiikkaa
neliö
kolmio
http://www.bfoit.org/Intro_to_Programming/TG.html
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.
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)
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