Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Iteration og parametrisering

Lignende præsentationer


Præsentationer af emnet: "Iteration og parametrisering"— Præsentationens transcript:

1 Iteration og parametrisering
Modeller, objekter og opførsel

2 Nye begreber Repetition (iteration) Parametrisering
gentagelse af opførsel Parametrisering generalisering af kode dIntProg, E12

3 Model Position: (x,y) Vinkel: v Farve: color World Pen status: up/down
(0,0) Position: (x,y) Vinkel: v Farve: color Pen status: up/down 270 World 0 (360) 180 90 (800,600) ... En turtels tilstand: - (position, vinkel, farve, bredde, ...) - starttilstand: ((x, y), 0, “black”, up) dIntProg, E12

4 Model Turtle SkilledTurtle … move(int d) moveTo(int x, int y)
turn(double a) turnTo(double a) penUp() penDown() erase() SkilledTurtle square(int length) spiral(...) ... dIntProg, E12

5 SkilledTurtle public class SkilledTurtle extends Turtle {
public void square100() { move(100); turn(90); } ... dIntProg, E12

6 Syntax for for-løkker findes i manualen (afsnit 6.2.3)
Gentagelser //tegn en firkant move(100); turn(90); //tegn en tolvkant ... (suk!) //tegn en firkant for ( int i= 0; i<4; i++ ) { move(100); turn(90); } //tegn en tolvkant for ( int i= 0; i<12; i++ ) { move(100); turn(30); } Syntax for for-løkker findes i manualen (afsnit 6.2.3) dIntProg, E12

7 Tegneprogram med løkke
public class SkilledTurtle extends Turtle { public void square100() { for ( int i= 0; i<4; i++ ) { move(100); turn(90); } ... dIntProg, E12

8 Øvelse 1 Hvordan tegner man en ligesidet trekant?
Hvordan tegner man en cirkel? dIntProg, E12

9 Parametrisering (specifikation)
Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse. public class SkilledTurtle extends Turtle { /** tegner et kvadrat med sidelængde length */ public void square(int length) { } ? dIntProg, E12

10 Parametrisering (implementation)
Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse. public class SkilledTurtle extends Turtle { /** tegner et kvadrat med sidelængde length */ public void square(int length) { for (int i= 0; i < 4; i++) { move(length); turn(90); } dIntProg, E12

11 Parametrisering (implementation)
Det ville være smartere at lave en metode der kan tegne kvadrater af vilkårlig størrelse. Parameter public class SkilledTurtle extends Turtle { /** tegner et kvadrat med sidelængde length */ public void square(int length) { for (int i= 0; i < 4; i++) { move(length); turn(90); } Argument dIntProg, E12

12 Øvelse 2 Skriv en metode der tegner en polygon.
Lad antal sider og sidelængden være parametre til metoden. public class SkilledTurtle extends Turtle { ... /** * tegner en d-kant med sidelængde length */ public void polygon(int d, int length) { } dIntProg, E12

13 Øvelse 3 Benyt metoden polygon til at konstruere metoder der kan tegne et kvadrat henholdsvis en ligesidet trekant. class SkilledTurtle extends Turtle{ ... public void polygon(int d, int length) { ... } /** tegner et kvadrat med sidelængde length */ public void square(int length) { } /** tegner en ligesidet trekant med * sidelængde length */ public void triangle(int length) { dIntProg, E12

14 Pointer (1) Det kan betale sig at lave gode generelle operationer som kan genbruges i mange situationer. Parametrisering er nøglen til at lave generelle operationer. Det er svært at ‘opfinde’ de gode generelle operationer (konkret  generelt), men opsøg dem! dIntProg, E12

15 Pointer (2) Når man skal benytte en metode er det vigtigt med forståelse af hvad operationen gør. Når man skal programmere en metode, skal man tage stilling til hvordan denne skal realiseres (implementeres). dIntProg, E12

16 Pointer (3) Typisk er man både anvender og implementør af en metode, men det er vigtigt at skelne skarpt mellem de to syn. Når man anvender en metode skal man ikke tænke på hvordan denne er realiseret. Når man implementerer en metode skal man ikke tænke på hvad denne skal bruges til. Efterlevelse af dette enkle princip er en af nøglerne til at kunne lave gode programmer. dIntProg, E12


Download ppt "Iteration og parametrisering"

Lignende præsentationer


Annoncer fra Google