2 6 Modulaarisuus tarkoittaa algoritmien suunnittelussa sit ett






































- Slides: 38
2. 6 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.
2. 6. 1. Abstraktiot Uusia asiakokonaisuus: puutteellinen käsitteellinen malli Luotu malli = abstraktio Mallin tuottaminen = abstrahointi Abstraktio on siis tarkasteltavan asian yksinkertainen 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 ja ominaisuudet on piilotettu mallin sisälle ja mitkä näkyvät ulospäin. Abstraktioon tehdään liittymiä, joiden kautta ulkomaailman kanssa "kommunikoidaan". Ulkoisen maailman kannalta abstraktio = sille määritellyt liittymät.
2. 6. 1. Abstraktiot … Abstraktioita tietojenkäsittelytieteessä: Koneabstraktio Kontrolliabstraktio Tietoabstraktio.
Koneabstraktio (suoritusmalli) kuvaa koneen loogista toimintaa luo pohjan ohjelmointikielen käskyjen ja laskun tilan määrittelylle laskun tila mahdollistaa koneen tarkastelun käsitteellisessä mielessä.
Kontrolliabstraktio yleisiä ohjelmointikielistä riippumattomia rakenteita, mm. peräkkäisyys, valinta ja toisto.
2. 6. 1 Abstraktiot … Tietoabstraktio kuvaa tiedon rakenteen ja sen operaatiot mahdollistaa näiden esittämisen ohjelmointikielen keinoin kapseloi 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 toisistaan algoritmin pitäisi olla myös ihmiselle ymmärrettävä voidaan vakuuttautua algoritmin virheettömyydestä ja algoritmia voidaan myöhemmin muuttaa modulaarisuus mahdollistaa ristiriitaisten tavoitteiden saavuttamisen: sellaisen kuvaustavan, joka olisi sekä robotin/tietokoneen että ihmisen helposti ymmärrettävissä
moduulit …. Moduulien rajauksessa huomioonotettavia seikkoja: tehtäväkokonaisuus: yksi osatehtävä / moduuli luonnollisuus sopiva abstraktiotaso: alimoduulit keskenään suunnilleen samalla abstraktiotasolla
moduulit… Modulaarisuuden etuja: selkeys luotettavuus entistä helpompi ylläpito yleiskä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öisyyttä. Parametrien kautta moduulille annetaan syöttötietoja ja joskus välitetään ulos myös käsittelyn tuloksia. Vaikea asia ymmärtää, mutta loppujen lopuksi helpottaa (myös) ohjelmoijan työtä.
Parametrit… Esimerkkejä parametrien käytöstä: parametrit n, x ja y: Moduuli ’pane n lusikallista x-jauhetta astiaan y’. Ota x-jauhepurkki esiin. REPEAT n TIMES pane lusikallinen -jauhetta astiaan y. Pane x-jauhepurkki pois. x
Parametrit. . . Esimerkkejä parametrien käytöstä: Moduuli ’pane lusikallinen x-jauhetta astiaan 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 muodollisiksi parametreiksi. Ne ovat muuttujia ja saavat alkuarvonsa moduulia käytettäessä eli kutsuttaessa.
Moduulien yleiskäyttöisyydestä… Moduulin kutsua suoritettaessa (siis käytettäessä moduulia) kutsussa olevia parametreja sanotaan todellisiksi.
Yleiskäyttöinen moduuli on kuin musta laatikko: syöttötiedot moduuli Moduuli tulokset
Yleiskäyttöinen moduuli on kuin musta laatikko: Esimerkki: moduuli nimetoikein korjaa kirjoitusvirheitä (isot/pienet kirj. , ) parametrina nimilista MATTI Matti Pekka Liisa Maija Päivi Pekk. A l. IISA ma. IJa Pai. Vi nimetoikein
2. 6. 4 Proseduurit ja funktiot Yleisessä tapauksessa moduulissa on m syöttö- ja n tulosparametria: syöttöparametreja m kpl … Moduuli x … tulosparametreja n kpl
Proseduurit ja funktiot. . . Moduuleja on kahdenlaisia: proseduurit funktiot Kun tulosparametreja ei ole (n=0), kyseessä on proseduuri (-tyyppinen moduuli). Moduuli x Kun tulosparametreja on yksi (n=1), kyseessä on funktio(-tyyppinen moduuli).
Funktiomoduuli vastaa matemaattista funktiota. Esimerkiksi funktio f(x)=3 x-1 palauttaa eri x: n (syöttöparametri) arvoilla aina yhden tuloksen (tulosparametrin). Moduuli x Esim. f(0) = -1, f(10)=29 jne.
Funktiotyyppinen moduuli onkin kehitetty lähinnä matemaattisia sovelluksia varten. Funktiomoduulia käytetään lausekkeen osana, esim. sqrt-funktio laskee neliöjuuren: Moduuli x esim m: =12 -sqrt(5) syöttöparametri funktion kutsu
Funktio Sqrt on siis moduuli. Se on abstraktio neliöjuuren ottamisesta. sqrt juurrettava Moduuli x neliöjuuri
Proseduurin tuottamat tulokset välittyvät yleensä takaisin syöttöparametrien kautta tai ns. sivuvaikutuksina. Tyypillinen sivuvaikutus on proseduurin tekemä tulostustoimenpide. Moduuli x
Funktion määrittely Yleinen muoto: MODULE mod. nimi (mp 1, …, mp. N) RETURNS palautusarvo moduulin runko otsikko ENDMODULE moduulin käskyt mp 1, …, mp. N ovat muodolliset parametrit Moduuli x
Funktion määrittely Yleinen muoto: MODULE moduulin nimi (mp 1, …, mp. N) RETURNS palautusarvo moduulin runko ENDMODULE otsikko moduulin käskyt Funktiomoduulin rungossa on oltava ns. RETURN-lause. Moduuli Se palauttaa funktion x tuloksen ja on muotoa: RETURN lauseke
Proseduurin määrittely Yleinen muoto: MODULE moduulin nimi (mp 1, …, mp. N) moduulin runko ENDMODULE otsikko moduulin käskyt mp 1, …, mp. N ovat muodolliset parametrit Moduuli x
Ohjelman rakenteesta Ohjelma muodostuu yhdestä tai useammasta moduulista. Autonominen modulaarisuus: moduulit voivat viitata toisiinsa vapaasti. Moduuli x Hierarkkinen modulaarisuus: moduulit tietynlaisessa hierarkiassa toisiinsa nähden.
Esimerkkimoduuleja n! Kertomamoduuli: MODULE kertoma(n) RETURNS n-kertoma k: =1 WHILE n > 1 DO k: =k*n n: =n-1 ENDWHILE Moduuli x RETURN k Return lopettaa moduulin ENDMODULE suorituksen ja palauttaa lopputuloksen
Esimerkkimoduuleja. . . Kertomamoduulin kutsuja: x: =kertoma(0) tulosta (kertoma(0)) käskyä suoritettaessa käydään toteuttamassa kertoma-moduuli, syöttöparametrin arvona on 0. tulosta-moduulin syöttöparametrina on 0! tulosta(x*kertoma(4)+kertoma(2))) käskyä suoritettaessa käydään toteuttamassa kertoma -moduuli kolme kertaa, syöttöparametreina arvot 4, 2! ja 2 (=2!).
Esimerkkimoduuleja. . . Kertoma-moduuli 6 Kertoma 720 4 Kertoma 24 Moduuli x 2 Kertoma 2
Kilpikonnagrafiikkaa neliö kolmio http: //www. bfoit. org/Intro_to_Programming/TG. h tml
2. 6. 5 Yhteenveto Moduulit soveltuvat luonnollisella tavalla asteittain tarkentuvaan menetelmään Moduuli on suuremman algoritmin komponentti. Komponentteihin jako yksinkertaistaa ja nopeuttaa ohjelmien suunnitteluprosessia Moduulit 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