Programmeren in C/Functies

Uit Wikibooks
Naar navigatie springen Jump to search

Programmeren in C

Inleiding
  1. Inleiding Redelijk ontwikkeld. Revisiedatum: 23 oktober 2007
  2. De compiler Redelijk ontwikkeld. Revisiedatum: 23 oktober 2007

Bewerkingen

  1. Basis Goed ontwikkeld. Revisiedatum: 23 oktober 2007
  2. Stijl en structuur Redelijk ontwikkeld. Revisiedatum: 23 oktober 2007
  3. Datatypes Goed ontwikkeld. Revisiedatum: 11 november 2007
  4. Berekeningen In ontwikkeling. Revisiedatum: 23 oktober 2007
  5. If en loops Goed ontwikkeld. Revisiedatum: 23 oktober 2007
  6. Arrays en pointers Redelijk ontwikkeld. Revisiedatum: 24 oktober 2007
  7. Functies Goed ontwikkeld. Revisiedatum: 23 oktober 2007
  8. File handling In ontwikkeling. Revisiedatum: 23 oktober 2007

Overige

  1. Bestanden Redelijk ontwikkeld. Revisiedatum: 23 oktober 2007
  2. C-Preprocessor (CPP) Redelijk ontwikkeld. Revisiedatum: 23 oktober 2007
  3. Struct
  4. Expressies


Functies zijn heel belangrijk in C. Dingen zoals printf() en scanf() zijn functies, rand() is een functie en zelfs int main() is een functie. Een functie neemt soms parameters met zich mee en geeft soms een waarde terug. Laten we eerst kijken naar hoe functies eruit zien:

int EenFunctie(int EenInt, char EenChar) 
---  --------   ----------------------   
 |      |                  |
 V      |                  |
Dit is  wat de functie terug geeft. Als dit void is betekent het dat de functie niks terugkeert.        
        |                  |          
        V                  |          
Dit is de naam van een functie.       
                           |          
                           V          
Dit zijn de parameters van de functie. Die worden alleen gebruikt in de functie: 
als de functie klaar is vernietigt hij de parameters.


Hier is een voorbeeld van het gebruik van een (simpele) functie.

#include <stdio.h>

/* Functies komen altijd voor int main(): je maakt geen functie binnenin een andere functie */
void PrintMenu()           /* keert niks terug, geen parameters */
{     /* begint net als main met een curly bracket open */
printf("Kies 1 voor dit\n");
printf("Kies 2 voor dat\n");
printf("etc, etc\n");
}

int main()
{
PrintMenu(); /* PrintMenu() heeft geen parameters, maar toch gebruik je de haakjes */

return 0;
}

PrintMenu() lijkt hier misschien een nutteloze functie, maar als je iets meerdere keren moet printen en het is een behoorlijke lijst, kan het handig zijn. Bovendien gaat het hier niet over het nut van de functie, maar over hoe je functies gebruikt.
Nu gaan we een functie maken, die parameters neemt en een 'return-value' heeft. Een functie, die machten regelt.

int macht(int GrondGetal, int exponent)
{
int resultaat; 

if (exponent == 0) /* x ^ 0 = 1*/
    resultaat = 1;

else
    resultaat = GrondGetal;

for(int i = 1; i < exponent; i++) /* i = 1, omdat het niet de bedoeling is dat
                                     dit wordt uitgevoerd als het exponent 1 is. */
     resultaat = resultaat * GrondGetal;
/* Net als bij if, hoef je geen curly brackets te gebruiken als er maar 1 regel
uitgevoerd hoeft te worden */


return resultaat; /* dit is, lijkt me duidelijk, de 'return-value' */
}

int main()
{
    int getal;
    int TotDe;
    int antwoord;

    /* Vraag hier naar de waardes van getal en macht */

    antwoord = macht(getal, TotDe); /* GrondGetal in functie macht() wordt dus hetzelfde
                                       als getal, exponent wordt TotDe */

    /* Print hier het antwoord */

    return 0;
}

Dit progje werkt alleen in C++, niet in C, zorg dat je bron-bestand dan ook *.cpp heet! We hebben hier gebruik gemaakt van de functie macht om uit te rekenen wat getal ^ TotDe is. Dit ziet er veel overzichtelijker uit dan wanneer u de code had getypt op de plek waar macht(getal, TotDe) staat. Het is ook makkelijker nog een keer te gebruiken, wanneer u bijvoorbeeld vijf keer in een programma een macht moet uitrekenen, gaat u natuurlijk niet vijf keer dat zelfde stukje code typen. Computers zijn er om het herhalen voor ons te doen.

Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.