8. Functies - deel 1

Het is in de meeste talen, waaronder C++, mogelijk kleine deelprogramma’s te ontwerpen. Deze kleine stukken code worden functies genoemd. Een goede programmeur gebruikt vaak meerdere functies, dit houdt de code namelijk overzichtelijk. Anders heb je kans dat de main een lange lap code wordt en dat je geen idee meer hebt wat er allemaal gebeurt. Functies maken je programma niet alleen overzichtelijker maar ze zorgen er ook voor dat, als je een stukje code vaker nodig hebt, dit dan maar op 1 plek staat.

Voorbeeld van een functie:

#include <iostream>
using namespace std;

void printHallo(){
  cout << "Hallo";
}

int main() {
  printHallo();
  return 0;    
}

De naam van de functie in bovenstaande code is printHallo. Als je de code printHallo() gebruikt dan wordt de functie aangeroepen en de code in de functie uitgevoerd. Er komt Hallo op het scherm.

Hieronder nog een voorbeeld van een functie:

#include <iostream>
using namespace std;

int telOp (int getal1, int getal2) {
  int som;
  som = getal1 + getal2;
  return som;
}

int main() {
  int getal1, getal2, uitkomst;
  cout << "Geef 2 getallen, gescheiden met spatie: " << endl;
  cin >> getal1 >> getal2;
  uitkomst = telOp(getal1, getal2);
  cout << "De som is: " << uitkomst;
  return 0;
}

In dit geval hebben we een functie met de naam TelOp. Deze functie maakt gebruik van een return type en parameters. - Return type: De return type geeft aan dat de functie een waarde teruggeeft. Dit kan van elk datatype zijn, zoals integer, float, string, etc. De functie in de code hierboven is van het type integer, deze functie levert dus ook een resultaat op van het type integer met de naam som. - Parameters: De benodigde informatie voor een functie wordt doorgegeven middels de parameters. Deze parameters moeten ook gedeclareerd worden met een type. Na het aangeroepen van de functie kunnen de parameters binnen die functie gebruikt worden als gewone variabelen. De functie krijgt als input 2 parameters, namelijk getal1 en getal2. Bij het aanroepen van de functie moet je een waarde meegeven voor getal1 en getal2, in dit geval krijgt getal1 de waarde 3 en getal2 de waarde 6.

Opdracht 8.1 Schrijf een programma met een functie dat de waarde van het kwadraat van een getal berekent.

Opdracht 8.2 Schrijf een programma met een functie dat de GGD van 2 getallen berekent. De GGD is de Grootste Gemene Deler. Dit is het grootste positieve getal, waar deze 2 getallen door gedeeld kunnen worden zonder dat er een rest overblijft. Invoer: Lees een regel in met daarop een 2 positieve gehele getallen x en y, de getallen zijn gescheiden door een spatie. Uitvoer: Schrijf een regel met de Grootste Gemene Deler van de getallen x en y. Voorbeeld Invoer: 24 204 Uitvoer: 12 De delers van 24 zijn 1, 2, 3, 4, 6, 8, 12 en 24. De delers van 204 zijn 1, 2, 3, 4, 6, 12, 17, 34, 51, 68, 102 en 204. De grootste gemeenschappelijke deler van 24 en 204 is dus 12. Met de volgende link kan je testen of je programma werkt: GGD inleveren. Vergeet niet je naam in commentaar bovenaan je code te zetten als je de code inlevert. // Deze code is geschreven door: <Naam>

Opdracht 8.3 Maak een programma dat een kerstboom tekent: * *** ***** ******* ********* *********** *

Kies voor een nette oplossing met functies. Bijvoorbeeld: maak een Functie met als parameter het aantal sterretjes, die vervolgens één regel maakt uit de kerstboom met het juiste aantal spaties en het aantal sterretjes. Vervolgens kan je bijvoorbeeld in een For-lus in de Functie Kerstboom al die regels aan elkaar plakken.

Het is ook mogelijk om de output van een functie weer als input voor een andere functie te gebruiken:

#include <iostream>
using namespace std;

int telOp (int getal1, int getal2) {
  int som;
  som = getal1 + getal2;
  return som;
}

void printGetal(int getal){
  cout << getal << endl;
}

int main() {
  int getal1, getal2, uitkomst;
  cout << "Geef 2 getallen, gescheiden met spatie: " << endl;
  cin >> getal1 >> getal2;
  printGetal(telOp(getal1, getal2));
  return 0;
}

Opdracht 8.4 - Probeer bovenstaande code uit. Snap je wat er gebeurd? - Splits de code printGetal(telOp(getal1, getal2)); op in 2 aparte regels.

Scope

Je hebt gezien dat je variabelen op verschillende plekken kan declareren. De scope van de variabele wordt bepaald door de accolades { en }.

Een variabele boven in je programma wordt een globale variabele genoemd. De variabele kun je overal in je programma gebruiken.

In onderstaand voorbeeld kan je zien welke variabele je waar kan gebruiken.

int globaleVar; //Globale variabele kan je overal in je programma gebruiken
void test(int parameter){
    //hier kan je gebruiken: globaleVar, parameter
}
int main()          
{
    int lokaleVar
    //hier kan je gebruiken: globaleVar, lokaleVar
    for (int teller=0;teller<10; teller++){
        int var;
        //hier kan je gebruiken: globaleVar, lokaleVar, teller, var
    }
    //hier kan je gebruiken: globaleVar, lokaleVar
    return 0;            
}

Opdracht 8.5 Noem een voordeel en een nadeel van globale variabele?

Last updated