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

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: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Inleiding... 3. Een terugblik op C... 3

Inleiding... 3. Een terugblik op C... 3 1 Inhoudsopgave. Inleiding.... 3 Een terugblik op C.... 3 1 Inleiding van C naar C++.... 6 1.1 Commentaar met //.... 6 1.2 Plaats van variabelen definities.... 6 1.3 Constante waarden met const.... 7 1.4

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

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

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

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

Verslag Opdracht 4: Magische Vierkanten

Verslag Opdracht 4: Magische Vierkanten Verslag Opdracht 4: Magische Vierkanten Stefan Schrama, Evert Mouw, Universiteit Leiden 2007-08-14 Inhoudsopgave 1 Inleiding 2 2 Uitleg probleem 2 3 Theorie 2 4 Aanpak 2 5 Implementatie 4 6 Experimenten

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

Objectgeoriënteerd Programmeren in C++

Objectgeoriënteerd Programmeren in C++ Objectgeoriënteerd Programmeren in C++ Woef, woef! Harry Broeders De Haagse Hogeschool Opleiding Elektrotechniek 27 april 2015 J.Z.M.Broeders@hhs.nl Objectgeoriënteerd Programmeren in C++ van Harry Broeders

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

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

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Hoofdstuk 0. Van Python tot Java.

Hoofdstuk 0. Van Python tot Java. Hoofdstuk 0. Van Python tot Java. In dit eerste hoofdstuk maken we de overstap van Python naar Java. We bespreken de verschillen en geven wat achtergrondinformatie. In het volgende hoofdstuk gaan we dieper

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

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

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

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies 17 Operaties op bits In hoofdstuk 1 is gezegd dat C oorspronkelijk bedoeld was als systeemprogrammeertaal om het besturingssysteem UNIX te implementeren. Bij dit soort toepassingen komt het voor dat afzonderlijke

Nadere informatie

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011 15 november 2011 Tree traversal Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 15 november 2011 ODE/FHTBM Tree traversal 15 november 2011 1/22 1 ODE/FHTBM Tree

Nadere informatie

Programmeren in C++ (deel 1)

Programmeren in C++ (deel 1) FHT&L MODULE BESCHRIJVING Programmeren in C++ (deel 1) PRO4 Samenstelling: Cees van Tilborg, Thijs Dorssers Datum: september 2011 Versie: 1h Titel: Programmeren in C++ Identificatie Progresscode: PRO4

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer; OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Object georiënteerde (OO) systemen kennen vele voordelen ten opzichte van traditionele procedurele systemen. Zo zouden OO systemen flexibeler en beter onderhoudbaar

Nadere informatie

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2014 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

De MySQL C API. Variabelen in C Functies in C Pointers in C LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat

Nadere informatie

Robocode. Inleiding tot programmeren

Robocode. Inleiding tot programmeren Robocode Inleiding tot programmeren Inhoud Doel cursus Java-controlestructuren Robotje programmeren Doel cursus Inleiding Java Robocode Java Object-gerichte programmeertaal Sun 1991 http://java.sun.com

Nadere informatie

Tentamen in2705 Software Engineering

Tentamen in2705 Software Engineering Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen

Nadere informatie

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2015. Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2015. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2015 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

Gevorderd Programmeren

Gevorderd Programmeren Gevorderd Programmeren Praktijk nota s Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2008-2009. J. Broeckhove

Nadere informatie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie www.liacs.nl/home/kosters/pm/ Met dank aan allen die aan deze tekst hebben

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 7 maart 2010 Deze les Zelf componenten maken Concurrency (multithreading): werken met threads levenscyclus van een thread starten tijdelijk onderbreken wachten stoppen Zelf componenten maken Je eigen component:

Nadere informatie

Inleiding tot Func.oneel Programmeren les 3

Inleiding tot Func.oneel Programmeren les 3 Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere

Nadere informatie

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2 Modelleren Werkelijkheid Modelleren Modeleren Waarvan maken we een model?!analyse " Maak een model van de te automatiseren werkelijkheid of van het op te lossen probleem! Domeinkennis = structuur! Functionele

Nadere informatie

C++ voor C-kenners. Jeroen Fokker Informatica Instituut Universiteit Utrecht januari 1995

C++ voor C-kenners. Jeroen Fokker Informatica Instituut Universiteit Utrecht januari 1995 C++ voor C-kenners Jeroen Fokker Informatica Instituut Universiteit Utrecht januari 1995 De taal C+ + wordt steeds meer gebruikt als alternatief voor C. De taal is een object-georiënteerde uitbreiding

Nadere informatie

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing. irkel (met Jpanel) ij de onderstaande opdracht behoort het bestand Panels: JPanels_1.java (map Panel) in de map irkel. pplicaties in Java hebben altijd een publieke klasse waarin een methode main voorkomt.

Nadere informatie

Programmeren. Cursus Python

Programmeren. Cursus Python Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een eenvoudig algoritme om permutaties te genereren Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden

