2e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies.

Slides:



Advertisements
Verwante presentaties
Het type int Tekenen met Java operatoren
Advertisements

Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
Inleidend probleem Data structuur (hiërarchie van classes)
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
Hoofdstuk 8 Objecten en klassen.
Consoletoepassing Variabelen Klassen
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
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.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
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 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.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
2e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nOmcirkeld: tentamen2 Achter pijltje: gemiddelde tot nu toe nNeem het.
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
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.
Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
…is eigenlijk overbodig!
Aanroep van een methode voert opdrachten uit in de body daarvan
Lezen en schrijven van tekst
Voortborduren op eerder gedaan werk
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: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Letterfrequentie turven
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
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
Lezen en schrijven van tekst
Basis Gameprogrammeren
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Arjan Egges & Paul Bergervoet
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Arjan Egges & Paul Bergervoet
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Practicum: schets-editor
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Gameprogrammeren: Interfaces
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
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Arrays
Transcript van de presentatie:

2e Deeltentamen Nagekeken werk ligt voor in de zaal (alfabetisch op achternaam) Neem het even mee, de uitwerking wordt in het college besproken Discussies over de antwoorden: in de pauze Je mag het werk behouden

1. class A : B { C D; } B is een A A heeft een C C is een A, en dus ook een B A erft een C van B 123456 ACBBAB BADDCA CBACBD DDCADC

2. value is de waarde die de property... heeft in de get-minimethode krijgt in de get-minimethode heeft in de set-minimethode krijgt in de set-minimethode 123456 ACBBAB BADDCA CBACBD DDCADC

3. K p = null wel niet prop gebruiken member veranderen meegeven methoden aanroepen toekennen vergelijken toekennen meegeven 123456 ACBBAB BADDCA CBACBD DDCADC

4. array bound exception treedt op als... index niet numeriek array geheel nog niet geinitialiseerd index te groot array ergens niet geinitialiseerd 123456 ACBBAB BADDCA CBACBD DDCADC

5. int[,,]a = new int[2,3,4]; heeft ruimte voor... 3 getallen verschilt per dimensie 123456 ACBBAB BADDCA CBACBD DDCADC

6. Wat fout in Quotes moet weg in a[t]=='x' bool Bevat( char[] a, char x) { for (int t=0; y<a.Length; t++) if (a[t]=='x') return true; return false } 6. Wat fout in Quotes moet weg in a[t]=='x' Array a niet new aangemaakt accolades rond for-body ontbreken else voor return false ontbreekt 123456 ACBBAB BADDCA CBACBD DDCADC

7. parameter van Thread-constructor door Start... aangeroepen methode steeds opnieuw aangeroepen methode onderhandengenomen object steeds opnieuw o.h.g. object 123456 ACBBAB BADDCA CBACBD DDCADC

8. opvragen van char in string door s[i] dit kan omdat... ToCharArray wordt aangeroepen Klasse string definieert indexer String is immutable IndexOf wordt aangeroepen 123456 ACBBAB BADDCA CBACBD DDCADC

9. Wat fout in herhaling gaat te lang door werkt niet als e==0 int Macht( int x, int e) { int res = 1; for (int t=1; t<=e; t++) x *= res; return res; } 9. Wat fout in herhaling gaat te lang door werkt niet als e==0 werkt niet als x==1 uitkomst is altijd 1 123456 ACBBAB BADDCA CBACBD DDCADC

10. Klasse Object erft methodes van alle klasses is enige klasse zonder superklasse is subklasse van alle klasses is type van null object 123456 ACBBAB BADDCA CBACBD DDCADC

11. Invalidate effect: forceert Paint-event (en dat roept Paint-event-handler aan, en dat tekent het plaatje opnieuw) gebruiken als: je de member-variabelen aanpast die invloed hebben op het plaatje

12. x = int.Parse(s); exception opvangen exception voorkomen try { x = int.Parse(s); } catch (Exception e) { x = 0; } x = 1; for (int t=0; t<s.Length; t++) if (s[t]<'0' || s[t]>'9') x = 0; if (x==1) x = int.Parse(s);

12. class / struct class: variabele bevat verwijzing struct: variabele bevat het object zelf struct gebruiken voor kleine objecten

14. virtual / override gebruiken: als je in een subklasse een method uit de superklase opnieuw definieert (virtual in superklasse, override in subklasse) zo niet: na declaratie SuperKl x = new SubKl(); en aanroep x . m(); wordt de methode van SuperKl aangeroepen

