Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Het type int Tekenen met Java operatoren
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 8 Objecten en klassen.
Consoletoepassing Variabelen Klassen
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 11.3 Algoritmen: Zoeken in een netwerk.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 3 Methoden om te tekenen.
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);
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
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.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
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.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 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.
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:
…is eigenlijk overbodig!
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: Overerving
Hoofdstuk 9.2 Strings.
string versus char string char klasse primitief type
Letterfrequentie turven
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Windows-applicatie using System.Windows.Forms; using System.Drawing;
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: Overerving in Painter
Basis Gameprogrammeren
Gameprogrammeren: Herhalingen
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Arjan Egges & Paul Bergervoet
Tinpro015b-les4 Klassen.
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
Gameprogrammeren: Klassen en objecten
Interface In de library In je eigen programma wat is er nodig om een
Arjan Egges & Paul Bergervoet
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Arrays
Transcript van de presentatie:

Syntax van opdrachten opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; return expressie ; if ) ( expressie opdracht else opdracht blok foreach ( type naam in expr ) opdracht

Punten- klikker met bitmap } class MijnView : View { Bitmap b; List<PointF> alles = new List<PointF>( ) ; public MijnView(Context c) : base(c) { this.Touch += raakAan; } met bitmap b = BitmapFactory.DecodeResource(...Icon...); protected override void OnDraw(Canvas c) { base.OnDraw(c); } foreach( PointF p in alles) c.DrawBitmap(b, p.X, p.Y, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; PointF p; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); alles.Add(p); this.Invalidate(); }

Tekst Analyse 26 9 5 1 14 6 8 public class DiagramView: View { public string Invoer; protected override void OnDraw(Canvas cv) { base.OnDraw(cv); tellers 9 5 1 14 2 3 4 26 Length 6 8 7 int [ ] tellers; tellers = new int [26]; foreach(char c in Invoer) if (c>='a' && c<='z') tellers[ ]++; c-'a' int w = Width / max; int h = Height/ 26; , y=0; foreach(int a in tellers) { cv.DrawText( a.ToString()...); cv.DrawRect( x, y, x+a*w, y+h, verf ); y = y+h; } } }

Waarom lokale variabelen? Als tussenresultaat in berekeningen private void tekenHuis (Canvas c, … ) { Paint verf = new Paint(); int x, int y, int br) (tx,ty) int tx = x+br/2; int ty = y–br–br/2; c.DrawRect ( … , verf); c.DrawLine ( … , verf); c.DrawLine ( … , verf); x, y-br, x+br, y x, y-br, tx, ty tx, ty, x+br, y-br } (x,y) br twee keer nodig twee keer nodig twee keer nodig drie keer nodig twee keer nodig

Waarom lokale variabelen? Als tussenresultaat in berekeningen Color c = new Color(64,0,0); verf.Color = c; een keer nodig dan kan het ook zonder variabele verf.Color = new Color(64,0,0); KaartView kaart; kaart = new KaartView(this); SetContentView(kaart); SetContentView( new KaartView(this) );

Waarom lokale variabelen? Als tussenresultaat in berekeningen Intent i = new Intent( this, typeof(Hallo) ); StartActivity( i ); StartActivity( new Intent( this, typeof(Hallo) ) ); KaartView kaart; kaart = new KaartView(this); SetContentView(kaart); SetContentView( new KaartView(this) );

Waarom lokale variabelen? Als tussenresultaat in berekeningen Intent i = new Intent( this, typeof(Hallo) ); i.PutExtra( "wat", "hoi" ); StartActivity( i ); twee keer nodig? twee keer nodig? PutExtra is een void -methode in klasse Intent Intent StartActivity( new Intent( this, typeof(Hallo) ) . PutExtra( "wat", "hoi" ) ); StartActivity( new Intent( this, typeof(Hallo) ) . PutExtra( "wat", "hoi" ) );

Waarom methodes? private void tekenHuis(…) { … . DrawRect (…); … . DrawLine (…); … . DrawLine (…); } een keer definiëren protected override void OnDraw(Canvas c) { … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…); } drie keer gebruiken drie keer gebruiken drie keer gebruiken

Waarom methodes? private void einde( object o, EventArgs ea) { this.Finish( ); } een keer definiëren protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; } een keer gebruiken

