10. Functies - deel 2
Last updated
Last updated
In het hoofdstuk heb je over parameters geleerd. Bij een functie zijn er 2 soorten parameters:
Call by value: een kopie van de variabele wordt als parameter doorgegeven. Dit betekent dat als de variabele in de functie van waarde veranderd, de originele variabele nog steeds dezelfde waarde heeft.
Call by reference: de variabele zelf wordt als parameter doorgegeven. Dit betekent dat als de variabele in de functie van waarde veranderd, de originele variabele ook van waarde is veranderd. Met een & teken voor de parameter geef je aan dat dit een call by reference variabele is.
Voorbeeld van call by value:
Voorbeeld van call by reference:
Opdracht 10.1 Probeer beide voorbeelden uit. Wat is het verschil tussen de 2 voorbeelden?
Een vector kun je ook call-by-value en call-by-reference aan een functie doorgeven:
void func(vector<int> vect) //call-by-value
void func(vector<int> &vect) //call-by-reference
C++ bevat nuttige functies die je kan gebruiken. Bijvoorbeeld:
- min
: geeft de kleinste van 2 getallen
- max
: geeft de grootste van 2 getallen
- swap
: hiermee kun je de waardes van 2 variabelen omwisselen
- sqrt
: berekent de wortel. Deze kot
- pow
: berekent de macht
- ceil
: naar boven afronden
- floor
: naar beneden afronden
- sort
: sorteert de waardes in een array
Voor sommige functies moet je wel een extra library toevoegen aan je code. Bijvoorbeeld:
Opdracht 10.3 Bepaal de kleinste van 3 getallen met de functie min. Kijk op de reference pagina hoe je de functie min kan gebruiken.
Opdracht 10.4
Schrijf een programma dat de cijfers in onderstaande vector sorteert. Maak gebruik van de functie sort
. Kijk op de reference pagina hoe je de functie sort
kan gebruiken.
vector cijfers = { 5, 4, 9, 12, 8, 7, 13, 15, 4, 2, 1, 0, 4, 2, 5, 0, 4, 2, 10, 5, 20, 1, 7, 23, 16};
Opdracht 10.2 Schrijf een programma waarbij de volgende commando's kunnen worden uitgevoerd op een vector: * a x -> voeg een waarde x toe aan de vector. De waarde x is altijd van het type integer. * v -> verwijder het laatste element van de vector * d -> draai de inhoud van de vector om * p -> druk de inhoud van de vector af. Als er meerdere p's in de invoer staan dan wordt elke p op een aparte regel afgedrukt. Als er dus 3 keer een p in de invoer staat dan bestaat de uitvoer uit 3 regels. Als invoer krijg je op de eerste regel een getal N dat aangeeft hoeveel commando's worden ingevoerd. Op de tweede regel worden de N commando's gegeven. Voorbeeld invoer: 7 a 1 a 3 a 2 a 10 d v p De uitvoer wordt dan: 10 2 3 Met de volgende link kan je testen of je programma werkt: . Schrijf nette code door gebruik te maken van functies.
Op de pagina kun je een reference vinden van alle libraries. Als je bijvoorbeeld de library <cmath> selecteert dan kan je alle built-in functies zien van deze library.