26
Multimedia Technology 2 Lessenreeks door Tom Luyten voor Communicatie- en Multimedia Design Maastricht Werkcollege 4 Loops Gebaseerd op het boek “Learning Processing” door Daniel Schiffman En de PowerPoint van Donald W. Smith

Processing Werkcollege 4 - loops

Embed Size (px)

Citation preview

Page 1: Processing Werkcollege 4 - loops

Multimedia Technology 2Lessenreeks door Tom Luyten

voor Communicatie- en Multimedia Design Maastricht

Werkcollege 4

Loops

Gebaseerd op het boek “Learning Processing” door Daniel Schiffman

En de PowerPoint van Donald W. Smith

Page 2: Processing Werkcollege 4 - loops

LESSON 2: Everything you need to know

Variabelen

Condities

Loops• Iteratie?

• While loop

• For loop

• Lokale en globale variabelen

Les 4 : Loops

Page 3: Processing Werkcollege 4 - loops

Wat is iteratie?

Iteratie is het herhalen van een aantal regels, elke keer opnieuw. Er kunnen variaties in zitten.

Voorbeeld: benen voor je monstertje

stroke(0):

line(50,60,50,80);

line(60,60,60,80);

line(70,60,70,80);

line(80,60,80,80);

line(90,60,90,80);

Iteratie

Page 4: Processing Werkcollege 4 - loops

Wat is iteratie?

Iteratie is het herhalen van een aantal regels, elke keer opnieuw. Er kunnen variaties in zitten.

Voorbeeld: benen voor je monstertje

stroke(0):

line(50,60,50,80);

line(60,60,60,80);

line(70,60,70,80);

line(80,60,80,80);

line(90,60,90,80);

Dus…

Iteratie

Zit een patroon in:

x neemt 10 toe

x stopt op 90

Page 5: Processing Werkcollege 4 - loops

int x = 50;

int y = 80;

int spatie = 10;

int lengte = 20;

stroke(0):

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

Iteratie

Page 6: Processing Werkcollege 4 - loops

int x = 50;

int y = 80;

int spatie = 10;

int lengte = 20;

stroke(0):

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

x = x + spatie

line(x,y,x,y+lengte);

Iteratie

Meer code!?

Wel efficiënter,

Maar…

Nog een meer

duidelijk patroon

Dus…

Page 7: Processing Werkcollege 4 - loops

Start ? waar begint de loop ?

Stap ? Hoe groot is de stap die wordt genomen?

Stop ? Bij welke waarde moet de loop stoppen?

While loop

Page 8: Processing Werkcollege 4 - loops

While loop

START

STAP

STOP

Page 9: Processing Werkcollege 4 - loops

Start ?

Stap ?

Stop ?

While loop

Setup condities van een loop

Deze 3 definiëren je volledige loop. Je hebt deze 3 nodig om je loop uit te schrijven.

Een loop bestaat uit deze setup condities, een test, en een stuk code dat wordt

uitgevoerd

Page 10: Processing Werkcollege 4 - loops

int x = 50;

int spatie = 10; SETUP CONDITIES

int stop = 150;

while(x < stop) { TEST

line(x,60,x,80); voer uit

x = x + spatie; VERANDER IETS

} Terug naar TEST

tot TEST = false

Zelfde resultaat

While loop

Page 11: Processing Werkcollege 4 - loops

Maak fig 6.5 na

Wat zijn de setup condities?

Wat is de test?

Wat voeren we uit?

While loop

Page 12: Processing Werkcollege 4 - loops

Wat zijn de setup condities?

start: beginhoogte eerste rechthoek

stap : spatie tussen de rechthoeken

stop : waarde waar de loop moet stoppen

Wat is de test?

als rechthoek y coord. Groter is dan

de stopwaarde, stop.

Wat voeren we uit?

teken een rechthoek van 100 breed, 10 hoog, 100 van de kant.

While loop

Page 13: Processing Werkcollege 4 - loops

Wat zijn de setup condities?

beginhoogte eerste rechthoek

start: int y = 10;

spatie tussen de rechthoeken

stap: int spatie = 20;

waarde waar de loop moet stoppen

stop: int stop = height;

Wat is de test?

als rechthoek y coord. Groter is dan

de stopwaarde, stop.

