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

Programmeerimine 2023/24 sügis

  • Üldinfo
  • 1. Muutuja ja avaldis
  • 2. Tingimuslause
  • 3. Funktsioon
  • 4. Korduslause
4.1 Korduslause
4.2 Kodutöö
4.3 Harjutused
4.4 Silmaring: veebirakendus
  • 5. Lihtsam failitöötlus. Sõned
  • 6. Kontrolltöö 1
  • 7. Järjend
  • 8. Järjend 2
  • 9. Kahekordne tsükkel. Failitöötlus
  • 10. Andmestruktuurid
  • 11. Andmestruktuurid 2
  • 12. Kontrolltöö 2
  • 13. Objektorienteeritud programmeerimine
  • 14. Objektorienteeritud programmeerimine 2
  • 15. Rekursioon
  • 16. Kordamine. Projektide esitlused
  • Viiteid
  • Silmaringimaterjalid
  • Materjalid

4. kodutöö

1. Pooliku püramiidi süsteem (while-tsükliga)

Paljudes treeningkavades kasutatakse n-ö pooliku püramiidi süsteemi, kus iga seeria puhul tehakse üks kordus rohkem kui eelmises kuni kindlaksmääratud lõppseeriani. Tihti tekib aga selliste harjutuste puhul küsimus, kui palju terve harjutuse peale kordusi sooritatakse, sest hea on treeningpäevikusse kirja panna, kui palju mingil päeval mingit harjutust tehtud sai.

Selle väljaselgitamiseks tuleb käsitsi liita seeriad kokku. Näiteks kui treeningkava soovitab teha pooliku püramiidi süsteemis kätekõverdusi kuni 10 korduseni, siis kujuneb seeriate põhjal kogu kätekõverduste arv välja järgmiselt: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 kordust. 10-se pooliku püramiidi puhul on arvutus veel võrdlemisi kiire, kuid suuremate lõppseeriate arvude juurde jõudes oleks mõistlik kirja panna lihtne programm, mis teeb töö kasutaja eest ära.

Koostada programm, mis

  • küsib kasutajalt naturaalarvu (positiivne täisarv);
  • arvutab while-tsükli abil pooliku püramiidi süsteemis harjutuste summa eelnevalt sisestatud naturaalarvuni (kaasa arvatud);
  • väljastab saadud summa.

Harjutuste summa peab arvutama while-tsükli abil.

Näited programmi tööst

>>> %Run lahendus.py
  Sisesta korduste arv: 15
  Harjutuste arv on 120.
>>> %Run lahendus.py
  Sisesta korduste arv: 10
  Harjutuste arv on 55.

Üldisemaks teadmiseks huvilistele: täieliku püramiidi süsteem arvuni 10 tähendab ronimist 1…10…1, ehk tippu jõudes vähenevad arvud tagasi arvuni 1. Summa arvutamisel saaksime siin vastuseks 100 (10 liidetakse vaid ühel korral).

2. Pooliku püramiidi süsteem (for-tsükliga)

Paljudes treeningkavades kasutatakse n-ö pooliku püramiidi süsteemi, kus iga seeria puhul tehakse üks kordus rohkem kui eelmises kuni kindlaksmääratud lõppseeriani. Tihti tekib aga selliste harjutuste puhul küsimus, kui palju terve harjutuse peale kordusi sooritatakse, sest hea on päevikusse kirja panna, kui palju mingil päeval mingit harjutust tehtud sai.

Selle väljaselgitamiseks tuleb liita seeriad kokku. Näiteks kui treeningkava soovitab teha pooliku püramiidi süsteemis kätekõverdusi kuni 10 korduseni, siis kujuneb seeriate põhjal kogu kätekõverduste arv välja järgmiselt: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 kordust. 10-se pooliku püramiidi puhul on arvutus veel võrdlemisi kiire, kuid suuremate lõppseeriate arvude juurde jõudes oleks mõistlik kirja panna lihtne programm, mis teeb töö kasutaja eest ära.

