2.6 modulaarisuus

Post on 07-Jan-2016

41 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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

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

top related