while (y < stop) {

Wat voeren we uit?

teken een rechthoek van 100 breed, 10 hoog, 100 van de kant.

rect(50,y,100,10);

y = y + spatie

}

While loop

Page 14: Processing Werkcollege 4 - loops

int x = 0;

while(x<10){

println(x);

x = x-1

}

X wordt kleiner, exit wordt nooit bereikt

Infinite loops

Page 15: Processing Werkcollege 4 - loops

while(x <= einde){

line(x,y,x,y+lengte);

x = x + spatie;

}

spatie = mouseX/2;

mouseX/2 kan nul worden!

Oplossing:

Int spatie = constrain(mouseX/2, 1, 100);

Infinite loops

Page 16: Processing Werkcollege 4 - loops

int x = 0;

Void setup(){

size(200,200);

}

void draw(){

while(x < 9){

x = x+1;

}

x = 0;

}

While loop

Let op!

Wanneer je een while loop in draw gebruikt,

Mag je niet vergeten je startwaarde terug te

resetten,

X blijft in dit geval anders 9.

Page 17: Processing Werkcollege 4 - loops

Een shortcode voor een while loop waar eenzelfde increment voorkomt.

Start, Stap, Stop en test gebeuren hier in 1 regel (! Efficiënt)

Ook hoef je start niet te resetten. De variabele wordt in de loop gemaakt en gevuld met je startwaarde (int i = 0);

Start bij 0, tel tot 9

x = 0;

while(x < 9){

x = x+1;

}

Wordt:

for (int i = 0; i < 9; i = i + 1){ }

For loop

Page 18: Processing Werkcollege 4 - loops

Start bij 100, tel tot 150 in stappen van 10

x = 100;

while(x < 150){

x = x+10;

}

Wordt:

for (int i = 100; i < 150; i = i + 10){ }

For loop

Page 19: Processing Werkcollege 4 - loops

for(int i=100; i>=0; i = i-5){

2. doe code

3. tel bij/af

5. Terug naar 2

}

For loop

1. Start waarde 4. Exit test 3. Tel bij of af

Page 20: Processing Werkcollege 4 - loops
Page 21: Processing Werkcollege 4 - loops

21

Page 22: Processing Werkcollege 4 - loops

Lokale en globale variabelen

Een variabele die je declareert binnen een codeblok (tussen { en } ) kan enkel

Door dat codeblok worden “gezien”

Na } komt deze variabele te vervallen. Hij wordt uit het geheugen gewist.

Dit heet een lokale variabele

Dit is te vergelijken met een doos (variabele) die je in één kamer openvouwt,

Vervolgens kan ze niet meer door de deur. Ze is dus in andere kamers niet te

gebruiken.

Ga je naar een andere kamer (de rest van je programma), moet je de doos

leegmaken en weer opvouwen.

Page 23: Processing Werkcollege 4 - loops

Lokale en globale variabelen

Een variabele die je bovenaan je programma declareert, kan door het hele

Programma worden gezien en wordt niet gewist.

Dit heet een globale variabele

Dit is te vergelijken met een doos (variabele) die je in buitenshuis openvouwt,

Vervolgens kan ze door alle deuren. Ze is dus in alle andere kamers te

gebruiken.

Ga je naar een andere kamer (de rest van je programma), moet je de doos

NIET

leegmaken en weer opvouwen. De doos en haar inhoud blijven dus je hele

programma intact

Page 24: Processing Werkcollege 4 - loops

Lokale en globale variabelen

int x = 50;

void setup(){

size(200,500);

}

void draw(){

float test = 10.5;

for(int i=0; i<500; i=i+50){

rect(x,i,50,50);

}

}

Globale variabele (te gebruiken

over het hele programma, wordt

nooit gewist)

Lokale variabele, enkel te

gebruiken binnen de draw. Komt te

vervallen na } van de draw loop.

Lokale variabele, enkel te

gebruiken binnen de for loop.

Komt te vervallen na } van de for

loop.

Page 25: Processing Werkcollege 4 - loops

Lokale en globale variabelen

Beweeg de hele “figuur” naar links.

Optioneel (moeilijk) : naar onderen!

Page 26: Processing Werkcollege 4 - loops

Integreer minstens 1 loop in je monstertje