templates: het probleem recursieve datastructuren college 10 gebruik template wat zouden we willen templates exceptions type-parameters!

Maat: px
Weergave met pagina beginnen:

Download "templates: het probleem recursieve datastructuren college 10 gebruik template wat zouden we willen templates exceptions type-parameters!"

Transcriptie

1 templates: het probleem recursieve datastructuren college 10 templates exceptions typedef... El; class Knoop El head; Knoop* tail; ; void swap ( El& x, El& y ) const EL t = x; x = y; y = t; er is maar één definitie van EL per programma zo is het lastig om een bibliotheek te maken 1 2 wat zouden we willen gebruik template type-parameters! T. void swap ( T & x, T & y ) const T t = x; x = y; y = t; In C++: templates template < typename T > void swap ( T & x, T & y ) const T t = x; x = y; y = t; de type-parameter 3 template < typename T > void swap ( T & x, T & y ) const T t = x; x = y; y = t; void main () int i = 1, j = 2; swap ( i, j ); char c = 'a', d = 'b'; swap<char> ( c, d ); hier is het type T niet aangegeven je mag type van T aangeven, soms moet het 4 1

2 klasse definitie met template afkortingen template < typename type > class Stack Node < type > * list; Stack ( ) : list ( NULL ) bool isempty ( ); void push ( const type& el ); void pop ( ); type& top ( ); ; template < typename type > void Stack < type > :: push ( const type& el ) list = new Node <type> ( el, list ); void gebruik ( ) Stack < int > s; int n = 3; s. push ( n ); 5 gebruik typedef: typedef Stack<int> IntStack; helaas mag een typedef geen template zijn 6 non-type parameters templates template<typename T, int size> class BStack T elems [ size ]; int next; BStack ( ) : next ( 0 ) bool isempty ( ) return next == 0 ; void push ( const T& e ) if ( next < size-1 ) elems [ next++ ] = e; else throw "stack full"; void pop () next -= 1; ; T& top () return elems [ next-1 ]; ; ; 'gooit' een foutmelding zullen we nog uitleggen maken (class) definities flexibeler vaak implementatie beperkingen soms moet je argumenten aangeven werkt niet over module-grenzen geen templates in.h oplossing #include mylib.cpp toch buitengewoon nuttig veel gebruikt in C++ standaard bibliotheken STL Standaard Template Library, bevat: stack, queue, vector, list, set,

3 template default argumenten template default argumenten 2 templates kunnen default waarde voor argumenten hebben (net als functies) template < typename T=int, int s=2 > class Node default type default waarde T el; Node *kids [ s ]; Node ( T t ) : el( t ) for ( int i=0; i<s; i++ ) kids[i]=null; ; lege argumentlijst gebruik nodig, als bij f() void main() Node<> n(1); Node<char,3> c('a');... 9 default argumenten mogen zelfs andere template variabelen zijn: template < typename T=int, typename S=T > class Tuple T links; ook S=Node<T> mag S rechts; Tuple ( T t, S s ) : links ( t ), rechts ( s ) ; void main() Tuple<> t(2,3); gebruik van templates exceptions gebruik templates als je stukken code geschikt wil maken voor algemener hergebruik compiler kan creatieve errors geven goede strategie: ontwikkel code voor concreet type (typedef int T;) test het voeg dan templates toe 11 het probleem: tijdens uitvoeren van programma gaat er iets mis delen door 0, geen geheugen voor new, verkeerde argumenten ( fac ( -1 ), head ( Empty ),...) file blijkt niet te bestaan, foute data te bevatten,.. huidige oplossingen: hoop er het beste van test m.b.v. assert in het programma overal rekening houden met falen nadelen van deze oplossingen: serieuze applicaties mogen niet zo maar stoppen rekening houden met falen is lastig hoe weet je zeker dat je dit nergens vergeet 12 3

