1 / 16

Iteration og parametrisering

Iteration og parametrisering. Modeller, objekter og opførsel. Nye begreber. Repetition (iteration) gentagelse af opførsel Parametrisering generalisering af kode. Model. Position : (x,y) Vinkel : v Farve : color Pen status : up/down. (0,0). 270. World. 0 (360). 180. 90.

mark-olsen
Download Presentation

Iteration og parametrisering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Iteration og parametrisering Modeller, objekter og opførsel

  2. Nye begreber • Repetition (iteration) • gentagelse af opførsel • Parametrisering • generalisering af kode

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

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

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

  6. Gentagelser //tegn en firkant move(100); turn(90); move(100); turn(90); move(100); turn(90); 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)

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

  8. Øvelse 1 • Hvordan tegner man en ligesidet trekant? • Hvordan tegner man en cirkel?

  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) { } } ?

  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); } } }

  11. Parameter Argument 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); } } }

  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) { ... } }

  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) { ... } }

  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!

  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).

  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.

More Related