2 6 Modulaarisuus tarkoittaa algoritmien suunnittelussa sit ett

  • Slides: 38
Download presentation
2. 6 Modulaarisuus tarkoittaa algoritmien suunnittelussa sitä, että algoritmi jaetaan pieniksi hyvin määritellyiksi paloiksi

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

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 … Abstraktiivinen ajattelu = kyky nähdä metsä puilta.

2. 6. 1. Abstraktiot … Abstraktiotaso: mitkä kohteen yksityiskohdat ja ominaisuudet on piilotettu mallin

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.

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

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.

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

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

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

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:

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

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:

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

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

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

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

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

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.

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: syöttötiedot moduuli Moduuli tulokset

Yleiskäyttöinen moduuli on kuin musta laatikko: Esimerkki: moduuli nimetoikein korjaa kirjoitusvirheitä (isot/pienet kirj. ,

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

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

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

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

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

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

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

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

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

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

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,

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

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

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

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

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,

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