4 wat zouden we willen zelf geschreven code om fout af te handelen in 'normale' code weinig of geen rekening houden met fouten condities opschrijven à la assert is OK overal code voor foutafhandeling is niet leuk/handig een functie aanroepen die alles voor je doet gaat niet je zit nog in het uitvoeren van allerlei functies, daar kom je niet van zo maar vanaf je wil huidige functies verlaten en fout afhandelen exceptions zijn hier voor gemaakt wel in C++ definitie maar, niet iedere compiler kent ze! ook in veel andere moderne talen 13 exceptions gooi (throw, raise) een exception als er fout geconstateerd wordt in plaats van programma te stoppen via assert of exit als je code niets speciaals bevat stopt het programma je kunt de exception echter vangen (catch) alle functies tussen gooien en vangen worden afgebroken programma gaat verder bij vangen alle lokale objecten die verdwijnen worden opgeruimd (destructor wordt uitgevoerd) vergelijk met (super) break 14 gooien van exception bestaande exceptions expressie om het soort fout aan te geven enumeratie type of special gemaakte klasse class EmptyListError ; El& head ( List l) if ( l == Empty ) throw EmptyListError ( ); return l->kop; // hier mag iedere expressie staan je ziet niet aan het type dat deze functie ook anders kan eindigen dit mag je wel aangeven in het type van de functie El& head ( List l ) throw ( EmptyListError )... // haakjes moeten 15 als new of new [] mislukt: bad_alloc de gui_kernel genereert soms exceptions dialoog kan niet geopend worden problemen met het canvas de C++ bibliotheken gebruiken de klasse stdexcept of exception 16 4

5 vangen van exceptions gebruik de volgende expressie... // wat je van plan was te doen catch ( EmptyListError e ) // hier hoort een compound statement: accolades moeten cout << "Er is een Empty List Exception opgetreden\n"; // hier mogen nog meer speciale gevallen staan catch (...) // (...) vangt alle exceptions: catch all cout << "er is een exception opgetreden\n"; catch blokken in tekstuele volgorde bekijken exceptions met simpele types je hoeft niet per sé een speciaal type voor fouten te maken throw "help"; catch ( char* s ) cout << s << endl; dit zal netjes help afdrukken hoewel het verder een zinloos programma is geen exception: catch niet uitvoeren hiërarchiën van exceptions indien veel mogelijke soorten fouten kun je een klasse-hiërarchie voor fouten maken een basisklasse class BaseException virtual void showexception ( ostream& o ) o << "An exception occured\n"; ; ; // dynamic binding een subklasse: hiërarchiën van exceptions 2 class ListException : public BaseException char *kind; ListException ( char * s = NULL ) if (s) kind = new char [ strlen ( s ) + 1 ]; strcpy ( kind, s ); else kind = new char ('\0'); ; void showexception ( ostream& o ) o << "List Exception: " << kind << endl ; ; ;

6 gebruik klasse-hiërarchie gebruik klasse-hiërarchie poging 2 throw ListException ( "no list" ); catch ( BaseException be ) be. showexception ( cout ); wat doet dit? An exception occured waarom geen list exception? dynamic binding alleen bij reference variabelen! 21 throw ListException ( "no list" ); * mag ook catch ( BaseException& be ) be. showexception ( cout ); wat doet dit? & is essentieel List Exception: no list zo handel je verschillende fouten uniform af bedoeld gebruik: List& tail ( List l ) if ( l == Empty ) throw ListException ( "tail of empty list" ); return l -> rest; 22 een nieuw subtype en wat doet... enum Kind QEempty, QEfull ; class QueueException : public ListException Kind kind; QueueException ( Kind k ) : kind ( k ) // QueueException ( ) : ListException( "queue" ) void showexception ( ostream& o ) mag wel, maar is niet netjes. o << "Queue Exception: "; Laat de catch switch(kind) dit bepalen case QEempty: o << "take element form empty queue\n"; exit(1); case QEfull: o << "put element in full queue\n"; exit(2); default: exit(3); ; ; 23 throw QueueException ( QEfull ); catch ( ListException& le ) cout << "A list exception: "; le. showexception ( cout ); catch ( BaseException& be ) cout << "A base exception: "; be. showexception ( cout ); A list exeception: Queue Exception: put element in full queue QueueException is immers een subtype van ListException 24 6

