De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.

Verwante presentaties


Presentatie over: "Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken."— Transcript van de presentatie:

1 Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken

2 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

3 Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie; while)(expressieopdrachtblok for)(expropdrachtexpr ;;

4 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

5 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

6 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

7 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

8 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

9 Button Button b; b.Text ="ok"; new Button b; (bool)true const bool true; bool while (true) t=1; int t( ) int t=1; t==t+1 t=t+1; class A : Size this.Size= this.ClientSize; Size s (Size t) new Size(x,y) Type / Expr / Opdr / Decl / Head / X Methode

10 while ( t

11 while ( t

12 for (int t=0; t

13 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

14 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) < ) veiliger:

15 Stralen class Programma { } public static void Main( ) { Stralen s = new Stralen(); s.Text = "Stralen"; Application.Run(s); }

16 Stralen Stralen( ) { class Stralen { } int x, y; void beweeg (obj o, MEA mea) { void klik (obj o, EA ea) { void teken (obj o, PEA pea) { } } } int n=1; } this.Paint += teken; this.MouseMove += beweeg; this.MouseClick += klik; this.x = mea.X; this.y = mea.Y; this.Invalidate(); this.n ++; this.Invalidate(); Graphics g = pea.Graphics; g.FillEllipse( Brushes.Black, this.x-20, this.y-20, 40, 40); for (int t=0; t<=this.n; t++) g.DrawLine( Pens.Black, this.x, this.y, this.Width * t / this.n, this.Height ); : Form

17 Tekenen of opleveren? ngr.DrawString (x,...) nres.Text += x; resultaat komt meteen op het scherm nreturn x; resultaat wordt teruggegeven aan de aanroeper, die zelf kan beslissen wat hij ermee doet

18 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

19 Grafische User Interface (GUI) n8 declaraties n8 keer new... n8 keer this.Controls.Add(...) n42 property-toekenningen TrackBar Button Label Panel n8 declaraties n8 keer new... n8 keer this.Controls.Add(...) n42 property-toekenningen

20 Visual Studio Design Mode

21 Code gegenereerd door Visual Studio Designer namespace Mixer { static class Program { static void Main() { Application.Run (new Mixer()); } namespace Mixer { partial class Mixer : Form { // constructor Mixer() { this.InitializeComponent(); } // event-handlers void klik(object o, EventArgs ea) { } namespace Mixer { partial class Mixer { #region generated code void InitializeComponent() { this.b = new Button(); b.Text = " zwart " ; b.Click += this.klik; this.Controls.Add(this.b); } #endregion private Button b; } Program.csMixer.csMixer.Designer.cs

22 Hoofdstuk 7 Keuze verplicht…

23 Opdrachten voorwaardelijk uitvoeren opdracht wordt alleen uitgevoerd als voorwaarde geldt if (temperatuur<0) uitvoer.Text = "Het vriest!"; opdracht wordt steeds opnieuw uitgevoerd zolang voorwaarde geldt if while (temperatuur<0) temperatuur += 5;

24 Twee alternatieven opdracht wordt alleen uitgevoerd als voorwaarde niet geldt if (temperatuur<0) uitvoer.Text = "Het vriest!”; else uitvoer.Text = "Het dooit.";

25 Keuze is ook een opdracht if (n%3==0) uitvoer.Text += (n + " drievoud"); else uitvoer.Text += (n + " geen drievoud"); for (n=1; n<20; n++) if-opdracht dient in z’n geheel als body van for-opdracht één opdracht dus geen accolades nodig!

26 Meer opdrachten als body accolades maken twee opdrachten tot één body if (temperatuur<0) lab1.Text = "Het vriest"; lab2.Text = "Koud he!"; {}{}

27 Meerdere alternatieven if (leeftijd<65) uitvoer.Text = "Vol tarief"; else uitvoer.Text = "Senioren"; if (leeftijd<12) uitvoer.Text = "Railrunner"; else if (leeftijd<4) uitvoer.Text = "Gratis"; else if-opdracht dient in z’n geheel als body van else-deel if-opdracht dient in z’n geheel als body van else-deel

28 Meerdere alternatieven if (leeftijd<4) uitvoer.Text = "Gratis"; else if (leeftijd<12) uitvoer.Text = "Railrunner"; else if (leeftijd<65) uitvoer.Text = "Vol tarief"; else uitvoer.Text = "Senioren"; uitzondering op gewoonte om body in te springen uitvoer.Text = "Railrunner"; else if (leeftijd<65) uitvoer.Text = "Vol tarief"; else uitvoer.Text = "Senioren";

29 private string tarief(int leeftijd) { } Meerdere alternatieven if (leeftijd<4) return "Gratis"; else if (leeftijd<12) return "Railrunner"; else if (leeftijd<65) return "Vol tarief"; else return "Seniorenkaart"; if (leeftijd<4) return "Gratis"; if (leeftijd<12) return "Railrunner"; if (leeftijd<65) return "Vol tarief"; return "Seniorenkaart"; bij return-opdracht is methode beëindigd

30 CirkelGroei class Cirkel : Form { } Cirkel() { } kleiner = new Button(); groter = new Button(); kleiner.Text = "Kleiner"; kleiner.Location =...; // etc. this.Controls.Add(kleiner); this.Controls.Add(groter); this.Paint += this.teken; this.kleiner.Click += this.klik; this.groter.Click += this.klik; Button kleiner, groter; int straal = 100;

31 CirkelGroei class Cirkel : Form { } void teken(object o, PEA pea) { } Button kleiner, groter; int straal = 100; void klik(object obj, EA ea) { } pea.Graphics.FillEllipse(, Brushes.Green, 150–this.straal, 150–this.straal, 2*this.straal, 2*this.straal ); this.straal –= 10; this.Invalidate(); if (obj==kleiner) this.straal += 10; if (obj==groter) && straal>10) && straal<150)

32 Geheime tekening class Geheim : Form { void teken (object o, PEA pea) { pea.Graphics.FillEllipse(Brushes,Yellow,10,10,100,100); pea.Graphics.DrawArc(Pens.Blue,25,25,50,50,45,90); } bool open; Geheim ( ) { open = false; this.Paint += this.teken; } if (open) { } TextBox pass; pass = new TextBox(); this.Controls.Add(pass); pass.TextChanged += this.controleer; }

33 Geheime tekening class Geheim : Form { void controleer (object o, EA ea) { } bool open; Geheim ( ) { open = false; this.Paint += this.teken; } TextBox pass; pass = new TextBox(); this.Controls.Add(pass); pass.TextChanged += this.controleer; } open = true; this.Invalidate(); if (pass.Text == sleutel) { } const string sleutel = "geheim"; pass.Visible=false;

34 Thermometer class Thermo : Form { } Thermo() { } TrackBar min, temp, max; Button reset; void temp_Scroll(object o, EA ea) { this.InitializeComponent(); temp.Scroll += temp_Scroll; reset.Click += reset_Click; } int x = this.temp.Value; if (x < this.min.Value) this.min.Value = x; void reset_Click(object o, EA ea) { } this.min.Value = this.temp.Value; partial

35 Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen throw catch

36 Voorbeeld van Exception s = invoer. Text; n = int. Parse (s); uitvoer. Text = ( "kwadraat is " + n*n ); try { } catch ( Exception e ) { uitvoer. Text = ( s + " is geen getal" ); } kan een Exception opwerpen opvangen van het probleem

37 Meerdere catch-delen // open een file // en lees de inhoud try { } catch ( FileNotFoundException f ) { uitvoer. Text = ( s + " bestaat niet" ); } catch ( IOException i ) { uitvoer. Text = ( s + " is onleesbaar" ); } als er een Exception optreedt, wordt de eerste catch gekozen met een passend type

38 Grafiek-tekenprogramma Panel : grafiek van een parabool y = a∙x 2 + b∙x + c Label : nulpunten volgens abc-formule TextBox : ingevoerde waarden abc

39 Parabool: tekst ingevoerd void invoer_TextChanged(object box, EventArgs ea) { } a = double.Parse(aBox.Text); b = double.Parse(bBox.Text); c = double.Parse(cBox.Text); TextBox aBox, bBox, cBox; double a, b, c; uitvoer.Text = this.oplossingen(); grafiek.Invalidate(); try { } catch (Exception e) { } box. BackColor = Color.Red; uitvoer.Text = e.Message; ((TextBox) )

40 Parabool: oplossingen string oplossingen ( ) { } return ( (–b –wortel)/noemer + " en " +(–b+wortel)/noemer ); wortel = Math.sqrt(discriminant); discriminant = b*b – 4*a*c; noemer = 2*a; if (discriminant<0) return "geen nulpunten"; else { } -b ± b 2 -4ac 2a double discriminant, noemer, wortel;

41 Parabool: functie uitrekenen double functie ( ) { return a * x * x + b * x + c; }

42 Parabool: grafiek tekenen void grafiek_Paint (object o, PaintEventArgs pea ) { for ( x=0 ; x<500 ; x++ ) { } y = this.functie ( x ); gr.DrawLine(Pens.Blue,,, x, y );x-1 oldy oldy = y; oldy = 0; if (x>0) schaal = 0.03; xw = schaal * x ; w w y = yw / schaal ; ( -250) (int) (250-( )) int x, y,oldy; double xw, yw, schaal; } Graphics gr = pea.Graphics;

43 Overzicht programma- constructies Opdrachten nToekenning nAanroep void-methode nreturn-opdracht nwhile-opdracht nfor-opdracht n{... } - bundeling nif-opdracht ntry/catch-opdracht Expressies n Constante n Variabele n Aanroep methode n Expressie met operatoren n Expressie met haakjes n new-expressie n this n (cast)-conversie kun je doenkun je uitrekenen

44 Overzicht programma- constructies Declaratie nLokale variabele voor tijdelijk gebruik nMember permanent deel van het object nParameter om waarden door te spelen aan methode Type n Primitief type uint udouble ubool n Object-type uColor, String enz. uTextBox, Button enz. uForm, HalloForm, enz. geeft het type van variabelen waarde-verzameling van een expressie

45 Wat gaan we doen? college Tent. 1 Tent. 2 Tent. 3 college prakt. 1 prakt. 2 prakt. 3 prakt. 1 prakt. prakt. 1 prakt. prakt. 2 prakt wo 15-17vr 13-15< werkcoll nNu: Prakticum BBG 106 – 103 – 115 – 175 – 112 – 109 nVrijdag: deeltentamen S/T/UV/W


Download ppt "Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken."

Verwante presentaties


Ads door Google