15. HoofdKlein char HoofdKlein(char x) { if (x>='A' && x<='Z') return (char)(x-'A'+'a'); else return x; }

17. String . Replace/EndsWith class String { string Replace(char a, char b) { string res; for (int t=0; t<this.Length; t++) if (this[t]==a) res += b; else res += this[t] return res; } bool EndsWith(string s) { int sl = s.Length, tl = this.Length; if (sl>tl) return false; for (int t=0; t<s.Length; t++) if (s[t]!=this[t+tl-sl]) return false; return true; } }

18. Turven int [ ] turf = new int [100]; int max = 0; turf [ s . Length ] ++; if (s.Length>max) max = s.Length; for (int t=1; t<=max; t++) { Console.Write( t + ": " ); for (int a=0; a<turf[t]; a++) Console.Write('*'); Console.Write("\n" ); }

Reader en Writer leest en schrijft bytes leest string en char schrijft string en char Object Stream TextReader TextWriter FileStream StreamReader StreamWriter store MemoryStream StringReader StringWriter NetworkStream BinaryReader BinaryWriter XmlReader XmlWriter BufferedStream leest XML-teksten leest int en double decorator GZipStream CryptoStream

statische methode die het constructie-werk doet Figuur 32 (wat de constructor nodig heeft) Object Stream TextReader (Stream) (Filenaam ,FileMode) FileStream StreamReader (Filenaam) (Stream, Encoding) store Memory Stream StringReader ( ) (String) Network Stream BinaryReader (Socket) (Stream) XmlReader .Create(…) Buffered Stream (Stream, int) decorator GZip Stream statische methode die het constructie-werk doet (Stream, CompressionMode) Crypto Stream (Stream, CryptoStreamMode)

Encoding: char naar byte header A a ä α ASCII 1 byte per char, <128 41 61 3F 3F Unicode 2 bytes per char FE FF 41 00 61 00 E4 00 B1 03 BigEndianUnicode 2 bytes, grote eerst FF FE 00 41 00 61 00 E4 03 B1 Latin-1 (iso-8859-1) 1 byte per char, <256 41 61 E4 3F UTF8 1/2/3 bytes per char EF BB BF 41 61 C3 A4 CE B1

Encoding

Implementaties van Collections ICollection LinkedList Queue Stack IList List ISet HashSet SortedSet IDictionary SortedList Sorted Dictionary

Hoe doorloop je een Collection? List Collection for (int t=0; t<alles.Count; t++) doeIetsMet( alles[t] ); foreach (String s in alles) doeIetsMet( s ); opdracht for ) ( expr ; type expr in naam foreach ( ) opdracht

Algoritmen: Console-applicaties Hoofdstuk 11.1 Algoritmen: Console-applicaties

Console applicatie statische methode statische methoden class Hallo { static void Main ( ) { Console . WriteLine("Wat is je naam?"); string naam = Console . ReadLine( ); Console . WriteLine("Hallo " + naam + "!" ); } }

class Console class Console { TextReader In { get; } TextWriter Out { get; } static void WriteLine( string s ) { Console . Out . WriteLine( s ); } static string ReadLine( ) { return Console . In . ReadLine( ); } }

class TextReader abstract class TextReader { string ReadToEnd( ) { StreamReader string resultaat, regel; regel = this.ReadLine( ); StringReader while (regel != null) { resultaat += regel + "\n" ; regel = this.ReadLine( ); } return resultaat; } abstract string ReadLine( ) ; }

class TextReader class TextReader toekennen { string ReadToEnd( ) { en meteen testen string resultaat, regel; regel = this.ReadLine( ); while (regel != null) ( (regel = this.ReadLine()) != null ) { resultaat += regel + "\n" ; regel = this.ReadLine( ); } return resultaat; } abstract string ReadLine( ) ; }

Commandline programma $> date parameters voor het programma parameters voor het programma Fri Oct 29, 11:30 $> ls aap.txt hallo.doc prog.cs $> grep void prog.cs prog.cs, line 6: void Main() prog.cs, line 10: void teken() $> ls > files.txt $> output redirection

Voorbeeld file-processor grep patroon file1 file2 ... Unix-commando laat alle regels van de files zien waarin het gegeven patroon voorkomt (met filenaam en regelnummer)

Grep: main class Grep { static void Main ( string [ ] params ) { if (params.Length==0) Console.WriteLine("Usage: Grep patroon file ..."); else for (int t=1; t<params.Length; t++) Grep.bewerk( params[0], params[t] ); }

Grep: bewerk static void bewerk (String pat, String naam) { TextReader reader; String regel; try { if (naam=="") reader = Console.In; else reader = new StreamReader (naam); while ( for (int n=1; ( regel=reader.ReadLine() ) != null ; n++ ) if ( regel . Contains (pat) ) Console.WriteLine( naam + n + regel ); } catch (Exception e) { Console.WriteLine(naam + e); }

Practicum: schets-editor MDI- Container Menu SchetsWin Tools SchetsControl Akties

Tool kiezen class SchetsWin : Form SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; void maakTools( ICollection<ISchTool> tools ) { foreach (ISchetsTool tool in tools) { RadioButton r = new RadioButton(); r.Text = tool.ToString(); r.Tag = tool; r.Click += this.klikTool; } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } }

Tool gebruiken class SchetsWin interface ISchetsTool : Form SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += this.muis; } Point p); void muis ( object o, MEA mea) { huidig.MuisVast( sc, mea.Location) } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }

