Labori materjal
- Polsterdamine ja joondamine
- Slaidid: Funktsioonid
- Tunni näidiskoodid: https://blue.pri.ee/ttu/files/iax0583/programmikood/wk4_samples.zip
Esitamisele kuuluvad ülesanded
Selles laboris on kokku kolm ülesannet. Kõigil ülesannetel on antud koodipõhi, mis määrab ära ülesande üldise struktuuri ja annab sulle ettemääratud töövoo. Töövoog on antud samm-sammuliste juhenditena, alguses täpsemalt, lõpupoole üldisemalt.
Ülesandeid 2 ja 3 on võimalik laiendada lisaülesannetega.
Ülesanne 1: Elektri hinna kalkulaator
Antud ülesandes on sinu eest juba kogu programmi loogika valmis tehtud. St kogu main() funktsiooni sisu on juba valmis ja seda muuta ei ole põhjust.
Tegemata on jäetud aga enda loodavate (user-defined) funktsioonide sisud ning need on vastavalt asendatud kõik tagastama 0 väärtust (selleks, et programm kompileeruks). Sinu ülesandeks täita kõigi funktsioonide deklaratiivne osa (keha) vastavalt funktsioonile eelnevale kommentaarile.
Lae alla ülesande aluskood; https://blue.pri.ee/ttu/files/iax0583/aluskoodid/4_1_electricity_template.c
Nõuded
- Ülesande lahendamist alusta baaskoodiga tutvumisest. Sinu lahendus peab olema ehitatud ette antud baaskoodile.
- Sinu ülesandeks on kirjutada funktsioonide kehad seitsmele funktsioonile. Funktsiooni eesmärk on kirjeldatud selle ees kommentaarina.
- main() funktsiooni sisu ja koodi struktuuri muuta ei tohi. Soovitav on vältida ka funktsioonide ja muutujate ümbernimetamist.
Vihjeid ja soovitusi
- Alusta tutvumist koodi ülesehitusest. Vaata kus on makrod, kus prototüübid, kus main() ja kus funktsioonid. Vaata kuidas main() funktsioonist teisi funktsioone välja kutsutakse, mis kaasa antakse jne. Ära muuda midagi alguses!
- Üldine pilt selge, hakka järjest funktsioonide sisusid täitma. Lahenda 1 funktsioon korraga, kompileeri ja testi enne kui järgmise juurde lähed!
- Sisestuse funktsioonides on soovitatav struktuur do while tsükkel, mille sees on if lause veateate väljastamiseks.
- Kõik ülejäänud funktsioonid on lahendatavad ühe reaga, asendades olemasoleva return 0 asemel õige valemi
- Ettevaatust ühikutega. Erinevates kohtades on kord kasutusel vatt-tunnid, kord kilovatt-tunnid, kord megavatt-tunnid! Juhindu funktsiooni kommentaaridest.
- VAT – value added tax tähendab käibemaksu (Eestis 20%)
- Jooksev börsihind MWh kohta (enne makse) on leitav https://dashboard.elering.ee/et
- Jooksvat börsihinda kWh kohta sentides koos maksudega näitab https://www.elektrikell.ee
Testimine
Test 1: veavaba sisend
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Enter the market price for electricity in MWh: 412.65 Market cost of electricity is 412.65 EUR / MWh. This is 0.4126 EUR per kWh before taxes. The government takes 0.0825 EUR in taxes. With taxes, the cost for you is 0.4952 EUR / kWh Lets do a rough savings estimate when switching from incandescent bulbs to LEDs Number of E27 lightbulbs in use: 9 Average hours per day the bulbs are turned on for: 6 Results are calculated for a 30-day month. Using 60 W incandescent bulbs consumes 97200 W, costing 48.13 EUR Using 9 W LED bulbs consumes 14580 W, costing 7.22 EUR That's a saving of 40.91 EUR. At the price of 0.69, you could buy 59 packs of instant noodles with that money! |
Test 2: vigadega sisend
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Enter the market price for electricity in MWh: -5 Retry! Must be > 0 > 125 Market cost of electricity is 125.00 EUR / MWh. This is 0.1250 EUR per kWh before taxes. The government takes 0.0250 EUR in taxes. With taxes, the cost for you is 0.1500 EUR / kWh Lets do a rough savings estimate when switching from incandescent bulbs to LEDs Number of E27 lightbulbs in use: -1 Retry! Must be > 0 > -3 Retry! Must be > 0 > -5 Retry! Must be > 0 > 8 Average hours per day the bulbs are turned on for: 7 Results are calculated for a 30-day month. Using 60 W incandescent bulbs consumes 100800 W, costing 15.12 EUR Using 9 W LED bulbs consumes 15120 W, costing 2.27 EUR That's a saving of 12.85 EUR. At the price of 0.69, you could buy 18 packs of instant noodles with that money! |
Ülesanne 2: Arvujadade generaator
Selle ülesande raames tuleb koostada programm, mis sisaldab endas kahte arvujada generaatorit, aritmeetilise ja geomeetrilise jada genereerimiseks. Ülesannet laiendab lisaülesanne, mille raames lisatakse algarvude generaator ja muudetakse programmi väljundit kenamaks.
Jälgi ülesande lahendamisel samm-sammulist juhendit.
Lae alla ülesande aluskood: https://blue.pri.ee/ttu/files/iax0583/aluskoodid/4_2_sequence_gen_template.c
Nõuded
- Funktsioonide lahendamisel juhindu funktsiooni kommentaarist ja siin lehel olevast samm-sammulisest juhendist.
- Programm peab suutma genereerida aritmeetilist ja geomeetrilist jada vastavalt etteantud sisenditele.
- Kasutaja peab saama valida kumba generaatorit kasutada ning sisestada sellele parameetrid (algväärtus, vahe või tegur ja sammude arv).
- Jada algväärtus, geomeetrilise jada tegur ja aritmeetilise jada tegur sisestatakse kümnendmurruna.
- Jada liikmed kuva kahe komakohaga.
Samm-sammuline juhend
- Kompileeri aluskood. Proovi seda, vaata mis ta teeb. Loe kood läbi.
- Lisa
main() funktsiooni väljakutse funktsioonile
PrintMenu() . Väljakutse asukoht on märgistatud TODO kommentaarina. Kirjuta väljakutse kommentaarist järgmisele reale. Proovi – kui töötab, kustuta TODO kommentaar ära.
KOMPILEERI JA TESTI, ET TEHTU TÖÖTAB ENNE EDASI LIIKUMIST! - Kirjuta funktsiooni
PrintSeparator() sisu. Selleks pead kirjutama tsükli, mis trükib
# sümbolit täpselt nii mitu korda kui oli ette antud funktsiooni parameetriga.
KOMPILEERI JA TESTI, ET TEHTU TÖÖTAB ENNE EDASI LIIKUMIST! - Lõpeta funktsioon
PrintAsciiWelcomeMsg() , pannes see väljastama endale meelpärast ASCII kunsti (pilt, tekst, …). Võid näiteks kasutada ka pildi teisendajaid ASCII kunstiks või kasutada mõnda teost internetis olevatest galeriidest.
KOMPILEERI JA TESTI, ET TEHTU TÖÖTAB ENNE EDASI LIIKUMIST!
Vihje: Internetis on mitmeid ASCII galeriisid ja teisendajaid. Üks nest on kättesaadav siit: https://www.asciiart.eu
NB! Osad tähemärgid omavad erilist tähendust ja neid ei saa niisama lihtsalt ekraanile manada. Sellisteks on näiteks \ (escape sequence) ja % (formaat ehk format specifiers). Nende väljastamiseks peame \ asemel kirjutama \\ ja % asemel %%. Kõige lihtsam viis (kui selliseid sümboleid on palju) on teha Geanys uus fail, panna oma kunstiteos sinna ja kasutada kogu dokumendi ulatuses asendust (kiirklahv ctrl+h avab menüü, valik replace all in document). - Nüüd mine
ArithmeticSequence() funktsiooni juurde.
- Deklareeri puuduvad muutujad (3 tk kokku, ettevaatust andmetüüpidega!)
- Lisa kasutajale päringud ja loe väärtused loodud muutujatesse.
- Lisa funktsiooni
ArithmeticSequenceGenerator() väljakutse koos vajaminevate parameetritega.
NB! Märka, et funktsioon ArithmeticSequenceGenerator() on koodist välja kommenteeritud! Seda tegime selleks, et vähendada liigseid kompilaatori hoiatusi mis võivad summutada muud olulised hoiatused ja veateated sinu jaoks. Kuniks sa seda funktsiooni sisse ei kommenteeri, annab kompilaator sulle “undefined reference” veateate ja programm ei kompileeru. Kommenteeri see funktsioon sisse, et saaksid testimise läbi viia (hetkel veel tulemusteta)!
KOMPILEERI JA TESTI, ET TEHTU TÖÖTAB ENNE EDASI LIIKUMIST!
- Liigu edasi funktsiooni
ArithmeticSequenceGenerator() juurde ja lõpeta see. Sul on vaja kirjutada üks tsükkel, mille sisse tuleb paigutada 2 lauset
- Väljasta praeguse jada liikme väärtus.
- Arvuta järgmise jada liikme väärtus.
NB! Järjekord on oluline!
Vihje 1: järgmine_väärtus = praegune_väärtus + vahe Vihje 2: Sul ei ole tegelikult vaja siin funktsioonis ühtegi uut muutujat deklareerida peale tsükliloenduri. . Kindlast väldi massiivide kasutamist (teema järgnevateks nädalateks).
KOMPILEERI JA TESTI, ET TEHTU TÖÖTAB ENNE EDASI LIIKUMIST!
- Menüüs, mis on realiseeritud switch () lausena, on valmis kirjutatud vaid üks case . Lisa veel 2 puuduolevat menüü valikut ja nendele vajaminevad laused. Vajaminevad käsud on kirjeldatud menüüs ( PrintMenu() funktsioonis)
- Samal viisil nagu lahendasid aritmeetilise jada genereerimise funktsioonid tuleb nüüd lahendada ka geomeetrilise jada genereerimiseks vajaminevad funktsioonid.
Nüüd peaks ülesanne lahendatud olema. võrdle oma väljundit etteantud testjuhtudega!
Testimine
Testi kindlasti kõiki kolme menüü valikut ning ka tundmatut sisendit!
Testime aritmeetilist jada
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
________ __ / _____/ ____ ____ ________________ _/ |_ ___________ / \ ____/ __ \ / \_/ __ \_ __ \__ \\ __\/ _ \_ __ \ \ \_\ \ ___/| | \ ___/| | \// __ \| | ( <_> ) | \/ \______ /\___ >___| /\___ >__| (____ /__| \____/|__| \/ \/ \/ \/ \/ ################################################################# # 1 - Arithmetic sequence generator # # 2 - Geometric sequence generator # # 0 - exit # ################################################################# Enter selection > 1 ################################################################# Arithmetic sequence generator ################################################################# Enter number of result: 8 Enter starting value: 1.5 Enter common difference: 2.25 ################################################################# Results 1.50 3.75 6.00 8.25 10.50 12.75 15.00 17.25 ################################################################# |
Testime geomeetrilist jada
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
________ __ / _____/ ____ ____ ________________ _/ |_ ___________ / \ ____/ __ \ / \_/ __ \_ __ \__ \\ __\/ _ \_ __ \ \ \_\ \ ___/| | \ ___/| | \// __ \| | ( <_> ) | \/ \______ /\___ >___| /\___ >__| (____ /__| \____/|__| \/ \/ \/ \/ \/ ################################################################# # 1 - Arithmetic sequence generator # # 2 - Geometric sequence generator # # 0 - exit # ################################################################# Enter selection > 2 ################################################################# Geometric sequence generator ################################################################# Enter number of result: 10 Enter starting value: 1 Enter common ratio: 1.5 ################################################################# Results 1.00 1.50 2.25 3.38 5.06 7.59 11.39 17.09 25.63 38.44 ################################################################# |
Lahkume ilma jada genereerimata
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
________ __ / _____/ ____ ____ ________________ _/ |_ ___________ / \ ____/ __ \ / \_/ __ \_ __ \__ \\ __\/ _ \_ __ \ \ \_\ \ ___/| | \ ___/| | \// __ \| | ( <_> ) | \/ \______ /\___ >___| /\___ >__| (____ /__| \____/|__| \/ \/ \/ \/ \/ ################################################################# # 1 - Arithmetic sequence generator # # 2 - Geometric sequence generator # # 0 - exit # ################################################################# Enter selection > 0 ################################################################# Exiting ... ################################################################# |
Ülesanne 3: Vastuvõtuaegade planeerimine
Selles üleandes lood lihtsa generaatori millega saab luua ajavahemike vastuvõtuaegade planeerimiseks
Lae alla aluskood: https://blue.pri.ee/ttu/files/iax0583/aluskoodid/4_3_timetable_template.c
Soovitus: Enne ülesande lahendamist loe läbi ja mõtesta enda jaoks lahti etteantud algoritm (pärast nõudeid)! Kui tekib segadus, soovitan piiluda sisse lähenemise peatükki.
Nõuded
- Tööpäeva algus on määratud makrona
- Kasutaja sisestab klientide arvu ning ühe kliendikohtumise kestvuse
- Programm genereerib kliendikohtumiste kellaajad. Ajad on järjestikused.
- Minimaalselt peavad olema realiseeritud ja kasutatud aluskoodis antud funktsioonid. Funktsioone võid juurde luua.
- Genereeritud ajad peavad olema reaalsed
- Väljund peab olema visuaalselt joondus
- Aluskoodis on kõigi funktsioonide kohta on antud vaid nende nimed. Sa pead määrama nende tagastatava andmetüübi ja parameetrid. Kui parameetrid puuduvad, siis tuleb sulgudesse kirjutada void .
Algoritm
Lähenemine
Sel korral on lähtekood juba üsna õhuke, kuid sisaldab siiski struktuuri kuidas oleks mõistlik see programm funktsioonideks tükeldada.
Iga funktsiooni puhul mida lahendad, alusta selle tagastuse andmetüübi ja parameetrite loetelu määramisest. Need on sulle ette antud funktsiooni kommentaarina. Kui see on tehtud, lisa funktsiooni prototüüp enne main() funktsiooni. Seejärel kirjuta funktsiooni kena ning lisa funktsiooni väljakutse sobilikku kohta.
Testimine
Testime vaid minuti ületäitumisega
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
>Workday starts at 8:00 Enter num of clients 10 Enter client session length 45 Client 1: 8:00 - 8:45 Client 2: 8:45 - 9:30 Client 3: 9:30 - 10:15 Client 4: 10:15 - 11:00 Client 5: 11:00 - 11:45 Client 6: 11:45 - 12:30 Client 7: 12:30 - 13:15 Client 8: 13:15 - 14:00 Client 9: 14:00 - 14:45 Client 10: 14:45 - 15:30 |
Testime tundide ületäitumist
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Workday starts at 8:00 Enter num of clients 25 Enter client session length 45 Client 1: 8:00 - 8:45 Client 2: 8:45 - 9:30 Client 3: 9:30 - 10:15 Client 4: 10:15 - 11:00 Client 5: 11:00 - 11:45 Client 6: 11:45 - 12:30 Client 7: 12:30 - 13:15 Client 8: 13:15 - 14:00 Client 9: 14:00 - 14:45 Client 10: 14:45 - 15:30 Client 11: 15:30 - 16:15 Client 12: 16:15 - 17:00 Client 13: 17:00 - 17:45 Client 14: 17:45 - 18:30 Client 15: 18:30 - 19:15 Client 16: 19:15 - 20:00 Client 17: 20:00 - 20:45 Client 18: 20:45 - 21:30 Client 19: 21:30 - 22:15 Client 20: 22:15 - 23:00 Client 21: 23:00 - 23:45 Client 22: 23:45 - 0:30 Client 23: 0:30 - 1:15 Client 24: 1:15 - 2:00 Client 25: 2:00 - 2:45 |
Testime kõiki ületäitumisi korraga ja mitmekordselt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Using basic version of the task Workday starts at 8:00 Enter num of clients 8 Enter client session length 145 Client 1: 8:00 - 10:25 Client 2: 10:25 - 12:50 Client 3: 12:50 - 15:15 Client 4: 15:15 - 17:40 Client 5: 17:40 - 20:05 Client 6: 20:05 - 22:30 Client 7: 22:30 - 0:55 Client 8: 0:55 - 3:20 |
Lisaülesanded
Selles laboris on kaks lisaülesannet, vastavalt teisele ja kolmandale baasülesandele.
Lisaülesanne 1: Algarvude generaator ja rea pikkuse piiramine
Tegu on laiendusega baasülesandele.
Nõuded
- Kasuta lahendatud laboriülesannet selle töö põhjaks
- Lisa algarvude generaator. Kasuta järgmises punktis etteantud funktsiooni enda lahenduse koostamisel.
- Lisa limiit mitu tulemust ühe rea kohta generaatorid kuvavad. Leia enda programmile sobilik limiit.
Alternatiivina võid teha programmi kenamaks, piirates hoopiski väljastatavat tähemärkide arvu. Selleks tuleb loendada väljastatavaid tähemärke. Üks võimalikest abistatavatest funktsioonidest võiks olla snprintf() .
Funktsioon algarvude tuvastamiseks
Kasuta järgnevat funktsiooni testimaks kas tegu on algarvuga või mitte. NB! Märka, et pead lisama enda koodi ka IS_PRIME makro!
Vihje: Funktsiooni tagastust saad kontrollida otse if lause tingimuses. https://blue.pri.ee/ttu/coding-guides/conditional-statements/#Function_calls_in_conditionals
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/** * Description: Checks if a number is a prime or not. * * Parameters: num - number to test for * * Return: IS_PRIME (defined 1) when num is a prime, !IS_PRIME (0) * if it was not. */ int IsPrime(int num) { /* Sanity check to avoid misuse of this function */ if (num <= 0) { return !IS_PRIME; } /* Check divisibility from 2 until 1 below the test value itself */ for (int i = 2; i < num; i++) { /* If it's divisible, it's not a prime */ if (num % i == 0) { return !IS_PRIME; } } /* Number is only divisible by itself and 1, so it's a prime */ return IS_PRIME; } |
Testimine
NB! Märka, et sel korral on näidatud kahte erinevat lahendust. Mõlemad on korrektsed ja aktsepteeritavad lahendused sellele ülesandele. Sa pead näitama neist vaid ühe.
Teine ülesanne on antud inspiratsiooniks kui soovid väheke rohkem pead murda ja teha väljund veelgi kenamaks.
Test: Väljundis piiratud tulemuste arv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
________ __ / _____/ ____ ____ ________________ _/ |_ ___________ / \ ____/ __ \ / \_/ __ \_ __ \__ \\ __\/ _ \_ __ \ \ \_\ \ ___/| | \ ___/| | \// __ \| | ( <_> ) | \/ \______ /\___ >___| /\___ >__| (____ /__| \____/|__| \/ \/ \/ \/ \/ ################################################################# # 1 - Arithmetic sequence generator # # 2 - Geometric sequence generator # # 3 - Prime number generator (result count) # # 4 - Prime number generator (line length) # # 0 - exit # ################################################################# Enter selection > 3 ################################################################# Prime numbers generator ################################################################# Insert upper bound: 550 ################################################################# Results 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 ################################################################# |
Test: väljundis piiratud tähemärkide arv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
________ __ / _____/ ____ ____ ________________ _/ |_ ___________ / \ ____/ __ \ / \_/ __ \_ __ \__ \\ __\/ _ \_ __ \ \ \_\ \ ___/| | \ ___/| | \// __ \| | ( <_> ) | \/ \______ /\___ >___| /\___ >__| (____ /__| \____/|__| \/ \/ \/ \/ \/ ################################################################# # 1 - Arithmetic sequence generator # # 2 - Geometric sequence generator # # 3 - Prime number generator (result count) # # 4 - Prime number generator (line length) # # 0 - exit # ################################################################# Enter selection > 4 ################################################################# Prime numbers generator ################################################################# Insert upper bound: 525 ################################################################# Results 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 ################################################################# |
Lisaülesanne 2: Lisa puhkepausid ja mitmele päevale ulatuv planeerimine
Tegu on laiendusega baasülesandele.
Nõuded
- Kasuta lahendatud laboriülesannet selle töö põhjaks
- Lisa kasutaja poolt seadistatav paus iga kliendikohtumise vahele (nt 10 minutit).
- Lisa tööpäeva lõpu kellaaeg. Kui kliendikohtumine ületaks seda aega, siis planeeri kohtumine hoopis järgmisse päeva. Kui kohtumiste plaan osutub mitmepäevaseks, näita iga päeva ees ka päeva numbrit.
Testimine
Näide oodatavast väljundist kui broneering läheb mitmepäevaseks koos pausidega.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Using advanced version of the task Workday starts at 8:00 Workday ends at 16:00 Enter num of clients 25 Enter client session length 35 Enter break length 10 Day 1 Client 1: 8:00 - 8:35 Client 2: 8:45 - 9:20 Client 3: 9:30 - 10:05 Client 4: 10:15 - 10:50 Client 5: 11:00 - 11:35 Client 6: 11:45 - 12:20 Client 7: 12:30 - 13:05 Client 8: 13:15 - 13:50 Client 9: 14:00 - 14:35 Client 10: 14:45 - 15:20 Day 2 Client 11: 8:00 - 8:35 Client 12: 8:45 - 9:20 Client 13: 9:30 - 10:05 Client 14: 10:15 - 10:50 Client 15: 11:00 - 11:35 Client 16: 11:45 - 12:20 Client 17: 12:30 - 13:05 Client 18: 13:15 - 13:50 Client 19: 14:00 - 14:35 Client 20: 14:45 - 15:20 Day 3 Client 21: 8:00 - 8:35 Client 22: 8:45 - 9:20 Client 23: 9:30 - 10:05 Client 24: 10:15 - 10:50 Client 25: 11:00 - 11:35 |
Pärased tundi peaksid
- Teadma lihtsamaid polsterdamise ja joondamise võimalusi
- Täisarvude polsterdamine nullide või tühikutega
- Kümnendmurdude polsterdamine
- Sõnede polsterdamine ja joondamine
- Liigpikkade sõnelõppude ära lõikamine
- Teadma mis erinevus on lokaal- ja globaalmuutujal
- Teadma mis on funktsioon ja mis on nende olulisus programmeerimisel
- Saama aru, et tegelikult kasutasime juba esimesest nädalast peale funktsioone.
- Mõistma järgmisi mõisteid
- Funktsiooni prototüüp
- Funktsiooni tagastuse tüüp
- Funktsiooni argumendid
- Funktsiooni parameetrid
- Funktsiooni päis
- Funktsiooni keha
- Oskama ise koostada funktsioone (kasutaja-defineeritud funktsioonid)
- Oskama väärtusi (konstandid, makrod, muutujate kaudu) edastada funktsioonidesse
- Oskama salvestada funktsioonist tagastatavat väärtust
- Oskama oma koodi tükeldada funktsioonideks
- Omama väikest kogust universaalseid funktsioone, mida saad kasutada tulevikus järgnevate programmide koostamisel! See loetelu hakkab iga nädalaga laienema.
Täiendav materjal
- Format specifiers for printf
https://cplusplus.com/reference/cstdio/printf/ - Functions in C
https://www.studytonight.com/c/user-defined-functions-in-c.php - C functions
https://www.geeksforgeeks.org/c-functions/