Waarom methodes? private void einde( object o, EventArgs ea) { this.Finish( ); } een keer definiëren protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; (object o, EventArgs ea) => { this.Finish( ) ; } ;

type kan automatisch bepaald worden Waarom methodes? private void einde( object o, EventArgs ea) { this.Finish( ); } protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; type kan automatisch bepaald worden (object o, EventArgs ea) => { this.Finish( ) ; } ; body met één opdracht mag zonder accolades

Waarom methodes? protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; (o,ea) => this.Finish( ) ;

Waarom methodes? protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; (o,ea) => StartActivity( new Intent( this, typeof(Hallo) ) . PutExtra( "wat", "hoi" ) ) ;

PutExtra / GetStringExtra class Hallo { protected override void OnCreate(Bundle b) { string tekst = Intent.GetStringExtra( "wat" ) ; if (tekst==null) tekst = "hallo" ; ?? protected override void OnCreate(Bundle b) { Button b = new Button( ); b.Click += einde; (o,ea) => StartActivity( new Intent( this, typeof(Hallo) ) . PutExtra( "wat", "hoi" ) ) ;

Hoofdstuk 10.1-2 ListView

ListView public class KleurenApp : Activity { ListView kleurLijst; ArrayAdapter<string> kleurAdp; string[] kleuren = {"rood", "wit", "blauw"}; protected override void OnCreate(Bundle b) { base.OnCreate(b); kleurLijst = new ListView(this); kleurAdp = new ArrayAdapter<string> (this, SimpleListItemChecked, kleuren); kleurLijst.Adapter = kleurAdp; kleurLijst.ChoiceMode = Multiple; kleurLijst.ItemClick += iklik; SetContentView(kleurLijst); } }

ListView public class KleurenApp : Activity { ListView kleurLijst; KleurenAdapter kleurAdp; ArrayAdapter<string> kleurAdp; string[] kleuren = {"rood", "wit", "blauw"}; KleurItem[] kleuren = { new KleurItem("Red", Color.Red), new Kle List<KleurItem> kleurItems = new List<KleurItem>(kleuren); protected override void OnCreate(Bundle b) { base.OnCreate(b); kleurLijst = new ListView(this); kleurAdp = new KleurenAdapter (this, kleurItems); kleurAdp = new ArrayAdapter<string> (this, SimpleListItemChecked, kleuren); kleurLijst.Adapter = kleurAdp; kleurLijst.ChoiceMode = Multiple; kleurLijst.ItemClick += iklik; SetContentView(kleurLijst); } }

KleurItem public class KleurItem { public string Naam; public Color Kleur; public KleurItem(string n, Color k) { Naam = n; Kleur = k; } }

Adapter public class KleurenAdapter : BaseAdapter<KleurItem> { Activity activity; List<KleurItem> items; public KleurenAdapter (Activity a, List<KleurItem> ki) { this.activity = a; this.items = ki; } public override View GetView( int pos ) { , View oud TextView view ; = (TextView) oud; if (view==null) view = new TextView(activity); view.Text = items[pos].Naam; view.SetBackgroundColor(items[pos].Kleur); view.SetHeight(100); return view; } }

ListView public class KleurenApp : Activity { public void klik(object o, EventArgs e) { Intent i = new Intent(this, typeof(KleurEdit)); StartActivityForResult( i, 9999 ); } public void iklik(object o, ItemClickEventArgs e) { Intent i = new Intent(this, typeof(KleurEdit)); int pos = e.Position; KleurItem item = kleurItems[pos]; i.PutExtra("naam", item.Naam ); i.PutExtra("kleur", item.Kleur.ToArgb() ); StartActivityForResult( i, pos ); } override void OnActivityResult(int pos, ... ) { ... } }

KleurEdit public class KleurEdit : Activity { string naam; Color kleur; static int nummer = 1; EditText e; protected override void OnCreate(Bundle b) { base.OnCreate(b); zoals in H.3, plus naam = this.Intent.GetStringExtra("naam"); kleur = new Color( this.Intent.GetIntExtra("kleur",0) ; ) if (naam==null) naam = $"nieuw {nummer++}"; e = new EditText(this); e.Text = naam; } private void ok (object o, EventArgs e) { Intent i = new Intent( ); i.PutExtra("naam", e.Text ); i.PutExtra("kleur", kleur.ToArgb() ); SetResult(Result.Ok, i); Finish(); } }

ListView public class KleurenApp : Activity { public void klik(object o, EventArgs e) { ... } public void iklik(object o, ItemClickEventArgs e) { ... } override void OnActivityResult (int pos, Result res , Intent data ) { if (res==Result.Ok) { naam = data.GetStringExtra("naam"); ... KleurItem k = new KleurItem(naam,kleur); if (pos==9999) kleurItems.Add( k ); else kleurItems[pos] = k; } else if (pos < 9999) kleurItems.RemoveAt( pos ); } }

Samenvatting

Schilderij class MijnAct : Activity { MijnView scherm; protected override void OnCreate(Bundle b) { base.OnCreate(b); scherm = new MijnView(this); scherm.Click += klik; this.SetContentView(scherm); } } class MijnView : View { public MijnView(Context c) : base(c) { } protected override void OnDraw(Canvas c) { base.OnDraw(c); } c.DrawLine(...); }

Cirkel- klikker } class MijnView : View { PointF p; public MijnView(Context c) : base(c) { this.Touch += raakAan; } protected override void OnDraw(Canvas c) { base.OnDraw(c); } if (p != null) c.DrawCircle(p.X, p.Y, 50, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); this.Invalidate(); }

Punten- klikker met bitmap } class MijnView : View { PointF p; Bitmap b; List<PointF> alles ; public MijnView(Context c) : base(c) { this.Touch += raakAan; } met bitmap b = BitmapFactory.DecodeResource(...Icon...); protected override void OnDraw(Canvas c) { base.OnDraw(c); } if (p != null) c.DrawBitmap(b, p.X, p.Y, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); this.Invalidate(); }

Punten- klikker met bitmap } class MijnView : View { Bitmap b; List<PointF> alles ; public MijnView(Context c) : base(c) { this.Touch += raakAan; } met bitmap b = BitmapFactory.DecodeResource(...Icon...); protected override void OnDraw(Canvas c) { base.OnDraw(c); } if (p != null) c.DrawBitmap(b, p.X, p.Y, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; PointF p; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); alles.Add(p); this.Invalidate(); }

Punten- klikker met bitmap } class MijnView : View { Bitmap b; List<PointF> alles ; public MijnView(Context c) : base(c) { this.Touch += raakAan; } met bitmap b = BitmapFactory.DecodeResource(...Icon...); protected override void OnDraw(Canvas c) { base.OnDraw(c); } foreach( PointF p in alles) c.DrawBitmap(b, p.X, p.Y, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; PointF p; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); alles.Add(p); this.Invalidate(); }

