Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 kevad
  3. Programmeerimise alused (MTAT.03.236)
EN
Logi sisse

Programmeerimise alused 2020/21 kevad

  • Pealeht
  • Loengud
  • Moodle
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Kiireksamist
  • Viited

Kuuenda praktikumi ülesanded

Järgmisest kolmest ülesandest tuleb lahendada vähemalt üks. Lahendused tuleb esitada Moodle'is, kus need kontrollitakse automaatselt.

Kontrollülesanne 6.4a Täiendatud peo eelarve

Ülesandes 5.3 pidite kirjutama programmi, mis arvutab peo maksimaalse ja minimaalse eelarve küsides inimeste arvu kasutajalt. Selles ülesandes tuleb inimeste arv saada failist.

Juubelile on kutsutud hulk inimesi, kellest osa on teatanud, et nad tulevad ja ülejäänute kohta ei ole midagi teada.

Juubelikorraldaja paneb nimekirja faili järgmisel kujul:

? Anna
+ Peeter
+ Ülle
? Eva
? Juhan
+ Maria
+ Epp
+ Anu

Faili igal real on märk + (tuleb) või ? (ei tea veel) ja inimese nimi. Tehke see fail ise mingi tekstiredaktoriga (võib ka Thonnyga). Faili kodeeringuks kasutage UTF-8.

Peo eelarve koosneb kahest osast: söök ja ruumi rent. Söögi peale arvestatakse iga osaleja kohta 10 eurot. Ruumi rent maksab sõltumata osalejate arvust 55 eurot. Planeerimiseks on vaja programmi, mis arvutab

  • maksimaalse eelarve (arvestades, et kõik kutsutud inimesed tulevad kohale) ja
  • minimaalse eelarve (arvestades, et kohale tulevad ainult need, kes on juba seda teatanud).

Programmi loomisel on mõistlik aluseks võtta ülesande 5.3 lahendus, sh funktsioon eelarve, mis võtab argumendiks külaliste arvu ning arvutab ja tagastab eelarve (10 euro iga külalise jaoks ja 55 eurot ruumi rendiks). Programm

  • küsib kasutajalt failinime;
  • loeb sellest failist informatsiooni külaliste kohta;
  • arvutab ja väljastab ekraanile kutsutud inimeste arvu;
  • arvutab ja väljastab ekraanile inimeste arvu, kes on juba tulemisest teatanud;
  • arvutab ja väljastab ekraanile maksimaalse eelarve, kasutades koostatud funktsiooni eelarve;
  • arvutab ja väljastab ekraanile minimaalse eelarve, kasutades koostatud funktsiooni eelarve.

Näide programmi tööst:

Näiteks, kui faili nimekiri.txt sisu on ülaltoodu, siis programm peab andma tulemuse :

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.

Kontrollülesanne 6.4b Nimepäev

Kui aadressile https://courses.cs.ut.ee/MTAT.TK.012/2015_fall/uploads/Main/ lisada kuunimi (nt. https://courses.cs.ut.ee/MTAT.TK.012/2015_fall/uploads/Main/jaanuar), siis sellelt aadressilt võib leida lehe, kus on kirjas selle kuu nimepäevalised nii, et igal real on ühe päeva nimepäevalised (esimesel real on selle kuu esimese päeva nimepäevalised, teisel real on selle kuu teise päeva nimepäevalised jne.). "märts" asemel tuleb kasutada ilma täpitähtedeta versiooni "marts".

NB! Kui ülaltoodud aadressilt andmeid ei saa kätte (nt Macide kasutajad), siis palun proovida http://kodu.ut.ee/~eno/mooc/jaanuar jt.

Kirjutada programm, mis

  • küsib kasutajalt kuunime (võib eeldada, et kasutaja sisestab kuunime õigesti ja "märts" asemel kirjutab "marts"),
  • küsib kasutajalt päeva (võib eeldada, et sisestatud kuus leidub sellise järjekorranumbriga päev),
  • loeb vastavalt aadressilt selle kuu nimepäevad (kasulik oleks nendest koostada järjend, abiks võib olla meetod splitlines()) ja
  • väljastab ekraanile sisestatud kuupäevale vastavad nimepäevalised.

Näide 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.

Kontrollülesanne 6.4c Elutee number

Numeroloogias peetakse tähtsaks elutee numbrit, mille arvutamiseks tuleb liita kokku sünnikuupäeva ja -aasta numbrid nii, et jõutakse lõpuks ühe numbrini.

Näiteks, oletame, et sünnikuupäev on 15.05.1975. Teha tuleb niisiis järgnev tehe: 1+5+5+1+9+7+5 = 33, 3+3 = 6, seega on elutee number 6.

Aga kui sünnikuupäevaks on nt. 17.11.1981, siis arvutada tuleb järgmiselt: 1+7+1+1+1+9+8+1 = 29, 2+9 = 11, 1+1=2.

Elutee numbrit arvutab järgmine (rekursiivne) funktsioon, mis võtab argumendiks sünnikuupäeva:

#argument s on sõne, esialgu see on kuupäev, edasi juba arvutatud arv
def elutee(s):
    #abimuutaja numbri arvutamiseks
    n = 0
    # tsükkel, mis vaatab iga sümboli sõnes
    for i in s:
        if i != ".":
            n += int(i) # arvutame summat
    # kui saadud arv on väiksem kui 10, siis ongi elutee number käes
    if n < 10:
        return n
    # kui saadud arv on 10 või suurem, siis on vaja uuesti arvutada, 
    #selleks kasutame jälle sama funktsiooni
    else:
        return elutee(str(n))

Failis sunnikuupaevad.txt on mingi hulk sünnikuupäevi, iga sünnikuupäev eraldi real. Kirjutada programm, mis tekitab selle faili põhjal 9 tekstifaili nimedega eluteenumber1.txt, eluteenumber2.txt, ..., eluteenumber9.txt ning jagab sünnikuupäevad nendesse failidesse vastavalt elutee numbrile (elutee numbri arvutamiseks kasutada funktsiooni elutee). Näiteks sünnikuupäev 15.05.1975 tuleb kirjutada faili eluteenumber6.txt.

Näide programmi tööst:

Kui faili sunnikuupaevad.txt sisu on

 07.02.1969
 17.11.1981
 29.03.1955

siis faili eluteenumber7.txt sisu peab olema

 07.02.1969
 29.03.1955

ja faili eluteenumber2.txt sisu peab olema

 17.11.1981

Kõik ülejäänud 7 faili peavad selle näite korral küll tekkima, aga jääma tühjaks.

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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo it akadeemia logo