Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Processing intro course - les 4 : functies

Processing intro course - les 4 : functies

Tom Luyten

May 01, 2013
Tweet

More Decks by Tom Luyten

Other Decks in Education

Transcript

  1. Multimedia technologie Les 5: Functies Gebaseerd op het boek “Learning

    Processing” door Daniel Schiffman En de PowerPoint van Donald W. Smith
  2. LESSON 3: Organisation Functies (p. 101 à 120) •  Modulariteit

    •  Een functie declareren en definiëren •  Een functie aanroepen •  Parameters doorgeven •  Een waarde teruggeven •  Hergebruiken Les 5 : Functies
  3. Functies zijn een manier om stukken van je programma te

    bundelen in modulaire stukken. Maakt het schrijven en aanpassen van grote programma’s overzichtelijker. vb. Space invaders void draw(){ background(0); drawSpaceShip(); moveShip(); moveEnemies(); } Modulariteit
  4. void draw(){ background(0); drawSpaceShip(); moveShip(); moveEnemies(); } We missen de

    definitie van deze functies, we weten niet wat erachter zit. Functies aanroepen doen we al lang, bv. line(), rect(),… Maar nu…eigen functies schrijven… Modulariteit
  5. Waarom eigen functies schrijven? modulariteit Functies breken een groter programma

    in kleinere stukjes, die makkelijker te managen en te lezen zijn. Hergebruikbaarheid Functies laten toe dat je code kan hergebruiken zonder dat je ze opnieuw moet typen Modulariteit
  6. Nu gebeurt alles in 1 functie, ok, maar… Handiger als

    we het verder opbreken, Maakt de structuur van het programma, het ontwerpen in stapjes En het debuggen later makkelijker Dus we willen een functie voor: 1.  X die de hele tijd veranderd 2.  Te checken of X de rand heeft geraakt + dan van richting veranderd 3.  Alles te tekenen (een cirkel in dit geval) Eigen functies
  7. Draw() is heel simpel geworden Enkel function calls Voordelen Updatebaar

    In plaats van balletje wil ik een vierkant update gewoon de display() functie Debuggen Door functies uit te commenten, snel fout gevonden Eigen functies
  8. Nu, functies mét arguments Arguments zijn waarden die in de

    functie worden “gevoed” Bv: de functie drawBlackCircle() werkt fijn, maar als we nu een aantal cirkels willen tekenen op verschillende plaatsen zullen we een variabele moeten introduceren die we kunnen aanpassen. Anders heeft het schrijven van functies ons geen effeciëntie opgeleverd. We kennen arguments al vanuit bv. de ellipse() functie Zonder coordinaten (arguments!) weet processing niet waar de cirkel moet worden getekend. Eigen functies
  9. Herschrijven mét arguments void drawBlackCircle(int diam){ fill(0); ellipse(50,50,diam,diam); } Dus…

    drawBlackCircle(16); //tekent een cirkel met diameter van 16 Eigen functies
  10. Als je een waarde doorgeeft naar een functie wordt hiervan

    een kopie gemaakt! De originele variabele (num in dit geval) blijft intact! num is een GLOBALE variabele newnum een LOKALE variabele is 10 wordt gekopieerd naar newnum, hier worden bewerkingen gedaan en er komt een nieuwe waarde uit. Hoe kan je de uitkomst toch opslaan in je originele variabele? Een kopie?
  11. Vb. The random() functie. Als je deze gebruikt retourneert die

    een random waarde en slaat deze op in een variabele. int tom = random(100); Zélf een functie met een return type schrijven: int sum(int a, int b, int c){ int total = a + b + c; return total; } Return type
  12. Let op : -void is int geworden (void betekent dus

    niets retourneren) - de return is ALTIJD nodig int sum(int a, int b, int c){ int total = a + b + c; return total; } In draw call je dan: int tom = sum(20,40,20); Println(tom); Geeft dan 80 terug. Return type
  13. Let op : -void is int geworden (void betekent dus

    niets retourneren) - de return is ALTIJD nodig om de waarde van lokaal naar globaal te transporteren. UIT de functie, ander gebeurd alles intern. int sum(int a, int b, int c){ int total = a + b + c; return total; } Return type
  14. Oefening 7.8. Schrijf een functie waar de temperatuur in Fahrenheit

    wordt omgezet naar Celcius. C = (F – 32)*(0.55) Return type