Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.

Samankaltaiset esitykset


Esitys aiheesta: "Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan."— Esityksen transkriptio:

1 Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan lause1 muutoin suoritetaan valinnainen lause2 else liitetään aina lähimpään if-lauseeseen, jolla ei ole else-osaa

2 Monihaarainen päätös else if lausella if (lauseke1) lause1 else if (lauseke2) lause2 else if (lauseke3) lause 3 else lause

3 Monihaarainen päätös switch-lauseen avulla switch (lauseke){ case vakio1: lausejoukko1 break; case vakio2: lausejoukko1 break; default: lausejoukko break; } (lauseke) == vakio1 (lauseke) == vakio2 ilman break lausetta ohjelman suoritus jatkuisi lausejoukkoon2 valinnainen, hypätään tänne mikäli (lauseke) ei vastaa mitään case:ssa luetelluista arvoista

4 while Lause toistetaan niin kauan kun (lauseke) on tosi while(lauseke) lause Kopioidaan merkkijono lahde merkkijonoon kohde while(*kohde++=*lahde++); Lasketaan merkkijonon mj pituus while(*kohde++);

5 for for(lauseke1; lauseke2; lauseke3) lause lauseke1 suoritetaan aluksi lause toistetaan niin kauan kun lauseke2 on tosi jokaisen toistokerran jälkeen suoritetaan lauseke3

6 do - while do lause while (lauseke); lause suoritetaan aina vähintään yhden kerran Toiston määräävä lauseke arvioidaan vasta suorituksen jälkeen

7 for – continue - break for (i=0; i < 10; i++){ if(i%2 == 0) continue; if(i==7) break; printf(”%i\n”, i); } ohjelma tulostaa: 1 3 5

8 Funktiot extern int funktio(int a, char *m){ return 0; } Ohjelman suoritus alkaa funktiosta main() funktion määrittelyssä tarvitaan 1. paluuarvon tyyppi 2. kutsuparametrien tyyppi ja määrä 3. näkyvyys määrittelytiedoston ulkopuolella 4. suoritetaan ohjelmakoodi 1 2 4 3

9 Funktion muistimääritteet extern funktion esittelyn edessä => etsitään funktion määrittelyä myös toisista lähdekooditiedostoista static funktion esittelyn edessä => funktiota ei voida käytää/tietää kyseisen lähdekooditiedoston ulkopuolella extern on oletusarvoinen muistimäärite

10 Funktion esittely int f(void); int f(); ei parametrejä, palauttaa int:n ei tietoa parametreistä, palauttaa int:n int *f(void); ei parametrejä, palauttaa osoittimen int:n Ilman funktion esittelyä ei funktion argumenttien määrää eikä tyyppiä tarkisteta

11 Funktio esimerkki extern double a; static double palauta(void){ return (a + 1.0); } double arvo(double l){ return l + palauta(); } const double a = 1.0; extern double arvo(double); int main(void){ int b; b = (int)arvo(a); return b; } testi.crutiini.c Kääntäminen: gcc –o testi testi.c rutiini.c Ohjelman paluuarvo: echo $?

12 Funktioihin viittaaminen osoittimien avulla Funktiota ei voi välittää parametrina funktiolle Osoittimen funktioon voi välittää parametrina funktiolle Käytetään esim. qsort() kirjastofunktiossa osoittimena vertailufunktioon => Ei tarvita eri lajittelufunktiota eri tyypeille int (*f)(); f on osoitin funktioon, joka palauttaa int:n

13 Esimerkki funktio-osoittimesta extern int arvo(double); int (*pf)(double) = arvo; int main(void){ int i= (*pf )(1.0); return 0; } Osoitin funktioon jonka ainoana parametrinä on double ja joka palauttaa int:n

14 Osoitintaulukot double *g[3]; *g[0] = 1.0; varaa muistia kolmelle osoittimelle double tyyppisiin muuttujiin g[0]:aa ei ole alustettu, joten sijoituslause ei toimi Käytetään tavallisesti dynaamisen muistin varauksen yhteydessä Voidaan käyttää myös merkkijonojen talletukseen char *h[] = {”eka”, ”toka”, ”kolmas”, NULL};

15 Tietueiden välittäminen funktiolle Tietuemuuttuja voidaan välittää funktioon argumettina Paluuarvon tyyppinä voi olla tietuetyyppi struct tietue_t funktio(struct tietue_t); Funktiolle voidaan myös valittää tietueen osoite void funktio(struct tietue_t *);

16 typedef määrittää synonyymin typedef unsigned char cc_t; määritelmän jälkeen cc_t vastaa unsigned char:a Alla määritellään tietotyyppi DBT joka on siis tietue typedef struct { void *data; int datan_pituus; } DBT; mikäli määritelmä alkaisi typedef struct dbt{ niin DBT olisi synonyymi struct dbt:lle

17 typedef typedef:n avulla koodin lukemista voidaan helpottaa typedef void signal_handler(int); signal_handler *signal(int, signal_handler*); signal_handler on funktion jonka argumenttina on int ja paluuarvoa ei ole signal on funktio argumentteinaan int ja osoitin signal_handler:iin, joka on myös paluuarvo Sama signal määritelmä ilman typedef:ä void (*signal(int, void(*)(int)))(int);


Lataa ppt "Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan."

Samankaltaiset esitykset


Iklan oleh Google