Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 6. nädala sisukord | järgmine > |
6.7 Kuuenda nädala kontrollülesanded 6.4abc
Kuuendal nädalal tuleb esitada nelja kohustusliku ülesande lahendused. Neljanda ülesande puhul on võimalik valida lahendamiseks vähemalt üks järgmistest ülesannetest, kas 6.4a, 6.4b või 6.4c (võib ka kaks või kolm lahendada). Lahendused tuleb esitada Moodle'is, kus need kontrollitakse automaatselt. Moodle'is on ka nädalalõputest 10 küsimusega, millest tuleb vähemalt 9 õigesti vastata.
Järgmisest kolmest ülesandest (6.4a, 6.4b, 6.4c) tuleb lahendada vähemalt üks.
Kontrollülesanne 6.4a Tervitused mõtisklustega
Väiksematel üritustel on külaliste ühekaupa tervitamine lihtne. Suurematel üritustel võib ühekaupa tervitamine olla juba kurnavam tegevus.
Esmalt koostada funktsioon tervitus
, mis
- võtab argumendiks tervituse järjekorranumbri arvuna, mis näitab mitmes tervitus on käsil;
- kuvab väljakutsel ekraanile täpselt sellisel kujul tervituse ja vastuse koos tervituse järjekorranumbriga (n tähistab tervituse järjekorranumbrit):
Võõrustaja: "Tere!"
Täna n. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Teiseks koostada programm, mis
- küsib kasutajalt külaliste arvu;
- rakendab tsükli abil vastav arv kordi funktsiooni
tervitus
, 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:
>>> %Run lahendus.py
Sisestage külaliste arv 3
Võõrustaja: "Tere!"
Täna 1. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 2. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 3. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
220 külalise puhul on algus ja lõpp sellised.
>>> %Run lahendus.py
Sisestage külaliste arv 220
Võõrustaja: "Tere!"
Täna 1. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 2. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 3. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
...
Täna 217. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 218. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 219. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
Võõrustaja: "Tere!"
Täna 220. kord tervitada, mõtiskleb võõrustaja.
Külaline: "Tere, suur tänu kutse eest!"
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.
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
>>> %Run lahendus.py
Sisestage failinimi: mündid.txt
Hoiupõrsasse läheb 11 senti.
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:
>>> %Run lahendus.py
Sisestage kuupäev kujul DD.MM.YYYY: 24.02.1918
24. veebruar 1918. a
>>> %Run lahendus.py
Sisestage kuupäev kujul DD.MM.YYYY: 20.08.1991
20. august 1991. a
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.
< eelmine | 6. nädala sisukord | järgmine > |