Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Programmeerimine keeles C++ (LTAT.03.025)
EN
Logi sisse

Programmeerimine keeles C++ 2024/25 kevad

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
  • 6. Dünaamiline mäluhaldus II
  • 7. Kontrolltöö 1

Seitsmendal nädalal toimub 1. kontrolltöö

1. kontrolltöö näidis on Moodles

  • 8. Dünaamiline mäluhaldus III
  • 9. STL andmestruktuurid I
  • 10. STL andmestruktuurid II
  • 11. OOP I Klassid
  • 12. OOP II Pärilus ja polümorfism
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
14 Täiendavad teemad
14.1 Kodutöö
14.2 Harjutused
14.3 Videolingid
  • 15. Kontrolltöö 2

Viieteistkümnendal nädalal toimub 2. kontrolltöö

2. kontrolltöö näidis on Moodles

  • 16. Projekti esitlus
  • Mõned viited - vajalikud kaaslased
  • Vanad materjalid
  • Juhendid
  • Viited

Harjutusülesanded enne kontrolltööd nr. 2

1. Klassimall objektide hoidmiseks

Koosta klassimall, mis hoiab andmestruktuuris (valida ise) mingi teise klassi objekte (parameetriks on klassi nimi). Klassimallis peavad olema järgmised funktsionaalsused:

  • konstruktor, mis loob andmestruktuuri malli tüüpi objektide jaoks
  • destruktor, kus andmestruktuur hävitatakse
  • liikmefunktsioon objekti lisamiseks andmestruktuuri
  • liikmefunktsioon, mis tagastab objekti indeksi järgi
  • liikmefunktsioon, mis tagastab objekti indeksi etteantud objekti järgi
  • liikmefunktsioon objektide kuvamiseks ekraanile

Näidiseks koosta klass Teos, mis hoiab teose pealkirja ja autorit. Lisa vajalikud liikmefunktsioonid. Katseta ka teiste isetehtud klassidega.

2. Raamatukogu

Raamatukogus on vaja raamatuid klassifitseerida sarjade järgi (nt Ajavaim, Aken maailma, Eesti mälu, Väike ajalugu jne).

Koosta klass Raamat, kus on privaatsed isendiväljad pealkirja, autori ja sarja jaoks (kõik string tüüpi). Klassis peavad olema liikmefunktsioonid sarja muutmiseks ja raamatu kuvamiseks ekraanile. Koosta klass Sari, kus on privaatsed isendiväljad sarja nime ja raamatute vektori jaoks. Klassis on liikmefunktsioonid

  • raamatu lisamiseks
  • raamatu kustutamiseks
  • sarja raamatute ekraanile kuvamiseks

Koosta klass Sarjad, kus hoitakse kõikidesse sarjadesse kuuluvate raamatute infot kujul map<sarja_nimi, *viit sarja raamatute vektorile>. Klassis peavad olema järgmised liikmefunktsioonid:

  • raamatu lisamine (kui raamatul puudub sari, siis ei lisata)
  • raamatu sarja muutmine
  • raamatu kustutamine
  • sarja lisamine (ette viit Sari isendile)
  • sarja kustutamine
  • sarja raamatute kuvamine ekraanile

Kasutada võimalusel tarku viitasid (smart pointers). Testi oma klasse.

Raamatute näidiseid (koos ilmumisaastaga) leiad siit:

Roberto Bolano. Metsikud detektiivid, Ajavaim, 2013 
Jaan Kross. Kallid kaasteelised, Eesti mälu, 2003
Steve Parker. Dinosaurused ja nende maailm, Aken maailma, 1998
Julio Cortazar. Salarelvad, Ajavaim, 2011
David Burnie. Linnud ja nende maailm, Aken maailma, 1997
Mari Möldre. Eesriie avaneb, Eesti mälu, 2010

3. Andmete lugemine koos erinditöötlusega

Koosta funktsioon, mis loeb etteantud failist andmeid ja teeb nendega arvutusi. Andmed on failis tühikuga eraldatult, igal real peab olema sama palju arve (tüübiks võib olla float). Funktsioon tagastab viite sõnastikule, kus võtmeks on rea number ja väärtuseks reas olevate arvude aritmeetiline keskmine. Funktsioon peaks hakkama saama järgmiste erinditega:

  • faili ei leitud

Kui sisendfaili ei ole olemas, peaks funktsioon väljastama runtime_error erindi koos sobiva veateatega.

  • kehtetu sisend

Kui failis olevate andmete seas on mittearve (st pole võimalik arvuks teisendada), siis peaks funktsioon viskama erindi 'vigase arvu erind' koos sobiva veateatega.

  • reas on eelnevatest erinev arv arve

Kui reas on eelnevate ridadega võrreldes erinev arv arve, siis visata erind 'vigane rida' koos rea sisuga ja jätta see rida töötlemata.

Funktsioonis main kuva iga rea kohta rea number ja rea keskmine.

  • 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