Tool gebruiken class SchetsWin interface ISchetsTool anonieme methode : Form SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += ( object o, MEA mea) => Point p); anonieme methode { huidig.MuisVast( sc, mea.Location); } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }

Schets-tools (1) interface ISchetsTool { } void muisVast ( SchetsControl s, Point p) ; void muisLos ( SchetsControl s, Point p) ; void muisDrag ( Schetscontrol s, Point p ) ; void Letter ( SchetsControl s, char k) ;

Schets-tools (2) abstract class StartpuntTool : ISchetsTool { } Point startpunt ; Brush kwast ; virtual void MuisVast ( SchetsControl s, Point p) { startpunt = p; } virtual void MuisLos ( SchetsControl s, Point p) { kwast = new SolidBrush( s.Penkleur ); } abstract void MuisDrag ( SchetsControl s, Point p) ; abstract void Letter ( SchetsControl s, Point p) ;

Schets-tools (3) class TekstTool : StartpuntTool { } ISchetsTool Startpunt Tool class TekstTool : StartpuntTool { } override void Letter ( SchetsControl s, char c) { } Graphics g = s . MaakBitmapGraphics(); g . DrawString( c, kwast, ..., startpunt ); startpunt.x += ……c….Width; override void MuisDrag ( SchetsControl s, Point p) { } override void MuisLos ( SchetsControl s, Point p) { }

Schets-tools (4) abstract class TweepuntTool : StartpuntTool { } TekstTool Tweepunt Tool ISchetsTool Startpunt Tool abstract class TweepuntTool : StartpuntTool { } override void MuisDrag ( SchetsControl s, Point p) { } Graphics g = s . CreateGraphics(); this . Bezig (g, startpunt, p); override void MuisLos ( SchetsControl s, Point p) { Graphics g = s . MaakBitmapGraphics(); this . Compleet (g, startpunt, p); } abstract void Bezig (Graphics g, Point p1, Point p2) ; virtual void Compleet (Graphics g, Point p1, Point p2) { this . Bezig (g, p1, p2); }

Schets-tools (5) class RechthoekTool : TweepuntTool { } TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool class RechthoekTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { g . DrawRectangle(kwast, Punten2Rechthoek(p1,p2) ); } static Rectangle Punten2Rechthoek(Point p1, Point p2) return new Rectangle( { new Point( Math.Min(p1.X,p2.X), Math.Min(p1.Y,p2.Y)) new Size ( Math.Abs(p1.X-p2.X), Math.Abs(p1.Y-p2.Y)) ); }

Schets-tools (6) class VolRechthoekTool : RechthoekTool { } TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class VolRechthoekTool : RechthoekTool { } override void Compleet ( Graphics g, Point p1, Point p2 ) { } g . FillRectangle(kwast, Punten2Rechthoek(p1,p2) );

Schets-tools (7) class LijnTool : TweepuntTool { } TekstTool LijnTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class LijnTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(kwast,3), p1, p2 );

Schets-tools (8) class PenTool : LijnTool { } TekstTool LijnTool PenTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class PenTool : LijnTool { } override void MuisDrag ( SchetsControl s, Point p ) { } this . MuisLos (s, p); this . MuisVast (s, p);

Schets-tools (9) class GumTool : PenTool { } TekstTool LijnTool PenTool GumTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class GumTool : PenTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(Brushes.White,7), p1, p2 );