7 pas op met pointers pas op met pointers 2 void main() wat doet dit? throw 5; catch ( int* p ) cout << "fout " << *p << endl; error code 5 catch ( int i ) 5 is geen pointer cout << "error code " << i << endl; 25 void main() int n = 5; throw &n; catch ( int i ) object n bestaat niet meer! cout << "error code " << i << endl; catch ( int* p ) cout << "fout " << *p << endl; destructor van alle tijdelijke objecten wordt uitgevoerd fout void main() int *p = new int (5); throw p; catch ( int i ) pas op met pointers 3 dit object blijft bestaan normaal roep je hier een functie aan die misschien een exception geeft cout << "error code " << i << endl; fout 5 catch ( int* p ) cout << "fout " << *p << endl; 27 unexpected als er geen passende catch is wordt de functie unexpected uitgevoerd deze zal het programma afbreken we kunnen ook deze functie vervangen door een eigen functie: set_unexpected ( mijn_functie ) ; 28 7

8 goed gebruik van exceptions gebruik het echt voor uitzonderingen normaal programma verloop zonder en catch uitsplitsen van problemen tot zo ver als nodig/zinvol voor gebruiker van programma voor dit soort zaken zijn exceptions zeer nuttig maken goede foutafhandeling mogelijk zonder de structuur van het programma te verpesten gebruik het! base class C++ standard library exception class exception exception ( ) throw ( ); exception ( const exception& rhs ) throw ( ); exception& operator = ( const exception& rhs ) throw ( ); virtual ~exception ( ) throw( ); virtual const char *what ( ) const throw ( ); ; subclasses: runtime_error, logical_error, bad_alloc, bad_cast,... zal zelf geen exceptions gooien meest gebruikte methode gebruik exception uit C++ libraray gebruik exception uit C++ libraray 2 #include <iostream> #include <exception> using namespace std; class DivideByZero : public exception DivideByZero ( ) : exception ( "attempt to devide by 0" ) ; double quotient ( int teller, int noemer ) if ( noemer == 0 ) throw DivideByZero ( ); else return double ( teller ) / noemer; import exception subclass exception gooi exception type cast 31 void main() for ( ; ; ) int t, n; cout << "Geef 2 getallen "; if (! (cin >> t >> n)) break; double q = quotient ( t, n ); cout << "Het quotient is " << q << endl; vang exception catch ( DivideByZero &dbz ) cout << "Exception opgetreden: " << dbz.what ( ) << endl; gebruik what waarom apart object? 32 8

9 rethrowing rethrowing demo algemeen: vang alleen die exceptions waar je wat mee kunt/wil wat als je een exception gedeeltelijk wil afhandelen? vang hem en gooi een nieuwe als je klaar bent beter: gooi dezelfde exception opnieuw als je klaar bent met de gedeeltelijke afhandeling void demofun ( ) cout << "demofun: gooi de exception\n"; throw exception ( "demo\n" ); catch ( exception& e ) cout << "Eerst vangst: " << e. what (); throw; cout << "niet afgedrukt\n"; throw rethrow catch 1 catch ( exception& e ) eerste afhandling throw; rethrow, geen argument 33 void main() cout << "main functie\n"; demofun (); cout << "ook niet afgedrukt\n"; catch ( exception & e ) cout << "Tweede vangst: " << e. what (); catch 2 34 constructors and destructors fouten met new wat als er iets mis gaat in een constructor? kan geen error indicatie opleveren lever corrupt object op en hoop dat iedereen test zet ergens een globale om fout aan te geven gooi een exception meestal de beste optie zij-effect van exception gooien alle tijdelijke objecten worden opgeruimd kun je dus niet meegeven aan throw destructors worden uitgevoerd! als er nu weer een exception gegooid wordt roept C++ de functie terminate aan 35 oude methode (C): NULL-pointer i.p.v. object void main () const int size = ; const int aantal = 100; double *blokken [ aantal ]; for ( int i=0; i<aantal; i+=1 ) blokken [ i ] = new double [ size ]; gelukt? if ( blokken [ i ] == NULL ) cout << "new voor blokken [ "<< i <<" ] mislukt\n"; break; else cout << "blokken["<<i<<"] bevat "<<size<<" doubles\n"; 36 9

