Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt.

Slides:



Advertisements
Verwante presentaties
Het type int Tekenen met Java operatoren
Advertisements

Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Hoofdstuk 7 verplicht… Keuze.
Hoofdstuk 8 Objecten en klassen.
Algoritmiek Object-georiënteerd Programmeren
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 7 Herhaling Nieuw!. while ( x
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Declaratie en toekenningen nEén keer declarareren nMogelijk meerdere toekenningen int x; x = 100; x = 250; x = x + 1; x = 2 * x; int x = 100; x = 100;
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Resources. Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { } class KompasView :
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
Loops en errors Array's Random try catch for loop while loop do while loop.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie; if)(expressieopdrachtblok.
Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
ISensorEventListener
1e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies.
Gameprogrammeren: Objecten en geheugen
Schilderij class MijnAct : Activity { MijnView scherm;
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
vandaag èn vrijdag deadline maandag 12 dec.
Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’,
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Herhalingen
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Willekeurigheid en Herhaling
Aanroep van een methode voert opdrachten uit in de body daarvan
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Interface In de library In je eigen programma wat is er nodig om een
Implementatie Zoekboom
Object Communication (Jewel Jam)
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Enemies in Tick Tick
Transcript van de presentatie:

Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt. prakt. 1 prakt. prakt. 1 prakt. 2 werkcoll nOefening (4 werkcolleges) college prakt. 2 werkcoll collegeprakt. prakt. 1 prakt. 2 prakt. prakt. 1

Keuze / Herhaling opdracht wordt steeds opnieuw uitgevoerd zolang voorwaarde geldt while (temperatuur<0) temperatuur += 5; opdracht wordt alleen uitgevoerd als voorwaarde niet geldt if (temperatuur<0) uitvoer.Text = "Het vriest!”; else uitvoer.Text = "Het dooit."; opdracht wordt alleen uitgevoerd als voorwaarde geldt

Herhalen met een teller public void OnDraw (Canvas canvas) { int t; t=0; while ( t<10 ) { canvas.DrawString( ":-)", 0, 20*t, verf ); t = t+1; } teller bepaalt het aantal herhalingen en komt goed van pas in de body

while ( t<n ) { t = t+1 ; } t = 0; private static string veelwerf (string x, int n) { String verveelvoudigen return result; result = result + x ; result = ""; int t; string result; }

for( t=0; t<n; t++ ) private static string veelwerf (string x, int n) { String verveelvoudigen return result; result = result + x ; result = ""; int t; string result; }

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

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

Kubus } { public override void OnCreate(Bundle b) { base.Oncreate(b); class KubusApp : Activity RadioButton r, g, b;SeekBar s;KubusView kv; } kv = new KubusView(this); SetContentView( kv ); s = new SeekBar(this); LinearLayout lay = new LinearLayout(this); lay.AddView(s); lay.AddView(kv); lay.AddView(grp); RadioGroup grp = new RadioGroup(this); grp.AddView(r); grp.AddView(g); grp.AddView(b); RadioButton r = new RadioButton(this); RadioButton g = new RadioButton(this); RadioButton b = new RadioButton(this); lay r.Click += kies; g.Click += kies; b.Click += kies; s.ProgressChanged+=pc;

Kubus } { public override void OnCreate(Bundle b) { base.Oncreate(b); class KubusApp : Activity RadioButton r, g, b;SeekBar s;KubusView kv; } r.Click += kies; g.Click += kies; b.Click += kies; s.ProgressChanged+=pc; public void kies(object o, EventArgs ea) { if (o==r) kv.Dim = 0; if (o==g) kv.Dim = 1; if (o==b) kv.Dim = 2; kv.Invalidate(); } public void kies(object o, EventArgs ea) { kv.Pos = s.Progress; } kv.Invalidate();

Kubus } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); public KubusView(Context c) : base(c) { } class KubusView: View public int Pos=0, Dim=2; int a = 16; float v = 255/(a-1); int d = Math.Min(Width, Height) / a; Paint verf = new Paint(); canv.DrawRect ( verf.Color = new Color( for (int y=0; y<a; y++) { } for (int x=0; x<a; x++) { v*x, v*y, Pos); d*x, d*y, d*(x+1), d*(y+1), verf); } } if (Dim==2)

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

