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

Programmeerimise alused 2024/25 kevad

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Silumine
  • Kiireksamist
  • Viited

Kuuenda praktikumi ülesanded

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

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äited programmi tööst:

>>> %Run lahendus.py
Sisesta kuu: veebruar
Sisesta päev: 15
15. veebruar on nimepäev järgmiste nimedega inimestel:
Tiina, Neidi

>>> %Run lahendus.py
Sisesta kuu: mai
Sisesta päev: 31
31. mai on nimepäev järgmiste nimedega inimestel:
Helga, Helge, Helgi, Helja, Helje, Heljo, Helju, Elga, Olga, Olli

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 Vigane pangaautomaat

Pangaautomaat on läinud rikki ja lubab selle kasutajal võtta raha välja ja panna sisse, nii nagu süda lustib. Rikki läinud pangaautomaadil on lisaks säilinud varasemalt tehtud tehingute vaatamise funktsioon.

Koostada programm, mis

  • küsib kasutajalt, kas kasutaja soovib sooritada tehingut, vaadata kontoseisu või lõpetada töö;
  • juhul kui kasutaja vastab "tehing", palub kasutajal täisarvulise summa sisestada. Kui kasutaja on summa sisestanud, kirjutab programm summa ja tehingu kuupäeva ning kellaaja faili pank.txt lõppu ning seejärel küsib programm kasutajalt uuesti tegevust;
  • juhul kui kasutaja vastab "väljavõte", loeb ja väljastab faili pank.txt sisu ekraanile ning seejärel küsib kasutajalt uuesti tegevust;
  • juhul kui kasutaja vastab "lõpp", siis programm lõpetab töö.

Praeguse kuupäeva ja kellaaja saamisel aitab järgmine programmilõik.

from datetime import datetime
kuupäev_kellaeg = datetime.today()
print("Kuupäev ja kellaeg: " + str(kuupäev_kellaeg))

>>> %Run lahendus.py
Tehing, väljavõte või lõpetamine? tehing
Sisesta summa: 500
Tehing, väljavõte või lõpetamine? tehing
Sisesta summa: -300
Tehing, väljavõte või lõpetamine? väljavõte

Tehingu aeg: 2022-02-22 22:07:49.355839, summa: 500
Tehingu aeg: 2022-02-22 22:07:51.788771, summa: -300

Tehing, väljavõte või lõpetamine? lõpp
>>> %Run lahendus.py
Tehing, väljavõte või lõpetamine? tehing
Sisesta summa: 150
Tehing, väljavõte või lõpetamine? väljavõte

Tehingu aeg: 2022-02-22 22:07:49.355839, summa: 500
Tehingu aeg: 2022-02-22 22:07:51.788771, summa: -300
Tehingu aeg: 2022-02-22 22:08:06.920343, summa: 150

Tehing, väljavõte või lõpetamine? lõpp

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.
Courses’i keskkonna kasutustingimused