10 met bad_alloc exception beter: gebruik de bad_alloc exception niet altijd geïmplementeerd void main () const int size = ; const int aantal = 100; double *blokken [ aantal ]; for ( int i=0; i<aantal; i+=1 ) blokken[i] = new double [ size ]; cout << "blokken["<<i<<"] bevat "<<size<<" doubles\n"; catch ( bad_alloc& ba ) cout << ba.what() << endl; als new mislukt 37 class GUIException virtual void report () const; ; exceptions in de gui void makealert ( const char alert_text [] ) MessageBox ( NULL, alert_text, NULL, MB_APPLMODAL ); void GUIException :: report () const makealert ( "Unknown GUI Exception occurred" ); maakt modal dialogue 38 exceptions in de gui 2 class GUITerminated : public GUIException int status; GUITerminated ( int st=0 ) : status ( st ) void report ( ) const; ; void GUITerminated :: report () const switch ( status ) case 1: makealert ( "GUI Initialisation error" ); return; default: return; WinMain in gui int WINAPI WinMain ( HINSTANCE hi, HINSTANCE hpi, PSTR cmdline, int cmdshow) thegui().run (WINARGS(hi, hpi, cmdline, cmdshow)); catch (const GUIException& ge) ge.report (); return 0; 'gewone' exceptions

11 exceptions en globale objecten misbruik exceptions wat als er iets mis gaat met het maken van een globaal object? gebeurt vóór de (win)main er is nog geen catch default gebruikt: programma stopt oplossing: maak ze binnen de in de main: MyAppl& thegui () by reference opleveren: static MyAppl mg; geen pointers return mg; er is er maar één 41 int fib ( int n ) int a=1, b=0; for ( ; ; n-- ) if ( n<=0 ) throw a; int c = a; a += b; b = c; catch ( int r ) return r; Misbruik: exception gebruikt als control structure: super break niet mooi, maar kan wel void main ( ) for ( int i=0; i<=10; i+=1 ) cout << "fib(" << i << ")= " << fib ( i ) << endl; uitvoer: fib(0)=1 fib(1)=1 fib(2)=2 fib(3)=3 fib(4)=5 fib(5)=8 fib(6)=13 fib(7)=21 fib(8)=34 fib(9)=55 fib(10)=89 42 specificatie van exceptions exceptions maken het mogelijk dat een functie het 'contract' volgens het type niet nakomt int fac ( int n ) als er een exception optreedt wordt er nooit een integer opgeleverd je kunt dit in het type aangeven: int fac ( int n ) throw ( NegatieveInvoer ) of int fac ( int n ) throw ( NegatieveInvoer, Overflow ) aangeven dat er geen exception kan optreden: int fac ( int n ) throw ( ) 43 het Ariane 5 incident raket explodeert 20 seconden na start oorzaak is een niet gevangen exception! hergebruik software uit Ariane 4 in software van versnellingsmeter wordt een double opgeslagen in 16 bit integer ( voor logging ) in Ada geeft dit een exception bij overflow exception werd niet gevangen omdat programmeur bewezen had dat het in de Ariane 4 niet voorkwam apparaat schakelt zichzelf uit bij ongevangen exception backup apparaat heeft zelfde software raket weet eigen positie niet meer en raakt uit koers door grote krachten breekt raket in stukken dit schakelt self-destruction in 44 11

12 ariane 5 meer foto's nogmaals de gevolgen van een gemiste exception vang ze dus allemaal! recursive descent parser in C++ foutafhandeling class baseerror virtual void drukaf() cout << "Een base error\n"; ; class Error : public baseerror char *soort; maak subtype voor speciale fouten Error (char naam [] = "unspecified error") soort = new char [ strlen ( naam )+1 ]; strcpy ( soort, naam ); virtual void drukaf() cout << "Error: " << soort << "\n"; ; 47 invoer van letters class Invoer protected: char huidig; virtual bool einde ( ) throw Error("Einde"); virtual bool isteken ( char c ) return huidig == c; virtual bool islayout () return isteken(' ') isteken('\t'); virtual char volgendteken() throw Error("VolgendTeken"); virtual char skiplayout ( ) while ( islayout() ) volgendteken ( ); return teken ( ); virtual char teken ( ) return huidig; ; 48 12

