Arvutiteaduse instituut
  1. Kursused
  2. 2022/23 sügis
  3. Programmeerimine (LTAT.03.001)
EN
Logi sisse

Programmeerimine 2022/23 sügis

  • Üldinfo
  • 1. Muutuja ja avaldis
  • 2. Tingimuslause
  • 3. Funktsioon
  • 4. Korduslause
  • 5. Lihtsam failitöötlus. Sõned
  • 6. Kontrolltöö 1
  • 7. Järjend
  • 8. Järjend 2
  • 9. Kahekordne tsükkel. Failitöötlus
9.1 Kahekordne tsükkel. Failitöötlus
9.2 Kodutöö
9.3 Harjutused
9.4 Silmaring: NumPy
  • 10. Andmestruktuurid
  • 11. Andmestruktuurid 2
  • 12. Kontrolltöö 2
  • 13. Rekursioon
  • 14. Objektorienteeritud programmeerimine
  • 15. Objektorienteeritud programmeerimine 2
  • Viiteid
  • 15. Objektorienteeritud programmeerimine 2

https://www.uttv.ee/naita?id=33896

  • 16. Kordamine. Projektide esitlused
  • Silmaringimaterjalid
  • Materjalid

9. praktikumi harjutused

1. Järjekord

Järjekorras seisab üksteise taga teatud arv inimesi. Kõik nad vaatavad vasakule. Iga inimene, kes on oma eelseisjast pikem, näeb üle tema veel inimesi järjekorra alguse poole kuni inimeseni, kes on veelgi pikem.

Kirjuta programm, mis loeb sisse järjekorras seisvate inimeste pikkused ja leiab inimese, kes näeb järjekorras kõige kaugemale.

Sisesta pikkused: 195 167 165 190 172 182 187 189 168 174
Inimene nr 8 pikkusega 189 näeb kõige kaugemale.

2. Loomulik iive

Failis sünnid.txt on kirjas Eesti teatava ajavahemiku sündide arvud, failis surmad.txt aga surmajuhtumite arvud kuude kaupa (andmed pärinevad Statistikaameti andmebaasist). Kummaski failis on iga kuu kohta kaks rida: kuu nimi ja sündide või surmade arv. Kuude täpne arv pole teada.

sünnid.txtsurmad.txt
jaanuarjaanuar
10481575
veebruarveebruar
9891167
märtsmärts
11081249
aprillaprill
12071281
maimai
11861303
juunijuuni
11551115
juulijuuli
13911327
augustaugust
13051202
septemberseptember
12261177
oktooberoktoober
11551265
novembernovember
10171218
detsemberdetsember
11111359

Kuu loomulik iive on kuu sündide arvu ja surmade arvu vahe. Kirjuta programm, mis leiab ja väljastab nende kuude nimed, mil loomulik iive oli positiivne, ning iibe suuruse.

Positiivse iibega kuud olid:
juuni 40
juuli 64
august 103
september 49

Täienda oma programmi nii, et ta leiaks ja väljastaks ka kogu vaadeldava ajavahemiku loomuliku iibe.

Näiteks eelnevate failide põhjal peaks programm väljastama

Kogu ajavahemiku loomulik iive oli -1340.

3. Parim töötaja

Raamatute müümisega tegelev firma soovib oma aastast kokkuvõtteid teha. Failis müügid.txt on igal real kirjas töötaja nimi ning semikoolonitega eraldatult igal kuul müüdud raamatute arv. Andmed on aasta kõigi 12 kuu kohta.

Näide tekstifaili müügid.txt võimalikust sisust:

Mihkel;34;23;16;35;24;37;38;34;29;34;41;42
Katrin;100;40;39;48;34;41;40;41;42;46;47;40
Martin;23;25;34;34;36;34;31;31;30;31;37;38

Kirjuta funktsioon loe_andmed, mille argumendiks on failinimi; funktsioon loeb faili sisu kahemõõtmelisse järjendisse, kus sisemised järjendid sisaldavad ühe töötaja andmeid (arvud esitada täisarvude, mitte sõnedena).

Eelnevast failist loetud ridade põhjal moodustuks näiteks kahemõõtmeline järjend järgneval kujul (siin näidises paremaks illustreerimiseks mitmele reale paigutatud):

[['Mihkel', 34, 23, 16, 35, 24, 37, 38, 34, 29, 34, 41, 42],
 ['Katrin', 100, 40, 39, 48, 34, 41, 40, 41, 42, 46, 47, 40],
 ['Martin', 23, 25, 34, 34, 36, 34, 31, 31, 30, 31, 37, 38]]

Kirjuta teine funktsioon parim_töötaja, mis võtab argumentideks kahemõõtmelise järjendi ning kuu numbri ja tagastab sel kuul enim raamatuid müünud töötaja nime. Kui selliseid töötajaid on mitu, siis tagastatakse ükskõik milline neist.

Funktsiooni kasutamise näide eelnevast failist loetud näitejärjendiga:

>>> parim_töötaja(järjend, 1)
'Katrin'
>>> parim_töötaja(järjend, 5)
'Martin'

4. Eurovisioon

Eurovisiooni lauluvõistlusel osalevate riikide nimed ja riikidele antud punktid on kirjutatud tekstifaili. Igas reas on kõigepealt riigi nimi ja seejärel sellele riigile antud punktid. Rea elemendid on eraldatud komadega, mida võivad ümbritseda tühikud. Kui mõnele riigile punkte ei antud, siis sellel kohal arv puudub.

