processing werkcollege 6 functies met parameters

Post on 10-Jul-2015

249 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Multimedia Technology 2Lessenreeks door Tom Luyten

voor Communicatie- en Multimedia Design Maastricht

Werkcollege 6

Eigen functies métparameters

Gebaseerd op het boek “Learning Processing” door Daniel Schiffman

En de PowerPoint van Donald W. Smith

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

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

Nu, functies mét arguments:

Arguments zijn waarden die in de functie worden “gevoed”

We kennen arguments al vanuit bv. de ellipse() functie :

ellipse(100,100,50,50);

Tekent een cirkel op x 100, y 100, van 50 op 50 hoog.

Als we deze waarden aanpassen, zal de cirkel er anders uitzien.

De functie blijft hetzelfde (ellipse()).

Deze functie werkt dus met variabelen, die wij bij het aanroepen van de functie vullen.

Eigen functies

de functie drawBlackCircle() werkt fijn,

maar als we nu een cirkels willen tekenen op verschillendeplaatsen zullen we een variabele moeten introduceren die we kunnen aanpassen. Anders moeten we voor elke cirkel een nieuwe functie schrijven (niet efficiënt)

We willen dus een functie

drawBlackCircle(10,50,100,100);

Waar dan de opgegeven waarden voor x,y,breedte,hoogte van onze zwarte cirkel staan.

Eigen functies

Een functie zonder arguments

void drawBlackCircle(){

fill(0);

ellipse(50,50,20,20);

}

Herschrijven mét arguments

Eigen functies

Void draw(){

drawBlackCircle(16); //tekent een cirkel met diameter van 16

}

Hoe ziet de bijhorende functie eruit?

void drawBlackCircle(int diam){

fill(0);

ellipse(50,50,diam,diam);

}

Eigen functies

Wat gebeurt er precies ?

2. Er wordt een

lokale variable

diam aangemaakt

1. drawBlackCircle

wordt aangeroepen in

de draw

3. De waarde 16

wordt naar de

lokale variabele

diam gekopieerd

4. De ellipse wordt

getekend op de

waarde die uit de

variabele diam

wordt gelezen (16)

5. Lokale variabele

diam wordt

verwijderd

Void draw(){

drawBlackCircle(16); //tekent een cirkel met diameter van 16

}

Hoe ziet de bijhorende functie eruit?

void drawBlackCircle(int diam){

fill(0);

ellipse(50,50,diam,diam);

}

Eigen functies

Eigen functies

Breidt het vorige voorbeeld uit naar meerdere variabelen: x,y en grootte

Zodat we met één functie drawBlackCircle(50,100,10);

Cirkels kunnen tekenen op een verschillende plaats, met een verschillende grootte.

Eigen functies

20 min.

Volgorde van uitvoeren

Een kopie doorgeven (?)

int num = 16;

void draw(){

drawBlackCircle(num); //tekent een cirkel met diameter van 16

}

Hoe ziet de bijhorende functie eruit?

void drawBlackCircle(int diam){

fill(0);

ellipse(50,50,diam,diam);

}

Eigen functies

Wat gebeurt er precies ?

2. Er wordt een

lokale variable

diam aangemaakt

1. drawBlackCircle

wordt aangeroepen in

de draw

3. De waarde 16 (die we uit num

halen) wordt naar de lokale

variabele diam gekopieerd

4. De ellipse wordt

getekend op de

waarde die uit de

variabele diam

wordt gelezen (16)

5. Lokale variabele

diam wordt

verwijderd

int num = 16;

void draw(){

println(num)

tel3Op(num); //telt 3 bij een opgegeven getal

println(num);

}

void telOp(int waarde){

int som = waarde + 3;

println(som);

}

Eigen functies

2. Er wordt een

lokale variable

waarde

aangemaakt

1. tel3Op wordt

aangeroepen in de

draw

3. De waarde 16 (die we uit num

halen) wordt naar de lokale

variabele diam gekopieerd

4. De waarde + 3 wordt

opgeslaan in de lokale

variabele som6. Lokale variabele

diam wordt

verwijderd5. We printen de waarde van

som ter controle.

7. Is dewaarde in num

veranderd? Neen, want we

hebben hier nergens iets

naar opgeslaan.

Als je een waarde doorgeeft naar een functie wordt hiervan een kopie gemaakt! De originele variabele (numin 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?

Return type

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

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

Return type

Oefening 7.8.

Schrijf een functie waar de temperatuur in Fahrenheit wordt omgezet naar Celcius.

C = (F – 32)*(0.55)

Return type

1. Haal de beweging en rand-test uit je monster

Door de relevante functies in commentaar te plaatsen.

2. Teken, aan de hand van een for loop en de functie “teken” van je monster, een rij monsters naast elkaar.

3. Optie = kan je de rij langer/korter maken naar gelang de grootte van je sketch ?

Opdracht

Hint: oefening 7-9 p.118 + learningprocessing.com

top related