13 invoer uit C-string class stringinvoer : public Invoer int i; char *string; stringinvoer (char s []) : i(0) string = new char [ strlen ( s )+1 ]; strcpy ( string, s ); huidig = s [ 0 ]; virtual bool einde () return string [ i ] == '\0'; virtual char volgendteken() if (! einde() ) huidig = string [ ++i ]; return huidig; 49 knopen enum KnoopType Int, Op, Einde, Undef ; class Knoop protected: Knoop** children; int arity, stap; char * soort; ; KnoopType id; Knoop ( char n [], KnoopType kt=undef, int a=0 ) : arity ( a ), stap ( 3 ), id ( kt ) soort = new char [ strlen ( n )+1 ]; strcpy ( soort, n ); children = new Knoop* [ arity ]; Knoop*& child ( int i ); dynamisch rijtje kinderen virtual void drukaf ( int n=0 ) cout << setw(n) << "" << soort; friend ostream& operator<< ( ostream& os, Knoop* k ); 50 kinderen selecteren getal-knopen Knoop*& Knoop :: child ( int i ) if ( i<arity ) return children [ i ]; else throw Error("child: Deze knoop heeft niet zoveel kinderen"); door by-reference resultaat kunnen we ze ook veranderen class Getal : public Knoop int w; Getal ( int n ) : w ( n ), Knoop ( "Getal", Int, 0 ) int waarde () return w; void drukaf ( int n=0 ) cout << setw ( n ) << "" << w << endl; ;

14 operator-knopen getallen scannen class Operator : public Knoop char op; Operator ( char o, Knoop* x=null, Knoop* y=null ): Knoop ( " operator", Op, 2 ), op(o) soort [ 0 ] = o; children [ 0 ] = x; children [ 1 ] = y; void drukaf ( int n=0 ) if ( child ( 1 )) child ( 1 ) -> drukaf ( n+stap ); cout << setw ( n ) << "" << op << endl; if ( child ( 0 )) child ( 0 ) -> drukaf ( n+stap ); ; 53 aanname: huidige teken moet 'n cijfer zijn Getal* scangetal ( ) if (! isdigit ( invoer -> teken ( ) )) throw Error("scanGetal: eerste teken is geen cijfer"); int n = 0; do n = n*10 + invoer -> teken ( )-'0'; while ( isdigit ( invoer -> volgendteken ( ) ) ); invoer -> skiplayout ( ); return new Getal ( n ); 54 scannen scanner Knoop* scan ( ) char c = invoer -> teken ( ); switch ( c ) case '+': case '*': invoer -> volgendteken ( ); invoer -> skiplayout ( ); return new Operator ( c ); case '\0': case '\n': return new EINDE(); default: if ( isdigit ( c )) return scangetal ( ); else bevat laatste token ( als bij invoer ) class Scanner Knoop* k; Scanner ( ) : k ( NULL ) Knoop* token ( ) return k; Knoop* volgendetoken ( ) return k = scan ( ); bool eof ( ) return k -> id == Einde; ; Scanner scanner; throw Error ( "scan: ongeldig invoer teken\n );

15 Knoop* parse ( ) de parser Knoop* links = scanner. token (); Knoop* next = scanner. volgendetoken (); expr -> num rest switch ( next -> id ) rest -> op expr ε case Op: next -> child ( 0 ) = links; scanner. volgendetoken (); next -> child ( 1 ) = parse ( ); return next; case Einde: return links; default: aanname: token staat altijd klaar throw Error ( "parse error: operator of einde verwacht" ); 57 gebruik void main() invoer = new stringinvoer( "12 + 3* " ); scanner. volgendetoken (); Knoop* k = parse ( ); k -> drukaf ( ); cout << endl; catch ( Error& e ) e. drukaf ( ); * meneer van dalen wacht op antwoord! 58 prioriteit van operatoren los dit op in de regels van de grammatica i.p.v. E -> E * E E + E ( E ) num schrijven we E -> E + T T T -> T * F F F -> ( E ) num helaas is dit weer linksrecursief, maar we weten hoe we dit moeten aanpakken let ook op bindingsrichting = ( 3 2 ) 1 = 0 maar 3 ( 2 1 ) = 3 1 = 2 voor sommige operatoren is dit Knoop* parsef () Knoop* n = scanner. token (); switch ( n -> id ) case Int: scanner. volgendetoken (); return n; case Einde: return n; case Open: scanner. volgendetoken (); Knoop* expr = parsee(); parser voor factor if ( scanner. token () -> id == Sluit ) scanner. volgendetoken (); return expr; else throw Error ( "parse error: ) verwacht" ); geen probleem