Punten- klikker met bitmap } class MijnView : View { Bitmap b; List<PointF> alles = new List<PointF>( ) ; public MijnView(Context c) : base(c) { this.Touch += raakAan; } met bitmap b = BitmapFactory.DecodeResource(...Icon...); protected override void OnDraw(Canvas c) { base.OnDraw(c); } foreach( PointF p in alles) c.DrawBitmap(b, p.X, p.Y, new Paint()); public void raakAan(object o, TouchEventArgs tea) { } float x, y; PointF p; x = tea.Event.GetX(); y = tea.Event.GetY(); p = new PointF(x, y); alles.Add(p); this.Invalidate(); }

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

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

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

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

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

RGB-Kubus 3x RadioButton SeekBar KubusView 5x RadioButton

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

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

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

opdracht blok return expressie ; if ( expressie ) opdracht else opdracht while ( expressie ) opdracht for ( expr ; expr ; expr ) opdracht , , declaratie foreach ( type naam in expr ) opdracht var try blok catch ( type naam ) blok

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

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

Values versus Pointers Color c; struct Color c = new Color(255,0,0); Rect r; class Rect r = new Rect(10,20,30,40); r null c R 255 Left 10 G Top 30 B Right 20 Bottom 40

Eigen klasse Kleur class Kleur { public byte Rood, Groen, Blauw; } constructor-methode public Kleur( ) { } Rood=255; Groen=255; Blauw=255; constructor-methode met parameters public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b; nog een constructor-methode public Kleur( byte x) { } Rood=x; Groen=x; Blauw=x; methode die iets uitrekent public byte Grijswaarde( ) { } return (3*Rood + 6*Groen + Blauw) / 10; }

