De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 7 Herhaling Nieuw!. while ( x<1000 ) x = 2*x; public void paint (Graphics gr) { int x; x = 1; gr. drawString( “” + x, 10, 10); } Opdrachten.

Verwante presentaties


Presentatie over: "Hoofdstuk 7 Herhaling Nieuw!. while ( x<1000 ) x = 2*x; public void paint (Graphics gr) { int x; x = 1; gr. drawString( “” + x, 10, 10); } Opdrachten."— Transcript van de presentatie:

1 Hoofdstuk 7 Herhaling Nieuw!

2 while ( x<1000 ) x = 2*x; public void paint (Graphics gr) { int x; x = 1; gr. drawString( “” + x, 10, 10); } Opdrachten herhalen body wordt steeds opnieuw uitgevoerd zolang de voorwaarde geldig is X12481632641282565121024

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

4 Herhalen met een teller public void paint (Graphics gr) { int t; t=0; while ( t<10 ) { gr.drawString( “:-)”, 0, 20*t ); t = t+1; } teller bepaalt het aantal herhalingen en komt goed van pas in de body

5 Publieksvraag nSchrijf een methode driewerf met een String-parameter, die 3 herhalingen ervan oplevert nSchrijf een methode veelwerf met een String-parameter, en een getal n die n herhalingen van de String oplevert this.driewerf(“Hoera!”)“Hoera!Hoera!Hoera!”

6 while ( t<n ) { t = t+1 ; } t = 0; private static String veelwerf (String x, int n) { Veelwerf-methode return result; result = result + s ; result = “”; int t; String result; }

7 Publieksvraag nMaak een methode macht met twee parameters ugrondtal (reëel getal) uexponent(natuurlijk getal) die de waarde oplevert van grondtal exponent

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

9 Vergelijk-operatoren n<kleiner dan n<=kleiner dan of gelijk aan n>groter dan n>=groter dan of gelijk aan n==gelijk aan n!=ongelijk aan x=5 x wordt 5 ! x==5 is x gelijk aan 5 ?

10 Expressies nExpressie met een getal als waarde nExpressie met een tekst als waarde nExpressie met een waarheid als waarde 2 * (lengte + breedte) “Hallo ” + persoon teller < exponent type int type boolean type String primitief object- primitief

11 Boolean expressies nVergelijken van waarden nCombineren van andere boolean expressies met logische operatoren u&&and u||or u !not x <= y x 0 ! (x==0 && y==0)x!=0 || y!=0 George Boole (1815-1864)

