120 likes | 332 Views
Funktsioonid. Mis asi on funktsioon?. Funktsioon on eraldatud jupp koodi, mida on võimalik korduvalt kasutada (välja kutsuda) Funktsioone kasutades: Peame kirjutama vähem koodi Saame koodi korduvalt kasutada, sh teistes programmides Muudame koodi loetavamaks
E N D
Mis asi on funktsioon? • Funktsioon on eraldatud jupp koodi, mida on võimalik korduvalt kasutada (välja kutsuda) • Funktsioone kasutades: • Peame kirjutama vähem koodi • Saame koodi korduvalt kasutada, sh teistes programmides • Muudame koodi loetavamaks • Saame koodi jaotada erinevate failide vahel • Saame hõlpsamini teha tööd meeskondadena • jne
Näide (1) #include <stdio.h> void trykiMiskit(intnumber); //funktsiooniprototüüp intmain() //main()funktsioonipäis koostagastustüübiga { intarv; printf("Tere, ytlemingiarv?\n"); scanf("%d", &arv); trykiMiskit(arv);//funktsiooni trykiMiskit() väljakutse return 0; //main funktsioonitagastus } void trykiMiskit(intnumber) //trykiMiskit()funktsiooni päis, koostagastustüübi japarameetriga { printf("Ytlesidarvu %d", number); }
Funktsioonidele on omased • Funktsiooni prototüüp • Tagastatav andmetüüp • Void (tagastuseta funktsioon) • Int (funktsioon peabtagastama täisarvu) • Double (funktsioon peabtagastama murdarvu) • Char • jne • Funktisooni päis, koos parameetritega • Funktsiooni väljakutse
Näide (2) #include <stdio.h> void greet(intnumber, char nimi[]); //funktsiooniprototüüp intmain() { intarv; char nimi[15]; printf("Tere, missunimi on?\n"); scanf("%s", nimi); printf(".. jakuivanaolete?\n"); scanf("%d", &arv); greet(arv, nimi); //funktsioonigreet() väljakutse return 0; } void greet(intnumber, char nimi[]) //funktsiooni greet() päis { printf("Tere, %s. Oled %d aastane.", nimi, number); }
Muutujate kasutamine funktsioonidega • Funktsioonis deklareeritud muutujat ja selle väärtust saab kasutada ainult selle sama funktsiooni siseselt • Funktsioonis olevate muutujate väärtused „unustatakse“ funktsioonist lahkudes • Erinevates funktsioonides võivad olla samanimelised muutujad - aga nad ei ole samad • Funktsiooni saame edastada mitu väärtust, vastu võtta vaid ühe
Näide (3) #include <stdio.h> void printArray(intnumArray[], intarrayLength); intmain() { intfirstNumArray[] = {5, 8, -2, 65, 1, 36}; intsecondNumArray[] = {7, 97, -24, -74}; printArray(firstNumArray, sizeof(firstNumArray) / 4); printArray(secondNumArray, sizeof(secondNumArray) / 4); return 0; } void printArray(intnumArray[], intarrayLength) { inti; for(i= 0; i< arrayLenght; i++) { printf("%d\n", numArray[i]); } }
Näide (4) #include <stdio.h> #include <stdlib.h> #include <time.h> intgiveRandomNum(intnumMin, intnumMax); intmain() { intnum; srand(time(NULL)); num= giveRandomNum(5, 25); //väljakutsekoostagastusevastuvõtuga printf("Got num %d\n", num); num= giveRandomNum(75, 100); //väljakutsekoostagastusevastuvõtuga printf("Got num %d\n", num); return 0; } intgiveRandomNum(intnumMin, intnumMax) //täisarvu tagastusegafunktsioon { return (rand() % (numMax- numMin+ 1)) + numMin;//tagastus }
Tunnitöö 1 • Võtke ette eelmise tunni ladude kood • Teeme oma pikast ja lohisevast main() funktsioonist mitu funktsiooni • Väljastus • Sorteerimine • Ladude ümbertõstmine
Tunnitöö 2 • Loo programm, mis: • Küsib kasutajalt 3 arvu, mis oleksid nullist suuremad • Leiab arvude summa • Leiab arvude aritmeetilise keskmise • Leiab suurima arvu • Leiab vähima arvu • Kõik funktsioonid peavad tulemuse tagastama main() funktsiooni, kus need välja trükitakse.
Tunnitöö 3 • Loo programm, mis: • Genereerib 10 juhuarvu kasutaja öeldud vahemikus • Kuvab genereeritud tulemuse • Sorteerib saadud tulemuse • Kuvab sorteeritud tulemuse • Eraldab paaritud ja paarisarvud eraldi massiividesse • Trükib paaris ja paaritud arvude massiivid • Programmis loo kindlasti järgmised funktsioonid: • Genereerimine • Massiivi väljatrükk • Sorteerimine • Jaotamine
Kodutöö • Modifitseeri eelmist koodi nii, et programm • Genereerib 10 juhuarvu kasutaja öeldud vahemikus • Kuvab genereeritud tulemuse • Jaotab tulemuse paaris- ja paarituteks arvudeks • Kuvab sorteeritud arvud • Sorteerib paaris ja paaritud arvud • Trükib sorteeritud paaris ja paaritud arvude massiivid