Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.

Slides:



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

OOS Object geOrienteerd Software-ontwerp - 3
Hoofdstuk 8: Recursie.
Van domeinklasse tot implementatie
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Hoofdstuk 10.2 Rekenmachine-casus.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
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.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
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 14.2 Algoritmen: Automatische taalherkenning.
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
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Reader en Writer Stream FileStream MemoryStream NetworkStream BufferedStream GZipStream CryptoStream TextWriter StreamWriter StringWriter BinaryWriter.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
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 :
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
GUI & classes Een Gui in een class steken en het object gebruiken.
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.
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
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
Reader en Writer leest en schrijft bytes leest string en char
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Windows-applicatie using System.Windows.Forms; using System.Drawing;
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
Lezen en schrijven van tekst
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Herhalingen
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Practicum: schets-editor
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: Tiles en File I/O in Tick Tick
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Implementatie Zoekboom
Object Communication (Jewel Jam)
Transcript van de presentatie:

Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty ); if (r[0] == "stad") { } else { new Point( int.Parse(r[2]), int.Parse(r[3]) ) ); this. bouwStad (r[1] this.bouwWeg( r[1], r[2], int.Parse(r[3]) ); } } } if (r.Length==4) StreamReader sr = new StreamReader(filenaam);

Opbouw van het Netwerk void bouwStad (string naam, Point p) { } Stad st = new Stad(naam, p); void bouwWeg (string van, string naar, int kosten) { } Steden. Add (st); Stad st1 = this. vindStad (van); Stad st2 = this. vindStad (naar); st1. BouwWeg (st2, kosten); st2. BouwWeg (st1, kosten); Netwerk’s Stad’s void BouwWeg(Stad doel, int k) { } Wegen. Add ( new Weg(doel, k) ); class Stad {

Opbouw van het Netwerk Stad vindStad (String naam) { } foreach ( Stad st in Steden ) { } if ( st.naam == naam ) return st ; return null ; Stad VindStad (Point p) { foreach ( Stad st in steden ) { } if ( return st ; return null ; p.X-st.Plek.X < 5 && p.Y-st.Plek.Y <5 ) Math.Abs( )

while (... ) { pad =... if (compleet) return pad; for (...) if ( !kring ) paden.Push(...) } return null; Niet de eerste oplossing, maar de beste zoeken! while (... ) { pad =... if (compleet) return pad; for (...) if ( !kring ) paden.Push(...) } return null; beste = null; return beste; beste=pad;if (beter) beste=pad; && !zinloos)

Hoofdstuk 11.2 Algoritmen: Automatische taalherkenning

Implementeer Programmeer-cyclus Edit Compile Run Specificeer Modelleer

Modelleren ngedicht “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. Il brigue: les tôves libricilleux Se gyrent en vrillant dans la guave. Enmîmés sont les goubebosqueux Et le mômerade horsgrave. Es brillig war. Die schlichten Toven Wirrten un wimmelten in Waben; Und aller-mümsigen Burggroven Die mohmen Räth' ausgraben. 't Was bradig en de slijp'le torfs Driltolden op de wijde weep. Misbrozig stonden borogorfs 't Verdwoolde grasvark schreep. nHoe herken je de taal? uk fr de nl

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

Modelleren nBepaal de letterfrequentie van de onbekende tekst nVergelijk die met opgeslagen frequentie- tabellen van diverse talen nDe “best passende” is het! misschien

Modelleren 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 onbekende tekst voorbeeld- talen en -teksten

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

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

Implementatie: GUI class Taal : Form { TextBox invoer; Label uitvoer; TextBox [ ] taal;TextBox [ ] url; const int aantal = 10; 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 ); voorbeeld = new RelTurfTab(); voorbeeld. Lees (url[t].Text ); for (int t=0; t<aantal; t++) { } d = onbekend. Verschil (voorbeeld); if (d<kleinste) kleinste = d; { antwoord = taal[t].Text; } uitvoer. Text = antwoord; kleinste = 1.0; antwoord = "onbekend"; double kleinste; string antwoord;

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

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

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

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

De klasse RelTurfTab public void Lees (string naam) public class RelTurfTab : TurfTab { { } TextReader reader; string regel; regel = reader.ReadLine() while ( ( ) != null ) this.Turf (regel); reader = new StreamReader(naam); reader = new StreamReader( new WebClient( )); if (naam.StartsWith(" else. OpenRead(naam)

Modelleren we stoppen er niet kant-en-klare tabellen in......maar voorbeeldteksten, waarvan het programma de letters zelf mag turven geplukt van het internet Klik hier verstoren taalbeeld!

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

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

Implementatie af! Implementeer Edit Compile Run Specificeer Modelleer

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

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

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