6. Ülesanded. Funktsioon
Teooriapeatükid
Ülesanne 1
Koosta funktsioon, mis trükib ekraanile lause "Kui Arno isaga koolimajja jõudis, olid tunnid juba alanud". Kutsuge seda funktsiooni välja neli korda.
Ülesanne 2
Loo funktsioon, mis trükib sellele argumendina ette antud pealinna nime alusel lause "Üks Euroopa pealinnadest on LINNA_NIMI". Kasutades loodud Euroopa pealinnade järjendit, kutsu seda funktsiooni välja iga pealinna puhul.
Euroopa üks pealinnadest on Amsterdam. Euroopa üks pealinnadest on Bern. ...
Ülesanne 3
Loo funktsioon, mis saab argumendina ette täisarvu ja trükib ekraanile sama suure arvu tärne. Koosta programm, mis kutsub seda funktsiooni välja 30 korda juhuslike positiivsete täisarvudega, mis on väiksemad kui 20. Näiteks:
************ ********* ********************** ******* [...]
Täienda programmi:
- Iga rea ette kirjutatakse arv, mitu sümbolit on reas.
- Funktsiooni kutsutakse välja mitte 30 korda, vaid juhuslik arv kordi vahemikus 20 kuni 40.
- Funktsioon saab ette ühe argumendi asemel kaks argumenti: lisaks arvule ka sümboli, mida trükitakse.
Ülesanne 4
Koer, kass, jänes, sipelgasiil ja lendorav hakkasid vaidlema, kellel on kõige pikem nimetus. Koosta programm, kus on antud loomanimede järjend. Loo funktsioon, mis saab argumendina ette looma nime ning tagastab (mitte ei trüki!) selle pikkuse. Lase programmil kutsuda funktsiooni välja iga loomanimede järjendi elemendiga ning trükib ekraanile nime pikkuse. Pärast pikkuste kontrollimist peab programm väljastama kõige pikema loomanime (võrdsete pikkuste puhul võib esitada vaid ühe pikimatest).
Ülesanne 5
Koosta vähemalt viis funktsiooni, millest igaüks arvutab ja väljastab ühe geomeetrilise kujundi (ruut, ring, kera, kuup jne) mõõtmed (vastavalt võimalusele ümbermõõt, pindala, ruumala jne). Loo programm, mis küsib kasutajalt kujundi tüüpi (kas sõna või numbrilise valikuna), kujundi andmeid (vastavalt vajadusele külje pikkust, raadiust vms) ning tagastab vastava kujundi mõõtmed. Näiteks:
Millist kujundit soovid? 1 - ruut, 2 - ring >> 2 Sisesta ringi raadius >> 5 Selle ringi läbimõõt on 10, ümbermõõt umbes 31,4 ja pindala umbes 78,5.
- Kas andmete küsimist on mõistlik teha funktsiooni sees või anda arvud ette argumentidena?
- Kuidas teha nii, et kasutaja saaks küsida andmeid korduvalt ning alles mingi klahvivajutuse peale (näiteks ilma kujunditüüpi sisestamata lihtsalt sisestusklahvile vajutades) väljutakse programmist?
Ülesanne 6
Täienda oma eelmise korra programmi, lisades sellele järgmised funktsioonid:
- itaalia - saab sisendi inglise keeles ja tagastab väärtuse itaalia keeles;
- inglise - saab sisendi itaalia keeles ja tagastab väärtuse inglise keeles.
Ülesanne 7
Koosta programm, mis küsib kasutajalt, mis kujundit ta ekraanile soovib (ring, ruut, kolmnurk) ja siis väljastab vastava kujundi (kujundi joonistamiseks tehke sobiv funktsioon), näiteks:
Sisesta soovitud kujund (ring, ruut, kolmnurk): >> ring * *** *
Ülesanne 8
Koosta kaks funktsiooni, millest üks (tollcm()) teisendab argumendina antud arvu tollidest sentimeetriteks ja teine (cmtoll()) sentimeetritest tollideks. Mõlemad funktsioonid peavad tagastama (mitte väljastama ehk printima) teisendamise tulemused. Looge programm, mis kasutab neid funktsioone, lubab kasutajatel sisestada kõigepealt arvu ja seejärel teisendamissuuna (näiteks "cm" või "toll") ning väljastab ekraanile tulemuse.
Ülesanne 9
Eurosendid on väärtuses 1, 2, 5, 10, 20 ja 50. Koostage funktsioon, millele antakse argumendina rahasumma (sentides) ja mis trükib välja, kui palju milliseid münte peaks selles vääringus andma, et müntide arv oleks väikseim. Näiteks 37 sendi puhul 1 20-sendine, 1 10-sendine, 1 5-sendine ja 1 2-sendine.
Koostage järjend, mille elementideks on teisendatavad rahasummad. Koostage programm, mis võtab järjendist elemente ja kutsub igaühe korral neist välja ülaltoodud funktsiooni.
Probleeme tekitab kindlasti korrektse lause koostamine (mida teha, kui mingis vääringus münte ei vajata? mida teha ainsuse ja mitmusega?). Püüdke leida parim võimalik lahendus.
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/