Voorbeeld: Rente- berekening door de gebruiker in te vullen EditText -objecten TextView met het resultaat Button met een Click handler

Resource designer <LinearLayout xmlns:p1= " p1:orientation="vertical" p1:layout_width="match_parent" p1:layout_height="match_parent" <TextView p1:text="Bedrag" p1:textAppearance="?android:attr/ textAppearanceMedium" p1:layout_width="match_parent" p1:layout_height="wrap_content" /> <EditText p1:inputType="numberDecimal" p1:layout_width="match_parent" p1:layout_height="wrap_content" /> class RenteApp: Activity { } SetContentView (Resource.Layout.Main); override void OnCreate(...) { } EditText bedrag; bedrag = FindViewById (Resource.Id.bedragBox);

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

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

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

Meerdere catch-delen s = invoer. Text; n = int. Parse (s); uitvoer. Text = ( "kwadraat is " + n*n ); try { } catch ( FormatException e ) { uitvoer. Text = ( s + " is geen getal" ); } catch ( OverflowException e ) { uitvoer. Text = ( s + " is te groot" ); } als er een Exception optreedt, wordt de eerste catch gekozen met een passend type

Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie;

opdracht for)(expropdrachtexpr ;;,, declaratie typeexprinnaamforeach()opdracht var tryblokcatch(bloknaam)type while)(expressieopdracht if)(expressieopdracht elseopdracht returnexpressie; blok

Speciale gevallen van herhaling nNul keer herhalen for (y=0; y<0; y++) c.DrawString("hoi", 10, 10, verf); nOneindig vaak herhalen while (true) audio.Play( ); c.DrawString("hoi", 10, 10, verf); deze opdracht komt nooit aan de beurt!

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

Onbedoelde oneindigheid for (x=0; totaal<100; x++) ; totaal = totaal + x ; Puntkomma teveel… ;

Running App n Knoppen n Statusregel n Kaart ugelopen track upositie met orientatie Onderdelen: drag pinch

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource (...UU...); } class KompasView : View public void OnSensorChanged(SensorEvent s) { } Bitmap b;float Schaal;float Hoek;, ISensorEventListener canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(- Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(-b.Width/2, -b.Height/2); Hoek = s.Values[0]; this.Invalidate( ); SensorManager sm = c. GetSystemService(...); sm.RegisterListener(this,...Orientation... ); is een geldige ISensorEventListener want zijn klasse heeft deze methode belooft methodes

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource (...UU...); } class KompasView : View Bitmap b;float Schaal;float Hoek; canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(- Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(-b.Width/2, -b.Height/2); LocationManager lm = c. GetSystemService(...); lm.RequestLocationUpdates(..., this); is een geldige ILocationListener want zijn klasse heeft deze methode belooft methodes, ILocationListener public void OnLocationChanged(Location loc) { } noord = loc.Latitude; oost = loc.Longitude;

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource (...UU...); } class KompasView : View Bitmap b;float Schaal;float Hoek; canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(- Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(-b.Width/2, -b.Height/2); is een geldige IOnScaleGestureListener want zijn klasse heeft deze methode belooft methodes, IOnScaleGestureListener det = new ScaleGestureDetector(c, this); ScaleGestureDetector det; public void OnScale(ScaleGestureDetector d) { } this.Schaal = Schaal * d.ScaleFactor; this.Invalidate();

Interface nIn de library nIn je eigen programma interface ISensorEventListener { } public void OnSensorChanged(SensorEvent s); class KompasView : View { } public KompasView(Context c) : base(c) { } public OnDraw(Canvas c) { } public void OnSensorChanged(SensorEvent s) { }, ISensorEventListener wat is er nodig om een ISensorEventListener te zijn? deze methode! ik beloof een ISensorEventListener te zijn en implementeer dus de methode! public void OnAccuracyChanged(SensorEvent s);

Interface nIn de library interface ISensorEventListener { } public void OnSensorChanged(SensorEvent s); wat is er nodig om een ISensorEventListener te zijn? deze methode! public void OnAccuracyChanged(SensorEvent s); interface ILocationListener { } public void OnLocationChanged(Location loc); public void OnProviderDisabled(string s); public void OnProviderEnabled(string s); public void OnStatusChanged(string s,...);

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource (...UU...); } class KompasView : View public void OnSensorChanged(SensorEvent s) { } Bitmap b;float Schaal;float Hoek;, ISensorEventListener canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(- Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(-b.Width/2, -b.Height/2); Hoek = s.Values[0]; this.Invalidate( ); SensorManager sm = c. GetSystemService(...); sm.RegisterListener(this,...Orientation... ); pixel van het plaatje dat in het midden moet komen

Kaart PointF centrum = new PointF(138300, ); 1km = 400 pixels meter 2300 meter 920 pixels midx = (centrum.X – ) * 0.4;

Kaart PointF centrum = new PointF(138300, ); 1km = 400 pixels meter 1300 m 1480 pixels midx = (centrum.X – ) * 0.4; midy = – (centrum.Y – ) * 0.4;

Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } class KompasView : View Bitmap b;float Schaal;float Hoek;, ISensorEventListener canv.DrawBitmap(b, mat, verf); Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostRotate(– Hoek); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(–b.Width/2, –b.Height/2); pixel van het plaatje dat in het midden moet komen

