De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Voorbeeld: Simulatie van bewegende deeltjes

Verwante presentaties


Presentatie over: "Voorbeeld: Simulatie van bewegende deeltjes"— Transcript van de presentatie:

1 Voorbeeld: Simulatie van bewegende deeltjes
Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten

2 Samenhang van objecten
Simulatie Samenhang van objecten Button geërfd van Form zelf gedeclareerd r1 r2 r3 stap auto sim Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van UserControl x y dx dy brush Deeltje x y dx dy brush Deeltje x y dx dy brush Deeltje

3 Overzicht van methoden
class Simulatie : Form { class Ruimte: UserControl { class Deeltje { Button stap, auto; Ruimte r1, r2, r3; Deeltje d1, d2, d3; int x, y, dx, dy; Brush brush; Ruimte() { d1 = new Deeltje(); Paint += TekenRuimte; } Simulatie() { stap = new Button(); r1 = new Ruimte(); stap.Click = stap_click; } void TekenDeeltje ( Graphics gr) { gr . FillEllipse ( this.brush , this.x – 4, this.y – 4 , 9 , 9 ); } void TekenRuimte (object o, PaintEventArgs pea ) { Graphics gr = pea.Graphics; d1.TekenDeeltje(gr); d2.TekenDeeltje(gr); d3.TekenDeeltje(gr); } void DoeStap ( ... ) { this.x += this.dx; this.y += this.dy; if (this.x<0) { this.x = - this.x; this.dx = - this.dx; } void stap_click (object o, EventArgs ea) { r1.DoeStap( ); r2.DoeStap( ); r3.DoeStap( ); } void DoeStap( ) { d1.DoeStap(this.Size); d2.DoeStap(this.Size); d3.DoeStap(this.Size); this.Invalidate(); } } } }

4 Methoden van klasse Deeltje
class Deeltje { } int x, y, dx, dy; Brush brush; public void DoeStap ( ... ) { this.x += this.dx; this.y += this.dy; if (this.x<0) { } this.x = – this.x; this.dx = – this.dx; if (this.y<0) { ... } if (this.x>maxX) { ... } if (this.y>maxY) { ... }

5 zich zelfstandig ontwikkelende lijn van gebeurtenissen
Animatie Animatie: “tekenfilm” programma toont automatisch veranderende beelden Gemakkelijk te programmeren met gebruik van de klasse “draadje” Thread zich zelfstandig ontwikkelende lijn van gebeurtenissen

6 en keert dan direct terug
Maak een animatie Thread animatie; animatie = new Thread ( this.run ); animatie . Start ( ); this . run ( ); roept de methode aan die bij constructor is meegegeven en keert dan direct terug (terwijl de methode nog bezig is)

7 De methode run class Simulatie : Form { oneindige herhaling!
} oneindige herhaling! void run ( ) { while (true) { } this . stap_Click (this, null ); Thread . Sleep (50); milliseconden }

8 Starten van de animatie
class Simulatie : Form { } Thread animatie; bool beweegt; void auto_Click(object o, EventArgs ea ) { if (beweegt) { auto.Text = "Start"; beweegt = false; } else { animatie = new Thread( this.run ); animatie . Start ( ); auto.Text = "Stop"; beweegt = true; }

9 De methode run nogmaals
class Simulatie : Form { } oneindige herhaling! eindige herhaling. void run ( ) { while (true) ( this.beweegt ) { } this . stap_Click (this, null ); Thread . Sleep (50); milliseconden }

10 Handiger Starten van de animatie
class Simulatie : Form { } Thread animatie; bool beweegt; void auto_Click(object o, EventArgs ea ) { if (beweegt) { auto.Text = "Start"; beweegt = false; } else { (animatie != null ) animatie = null; animatie = new Thread( this.run ); animatie . Start ( ); auto.Text = "Stop"; beweegt = true; }

11 De waarde null null : verwijzing naar niks
x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type

12 Hoofdstuk 9.3-4 Strings en arrays

13 Primitieve types int gehele getallen -17, -5, 0, 3, 178
double reëele getallen 3.141, 2.0, -1.5E8 bool waarheidswaarden false, true char losse symbolen ’A’, ’B’, ’Z’, ’a’, ’4’, ’#’, ’:’

14 string versus char string char klasse primitief type
object-verwijzing directe waarde nul, een of meer… precies één symbool "" "A" "hello" ’A’ operatoren, methoden properties, indexer operatoren == , == , + , <= Substring, ToUpper Length s[i]

15 String-methodes int Length bool Equals (string s)
string Concat (string s) string Substring (int start) string Substring (int start, int aantal) string ToUpper ( ) string ToLower ( )

16 concat en substring String s, t, u, v, w; s = "ham"; t = "burger";
hamburger burger burg s = "ham"; t = "burger"; u = s.Concat(t); s + t ; v = u.Substring(3); w = u.Substring(3, 4); vanaf aantal hamburger

17 Publieksvraag Schrijf een methode Beginstuk met twee string-parameters x en y die bepaalt of x het beginstuk van y is Schrijf een methode Onderdeel met twee string-parameters x en y die bepaalt of x ergens als substring van y voorkomt

18 Methode Beginstuk kort lang public static bool Beginstuk
(string x, string y) { } return x == y . Substring ( 0, x.Length ) ;

19 Methode Onderdeel public static bool Onderdeel (string x, string y) {
} int t; for (t=0; t<y.Length; t++) if ( ) return true; Beginstuk(x, ) y . Substring(t) return false;

20 Meer string-methodes bool StartsWith (string s)
bool EndsWith (string s) int IndexOf (string s) public static bool Onderdeel(string x, string y) { return y.IndexOf(x) >= 0 ; }

21 string versus array Klasse Type met speciale syntax Indexer -notatie
string s = new string(); char[] a = new char[10]; Indexer -notatie Speciale index-notatie c = s[2]; s[3] = c; c = a[2]; a[3] = c; Speciale quote-notatie s = "hallo"; Property s.Length Property a.Length Methoden s.IndexOf(t); s.Substring(3,2);

22 Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’, "some text" ); // hint: gebruik een for opdracht

23 Tel symbool-frequentie
public static int Freq(char x, string s) { int aantal; aantal = 0; for (int t=0; t<s.Length; t++) if ( ) aantal++; s[t]==x return aantal; }

24 Geschiedenis van char 1970s: 6 bits = 64 symbols 26 letters, 10 digits, 28 leestekens 1980s: 7 bits = 128 symbols +26 lowercase, +5 leestekens, 33 control 1990s: 8 bits = 256 symbols +letters met accenten 2000s: 16 bits = symbols +Grieks, Cyrillisch, Japans, Devangari, ... ASCII IBM/DOS ANSI/ISO Unicode

25 Character coding code 0 code 32 code 48 code 65 code 97 code 127

26 char bijzonderheden alfabetisch geordend char c; if ( ’A’<=c && c<=’Z’ ) … converteerbaar naar int int n; n = c + 32; en terug c = (char) n;

27 Conversies Conversie naar “kleinere” waarde is gevaarlijk
Conversie naar “grotere” waarde kan altijd double d; int n; d = n; int n; char c; n = c; Control x; Button b; x = b; Conversie naar “kleinere” waarde is gevaarlijk n = (int) d; c = (char) n; b = (Button) x;

28 Speciale char-waarden
Letterlijk symbool ’A’ ’&’ Speciaal symbool ’\n’ ’\t’ Het quote-symbool ’\’’ ’\”’ Het backslash-symbool ’\\’ twee tekens in de broncode, toch één character!


Download ppt "Voorbeeld: Simulatie van bewegende deeltjes"

Verwante presentaties


Ads door Google