12 Syntax van opdrachten while)(expressieopdracht =variabeleexpressie; opdracht object.(), ;expressie methode naam returnexpressie; blok

13 Constanten nConstanten met een getal als waarde nConstanten met een tekst als waarde nConstanten met een waarheid als waarde 2 “Hallo” true -5137 “@#$%”“123”“” false “true”

14 Gebruik van boolean expressies nAls voorwaarde van een while-opdracht nRechts van een toekenningsopdracht nAls resultaat van een methode while (x<10)... boolean b; b = x<10 ; return x<10 ;

15 Publieksvraag nSchrijf een methode deelbaar, die antwoordt of x deelbaar is door d private static boolean deelbaar (int x, int d) { } x%d == 0return ; waarheidswaarde als resultaat

16 Publieksvraag nSchrijf een methode kleinsteDeler, die antwoordt wat de kleinste deler is van x private static int kleinsteDeler (int x) { } int d; d = 2; while ( x%d != 0) d = d+1; return d ; probeer ze één voor één

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

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

19 for-opdracht eenmalige initialisatie int t ; for ( t=0 ; t<x ; t++ ) voorwaarde om door te gaan stap naar de volgende gr.drawString( “#”, 0, t*10 ); for ( t=1 ; t<=x ; t++ )for ( t=x ; t>=0 ; t -- )for ( t=2 ; !deelbaar(x,t) ; t++ )

20 Syntax van opdrachten for)(expropdrachtexpr ;; while)(expressieopdracht =variabeleexpressie; opdracht object.(), ;expressie methode naam returnexpressie; blok

21 Syntax van opdrachten for)(expropdrachtexpr ;; while)(expressieopdracht returnexpressie; blok

22 Herhaalde herhaling nBody van een for-opdracht is een opdracht dat kan zelf ook een for-opdracht zijn! int x, y; for (y=0; y<10; y++) for (x=0; x<10; x++) gr.drawString( “+”, 10*x, 10*(y+1) ); y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

23 Extreme gevallen nNul keer herhalen for (y=0; y<0; y++) gr.drawString(“hoi”, 10, 10); nOneindig vaak herhalen while (true) audio.play( ); gr.drawString(“hoi”, 10, 10); deze opdracht komt nooit aan de beurt!

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

25 Compiler-meldingen nFoutmeldingen uvariabele niet gedeclareerd upuntkomma vergeten u... nWaarschuwingen uunreachable code ustatement has no effect uwhile-statement doesn’t terminate deze waarschuwing is theoretisch onmogelijk!

26 Het Halting-problem is onoplosbaar boolean stopt (String filenaam) {.... } void gemeen (String filenaam) { while ( stopt(filenaam) ) x++; } Ha! En dit dan? Nietes! Deze methode lost het op: stopt( “Gemeen.java” ) wat komt er dan uit: ?

27 Het Halting-problem is onoplosbaar void gemeen (String filenaam) { while ( stopt(filenaam) ) x++; } stopt( “Gemeen.java” ) Twee mogelijkheden: n“Gemeen” stopt wel n“Gemeen” stopt niet...dus stopt levert true op...dus gemeen bijft hangen!...dus stopt levert false op...dus gemeen stopt direct! tegenspraak! dus stopt kan helemaal niet bestaan

28 Andere Halting -achtige problemen nWordt een opdracht ooit uitgevoerd? nIs een programma een virus? en hoe werkt een virus-checker dan? nòf te streng: keurt teveel af nòf te coulant: laat sommige door lastig gevaarlijk

29 Voorbeeldprogramma: Renteberekening door de gebruiker in te vullen TextField -objecten TextField-objecten hebben een ActionListener

30 public class Rente extends Applet implements ActionListener { TextField startT, renteT; public void init ( ) {...} public void paint (Graphics gr) {... } public void actionPerformed (...) { this.repaint(); } Overzicht van klasse Rente object-variabelen her-definities Applet-methoden nakomen van implements-belofte

31 public void init ( ) { startT = new TextField(“100”, 8 ); renteT = new TextField(“5”, 4 ); this. add(startT); this. add(renteT); startT. addActionListener (this); renteT. addActionListener (this); } Rente ’s methode init creëren van interactie- objecten opbouw van user-interface koppelen van event-listeners

32 public void paint (Graphics gr) { } Rente ’s methode paint startT.getText() renteT.getText() start = Integer.parseInt( ); rente = Integer.parseInt( ); for (jaar=0; jaar<=10; jaar++) { gr.drawString( “ jaar: ”+jaar + “ bedrag: ”+kapitaal,... ); } kapitaal = start; kapitaal *= (1 + 0.01*rente) ; int start, rente,jaar; double kapitaal;

33 Publieksvraag nSchrijf een methode wortel, die de wortel trekt van een niet-negatieve double nZonder Math.sqrt te gebruiken! nGebruik de Newton-benadering: als y een benadering is van sqrt(x), dan is het gemiddelde van y en x/y een betere benadering

34 private static double wortel (double x) { } Worteltrek-methode double y; y = 1; return y; y = (y + x/y) / 2 ; while ( y*y != x ) stopt dit? wiskundige: nee, gelijkheid geldt pas in limiet programmeur: ja, want reken- precisie is beperkt informaticus: nee, want afrond- fouten verhinderen bereiken limiet while ( Math.abs (y*y - x) <0.000001 ) veiliger:

35 Opbouw herhaling nInitialisatie nHerhaalde aanpassing nGebruik van het resultaat kap=start;y=1;tot=0; kap*=(1+0.01*rente); y=(y+x/y)/2;tot+=x; gr. drawString (“”+kap); return y; sb. setValue ( tot ); res=“”; res+=“|”; return res;

36 Tekenen of opleveren? ngr.drawString (x,...) resultaat komt meteen op het scherm nreturn x; resultaat wordt teruggegeven aan de aanroeper, die zelf kan beslissen wat hij ermee doet flexibeler handig voor “simpele” resultaten handig voor “ingewikkelde” tekeningen

37 Overzicht programma- constructies Opdrachten nToekenning nAanroep void-methode nreturn-opdracht nwhile-opdracht nfor-opdracht n{... } - bundeling Expressies n Constante n Variabele n Aanroep methode n Expressie met operatoren n Expressie met haakjes n new-expressie kun je doenkun je uitrekenen


Download ppt "Hoofdstuk 7 Herhaling Nieuw!. while ( x<1000 ) x = 2*x; public void paint (Graphics gr) { int x; x = 1; gr. drawString( “” + x, 10, 10); } Opdrachten."

Verwante presentaties


Ads door Google