Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo . Freq(’e’,

Slides:



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

Van domeinklasse tot implementatie
Het type int Tekenen met Java operatoren
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
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.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
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 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 14.2 Algoritmen: Automatische taalherkenning.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 11 Strings en arrays. TextArea en String class LetterTeller extends Applet { void init ( ) { invoer = new TextArea (5, 40); uitvoer = new TextField(40);
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
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.
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.
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.
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.
Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
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;
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
ISensorEventListener
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
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.
Gameprogrammeren: Overerving in Painter
Lezen en schrijven van tekst
Gameprogrammeren: Herhalingen
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Gameprogrammeren: Properties
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)
Gameprogrammeren: Abstracte klassen
Arjan Egges Paul Bergervoet Wouter van Toll
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

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

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

Letterfrequenties turven in een array Hoofdstuk 9.4 Letterfrequenties turven in een array

LetterTeller class LetterTeller : Form TextBox invoer Label uitvoer StaafDiagram diagram class StaafDiagram : UserControl class TurfTab

Letterteller hoofdklasse class LetterTeller : Form { TextBox invoer; Label uitvoer; StaafDiag diagram; LetterTeller() { invoer = new TextBox(); invoer.MultiLine = true; uitvoer = new Label(); diagram = new StaafDiag(); } invoer . TextChanged += this.Bereken; void Bereken(object o, EventArgs ea) { } TurfTab tabel = new TurfTab(); tabel.Turf ( invoer.Text ); uitvoer.Text = tabel.ToString() ; diagram.Waardes = tabel.Waardes ; }

De klasse TurfTab klasse-ontwerp: wat is ... & wat kan ... & hoe? public class TurfTab { private int [ ] tellers; private int totaal; public TurfTab ( ) { ... } public void Turf (string s) { ... } override public string ToString ( ) { ... } private void turf (char c) { ... } public int Totaal { ... } public int[] Waardes { ... } }

De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; public TurfTab ( ) { } tellers = new int [26]; public void Turf (string s) { } int t; for (t=0; t<s.Length; t++) this.turf ( s[t] ); }

De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; private void turf (char c) { } if (c>='A' && c<='Z') { } tellers [ ] ++; totaal++; c - 'A' if (c>='a' && c<='z') { tellers [ c - 'a' ] ++; totaal++; } }

De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; override public string ToString( ) { } string result; int t; result = ""; for (t=0; t<26; t++) result += (char) t + ":" + tellers[t] + "keer\n" ; ( + 'A') result += "totaal:" + totaal; return result; }

De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; een eigen property! public int Totaal { get { } "mini- methodes" "mini- methodes" return totaal; set { } totaal = value; } }

geen set-minimethode: De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; een eigen property! public int Totaal { get { } "mini- methodes" "mini- methodes" return totaal; geen set-minimethode: read-only property set { } totaal = value; } }

De klasse TurfTab public class TurfTab { private int [ ] tellers; private int totaal; public float Gemiddelde { get mag ook nog rekenwerk doen get { } return (float)totaal / tellers.Length; } public int[] Waardes { get { } return tellers.Clone(); geef een kopie van de private array } }

LetterTeller StaafDiagram diagram class StaafDiagram : UserControl

De klasse StaafDiag public class StaafDiag : UserControl { private int[] waardes; alleen set-minimethode: write-only property public StaafDiag() { this.Paint += this.teken; } public int[] Waardes { } set { } this.waardes = value; this.Invalidate(); wie de property verandert, forceert een Paint private void teken(object o, PEA pea) { } // ...FillRectangle...waardes... }

De klasse StaafDiag public class StaafDiag : UserControl { private int[] waardes; private void teken(object o, PEA pea) { int max= Bieb.Grootste(max); if (max<10) max = 10; float balkH = this.Height / waardes.Length; float balkU = this.Width / max; for (int t=0; t<waardes.Length; t++) pea.Graphics.FillRectangle( Brushes.Blue, 0, t * balkH , balkU * this.waardes[t] , balkH-1 ); } }

member void type naam methode ( parameters ) blok

member void type naam methode operator op ( parameters ) blok

member void type naam methode op ( parameters ) naam ( parameters ) operator op ( parameters ) naam ( parameters ) constructor blok

member const = initialisatie veld type naam ; , void type naam methode operator op ( parameters ) naam ( parameters ) constructor blok

member const = initialisatie veld type naam ; , type naam { blok } get blok } property set void type naam methode operator op ( parameters ) naam ( parameters ) constructor blok

member const = initialisatie veld type naam ; , type naam { blok } get blok } property set indexer type this [ parameters ] void type naam methode operator op ( parameters ) naam ( parameters ) constructor blok

Algoritmen: Automatische taalherkenning Hoofdstuk 11.2 Algoritmen: Automatische taalherkenning

Programmeer-cyclus Modelleer Specificeer Implementeer Edit Compile Run

Modelleren gedicht “Jabberwocky” (Lewis Carroll) 'Twas brillig, and the slithy toves Did gyre and gimble in the wabe: All mimsy were the borogoves, And the mome raths outgrabe. Es brillig war. Die schlichten Toven Wirrten un wimmelten in Waben; Und aller-mümsigen Burggroven Die mohmen Räth' ausgraben. en de Il brigue: les tôves libricilleux Se gyrent en vrillant dans la guave. Enmîmés sont les goubebosqueux Et le mômerade horsgrave. 't Was bradig en de slijp'le torfs Driltolden op de wijde weep. Misbrozig stonden borogorfs 't Verdoolde grasvark schreep. fr nl Hoe herken je de taal?