16 parser voor term parser voor expressie Knoop* parset () Knoop* parsee () Knoop* f = parsef (); Knoop* t = parset (); Knoop* o = scanner.token(); Knoop* o = scanner.token(); switch ( o -> id ) switch ( o -> id ) case Op: case Op: if ( o -> soort[0] == '*') if ( o -> soort[0] == '+') o -> child ( 0 ) = t; o -> child ( 0 ) = f; scanner. volgendetoken (); scanner. volgendetoken (); o -> child ( 1 ) = parsee ( ); o -> child ( 1 ) = parset ( ); return o; return o; else else return f; return t; case Sluit: case Sluit: case Einde: return f; 61 case Einde: return t; 62 16

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

datastructuren college 13

datastructuren college 13 datastructuren college 13 GUI deel 2 1 events for the GUI een event is iedere voor het programma van buiten komende gebeurtenis muis knop in, nog steeds in, los, bewogen... het GUI-systeem doet veel werk

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/ Programmeermethoden Controle-structuren Walter Kosters week 3: 17 21 september 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleveren opgave 1 Inleveren: digitaal clintonobama1.cc en print van mooi.pdf.

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies software constructie recursieve datastructuren college 15 software engineering highlights 1 de software bestaat uiteindelijk uit datatypen functies verbindingen geven gebruik aan main is de top van het

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

Inleiding C++ Coding Conventions

Inleiding C++ Coding Conventions Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,

Nadere informatie

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:

Nadere informatie

9 Meer over datatypen

9 Meer over datatypen 9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,

Nadere informatie

Deeltentamen Grammatica s en ontleden 22 december 2005

Deeltentamen Grammatica s en ontleden 22 december 2005 Tentamen Grammatica s en ontleden 22 december 2005 1 Deeltentamen Grammatica s en ontleden 22 december 2005 Let op: opgave 1 t/m 4 tellen voor (slechts) 5 punten mee, opgave 5 voor maar liefst 50 punten,

Nadere informatie

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken - belangrijkste punten: - ontleden van de programmatekst - bijhouden van de datastructuren Data Structuren en Algoritmen

Nadere informatie

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

Nadere informatie

Instructies en blokken

Instructies en blokken Herhaling 1 Instructies en blokken Naar elke instructie staat een ; puntkomma Verschillende instructies worden door de accolades in een block samengevat. Een blok is het zelfde als een enkele instructie.

Nadere informatie

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur 1. (2 punten per deelvraag) Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

datastructuren college 12

datastructuren college 12 planning voor de rest van Datastructuren week maandag donderdag datastructuren college 12 15 mei vandaag 22 mei college 12: GUI toets 2: backtracking practicum dies onderwijsvrij hemelvaart onderwijsvrij

Nadere informatie

Lineaire data structuren. Doorlopen van een lijst

Lineaire data structuren. Doorlopen van een lijst Lineaire data structuren array: vast aantal data items die aaneensluitend gestockeerd zijn de elementen zijn bereikbaar via een index lijst: een aantal individuele elementen die met elkaar gelinkt zijn

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008 judge Teamhandleiding DOMjudge (versie..0mukp) 31 mei 008 /\ DOM DOM judge Inhoudsopgave 1 Inleiding Samenvatting.1 Inlezen en wegschrijven............................... Insturen van oplossingen...............................3

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar 2006-2007 23 Januari, 2007 **BELANGRIJK** : Schrijf je naam onderaan dit blad Leg volgende 3 begrippen kort en bondig uit : a. Concurrent

