Zowat alle moderne programmeertalen ondersteunen functies. Wanneer je een functie definieert, plak je eigenlijk een naam op een opeenvolgend aantal instructies (de implementatie). Dit noemen we de functiedefinitie. De functie implementeren of schrijven noemen we ook wel de functie definiëren.

De instructies kunnen afhankelijk zijn van een (aantal) parameter(s). Je kan daarna de functie gebruiken door specifieke woorden in te vullen als parameters van de functie. Dit noemen we de functie-oproep.

❗ Begrip - Functie

Een functie is een blok code binnen een computerprogramma, met een eigen naam en een duidelijk begin en einde. De functie kan elders in het computerprogramma opgeroepen worden.

In Python ziet een functiedefinitie er als volgt uit:

def naam(parameters):
  implementatie
  return resultaten

👀 Voorbeeld - Plus

def plus(x, y):
    som = x + y
    return som

Je kan een functie vergelijken met een doos met implementatie (de zogenoemde black box) waar je een aantal parameters in stopt, en een resultaat uitkomt. De implementatie is enkel gekend door de programmeur die de functie geschreven heeft. Een programmeur die de functie gebruikt door ze op te roepen, heeft geen weet van de implementatiedetails en wil enkel de correcte resultaten krijgen voor de gegeven parameters.

implementatie

Een functie bestaat uit 4 onderdelen:

  1. De naam: De naam van de functie kunnen we zelf kiezen. Net zoals bij variabelen gebruiken we voor de naam van een functie kleine letters, underscores en cijfers. De functienaam mag niet met een cijfer beginnen. Het is aangewezen de naam van de functie zodanig te kiezen dat het duidelijk is wat de functie doet. Dat maakt je programma leesbaar en overzichtelijk. Bijvoorbeeld opwarming().
  2. De parameters: Een functie kan 0, 1 of meerdere parameters dragen. Dat zijn variabelen die de functie meekrijgt om berekeningen mee te doen. Bijvoorbeeld leeftijd.
  3. De implementatie: De implementatie van de functie bestaat uit berekeningen of instructies. Enkele voorbeelden zijn het aanmaken van nieuwe variabelen of het printen van een (tussentijds) resultaat. Bijvoorbeeld lengtes = 10 + leeftijd/2.
  4. De resultaten: De resultaten van de functie worden steeds voorafgegaan door return.

Niet elke functie heeft een resultaat; soms zijn enkel de instructies belangrijk. Denk bijvoorbeeld aan print, waar er uitvoer getoond wordt aan de gebruiker, maar intern in het programma heeft print geen resultaat. Wanneer er meerdere resultaten worden teruggegeven, worden die gescheiden door een komma. Bijvoorbeeld return x, y.

Wanneer de functie gedefinieerd is (met naam, parameters, implementatie, resultaten), kan je de functie gebruiken of oproepen.

👀 Voorbeeld - Graden Celcius

Het volgende stukje code is een functiedefinitie van een functie celsius die een gegeven temperatuur in graden Fahrenheit omzet in een temperatuur in graden Celsius.

# naam: celsius
# parameters: fahrenheit
def celsius(fahrenheit):
    # implementatie
    celsius = (fahrenheit - 32) / (1.8)
    # resultaat
    return celsius

Je kan nu zelf deze functie gebruiken om Fahrenheit naar Celsius om te zetten door ze op te roepen met de juiste parameter: de temperatuur (in graden Fahrenheit). Bijvoorbeeld:

print(celsius(100))

Probeer dit eens uit in de sandbox.

💻 Programmeeroefening - Gemiddelde functie

Schrijf in de editor hieronder een functie die het gemiddelde neemt van twee getallen. Gebruik gemiddelde als functienaam, maak twee parameters voor de getallen, schrijf de correcte implementatie, en geef het resultaat terug.

Je hoeft de functie niet aan te roepen, de functie definiëren is voldoende.