Näiteks võib faili punktid.txt sisu olla järgmine:

Austria,    12,  6,  3,  3,  4,  7,  5,  3, 12,  8,  4,  3
Bulgaaria,   8,  3,  6, 10,  7,  3,  6,  2,  7,  6,  8,  5
Eesti,      10,  7,   ,  8, 12,  6, 10,  6,  3,  2,  2,  1
Horvaatia,   5,  2,  8,  2,  5,  8,   ,  8, 10,  7,  1,  7
Itaalia,     2, 12,  4,  6,  3,  5,   ,  5,  8,   ,  5,
Kreeka,      3,   ,  5,   ,   , 12,  2, 12,   ,  3,  7,  2
Malta,       7,   ,   ,  7,  6,  2, 12,   ,  6,   ,   , 12
Norra,       6,  8, 12,   , 10, 10,  8,   ,  1, 10,  3,  8
Prantsusmaa, 1,  5,  2, 12,  2,   ,  4,  7,   , 12, 12,  6
Rootsi,       , 10,  1,  1,  8,  1,  3,  4,  5,  1,   ,  4
Saksamaa,     ,  1, 10,  5,  1,  4,  7, 10,  2,  4,  6,
Taani,       4,  4,  7,  4,   ,   ,  1,  1,  4,  5, 10, 10

Kirjuta funktsioon riik, mille argumendiks on üks faili rida ülalkirjeldatud kujul ning mis tagastab sellele reale vastava riigi nime.

>>> riik("Austria,    12,  6,  3,  3,  4,  7,  5,  3, 12,  8,  4,  3")
'Austria'

Kirjuta funktsioon summa, mille argumendiks on samuti rida ning mis tagastab selles reas olevate punktide summa.

>>> summa("Prantsusmaa, 1,  5,  2, 12,  2,   ,  4,  7,   , 12, 12,  6")
63

Kirjuta programm, mis küsib kasutajalt failinime, loeb failis olevad andmed sisse ning väljastab, mis riik võitis lauluvõistluse ja milline oli tema punktide kogusumma.

Sisesta failinimi: punktid.txt
Võitja on Norra kogusummaga 76 punkti

1. Sõnapikkuste analüüs

Kirjuta programm, mis küsib kasutajalt tekstifaili nime ja väljastab selles failis leiduvate eri pikkusega sõnade esinemissagedused. Näiteks:

 1-tähelisi sõnu esines 78 korral
 2-tähelisi sõnu esines 123 korral
 . . .
 15-tähelisi või pikemaid sõnu esines 6 korral

Vihje. Uuri õpiku 9. peatükist harjutust „Täringuvisete statistika”.

Lisa 1. Kõige lõpuks väljasta kõik erinevad 15-tähelised või pikemad sõnad.

Lisa 2. Lase programmil joonistada tulemuste tulpdiagramm.

2. Listi elementide järjestamine

Koduülesandes tuli kirjutada funktsioon, mille argumendiks on list ja mis ajab seal elemendid juhuslikult segamini.

Nüüd on ülesandeks kirjutada funktsioon minu_sort, mille argumendiks on suvalise pikkusega arvulist ning mis järjestab selle listi elemendid mittekahanevalt. Midagi tagastada ei ole vaja.

Vihje. Kõige lihtsam on kasutada jällegi elementide paarikaupa äravahetamist. Tõenäoliselt on vaja list mitu korda „läbi käia”.

Lisa 1. Muuda lahendust nii, et argumendiks antud list jääb muutmata ja funktsioon tagastab uue, järjestatud listi.

3. Oma split

Kirjuta funktsioon minu_split, mis toimib analoogselt Pythoni sõnemeetodiga split. Loodav funktsioon peaks võtma argumendiks kaks sõne (tekst ja eraldaja) ning tagastama sõnede järjendi. Näiteks

>>> minu_split('tere vana kere', ' ')
['tere', 'vana', 'kere']

Lisa. Proovi teha oma funktsiooni Pythoni split-iga veel sarnasemaks – korralda nii, et kui eraldajat pole antud, siis toimub jupitamine nende kohtade pealt, kus on koos 1 või rohkem tühisümbolit (tühik, tabulaator või reavahetus).

4. Kauplusejärjekord

Järjendisse on salvestatud kaupluse kassajärjekorras seisvate inimeste korvis olevate esemete arvud (küsida kasutajalt). Koosta programm, mis iga järjekorras oleva inimese puhul leiab, mitmel inimesel tema ees on korvis rohkem kui kolm eset.

5. Järjestikused naturaalarvud

Kirjuta funktsioon, mille argumendiks on naturaalarvude list ning mis tagastab True või False vastavalt sellele, kas etteantud list sisaldab n esimest naturaalarvu, kus n on listi pikkus. Näiteks

>>> on_järjestikused([2,4,1,3,0]) 

peaks tagastama True, aga

>>> on_järjestikused([2,4,1,3]) 

peaks tagastama False (sest 0 on puudu).

NB! Funktsioon peab töötama ka tühja listi puhul!

Jah, arvutiteaduses loetakse ka 0 naturaalarvuks.

  • 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