Koostada programm, mis

  • küsib kasutajalt naturaalarvu (positiivne täisarv);
  • arvutab for-tsükli ja funktsiooni range abil pooliku püramiidi süsteemis harjutuste summa eelnevalt sisestatud naturaalarvuni (kaasa arvatud);
  • väljastab saadud summa.

Tegemist on ülesande 3.2 variandiga for-tsükli jaoks.

Näited programmi tööst

>>> %Run yl5.2.py
  Sisesta naturaalarv: 15
  Harjutuste arv: 120
>>> %Run yl5.2.py
  Sisesta naturaalarv: 10
  Harjutuste arv: 55

3. Päevade arv

Kirjuta funktsioon päevade_arv, millel on üks täisarvuline parameeter, kuu järjekorranumber. Funktsioon tagastab päevade arvu selles kuus. Kuude järjekorranumbrid on 1, 2, . . . , 12. Kui parameetri väärtuseks on midagi muud, siis tagastab funktsioon -1. Eeldame, et tegemist on lihtaastaga.

>>> päevade_arv(9)
30
>>> päevade_arv(2)
28
>>> päevade_arv(100)
-1

Testi funktsiooni erinevate argumentidega.

Seejärel kirjuta programm, mis küsib kasutajalt korduvalt kuu järjekorranumbrit ja prindib selle kuu päevade arvu, kasutades funktsiooni päevade_arv. Kui kasutaja sisestab sõna "lõpp", siis programm lõpetab töö. Programm peaks tegema kõik vajalikud sisendikontrollid ja kutsuma funktsiooni päevade_arv välja ainult siis, kui kuu number on täisarv 1-st 12-ni (vihje: try-except).

 Sisesta kuu number: 3
 Selles kuus on 31 päeva
 Sisesta kuu number: 4
 Selles kuus on 30 päeva
 Sisesta kuu number: viis
 Ebakorrektne number
 Sisesta kuu number: -1
 Kuu number peab jääma lõiku 1–12
 Sisesta kuu number: 100
 Kuu number peab jääma lõiku 1–12
 Sisesta kuu number: 10
 Selles kuus on 31 päeva
 Sisesta kuu number: lõpp
 Programm lõpetas töö

Kui automaatkontroll ei lõpeta tööd, siis tõenäoliselt läheb mõni su programm lõpmatusse tsüklisse. Testi oma programme erinevate sisendandmetega ja uuri, milline tsükkel võib mingitel juhtudel jääda lõpmatuseni tööle.

3. Korrutis

Kirjuta programm, mis küsib kasutajalt positiivset täisarvu n ja prindib välja avaldise

{$$2\cdot\frac21\cdot\frac23\cdot\frac43\cdot\frac45\cdot\ldots\cdot\frac{2n}{2n-1}\cdot\frac{2n}{2n+1}$$}

väärtuse.

Vihje. Alusta arvust 2 ja korruta sellele igal sammul juurde järgmised tegurid kahekaupa. Avaldises olevate tegurite koguarv on teada.

Näide

 Sisesta n: 1
 Korrutis on 2.6666666666666665

Teine näide

 Sisesta n: 2
 Korrutis on 2.844444444444444

Testi oma programmi järjest suurenevate sisenditega. Millisele väärtusele see korrutis läheneb, kui n kasvab?

1. 3n+1

Antud naturaalarvuga tehakse järgmisi operatsioone.

  • Kui arv jagub 2-ga, siis jagatakse ta 2-ga.
  • Kui arv ei jagu 2-ga, siis korrutatakse ta 3-ga ja liidetakse 1.

Kuigi keegi pole seda suutnud tõestada, valitseb arvamus, et ükskõik millisest arvust lähtudes jõuame neid operatsioone korduvalt rakendades lõpuks arvuni 1.

Koosta programm, mille sisendiks on naturaalarv n ning väljundiks sammude arv, mis kulub jõudmiseks arvuni 1.

Näide 1

 Sisesta arv: 4
 Sammude arv on 2.

Näide 2

 Sisesta arv: 6
 Sammude arv on 8.

Juhis. Tasub jälgida, et igal sammul oleks vahetulemus täisarvutüüpi.

  • 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