Nadere informatie

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B; Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i

Nadere informatie

Eindtoets XML: Theorie en toepassingen

Eindtoets XML: Theorie en toepassingen Eindtoets XML: Theorie en toepassingen Deze eindtoets geeft een indruk, niet meer en niet minder, van mogelijke tentamenvragen. De spreiding over verschillende onderwerpen zal nooit bij elk tentamen hetzelfde

Nadere informatie

1 uur/week practicum. tentamen (cijfer), practicumbeoordeling (O/V) en projectbeoordeling

1 uur/week practicum. tentamen (cijfer), practicumbeoordeling (O/V) en projectbeoordeling Studiewijzer. onderwijseenheid: Software Ontwikkeling & Programmeren 3 studiebelasting: 168 SBU (84 in kwartaal 1 en 84 in kwartaal 2) semester / kwartaal: H3C&D / 1 en 2 contacturen kwartaal 1: 3 uur/week

Nadere informatie

Design patterns Startbijeenkomst

Design patterns Startbijeenkomst Design patterns Startbijeenkomst Harrie Passier Docenten Sylvia Stuurman (1 e examinator) Sylvia.Stuurman@ou.nl Harrie Passier (2 e examinator) Harrie.Passier@ou.nl Aarzel niet vragen te stellen! Rooster

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

vbg.vbnet.beginner Foutafhandeling binnen Visual Basic.NET

vbg.vbnet.beginner Foutafhandeling binnen Visual Basic.NET Fouten in software zijn onwenselijk, maar bijna niet te voorkomen. Er zijna namelijk zaken waar uw software geen invloed op uit kan oefenen. Het verbreken van een netwerkverbinding is een voorbeeld hiervan.

Nadere informatie

Werkvormen 84 SBU. Inhoud. !OOP = Object Oriënted Programming N C++ (niet volledig)

Werkvormen 84 SBU. Inhoud. !OOP = Object Oriënted Programming N C++ (niet volledig) SOPX2E1 PROGMI1 Object Georiënteerd Programmeren in C++ 1 bd.thrijswijk.nl Een stapje verder met programmeren!van gestructureerd programmeren naar object georiënteerd programmeren!c++ is een uitbreiding

Nadere informatie

Qt in het kort Handleiding

Qt in het kort Handleiding Qt in het kort Handleiding Embedded Systems Engineering Groep: ES1, ES1V, ES1D Jos Rouland 7 maart 2012 Voorwoord Om snel op te kunnen starten met de ontwikkelomgeving Qt is deze handleiding gemaakt. Hierbij

Nadere informatie

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

Nadere informatie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes

Nadere informatie

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

4EE11 Project Programmeren voor W. College 1, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 1, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Betrokkenen Circa 100 deelnemers (W, 3e-jaars) Joris Remmers (W) Patrick Anderson

Nadere informatie

eerste voorbeelden in Java

eerste voorbeelden in Java Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele

Nadere informatie

VI. Klassen en objecten

VI. Klassen en objecten VI. Klassen en objecten Klassen en objecten vormen het fundament van OOP. We zullen dus uitgebreid aandacht besteden aan klassen en objecten. U kunt Java niet begrijpen zonder goed met klassen en objecten

Nadere informatie

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven. 1 Inleiding tot.net Software werd en wordt meestal geschreven in C of C++. De broncode van een C/C++ programma wordt dan gecompileerd naar machine code, die eventueel nog gelinkt wordt met machine code

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

7 Omzetten van Recursieve naar Iteratieve Algoritmen 7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme

Nadere informatie

Cursus Algoritmiek - - - najaar 2005

Cursus Algoritmiek - - - najaar 2005 Cursus Algoritmiek - - - najaar 2005 Practicumopdracht 4 : werken met kale gegevensbestanden 1. Achtergrond In de 2 e en de 3 e practicumopdracht heb je al kennis gemaakt met het via het toetsenbord laten

Nadere informatie

Standard Template Library (STL)

Standard Template Library (STL) Iterators Containers STL Algoritmen Adapters Functie objecten Standard Template Library (STL) Andy Verkeyn Vakgroep Informatie Technologie Universiteit Gent Versie: November 2000 (Wijzigingen: 11/1998)

Nadere informatie

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest. WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.

Nadere informatie

Rev**** Model Aanpassingen

Rev**** Model Aanpassingen Rev Model Aanpassingen Jaco Peeman en Casper de lange Februari 2003 SERC/UU Abstract Dit document beschrijft de aanpassingen die gemaakt zijn aan het interne meta-model van het programma RevJava, geschreven

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek tentamen, bij dit tentamen mag je geen gebmik maken van

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

Een fragment wordt afgeleid van de basis klasse "Fragment".

Een fragment wordt afgeleid van de basis klasse Fragment. Android fragmenten 1/5 Fragmenten Klasse Een fragment wordt afgeleid van de basis klasse "Fragment". package com.android.cursustekst; import java.text.simpledateformat; import java.util.arraylist; import

