1 / 15

Tüüpvigad

Tüüpvigad. Stiilivead. Muud vead. DEBUGIMISE OSKUS Programmivoo loogika vale system („pause“) Ekraanitõmmised Tiitelleht Arvude tüübid Vähem massiivi kohti X-idele kui Y- idtele. KOMMENTAARID! Faili päis puudu Deklad pole funktsiooni päises Treppimine Globaalmuutujad

Download Presentation

Tüüpvigad

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tüüpvigad Stiilivead Muud vead DEBUGIMISE OSKUS Programmivoo loogika vale system(„pause“) Ekraanitõmmised Tiitelleht Arvude tüübid Vähem massiivi kohti X-idele kui Y-idtele • KOMMENTAARID! • Faili päis puudu • Deklad pole funktsiooni päises • Treppimine • Globaalmuutujad • Tühjad else’d

  2. Funktsioonid

  3. 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 • Alus koodi jagamiseks ja projektideks, kus on mitu arendajat • jne

  4. Funktsiooni kuju tagastusfunktsiooniNimi(parameetrid) { laused; } • Funktsioonide kasutamisel lisandub ka selle prototüüp tagastusfunktsiooniNimi(parameetrid);

  5. main() funktsioon intmain(void) { printf("Helloworld\n"); return 0; }

  6. Funktsioonidele on omased • Funktsiooni prototüüp • Tagastatav andmetüüp • void(tagastuseta funktsioon) • int(funktsioon peabtagastama täisarvu) • double(funktsioon peabtagastama murdarvu) • char (funktsioon peabtagastama tähemärgi) • jne • Funktsiooni päis (koos parameetritega) • Funktsiooni väljakutse (koos argumentidega)

  7. Näide (1) #include <stdio.h> void trykiMiskit(intnumber); //funktsiooniprototüüp intmain(void) //main()funktsioonipäis koostagastustüübiga { intarv; printf("Tere, ytlemingiarv?\n"); scanf("%d", &arv); trykiMiskit(arv);//funktsiooni trykiMiskit() väljakutse koos argumentidega return 0; //main funktsioonitagastus } void trykiMiskit(intnumber) //trykiMiskit()funktsiooni päis, koostagastustüübi japarameetriga { printf("Ytlesidarvu %d", number); }

  8. Näide (2) #include <stdio.h> void greet(intnumber, char nimi[]); //funktsiooniprototüüp intmain(void) { intarv; char nimi[15]; printf("Tere, misTeienimi 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); }

  9. Muutujate kasutamine funktsioonidega • Kõigil muutujatel ja nende väärtustel on eluiga ja nähtavusskoop! • Alamfunktsioonis deklareeritud muutujat ja selle väärtust saab kasutada vaid selle konkreetse funktsiooni raames • Funktsioonis deklareeritud muutujate väärtused „unustatakse“ funktsioonist lahkudes • Erinevates funktsioonides võivad olla samanimelised muutujad – aga see ei tee neid samaks. • Funktsiooni saame edastada mitu väärtust, vastu võtta vaid ühe

  10. Näide (3) #include <stdio.h> void printArray(intnumArray[], intarrayLength); intmain(void) { 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]); } }

  11. Näide (4) #include <stdio.h> #include <stdlib.h> #include <time.h> intgiveRandomNum(intnumMin, intnumMax); intmain(void) { 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 }

  12. Tunnitöö 1 • Võtke ette eelmise tunni ladude kood • Teeme oma pikast ja lohisevast main() funktsioonist mitu funktsiooni • Väljastus • Sorteerimine • Ladude ümbertõstmine

  13. Edasijõudnutele • Tunnitöö 1 • Ladude sisestusel küsi lao suurust vahemikus TYHI_LADU … LAO_MAHUTAVUSKusjuures, mõlema lao jaoks korduvkasuta sama funktsiooni, vali tagastustüüp • Mõlema lao täitmiseks kasuta sama alamfunktsiooni sobivate parameetritega • Valitud täitmise alamfunktsioon kutsub omakorda alamfunktsiooni kaalu genereerimiseksSt main kutsub välja täitmise, täitmine kutsub välja random arvu genereerimise • Tekita kolmandast laost väljuvatele kaupadele kaalupiirang. Nt kaubik suudab peale laadida korraga 1500kg kaupa. Mahuta suuremad enne, kuid siiski võimalikult palju kaupu.

  14. 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.Väljatrükki alamfunktsioonides endis ei tohi olla

  15. Edasijõudnutele • Tunnitöö 2 • Samad programmi ülesanded, kuid funktsioonid peavad töötama N arvugaNB! Massiivid edastatakse byreference (pointerina), üksikmuutujad byvalue (väärtuse koopiana) • Loo menüülahendus, kus kasutaja saab ise valida sobiva toimingu või uue arvude genereerimise • Kasuta täitmiseks juhuarve (random) (korduvkasuta eelmises tunnitöös olevaid koodilõike)Mõtlemiseks: Kuidas teha seda ilma kopeerimata, vaid läbi teegi- ja koodifaili include’imise • Leia ekstreemumid (min ja max) väärtus ühes funktsioonis. Meenuta, et tagastada sai vaid ühe väärtuse (abiks byreference)

More Related