2.2 Apufunktiot ja funktion suunnitteluportaat
Isot ongelmat ovat vaikeampia ratkaista kuin pienet ongelmat. Sama pätee ohjelmoinnissa. Siksi kannattaa opetella ratkaisemaan ongelmat paloissa käyttämällä pienempiä apufunktioita isomman ja monimutkaisemman funktion toteuttamiseen. Hyvä nyrkkisääntö on se, että jokainen funktio tekee vain yhden asian.
Jokaisen funktion koodaamisessa tärkein vaihe on suunnittelu. Koska funktion suunnittelussa on monta päätöstä tehtävänä, se voi aluksi tuntua lähdes mahdottomalta. Siksi teemme sen pienissä askelissa seuraamalla menetelmää nimeltä funktion suunnitteluportaat. Emme siis yritä hypätä katolle yhdellä (mahdottomalla) loikalla. Jos menetelmä ei ole sinulle tuttu, katso ensin esimerkki Koodarin käsikirjasta.
Voit tutustua apufunktioiden ja funktion suunnitteluportaiden käyttöön tekemällä joko laskuharjoituksia tai kuva- ja yhdistelmätehtäviä.
2.2.1 Pinta-alatehtävät B
Harjoittele funktioiden ja apufunktioiden kirjoittamista seuraavien tehtävien avulla. Lataa harjoitustiedosto tästä:
| ||
|
Jos käytät WeScheme:ä ja haluat tallentaa työsi, tarvitset Google-tunnukset. Kirjaudu ENSIN sisään WeScheme:en, ja tule vasta jälkeen avaamaan tehtävälinkki.
Tehtävätiedosto sisältää nämä laskutehtävät:
Pinta-alafunktiot B
Tee funktioita erilaisten pinta-alojen laskemiseen. Valitse muuttujille sopivat nimet/nimi. Täydennä funktion kuvauksen puuttuvat tiedot (...). Tee myös esimerkkejä/testejä funktiollesi (check-expect).
Huom! Tehtävässä tarvitset piin arvoa. Racket-kielessä se on vakio nimeltä pi.
Koska piin arvo on päättymätön desimaaliluku, tulokset ovat aina likiarvoja (epätarkkoja). DrRacket varoittaa epätarkoista arvoista lisäämällä luvun eteen #i-merkinnän. Samasta syystä emme voi käyttää check-expect-testiä vaan epätarkoille tuloksille tarkoitettua check-within-testiä.
Funktio ympyröiden pinta-alojen laskemiseen | |
Funktio sektoreiden pinta-alojen laskemiseen | |
Funktio ympyrälieriöiden kokonaispinta-alojen laskemiseen |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita ja vakioita:
|
|
|
|
|
|
2.2.2 Kuva- ja yhdistelmäfunktioita
Suunnittele ja koodaa funktiot, jotka tuottavat seuraavanlaisia kuvia:
Kuva- ja yhdistelmäfunktioita
Koodaa kuvan geometrisia kuvioita tuottava funktio. | |
Koodaa kuvan geometrisiä kuvioita tuottava funktio. | |
Koodaa funktio, jonka avulla voit liittää suorakulmioon sen mitat. | |
Koodaa funktio, joka piirtää ympyrälieriön levityskuvia. | |
Koodaa funktio, joka piirtää suorakulmaisten särmiöiden levityskuvia ja laskee niiden kokonaispinta-alat sekä liittää tulokset kuviin yksiköiden kera. Tämä tehtävä vaatii useammankin funktion koodaamista. Voit myös käyttää aikaisempien tehtävien tuotoksia tässä tehtävässä! | |
Koodaa EU:n lippu. |
Tässä harjoituksessa saatat tarvita seuraavia Racket-kielen funktioita:
|
|
|
| |||||
|
|
|
| |||||
|
|
|
| |||||
|
|
|
|