Functies

Zie boek “Leren programmeren met Python” pagina 145.

Introductie

Toen we ons spel probeerden uit te breiden,maakten we gebruik van een lijst om te vermijden dat we per kogel nieuwe variabelen moesten maken.

Dus, in plaats van:

bullet1_x = 0
bullet1_y = 0
bullet2_x = 0
bullet2_y = 0
bullet3_x = 0
bullet3_y = 0
bullet4_x = 0
bullet4_y = 0

Hebben we onderstaande code gebruikt:

bullets = []

Dus, deze nieuwe datastructuur (de lijst) liet ons toe om heel veel posities bij te houden, zonder veel schrijfwerk.

Het meermaals schrijven van dezelfde of bijna dezelfde regels code noemt men code duplicatie.

In onze code kwam echter nog regelmatig dezelfde code voor:

# speler verplaatsen
x += xchange
y += ychange

# vijand verplaatsen
enemy_x += enemy_x_change
enemy_y += enemy_y_change

# kogel verplaatsen
bullet[0] = bullet[0] + bullet_x_change
bullet[1] = bullet[1] + bullet_y_change

Programmeertalen voorzien ook hiervoor een oplossing: functies. Functies groeperen stukjes code, die je nadien dan opnieuw kunt gebruiken, door ze via de functie-naam op te roepen. Een voorbeeld:

def schrijf():
    print("Hallo, mijn naam is Jan en ik woon in Limburg.")
    print("Ik eet graag pizza, en als hobby speel ik volleybal.")

schrijf()
schrijf()
schrijf()
schrijf()

In bovenstaande code wordt de functie schrijf aangemaakt, die vervolgens vier keer opgeroepen wordt. Dus, het resultaat zijn acht regels tekst, die compacter zijn dan als je acht keer de print regel had moeten herhalen. Een ander voordeel is, dat als je de tekst wil aanpassen, je dit op slechts 1 plaats hoeft te doen.

Opgave 50

Definieer een functie die je naam en adres afdrukt. Druk je adres dan twee keer af gebruik makend van die functie.

Parameters

Tot nu toe deed onze functie bij iedere oproep exact hetzelfde. Maar het is mogelijk functies bij het oproepen informatie mee te geven, zodat de functie andere dingen kan doen bij iedere oproep:

def schrijf(naam):
    print(f"Hallo, mijn naam is {naam} en ik woon in Limburg.")
    print("Ik eet graag pizza, en als hobby speel ik volleybal.")

schrijf("Jan")
schrijf("Piet")
schrijf("Joris")
schrijf("Corneel")

Opgave 51

Schrijf een programma waarin je een functie maakt die als parameter een getal x heeft, en het kwadraat van het getal op het scherm toont.

Meerdere Parameters

Functies kunnen ook Meerdere parameters meekrijgen:

def schrijf(naam, woonplaats, voedsel, hobby):
    print(f"Hallo, mijn naam is {naam} en ik woon in {woonplaats}.")
    print(f"Ik eet graag {voedsel}, en als hobby speel ik {hobby}.")

schrijf("Jan", "Limburg", "pizza", "voetbal")
schrijf("Piet", "Maaseik", "sushi", "volleybal")
schrijf("Joris", "Lanklaar", "spruitjes", "piano")
schrijf("Corneel", "Genk", "ananas", "Fornite")

Opgave 52

Schrijf een programma waarin je een functie definieert die parameter x en y meekrijgt en als resultaat de som van de kwadraten afdrukt: x*x + y*y.

Opgave 53