Nadere informatie

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Een typisch programma in C en C++ bestaat uit een aantal onderdelen: Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

Nadere informatie

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/ Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

Programmeren in C# Samenvatting van C#

Programmeren in C# Samenvatting van C# Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 25 november 2015 Herhaling Meer herhaling Recursie Mutuele recursie Objecten Herhaling Fibonacci class Fibonacci { public static void fibonaccitot(int bovengrens)

Nadere informatie

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

C++ programmeermethoden Bachelor Kunstmatige Intelligentie C++ programmeermethoden Bachelor Kunstmatige Intelligentie laatste (2e) Deeltentamen Datum: 1 juni 2017 Tijd: 17.00-19.00 Aantal pagina s: 12 (inclusief voorblad) Aantal vragen: 5 Maximaal aantal te behalen

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten

Nadere informatie

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2.

Nadere informatie

Online c++ leren programmeren:

Online c++ leren programmeren: Online c++ leren programmeren: Inhoud 1)Waar vind ik een c++ compiler?... 2 2)Hoe start ik een programma in c++?... 2 3)Een eerste c++ programma:... 3 Een eerste programma schrijven:... 3 Mijn eerste programma

Nadere informatie

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd

Nadere informatie

Programmeren in C++ Efficiënte zoekfunctie in een boek

Programmeren in C++ Efficiënte zoekfunctie in een boek Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

Gertjan Laan Aan de slag met C++ Vijfde editie

Gertjan Laan Aan de slag met C++ Vijfde editie Hoofdstuk 1 Paragraaf 1.8 Vragen 1. Wat is de functie van een compiler? Een compiler vertaalt een programma dat geschreven is in een hogere programmeertaal zoals C++ (de broncode) naar een code die begrepen

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-201, e college Arjan van Genderen, Computer Engineering 4-12-2012 Delft University of Technology Challenge the future Hoorcollege Arrays, Pointers en Strings

Nadere informatie

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen. Hoofdstuk 3: controlestructuren instructies en blokken Naar elke instructie staat een ; Instructies worden door de haakjes {} in een block samengevat. if else if ( expression) statement1; else statement2;

Nadere informatie

Project Software Engineering XML parser: Parsen van een xml CD catalogus

Project Software Engineering XML parser: Parsen van een xml CD catalogus Project Software Engineering XML parser: Parsen van een xml CD catalogus Brent van Bladel brent.vanbladel@uantwerpen.be February 16, 2017 XML (Extensible Markup Language) is een taal waarmee we op een

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

Academie voor ICT en Media 2013/2014

Academie voor ICT en Media 2013/2014 Academie voor ICT en Media 2013/2014 Toets Opleiding BI CMD I IDM ISM TI Voltijd Deeltijd Duaal Lokatie Den Haag Zoetermeer Delft 1e afname moment herkansing Verantwoordelijke docent John Visser Module

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 2, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Terugblik Functies Organisatie (architectuur) van programma s Arrays Structuren

Nadere informatie

Opgaven. Python Assessment

Opgaven. Python Assessment Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen

Nadere informatie

/20. richtlijnen. Lees deze richtlijnen! Log in op de pc met. login: paswoord: examen i examen001. Log in op. x.toledo.ucll.be

/20. richtlijnen. Lees deze richtlijnen! Log in op de pc met. login: paswoord: examen i examen001. Log in op. x.toledo.ucll.be OPO Naam: Code: Lectoren: Programmeren voor Multimedia MBI66A F. Vogels Examen Datum: Beginuur: Duur: Hulpmiddelen: TODO TODO 3 uur Open boek /20 Student Naam:....................................................................................

Nadere informatie

Datastructuren en algoritmen

Datastructuren en algoritmen Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift

Nadere informatie

Datastructuren college 10

Datastructuren college 10 we hadden Backtracking verbetering i i Datastructuren college 0 0: : : 0: : : P r r r r r b r b r P r r r b r b r backtracking we hoeven vaak de kandidaat niet helemaal af te maken om hem te kunnen verwerpen

Nadere informatie

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten recursieve datastructuren college graphs definities Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten E edges, arcs, kanten, pijlen, lijnen verbinding tussen knopen Voorbeelden steden en verbindingswegen