Nadere informatie

Fun met webparts in ASP.Net

Fun met webparts in ASP.Net Fun met webparts in ASP.Net Deel 2:User controls en Webparts door Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Inhoudsopgave FUN MET WEBPARTS IN ASP.NET... 1 DEEL 2:USER CONTROLS EN WEBPARTS...

Nadere informatie

Maak een pivot uit een Generic.List

Maak een pivot uit een Generic.List Maak een pivot uit een Generic.List Introductie in extensions, reflection en code generation Nivo: 400 Introductie In bepaalde gevallen komt het voor dat je een Generic.List van een specifieke class hebt,

Nadere informatie

Labo 1 Programmeren II

Labo 1 Programmeren II Labo 1 Programmeren II L. Schoofs K. van Assche Voor de OA Labo Programmeren II programmeren we in C# en met Microsoft Visual Studio 2005 als ontwikkelomgeving (voorlopig beta2). Deze IDE maakt gebruik

Nadere informatie

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent Het relaas van de beginnende programmeur Het hoe en waarom van de assistent 1. Help, mijn code doet niks... Mogelijke oplossingen: Heb je op run geduwd (groene pijltje)? Zolang je niet op 'run' duwt, kent

Nadere informatie

VB Magazine Online 2004 01/08 1 / 6

VB Magazine Online 2004 01/08 1 / 6 Een van de krachtigste elementen binnen Visual Basic 2003 vind ik wel de mogelijkheid om objecten te overerven; ook wel inheritance genoemd. U kunt niet alleen uw eigen classes en business objecten overerven,

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang

Nadere informatie

Polymorfie 142. PersonalityObject. + PersonalityObject( ) + speak( ): String. OptimisticObject ExtrovertedObject PessimisticObject IntrovertedObject

Polymorfie 142. PersonalityObject. + PersonalityObject( ) + speak( ): String. OptimisticObject ExtrovertedObject PessimisticObject IntrovertedObject Polymorfie 142 V POLYMORFIE Als inkapseling en overerving het een-tweetje van OOP zijn, dan is polymorfie de daaropvolgende schop in het doel. U zou zonder de beide andere steunpilaren geen polymorfie

Nadere informatie

Optimalisatie technieken

Optimalisatie technieken Things should be made as simple as possible, but not any simpler. Floatingpoint berekeningen Floatingpoint getallen kun je praktisch niet met elkaar vergelijken. De meeste embedded systemen hebben geen

Nadere informatie

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109 Inhoud leereenheid 4 Inleiding JavaScript Introductie 99 Leerkern 100 1 Leren programmeren in JavaScript 100 2 Chapter 1: Introduction 101 3 Chapter 2, paragrafen 1 t/m 5 102 4 Chapter 2, paragrafen 6

Nadere informatie

Programmeren onder RISC OS: de snelstart. in BBC-Basic

Programmeren onder RISC OS: de snelstart. in BBC-Basic Programmeren onder RISC OS: de snelstart in BBC-Basic Programmeren in RISC OS: de snelstart De programma-directory Vensters maken Een eenvoudige foutprocedure Muis en toetsenbord Een icoon op de icoonbalk

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP

Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP Auteur, VBcentral.nl Microsoft MVP Visual Basic VP Speakers Bureau INETA Europe - www.europe.ineta.org www.vbcentral.nl - www.obelink.com

Nadere informatie

Software-Ontwikkeling I Academiejaar 2006-2007

Software-Ontwikkeling I Academiejaar 2006-2007 Software-Ontwikkeling I Academiejaar 2006-2007 Project: Bibliotheekbeheer 1 1. Digitale bibliotheek a. Inleiding Bibliotheken houden onder meer hun collecties van uitleenbare artikels bij in digitaal formaat.

Nadere informatie

Versturen van email vanuit een Delphi VCL toepassing

Versturen van email vanuit een Delphi VCL toepassing Versturen van email vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken

Nadere informatie

I N H O U D S T A B E L. 1. Uitbreidingen en verbeteringen in C++ t.o.v. C... 8

I N H O U D S T A B E L. 1. Uitbreidingen en verbeteringen in C++ t.o.v. C... 8 1 I N H O U D S T A B E L 1. Uitbreidingen en verbeteringen in C++ t.o.v. C... 8 1.1 Inleiding...8 1.2 Het gebruik van de iostream bibliotheek...8 1.2.1 In- en uitvoer...8 1.2.2 De iostream bibliotheek...8

Nadere informatie

SYNTRA-WEST. Initiatiecursus JAVA. Deel

SYNTRA-WEST. Initiatiecursus JAVA. Deel SYNTRA-WEST Initiatiecursus JAVA Deel Syntra-West Syntra-West (vroeger Vormingsinstituut West-Vlaanderen) Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST...

Nadere informatie

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet. Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus

Nadere informatie