Modelleren patronen in woorden en uitgangen je kunt de taal herkennen zonder de woorden te begrijpen! patronen in woorden en uitgangen relatieve frequenties van de letters die kan een computer ook tellen...

Modelleren Bepaal de letterfrequentie van de onbekende tekst Vergelijk die met opgeslagen frequentie- tabellen van diverse talen De “best passende” is het! misschien

Modelleren Ja. we stoppen er niet kant-en-klare tabellen in... ...maar voorbeeldteksten, waarvan het programma de letters zelf mag turven is dit nou AI? Ja. subsymbolische AI

Specificeren voorbeeld- talen en -teksten onbekende tekst

Specificeren Hoe vergelijk je frequentietabellen? Alle letters zijn belangrijk Totaliseer de verschillen voor alle letters Tekstlengte mag niet van invloed zijn Gebruik de relatieve frequentie Tekort mag overschot niet compenseren Tel het verschil altijd positief

uit System.Windows.Forms Ontwerpen Klassen in dit programma class Form class TurfTab class RelTurfTab : TurfTab class Taal : Form uit System.Windows.Forms uit LetterTeller voegt toe: - relatieve telling - lezen vanaf WWW voegt toe: - interactie

Implementatie: GUI class Taal : Form { const int aantal = 10; TextBox invoer; Label uitvoer; TextBox [ ] taal; TextBox [ ] url; Label [ ] score; TableLayoutPanel paneel, talen, alles;

Implementatie: actie void herken_klik (object o, ActionEvent ae) { RelTurfTab onbekend, voorbeeld; onbekend = new RelTurfTab(); onbekend . Turf ( invoer.Text ); double kleinste; string antwoord; kleinste = 1.0; antwoord = "onbekend"; for (int t=0; t<aantal; t++) { } voorbeeld = new RelTurfTab(); voorbeeld . Lees (url[t].Text ); d = onbekend . Verschil (voorbeeld); if (d<kleinste) kleinste = d; { antwoord = taal[t].Text; } uitvoer . Text = antwoord;

De klasse TurfTab klasse-ontwerp: wat is ... & wat kan ... & hoe? public class TurfTab { int [ ] tellers; int totaal; public TurfTab ( ) { ... } public void Turf (string s){ ... } public string ToString ( ) { ... } private void turf (char c) { ... } }

De klasse RelTurfTab public class RelTurfTab : TurfTab { public void Lees (string s) { ... } public double Verschil (RelTurfTab ander ) private double relatief (int i) { ... } }

Specificeren Hoe vergelijk je frequentietabellen? Alle letters zijn belangrijk Totaliseer de verschillen voor alle letters Tekstlengte mag niet van invloed zijn Gebruik de relatieve frequentie Tekort mag overschot niet compenseren Tel het verschil altijd positief

De klasse RelTurfTab public class RelTurfTab : TurfTab { private double relatief (int i) { } return ; (double) tellers[i] / totaal public double Verschil (RelTurfTab ander ) { } double totaal = 0.0; return totaal; for (int t=0; t<26; t++) totaal += Math.Abs ( ); this.relatief(t) – ander.relatief(t)

De klasse RelTurfTab public class RelTurfTab : TurfTab { public void Lees (string naam) { TextReader reader; string tekst; if (naam.StartsWith("http://")) reader = new StreamReader( new WebClient( ) . OpenRead(naam) ); else reader = new StreamReader(naam); tekst= reader.ReadToEnd(); this.Turf (tekst); }

Modelleren geplukt van het internet we stoppen er niet kant-en-klare tabellen in... ...maar voorbeeldteksten, waarvan het programma de letters zelf mag turven <tags> verstoren taalbeeld! <html> <a href=www.cs.uu.nl>Klik hier</a> <img src=picture.jpg>

De klasse TurfTab class TurfTab { int [ ] tellers; int totaal; public TurfTab ( ) { ... } public void Turf (String s){ ... } public String ToString ( ) { ... } deze methode herdefiniëren in RelTurfTab virtual private void turf (char c){ ... } protected }

extra member-variabele De klasse RelTurfTab class RelTurfTab : TurfTab { extra member-variabele bool teltMee = true; override protected void turf (char c) { } herdefinitie if (c== ‘<’) teltMee = false; if (c== ‘>’) teltMee = true; if (teltMee) doe de oorspronkelijke versie base . turf (c);

Implementatie af! Implementeer Edit Compile Run Specificeer Modelleer

Modelleren Bepaal de letter- frequentie van de onbekende tekst we stoppen er niet kant-en-klare tabellen in... Bepaal de letter- frequentie van de onbekende tekst Vergelijk die met opgeslagen frequentie- tabellen van diverse talen De “best passende” is het! misschien ...maar voorbeeldteksten, waarvan het programma de letters zelf mag turven

Specificeren Hoe vergelijk je frequentietabellen? Alle letters zijn belangrijk Totaliseer de verschillen voor alle letters Tekstlengte mag niet van invloed zijn Gebruik de relatieve frequentie Tekort mag overschot niet compenseren Tel het verschil altijd positief

uit System.Windows.Forms Ontwerpen Klassen in dit programma class Frame class TurfTab class RelTurfTab : TurfTab class Taal : Frame uit System.Windows.Forms hadden we al voegt toe: - relatieve telling - lezen vanaf WWW voegt toe: - interactie