De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gameprogrammeren: Herhalingen

Verwante presentaties


Presentatie over: "Gameprogrammeren: Herhalingen"— Transcript van de presentatie:

1 Gameprogrammeren: Herhalingen
Arjan Egges Paul Bergervoet Wouter van Toll

2 Herhaling Dezelfde code een aantal keer uitvoeren, met soms kleine verschillen Bijvoorbeeld: Een aantal keer een ‘leven’- of ‘resource’-sprite tekenen Een lijst van game-objecten langslopen en daar iets mee doen Een highscore-lijst afdrukken ...

3 Opdrachten herhalen: while
voer de volgende regel uit zolang deze voorwaarde geldig is public override void Draw(GameTime gameTime) { int x; x = 1; while ( x < 1000 ) x = 2*x; spriteBatch.Draw( sprite, new Vector2(x, 10.0f), Color.White ); } body wordt steeds opnieuw uitgevoerd x > 1000, dus de while-loop stopt X 1024 512 128 256 64 16 32 1 8 2 4

4 Meerdere opdrachten herhalen
private static int TweeLog ( ) { int x, t; x=1; t=0; while ( x < 1000 ) x = 2*x; t = t+1; } return t; (int n) teller telt hoe vaak er wordt verdubbeld n accolades smeden twee opdrachten tot één body

5 Herhalen met een teller
public void tekenLevens () { int t; t=0; while ( t<10 ) Vector2 pos = new Vector2(t*heart.Width, 50.0f); spriteBatch.Draw(heart, pos, Color.White ); t = t+1; } teller bepaalt het aantal herhalingen en komt goed van pas in de body

6 Publieksvraag Maak een methode ‘macht’ met twee parameters:
grondtal (reëel getal) exponent (natuurlijk getal) Uitkomst moet zijn: de waarde van grondtalexponent

7 Machtsverhef-methode
public double macht (double x, int n) { double result; int t; t = 0; result = 1; while ( t<n ) { result = result * x ; t = t+1 ; } return result; }

8 Syntax van while-opdracht

9 Gebruik van bool-expressies
Als voorwaarde van een while-opdracht Rechts van een toekenningsopdracht Als resultaat van een methode while (x<10) ... bool b; b = x<10 ; return x<10 ;

10 waarheidswaarde als resultaat
Publieksvraag Schrijf een methode ‘deelbaar’, die antwoordt of x deelbaar is door d waarheidswaarde als resultaat private static bool deelbaar (int x, int d) { } return ; x%d == 0

11 Publieksvraag Schrijf een methode ‘kleinsteDeler’, die antwoordt wat de kleinste deler is van x probeer ze één voor één public int kleinsteDeler (int x) { } int d; d = 2; while ( x%d != 0 ) d = d+1; return d;

12 wordt vermenigvuldigd met
Variabelen aanpassen Afgekorte notaties: x = x * 2 ; nieuwe waarde wordt oude waarde wordt vermenigvuldigd met x = x * 2 ; x *= 2 ; wordt vermeerderd met x = x + 5 ; x += 5 ; wordt opgehoogd x = x + 1 ; x += 1 ; x ++ ;

13 Herhaling met een teller: while
int t = 0; while ( t < x ) { // doe iets nuttigs met t // ... t++; }

14 Herhaling met een teller: for
Kortere versie, omdat tellers zo vaak voorkomen for ( int t = 0; t < x; t++ ) { // doe iets nuttigs met t // ... }

15 for-opdracht int t ; for ( t=0 ; t<x ; t++ )
eenmalige initialisatie voorwaarde om door te gaan stap naar de volgende int t ; for ( t=0 ; t<x ; t++ ) Console.WriteLine( "Kolom: " + t ); for ( t=1 ; t<=x ; t++ ) for ( t=x ; t>=0 ; t -- ) for ( t=2 ; !deelbaar(x,t) ; t++ )

16 Syntax van for-opdracht

17 Herhaalde herhaling Body van een for-opdracht is een opdracht
Dat kan zelf ook weer een for-opdracht zijn! int x, y; for (y=0; y<10; y++) for (x=0; x<10; x++) { Vector2 pos = new Vector2( heart.Width*x, heart.Height*y); spriteBatch.Draw(heart, pos, Color.White); } y

18 Deze opdracht komt nooit aan de beurt!
Extreme gevallen Nul keer herhalen Oneindig vaak herhalen for (y=0; y<0; y++) spriteBatch.Draw(…); while (true) audio.Play(); spriteBatch.draw(...); Deze opdracht komt nooit aan de beurt!

19 Onbedoelde oneindigheid
x=1; aantal = 0; while (aantal<10) x = x*2; aantal = aantal+1; accolades vergeten... { }

20 deze waarschuwing is theoretisch onmogelijk!
Compiler-meldingen Foutmeldingen variabele niet gedeclareerd puntkomma vergeten ... Waarschuwingen unreachable code variable is never used while-statement doesn’t terminate deze waarschuwing is theoretisch onmogelijk!

21 Het Halting-problem is onoplosbaar
bool stopt (string filenaam) { // check of de code in // bestand ‘filenaam’ stopt ... } Nietes! Deze methode lost het op: void gemeen (string filenaam) { while ( stopt(filenaam) ) } Ha! En dit dan? Wat komt er dan uit: ? stopt( "Gemeen.cs" )

22 Het Halting-problem is onoplosbaar
Stel dat “Gemeen” wél stopt ...dus stopt levert true op ...dus gemeen blijft hangen! Stel dat “Gemeen” niet stopt ...dus stopt levert false op ...dus gemeen stopt direct! tegenspraak! dus stopt kan helemaal niet bestaan

23 Andere Halting-achtige problemen
Wordt een opdracht ooit uitgevoerd? Is een programma een virus? …en hoe werkt een virus-checker dan? óf te streng: keurt teveel af óf te coulant: laat sommige door lastig gevaarlijk


Download ppt "Gameprogrammeren: Herhalingen"

Verwante presentaties


Ads door Google