Viienda praktikumi ülesanded
Järgmisest kolmest ülesandest tuleb lahendada vähemalt üks. Lahendused tuleb esitada Moodle'is, kus need kontrollitakse automaatselt.
Kontrollülesanne 5.4a Valimised
Paari inimese tervitamine on lihtne. Suure arvu valijate ühekaupa tervitamine on aga kurnav tegevus.
Esmalt koostada funktsioon valija
, mis
- võtab argumendiks valija järjekorranumbri arvuna, mis näitab mitmes tervitus on käsil;
- kuvab väljakutsel ekraanile ühe järgmistest dialoogidest koos valija järjekorranumbriga (n tähistab tervituse järjekorranumbrit):
Kandidaat: "Tere! Kas olete juba hääletanud?"
Juba n. inimene, mõtiskleb kandidaat.
Valija: "Ei."
Kandidaat: "Võtke üks pastakas."
Valija: "Suur tänu!"
või
Kandidaat: "Tere! Kas olete juba hääletanud?"
Juba n. inimene, mõtiskleb kandidaat.
Valija: "Jah."
Kandidaat: "Tubli! Võtke üks komm."
Valija: "Suur tänu!"
Teiseks koostada programm, mis
- küsib kasutajalt valijate arvu;
- rakendab tsükli abil vastav arv kordi funktsiooni
valija
, kus igal tsükli sammul tuleb funktsioon välja kutsuda ühe võrra suurema argumendiga kui eelmisel korral.
Funktsiooni kirjelduses tsüklit pole. Küll aga funktsiooni ennast rakendatakse tsükli kehas.
Kuidas saab sõne sees jutumärke kasutada?
NB! Funktsiooni nimi peab olema täpselt see, mis on ülesandes ette antud.
Näited programmi tööst:
100 külalise puhul on algus ja lõpp sellised.
...
Euromüntide seerias on kuus erineva nimiväärtusega senti: 1 sent, 2 senti, 5 senti, 10 senti, 20 senti, 50 senti. Sendid väärtustega 1, 2 ja 5 on pronksikarva (vasega kaetud teras), sendid väärtustega 10, 20 ja 50 on kullakarva (vasesulam, mis sisaldab alumiiniumi, tsinki ja tina, nn Nordic Gold).
Peres on kombeks, et pronksikarva mündid panna hoiupõrsasse.
Müntide andmed on failis kirjas nii, et iga mündi väärtus on eraldi real. Näiteks nii:
1
20
20
5
50
2
2
1
Esmalt koostada funktsioon pronksikarva_summa
, mis
- võtab argumendiks täisarvude järjendi;
- tagastab selles järjendis olevate arvude 1, 2 ja 5 summa.
Teiseks koostada programm, mis
- küsib kasutajalt selle faili nime, milles asuvad sentide väärtused;
- moodustab täisarvujärjendi vastavast failist loetud väärtustest;
- rakendab funktsiooni
pronksikarva_summa
, andes argumendiks koostatud täisarvujärjendi; - väljastab ekraanile tulemuseks saadud kõikide pronksikarva sentide summa.
Näide programmi tööst:
Näiteks ülaltoodud andmete korral failis nimega mündid.txt peab ekraanile ilmuma
Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid.
Kuupäevade esitamisel tekib enim probleeme, kui kuupäev kirjutatakse kujul „05.06.2005“ – sellisel puhul pole võimalik aru saada, kas on mõeldud 5. juunit või hoopis 6. maid. Eestis ja enamikes teistes riikides kirjutatakse kuupäev reeglina formaadis DD.MM.YYYY, kuid Ameerika Ühendriikides on levinum järjekord MM.DD.YYYY. (Huvi korral vt https://en.wikipedia.org/wiki/Date_format_by_country.) Segaduse vältimiseks tuleks kuu nimi välja kirjutada.
Esmalt kirjutada funktsioon kuu_nimi
, mis
- võtab argumendiks kuu järjekorranumbri;
- tagastab vastava kuu nime (väikeste tähtedega).
Vihje: Seda funktsiooni saab kirjutada, kasutades vastuse andmisel if-lauseid, aga optimaalne lahendus oleks kasutada järjendit (siis ühtegi if-lauset vaja ei ole).
Teiseks luua funktsioon kuupäev_sõnena
, mis
- võtab argumendiks ühe sõnena esitatud kuupäeva formaadis “DD.MM.YYYY” (nt '24.02.1918');
- tagastab selle sama kuupäeva kujul <päev>. <kuu_nimi> <aasta>. a (nt '24. veebruar 1918. a'), kusjuures
kuupäev_sõnena
peab ühe toimingu delegeerima funktsioonilekuu_nimi
. Abiks võib ka olla funktsioonsplit
.
Kolmandaks kirjutada programm, mis
- küsib kasutajalt kuupäeva kujul “DD.MM.YYYY”;
- väljastab ekraanile vastava kuupäeva sõnena kujul<päev>. <kuu_nimi> <aasta>. a.
Näited programmi tööst:
Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt
. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid