De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)

Verwante presentaties


Presentatie over: "Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)"— Transcript van de presentatie:

1 Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Oefening (6 werkcolleges) Praktijk (14 keer, 3 inleveropgaven) 13-15 wo 15-17 <24 11-13 vr 13-15 15-17 prakt. college prakt. college werkcoll prakt. college prakt. college werkcoll prakt. 1 college Tent. 1 prakt. 1 college prakt. 1 college werkcoll prakt. 2 college prakt. 2 college werkcoll prakt. 2 college Tent. 2 prakt. 2 college prakt. 3 college werkcoll prakt. 3 college prakt. 3 college werkcoll Tent. 3

2 Tentamen vrijdag 29 sept 11-13 uur
In Educatorium, zaal Beta Hoofdstuk 1-6, behalve 2.8, 4.3, 6.3-5 Standaardlibraries (appendix D in diktaat) mag je erbij gebruiken (wordt uitgedeeld bij het tentamen) Op de website: uitwerkingen van werkcollege-opgaven oude tentamens met uitwerkingen

3 Opdrachten herhalen public void tekenScherm (object o, PEA pea)
{ int x; x = 1; pea.Graphics . DrawString ( x.ToString() , ft, br, 10, 10); } zolang de voorwaarde geldig is while ( x<1000 ) x = 2*x; body wordt steeds opnieuw uitgevoerd X 1024 512 256 128 64 16 32 4 1 2 8

4 Veelwerf-methode private static string veelwerf (string x, int n) {
string result; int t; t = 0; result = ""; while ( t<n ) { t = t+1 ; } result = result + x ; return result; }

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

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

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

8 Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; return expressie ; while ) ( expressie opdracht for ) ( expr opdracht ; blok

9 Voorbeeldprogramma: Renteberekening
door de gebruiker in te vullen TextBox -objecten Button met een Click handler Label met het resultaat

10 Rente-programma private void knop_Click(object o, EventArgs ea) {
double bedrag = double.Parse( bedragBox.Text ) ; double rente = double.Parse( renteBox.Text ); resultaat.Text = ""; int jaar; for (jaar=0; jaar<=10; jaar++) { resultaat.Text += "na" + jaar + "jaar" + bedrag + "\n"; bedrag *= (1+0.01*rente); } }

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

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

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

14 Bool expressies Vergelijken van waarden
x <= y Combineren van andere bool-expressies met logische operatoren && and || or ! not George Boole ( ) x<0 && y>0 ! (x==0 && y==0) x!=0 || y!=0

15 Gebruik van bool expressies
Als voorwaarde van een while-opdracht while (x<10) ... Rechts van een toekenningsopdracht bool b; b = x<10 ; Als resultaat van een methode return x<10 ;

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

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

18 for-opdracht int t ; for ( t=0 ; t<x ; t++ )
eenmalige initialisatie voorwaarde om door te gaan stap naar de volgende int t ; for ( t=0 ; t<x ; t++ ) gr.DrawString( "#", br, ft, 0, t*10 ); for ( t=1 ; t<=x ; t++ ) gr.DrawString( "#", br, ft, 0, t*10 ); for ( t=x ; t>=0 ; t -- ) gr.DrawString( "#", br, ft, 0, t*10 ); for ( d=2 ; !deelbaar(x,d) ; d++ ) lege body ;

19 Herhaalde herhaling Body 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( "+", br, ft , 10*x, 10*(y+1) ); + + + + + + y

20 Extreme gevallen Nul keer herhalen Oneindig vaak herhalen
for (y=0; y<0; y++) gr.DrawString("hoi", br, ft, 10, 10); deze opdracht wordt 0 keer uitgevoerd Oneindig vaak herhalen while (true) audio.Play( ); gr.DrawString("hoi", br, ft, 10, 10); deze opdracht komt nooit aan de beurt!

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

22 Onbedoeld niets gedaan
Puntkomma teveel… for (x=0; x<10; x++) ; totaal = totaal + x ; ;

23 deze waarschuwing is theoretisch onmogelijk!
Compiler-meldingen Foutmeldingen variabele niet gedeclareerd puntkomma vergeten ... Waarschuwingen variabele ongebruikt unreachable code statement has no effect while-statement doesn’t terminate deze waarschuwing is theoretisch onmogelijk!

24 Het Halting-problem is onoplosbaar
Nietes! Deze methode lost het op: bool stopt (string filenaam) { .... } void gemeen (string filenaam) { while ( stopt(filenaam) ) x++; } Ha! En dit dan? stopt( "Gemeen.cs" ) wat komt er dan uit: ?

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

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

27 Het Halting-problem is onoplosbaar
Er bestaan dus onoplosbare problemen! Alan Turing (1936): On computable numbers, with an application to the Entscheidungsproblem door Hilbert in 1900 bedachte uitdaging voor de nieuwe eeuw

28 10 jaar voor de eerste computer!
On computable numbers... 10 jaar voor de eerste computer! Introduceert als gedachtenexperiment een Logical Computing Machine gegevens op een papierstrook programma in een geheugen, of zelfs: ook op de papierstrook "Turing machine"

29 Publieksvraag Schrijf een methode wortel , die de wortel trekt van een niet-negatieve double Zonder Math.Sqrt te gebruiken! Gebruik de Newton-benadering: als y een benadering is van Sqrt(x), dan is het gemiddelde van y en x/y een betere benadering

30 Worteltrek-methode private static double wortel (double x) { double y;
} double y; y = 1; for (int t=0; t<100; t++) y = (y + x/y) / 2 ; return y;

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

32 Opbouw herhaling Initialisatie Herhaalde aanpassing
Gebruik van het resultaat kap=start; y=1; tot=0; res=""; kap*=(1+0.01*rente); y=(y+x/y)/2; tot+=x; res+="|"; gr . DrawString (""+kap, ...); return y; return res; lab . Text = tot ;

33 resultaat komt meteen op het scherm
Tekenen of opleveren? Console.WriteLine(x); pea.Graphics.DrawString (x, ...) Label res = new Label(); res.Text += x; return x; resultaat komt meteen op het scherm resultaat wordt teruggegeven aan de aanroeper, die zelf kan beslissen wat hij ermee doet

34 Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; return expressie ; while ) ( expressie opdracht for ) ( expr opdracht ; blok

35 Syntax van opdrachten opdracht return expressie ; while ) ( expressie
for ) ( expr opdracht ; blok

36 Overzicht programma-constructies
kun je doen kun je uitrekenen Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for-opdracht { ... } - bundeling Expressies Constante Variabele Aanroep methode Expressie met operatoren Expressie met haakjes new-expressie this (cast)-conversie

37 Overzicht programma-constructies
waarde-verzameling van een expressie geeft het type van variabelen Declaratie Lokale variabele voor tijdelijk gebruik Member permanent deel van het object Parameter om waarden door te spelen aan methode Type Primitief type int double bool Object-type Color, String enz. TextBox, Button enz. Form, HalloForm, enz.

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

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

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

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

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

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

44 Hoofdstuk 7 verplicht… Keuze

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

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


Download ppt "Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)"

Verwante presentaties


Ads door Google