Kaart } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } class KaartView : View Bitmap b;float Schaal;float Hoek;, ISensorEventListener canv.DrawBitmap(b, mat, verf); Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostTranslate(Width/2, Height/2); mat.PostTranslate(–midx, –midy); pixel van het plaatje dat in het midden moet komen

Coordinaten geografische coordinaten (graden) RD-projectie coordinaten (meters) bitmap (pixels) scherm (geschaalde pixels) geo2rd* 0.4* schaal rd2geo/ 0.4/ schaal

Huidige positie tekenen geo2rd* 0.4* schaal PointF huidig; // in meters! public void OnLocationChanged(Location loc) { } huidig = geo2rd(loc.Latitude, loc.Longitude); this.Invalidate();

Huidige positie tekenen geo2rd* 0.4* schaal PointF huidig; // in meters! public void OnDraw(Canvas c) { float ax = huidig.X – centrum.X; bereken de afstand tot het centrum float px = ax * 0.4; in pixels... op het scherm... float sx = px * Schaal; float x = this.Width/2+sx; c.DrawCircle(x,...);

Draggen rd2geo/ 0.4/ schaal public void RaakAan(..., TouchEventArgs tea) { op het scherm... float x = tea.Event.GetX(); float sx = x – dragstartpunt.X; in pixels... float px = sx / Schaal; in meters... float ax = px / 0.4;centrum.X –= ax; PointF dragstartpunt; // in schermpixels!

pinch- Kompas } { public void RaakAan( object o, TouchEventArgs tea ) { class KompasView : View Bitmap b;float Schaal;float Hoek;, ISensorEventListener v1=new PointF( tea...GetX(), tea...GetY() ); } v2=new PointF( tea...GetX(1), tea...GetY(1)); if (tea...PointerCount==2) { if (tea...Action==...Pointer2Down) { } float afst = afstand(v1, v2); float start = afstand(s1, s2); float factor = afst / start; this.Schaal = oudeSchaal * factor; this.Invalidate(); PointF v1, v2; PointF s1, s2; s1=v1; s2=v2; float oudeSchaal; oudeSchaal = Schaal; pinch

pinch- Kaart } { public void RaakAan( object o, TouchEventArgs tea ) { class KaartView : View Bitmap b;float Schaal;float Hoek;, ISensorEventListener v1=new PointF( tea...GetX(), tea...GetY() ); } v2=new PointF( tea...GetX(1), tea...GetY(1)); if (tea...PointerCount==2) { if (tea...Action==...Pointer2Down) { } float afst = afstand(v1, v2); float start = afstand(s1, s2); float factor = afst / start; this.Schaal = oudeSchaal * factor; this.Invalidate(); PointF v1, v2; PointF s1, s2; s1=v1; s2=v2; float oudeSchaal; oudeSchaal = Schaal; pinch else... bool pinching = false; pinching = true; else if (!pinching)...

Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt. prakt. 1 prakt. prakt. 1 prakt. 2 werkcoll nOefening (4 werkcolleges) college prakt. 2 werkcoll collegeprakt. prakt. 1 prakt. 2 prakt. prakt. 1