Methodes in de eigen klasse Kleur elke klasse is automatisch subklasse van object class Kleur : object { public byte Rood, Groen, Blauw; methode die iets uitrekent public byte Grijswaarde( ) { } return (3*Rood + 6*Groen + Blauw) / 10; (byte) (0.3*Rood + 0.6*Groen + 0.1*Blauw); public void MaakDonkerder( ) { } void-methode die het object verandert Rood = (byte) (Rood * 0.9) ; Groen = (byte) (Groen * 0.9) ; Blauw = (byte) (Blauw * 0.9) ; Rood = Rood * 0.9; Groen = Groen * 0.9; Blauw = Blauw * 0.9; de variabelen van methode die een leesbare versie van de Kleur maakt override public string ToString( ) { } return $"{Rood} {Groen} {Blauw}"; }

Meer constructormethodes in klasse Kleur class Kleur { public byte Rood, Groen, Blauw; constructor-methode met parameters public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b; constructor-methode die een kopie maakt public Kleur( Kleur orig ) { } Rood=orig.Rood; Groen=orig.Groen; Blauw=orig.Blauw; constructor-methode die een string ontleedt public Kleur( string s ) { } string[ ] woorden = s.Split( ); array van strings handige methode van string Rood = byte.Parse( woorden[0] ); Groen = byte.Parse( woorden[1] ); Blauw = byte.Parse( woorden[2] ); Rood = woorden[0]; Groen = woorden[1]; Blauw = woorden[2]; }

Intent: Hallo opstarten public class Multi : Activity { public class Hallo : Activity { Button b1, b2, b3, b4, b5, b6; override void OnCreate(Bundle b) { base.OnCreate(b); public void klik1 (object o, EventArgs e) { TextView t = new TextView(this); Intent i; string s = Intent.GetStringExtra("wat"); i = new Intent (this, typeof(Hallo) ); t.Text = s; i.PutExtra("wat", "Hallo!!!"); SetContentView(t); } StartActivity(i); } } }

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, Split Length s[t]

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

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

Tekst Analyse 26 9 5 1 14 6 8 public class DiagramView: View { public string Invoer; protected override void OnDraw(Canvas cv) { base.OnDraw(cv); tellers 9 5 1 14 2 3 4 26 Length 6 8 7 int [ ] tellers; tellers = new int [26]; } }

Tekst Analyse 26 9 5 1 14 6 8 public class DiagramView: View { public string Invoer; protected override void OnDraw(Canvas cv) { base.OnDraw(cv); tellers 9 5 1 14 2 3 4 26 Length 6 8 7 int [ ] tellers; tellers = new int [26]; foreach(char c in Invoer) if (c>='a' && c<='z') tellers[ ]++; c-'a' int w = Width / max; int h = Height/ 26; , y=0; foreach(int a in tellers) { cv.DrawText( a.ToString()...); cv.DrawRect( x, y, x+a*w, y+h, verf ); y = y+h; } } }

Gelijkheid van Strings static bool Gelijk( string s, string t) { int m = s.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { char c = s[i]; char d= t[i]; if (c!=d) return false; } return m==n; }

Gelijkheid van Strings class String { static bool Equals( string s, string t) { int m = s.Length; this.Length; int n = t.Length; for (i=0; i<m && i<n; i++) { char c = s[i]; this[i]; char d= t[i]; if (c!=d) return false; } return m==n; } }

ListView public class KleurenApp : Activity { ListView kleurLijst; ArrayAdapter<string> kleurAdp; string[] kleuren = {"rood", "wit", "blauw"}; protected override void OnCreate(Bundle b) { base.OnCreate(b); kleurLijst = new ListView(this); kleurAdp = new ArrayAdapter<string> (this, SimpleListItemChecked, kleuren); kleurLijst.Adapter = kleurAdp; kleurLijst.Choicemode = Multiple; kleurLijst.ItemClick += klik; SetContentView(kleurLijst); } public void klik(object o, ItemClickEventArgs e) { string s = kleuren[e.Position]; Toast.MakeText(...t...) . Show( ); } }