Labori materjal
- Slaidid: Sissejuhatus
- Slaidid: Tere
- Slaidid: Tingimuslaused
- Eeltesti näidis
Esitamisele kuuluvad ülesanded
Selles laboris kuulub enamik tööd koos läbi tegemisele. Laboris kuulub esitamisele üks baasülesanne ja üks lisaülesanne.
Ülesanne 1: Paarsuse kontroll (baasülesanne)
Nõuded
- Kasutajalt küsitakse ja seejärel loetakse sisse täisarv.
- Programm väljastab kas sisestatud arv oli paaris või paaritu.
Pseudokood
Pseudokood on üks võimalus kirjeldada algoritme. Pseudokood on sarnaselt programmile struktuurne, kuid ei hõlma endas programmeerimiskeeltele omaseid reegleid ning jääb seega inimloetavaks.
1 2 3 4 5 6 |
Kasutaja sisestab täisarvu Kui sisestatud arv on paaris: Trüki: „Sisestatud arv on paaris!“ Muul juhul Trüki: „Sisestatud arv on paaritu!“ Programmi lõpp |
Ülesande taust
Mooduljagamine on laialdaselt kasutusel kõiksugu kontrollkoodide arvutamisel. Näiteks kontrollimaks kas isikukood või pangakaardi number on korrektne.
Meie ülesande jaoks rakendame mooduljagamist kahega ehk teostame paarsuse kontrolli – kas arv on paaris või paaritu. Paarsuse kontroll on üks lihtsamatest veakontrollidest näiteks andmesides – kas väärtusega ‘1’ bittide arv andmepaketis on paaris või paaritu? Sedasi on võimalik näiteks kontrollida kas andmete ülekandmisel ühest arvutist teise tekkis viga (ja nagu öeldud, vaid väga lihtsad juhud).
Testimine
Sellel programmil on 2 võimalikku tulemust – arv on paaris või paaritu. Programmi põhjalikuks testimiseks tuleb testida eraldi mõlemat juhtu.
Test 1: paarisarv
1 2 3 |
Please enter an integer: 2 The number 2 is an even number. |
Test 2: Paaritu arv
1 2 3 |
Please enter an integer: 19 The number 19 is an odd number. |
Ära unusta oma tunnitööd ette näitamast!
Lisaülesanne: Kolme ja viiega jagamine
Enne edasijõudnute ülesande tegemist lahenda ära tavaülesanne!
Loe loogikaavaldiste kasutamise kohta (eng): https://blue.pri.ee/ttu/coding-guides/conditional-statements/#Logical_operators
Nõuded
- Kasutajalt küsitakse ja seejärel loetakse sisse täisarv
- Programm väljastab kas arv jagus kolmega, viiega, mõlemaga neist või mitte kummagagi ning väljastab leitu.
- Programm leiab jagatise täisosad ja jäägid sellest arvust jagades seda nii kolme kui viiega. Kõik neli tulemust väljastatakse olenemata sisendist.
- Arvutustehteid (nt jagamisi) tohid teha vaid ühekordselt. Kui tulemust läheb vaja kasutada mitmes kohas, tuleb need eelnevalt salvestada muutujatesse.
Ülesande taust
Ülesanne põhineb klassikalisel intervjuuküsimusel mida kasutakse tarkvaraarendajate värbamisel. Tegu on nn FizzBuzz ülesande muudetud versiooniga.
Testimine
Lähtuvalt koostatud tingimustest peab ülesandel olema 4 erinevat võimalikku tulemust.
Test 1: Arv, mis jagub nii kolme kui viiega
1 2 3 4 |
Enter a number to check: 15 Divisible by both 3 and 5. By dividing 15 with 3, we get 5 multiples of 3 and a remainder of 0. By dividing 15 with 5, we get 3 multiples of 5 and a remainder of 0. |
Test 2: Arv mis jagub ainult kolmega
1 2 3 4 |
Enter a number to check: 27 Divisible by 3 only. By dividing 27 with 3, we get 9 multiples of 3 and a remainder of 0. By dividing 27 with 5, we get 5 multiples of 5 and a remainder of 2. |
Viimased 2 testi mõtle ise välja. Veendu, et lahendus töötab korrektselt kõigil juhtudel.
Pärast seda tundi peaksid
- Mõistma ainega seotud nõudeid, sh kuidas saada aines hinne.
- Oskama sisse logida Linuxisse ülikooli arvutis
- Teadma mis on peamised rakendused mida kasutame
- Teadma kust vajalikku materjali leiab
- Teadma mis on C keel ja kus seda peamiselt kasutatakse
- Teadma milline on programmi struktuur ning olema võimeline ka selles lihtsa programmi kirjutama ning käivitama. Peaksid mõistma järgmiseid programmeerimisega seotud mõisteid ja kontseptsioone
- #include preprotsessori käsklus
- Mis on main() funktsioon, miks ta eriline on
- Kuidas deklareerida muutujat, mis on andmetüüp
- Kuidas trükkida teksti kasutades printf funktsiooni, vahetada rida, printida välja ühe või mitme muutuja sisu.
- Klaviatuurilt väärtuste lugemine ja salvestamine (printf funktsioon)
- Elementaarsed matemaatika operatsioonid
- Kergemad tingimuslaused (if/else)
- Täisarvu jagatis, moodularvutus
- Mõistma mis asi on algoritm
- Mõistma, mis asi on UML ja miks seda kasutatakse. Saama aru selle algsetest elementidest (algus, lõpp, tegevus, hargnemine, koondumine). Pead olema võimeline lihtsama UML diagrammi kokku panna.
Täiendav materjal
- AI kasutamine ülikooli õppetöös üldistatult (jt õigusaktid)
https://taltech.ee/oppetegevuse-juhendid-ja-oigusaktid - Miks on oluline, et algoritmid on kirjeldatud sedasi, et nad on kõigile üheselt arusaadavad.
Youtube: Exact Instructions Challenge – THIS is why my kids hate me. | Josh Darnit
https://www.youtube.com/watch?v=cDA3_5982h8 - Things I Wish I Knew When I Was Learning to Code
https://www.youtube.com/watch?v=TvDFJpGnQZo - “C” Programming Language: Brian Kernighan – Computerphile
https://www.youtube.com/watch?v=de2Hsvxaf8M - C is the greenest programming language
https://hackaday.com/2021/11/18/c-is-the-greenest-programming-language/ - C vs Python 3 – kumb on kiirem?
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/python3-gcc.html - Programmeerimiskeelte indeks
https://www.tiobe.com/tiobe-index/ - printf käsu selgitused
http://cplusplus.com/reference/cstdio/printf/ - scanf käsu selgitused
http://cplusplus.com/reference/cstdio/scanf/ - UML standardi dokumentatsioon
https://www.omg.org/spec/UML/2.5.1/PDF - Andmetüübid C keeles
https://en.wikipedia.org/wiki/C_data_types