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

Programmeerimine keeles C++ 2022/23 kevad

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Funktsioonimallid, failitöötlus
  • 5. OOP I Klassid
5 OOP I Klassid
5.1 Kodutöö
5.2 Harjutused
5.3 Videolingid
  • 6. OOP II Pärilus ja polümorfism
  • 7. Kontrolltöö 1?

Seitsmendal nädalal toimub 1. kontrolltöö

7.1 1. kontrolltöö näide?
  • 9. Dünaamiline mäluhaldus II
  • 10. Klassimallid
  • 11. STL andmestruktuurid I
  • 12. STL andmestruktuurid II
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2?

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

15.1 2. kontrolltöö näide?
  • 16. Projekti esitlus?
  • Viiteid
  • Vanad materjalid
  • Praktikumid
  • Juhendid
  • Viited

Kodused ülesanded

Sellel kodutööl on ette antud mall. Laadi alla kokkupakitud fail, kust leiad lähtefailid. Ülesandeks on faile täiendada ja neid ka juurde programmeerida.

  • Alusprogramm: (zip)

Kodutöö eesmärk on luua lihtne geomeetriateek. Lahendusena peab kompileerimisel tekkima teek nimega libgeometry.a. Teegi päised peavad olema tehtud nii, et alusfailidega kaasasolev testprogramm geometrytest kompileerub. Testprogrammi kompileerib terminaliaknas make test.

Selles ülesandes struktureerime koodi kaustadesse. Päisefailid paiguta kausta include, lähtekoodifailid kausta src, valmisteek kausta lib, testrakendus kausta tests. Fail Makefile jääb juurkataloogi. Juhinduda tuleb alusfailides ette tehtud struktuurist. Palun ärge muutke klassi liikmete nimesid ja hoidke nad avalikud.

1. Punkt tasandil

Failides point2.h ja point2.cpp on klassi Point2 definitsioon. Point2 määrab kahemõõtmelises ruumis punkti, millel on kaks float tüüpi koordinaati x ja y.

MeetodEesmärk
Point2 ()algväärtustab koordinaadid nullidega
Point2 (float nx, float ny)parameetritega konstruktor – väärtustab koordinaadid

Realiseerida funktsioon distanceFrom ja operaator operator<<. Kahe punkti vahelise kauguse valemit vt
https://opiobjektid.tptlive.ee/joonevorrandid/kahe_punkti_vaheline_kaugus.html

MeetodEesmärk
float distanceFrom (Point2 p)tagastab punkti kauguse mingist teisest punktist tasandil
operator <<väljastab punkti koordinaadid kujul (x, y)

Failis geometrytest.cpp on programmi testimiseks loodud kaks testi, proovi neid juurde luua.

2. Sirglõik

Loo klass Line2 (päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti p1 ja p2 abil.

MeetodEesmärk
Line2 ()vaikekonstruktor – loob tipud (Point2 vaikekonstruktoriga)
Line2 (Point2 np1, Point2 np2)parameetritega konstruktor – väärtustab klassi elemendid
float length ()tagastab sirglõigu pikkuse (kasuta punkti distanceFrom meetodit)
operator <<väljastab sirglõigu andmed kujul (p1 - p2)

3. Ring

Loo klass Circle2 (päisefail koos lähtekoodifailiga), mis esitab tasandil asuvat ringi keskpunktiga p1 ja mittenegatiivse raadiusega r. Raadiuse mittenegatiivsust tuleb jälgida kõikides funktsioonides (konstruktor, skaleerimine). Kui kasutaja annab ette negatiivse raadiuse konstruktoris, siis asenda see nulliga. Kui kasutaja soovib skaleerida negatiivse väärtusega, siis ei tee midagi.

MeetodEesmärk
Circle2 ()vaikekonstruktor – loob punkti (0, 0) ja paneb raadiuseks nulli
Circle2 (Point2 np1, float nr)parameetritega konstruktor – väärtustab klassi elemendid
float circumference ()tagastab ringi ümbermõõdu
float area ()tagastab ringi pindala
bool contains (Point2 p)tagastab true, kui antud punkt on ringjoone peal või sees, vastasel juhul false (kasuta punkti distanceFrom meetodit)
bool contains (Line2 l)tagastab true, kui antud lõik on ringjoone sees (sh tipud joone peal), vastasel juhul false (kasuta distanceFrom meetodit)
void scale (float factor)korrutab ringi raadiuse antud väärtusega
operator <<väljastab ringi andmed kujul (p1, r)

4. Kataloogistruktuuri järgiv Makefile

Korrigeeri faili Makefile nii, et juurkataloogist käivitatav make test kompileerib programmi. Lahendus peab järgima korrektselt kataloogistruktuuri ning teek ja testrakendus tekivad õigetesse kaustadesse.

  • 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