Nadere informatie

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers); bestand voertuig.h biz. 1 van 2 #ifndef VOERTUIG H #define VOERTUIG H #include using std::string; class Voertuig { public: Voertuig(); Voertuig(const string& inschrijvingsnumrner, const string&

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

BEGINNER JAVA Inhoudsopgave

BEGINNER JAVA Inhoudsopgave Inhoudsopgave 6 Configuratie Hallo wereld! Praten met de gebruiker Munt opgooien Voorwaarden Lussen......6 Configuratie Met deze Sushi kaarten ga je een simpel spel maken met één van de meest populaire

Nadere informatie

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/ Programmeermethoden Functies vervolg Walter Kosters week 5: 1 5 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Files manipuleren 1 Deze void-functie telt niet-lege regels in een file invoer: void

Nadere informatie

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is Opdrachten herhalen public void tekenscherm (object o, PEA pea) { int x; x = 1; while ( x

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Uitwerkingen. Python Assessment

Uitwerkingen. Python Assessment Uitwerkingen Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Uitwer king 1: Elementairedatatypes 1.a Een string bevat tekst in de vorm van Unicode characters, terwijl

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

Recursive-Descent Parsing

Recursive-Descent Parsing Week 2 Recursive-Descent Parsing PRACTICUM Tijdens dit practicum wordt een eenvoudige one-pass recursive-descent vertaler ontwikkeld in Java. We volgen daarbij hoofdstuk 4 van Watt & Brown. De te ontwikkelen

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek examen: er mag geen gebruik worden gemaakt van het studieboek.

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Java Programma structuur

Java Programma structuur Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,

Nadere informatie

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING DIAGNOSTISCHE TOETS Softwaresystemen datum: Donderdag van Week 7 UITWERKING Deze diagnostische toets bevat vragen over excepties en concurrency. Beantwoord de vragen zo goed mogelijk in 30 minuten Bespreek

Nadere informatie

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal. 4. Array s Een array is een geïndexeerde variabele. Deze zin zal de nodig vragen oproepen, waarop enige uitleg van toepassing is. Met variabelen hebben we al kennis gemaakt. In een variabele kun je iets

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code

Nadere informatie

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59. Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

vandaag èn vrijdag deadline maandag 12 dec.

vandaag èn vrijdag deadline maandag 12 dec. vandaag èn vrijdag deadline maandag 12 dec. Herhaling met een teller int t ; t = 0; for while ( ( t=0 t

Nadere informatie

Algoritmen en Datastructuren

Algoritmen en Datastructuren Algoritmen en Datastructuren Harry Broeders De Haagse Hogeschool Opleiding Elektrotechniek 27 april 2015 J.Z.M.Broeders@hhs.nl Algoritmen en Datastructuren van Harry Broeders is in licentie gegeven volgens

Nadere informatie

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Introductie In dit document geven we een mogelijke oplossing voor het eerste practicum. Deze oplossing gebruikt verschillende klassen en overerving,

Nadere informatie

Instructies en blokken

Instructies en blokken Herhaling 1 Instructies en blokken 2 Naar elke instructie staat een ; puntkomma Verschillende instructies worden door de accolades in een block samengevat. Een blok is het zelfde als een enkele instructie.

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 1 februari 2019, 11.00 13.00 uur Voor de meerkeuzevragen hebben we verschillende versies. Dit zijn de juiste antwoorden per versie.

Nadere informatie

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

Nadere informatie

Programmeermethoden. Arrays (vervolg 2) Walter Kosters. week 9: 6 10 november kosterswa/pm/

Programmeermethoden. Arrays (vervolg 2) Walter Kosters. week 9: 6 10 november kosterswa/pm/ Programmeermethoden Arrays (vervolg 2) Walter Kosters week 9: 6 10 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Derde programmeeropgave Life:... citatie/referentie: Tja~\cite{abc} levert Tja

Nadere informatie

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief

Nadere informatie

Java Les 3 Theorie Herhaal structuren

Java Les 3 Theorie Herhaal structuren Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een

Nadere informatie