De volgorde van een linked list omkeren

Maat: px
Weergave met pagina beginnen:

Download "De volgorde van een linked list omkeren"

Transcriptie

1 De volgorde van een linked list omkeren Inleiding Daniel von Asmuth 21 januari 2015 Hierin presenteren we een algoritme om de volgorde van de knopen in een linked list om te keren dat wordt versneld door meerdere processoren tegelijk te gebruiken. Wikipedia ( geeft een goede introductie over linked lists. Eenvoudig gezet bestaan ze uit een geordende rij van nul of meer objecten waarin elke knoop de gegevens van een object bevat plus een wijzer naar het volgende element. Anders dan bij Wikipedia staat gebruiken we geen speciale terminator knoop, maar een speciale wijzer (NIL of NULL) om aan te geven dat er geen volgende knoop meer is. I. Implementatie van een linked list Wikipedia stelt dat de enige manier om een linked list te verwerken daaruit bestaat dat je een wijzer gebruikt naar het eerste element van de lijst en van daaruit telkens de wijzer naar het volgende element volgt, totdat er geen volgende element meer is. We kunnen een lege lijst representeren door de wijzer naar de kop de waarde NIL te geven. Voor parallelle verwerking kun je de lijst in de voorgeschreven volgorde aflopen en telkens het adres van een knoop aan een nieuwe thread meegeven, maar voor lange lijsten is dat niet efficient. De meest voor de hand liggende datastructuur is het array (de rij). In theorie kunnen alle elementen daarvan tegelijkertijd worden gelezen of geschreven; in de praktijk laat de hardware dat niet toe, maar het is wel de snelste methode. Het artikel in Wikipedia beschrijft ook alternatieven, genaamd 'dynamic arrays' en 'linked lists using arrays of nodes', maar mist het punt dat die parallelle toegang mogelijk maken. Voor dit artikel is een knoop een object of tupel dat een getal bevat, plus de index van het volgende element; een lijst is dan een object (in C heet dat 'struct') dat een rij van knopen bevat, plus het aantal elementen in de lijst en wijzers naar de eerste en laatste node. De programmacode staat aan het eind van dit artikel. De basisfuncties zijn init() om een lijst leeg te maken, insert() om een element toe te voegen, delete() om een opgegeven element te verwijderen en print() om alle getallen af te drukken. De belangrijkste eigenschap is dat de posities 0 t/m count 1 in gebruik zijn met als gevolg dat je na het wissen van een element de laatste knoop naar de vrije positie moet verplaatsen. Daarom is gekozen voor een dubbel gelinkte lijst. Een andere eigenaardigheid is dat de print() functie de getallen in de omgekeerde volgorde afdrukt als waarin ze zijn ingevoerd. II. Een lijst omkeren Sommige functies zijn niet afhankelijk van de volgorde van de elementen, zoals het vinden van het grootste en kleinste getal of het sorteren van de lijst, en kunnen daarom gemakkelijk parallel worden uitgevoerd. Voor functies die dat wel zijn, hanteren we het verdeel en heers paradigma. In dit geval hoeven we de lijst niet eerst op te delen, maar beginnen we met n deellijsten van elk 1 element; vervolgens moeten we n 1 keer telkens twee deellijsten samenvoegen om uiteindelijk 1 deellijst met alle elementen over te houden.

2 De gewenste functie moet triviaal zijn voor een verzameling met 1 element en de resultaten van twee deelverzamelingen moeten snel gecombineerd worden kunnen worden. Voor ons probleem geldt dat een lijst met 1 element gelijk is aan zijn omgekeerde en twee deellijsten, waarvan de inhoud al is omgekeerd kunnen we samenvoegen door hun volgorde te verwisselen. De kop van een deellijst is telkens de knoop i en het array tails wijst naar de laatste knoop. h p i j1 n1 j2 n2 t Het moeilijke werk gebeurt in functie reverse2, die voor elke knoop i aangeroepen wordt om de deellijst i.. j1 te verplaatsen naar achter de volgende deellijst n1.. j2, waartoe de drie doorgetrokken pijlen worden omgeleid naar volgens de drie gestreepte pijlen onder en bovenaan. De variabele h verwijst hier naar de kop van de lijst, t naar de staart, p naar de knoop voor i, en n2 naar de knoop na j2. De eerste keer is j1 gelijk aan i en j2 aan n1. De wijzers naar de voorafgaande knoop worden eveneens aangepast en tails[n1] verwijst naar de knoop j1. Daarna hoeven enkel de wijzers naar de kop en de staart te worden verwisseld. Als we de inhoud van de lijst voor aanroep van reverse2 weergeven als de preconditie L = H L 1 L 2 T met H = h p, L 1 = i j 1, L 2 = n 1 j 2, T = n 2 t dan worden de twee deellijsten tot verwisseld tot: L' = H L 2 L 1 T na samenvoegen van deellijsten wordt de invariante conditie: L = H D T Als L een lege lijst is wordt de functie niet aangeroepen, dus L 1 is een deellijst met tenminste 1 knoop, terwijl de rest eventueel leeg kan zijn, maar anders zijn het reeksen van deellijsten. De invariant wil zeggen dat de lijst bestaat uit een reeks deellijsten, zodanig dat de knopen van de deellijsten al zijn omgekeerd, maar de volgorde van de deellijsten nog is zoals in de beginsituatie. Aanvankelijk zijn dat n deellijsten met 1 element, uiteindelijk 1 deellijst met n elementen. Die functie zet eerst de lokale variabelen goed: j1 = tails[i]; n1 = list >nodes[j1].next; /* The second sublist */ if( n1 == NIL) return; j2 = tails[n1]; n2 = list >nodes[j2].next; /* Node after second sublist */ Merk op, dat als de tweede deellijst leeg is, de staart is bereikt, zodat de functie niets hoeft te doen. Vervolgens leiden we de wijzers om, zoals in de figuur is getekend. list >nodes[j2].next = i; list >nodes[j1].next = n2; if( preds[i]!= NIL) /* Node before first sublist */ list >nodes[preds[i]].next = n1; Net zo passen we de wijzers naar de voorafgaande knoop aan en voegen de deellijsten samen. list >nodes[n1].prev = p; list >nodes[i].prev = j2; if( n2!= NIL) list >nodes[n2].prev = j1; tails[n1] = j1;

3 III. Parallelle verwerking We lopen de programmacode langs; in de functie main worden de deellijsten geïnitialiseerd. for( i = 0; i < N; i++) tails[i] = NIL; for( i = 0; i < list.count; i++) tails[i] = i; In de functie reverse worden de threads gestart, die alle reverse1 aanroepen, dat de nodige mutexen aanmaakt en reserveert, zodat voor alle waarden van i tussen 0 en n 1, reverse2(i) aangeroepen wordt. Terug in reverse worden de wijzers naar de kop en staart verwisseld. i = list >head; /* swap head & tail pointers */ list >head = list >tail; list >tail = i; We merken op dat na uitvoering van reverse2(i) telkens de deellijst i afgewerkt is en dat de conditie n1 == NIL alleen optreedt als deellijst i de laatste in de lijst is. Samen met de invariant volgt dat aan het eind nog 1 deellijst over is met de knopen van de oorspronkelijke lijst in omgekeerde volgorde. De functie reverse2 vergt ten hoogste een constant aantal rekenstappen, wat we noteren als t = O(1). Als we ze sequentieel uitvoeren dan kost dat O(n) rekentijd. Vergeleken met een pure linked list implementatie is het waarschijnlijk iets langzamer omdat de index berekening van de arrays een optelling vereist, maar het blijft O(n). De clou van dit algoritme is dat het correct werkt ongeacht de volgorde, zolang reverse2 maar voor elke knoop i wordt aangeroepen. De knopen kunnen ook gelijktijdig worden afgewerkt, als we de knopen i, n1 en n2 reserveren, zodat andere threads moeten wachten voordat ze bij die knopen kunnen en de thread waarvoor p de laatste knoop is de knopen i en n1 niet kan reserveren. Als er n threads zijn, zal een derde deel daarvan door kunnen gaan; de volgende ronde een derde deel van het restant enzovoorts, zodat de doorlooptijd O( 2 log(n)) wordt. De meeste computers gebruiken tegenwoordig Symmetric MultiProcessing, wat neerkomt op een klein aantal processoren of cores, die via een gemeenschappelijke bus of crossbar switch verbonden zijn met een gedeeld geheugen; een andere groep werkt met Non Uniform Memory Access, wat betekent dat elke processor een lokaal geheugen heeft waar andere processoren langzamer bij kunnen. Supercomputers bestaan doorgaans uit meerdere computers die via een snel netwerk gegevens uitwisselen zonder toegang tot elkaars geheugen. Het algoritme is geoptimaliseerd voor een SMP systeem door het aantal threads p te kiezen als 2 maal het aantal cores. Daarmee worden telkens 3 * p mutexen gereserveerd, waardoor de kans dat een thread op een andere moet wachten klein is en als een thread geblokkeerd is, een andere thread de processor krijgt. Zodoende kost de uitvoering O(n/p) rekentijd. Een groter aantal threads heeft weinig zin. Deze combinatie van parallelle en sequentiële uitvoering blijkt simpel te realiseren zodat alle threads evenveel werk doen. Het aantal mutexen is gekozen tussen n en p voor een compromis tussen de tijd om ze aan te maken en de tijd die we met wachten verliezen. Conclusie Een linked list kan in willekeurige volgorde worden verwerkt door de knopen in een array op te slaan. Dat kan handig zijn als objecten meerdere volgordes hebben: bijvoorbeeld een verzameling personen, die zowel op naam als op leeftijd zijn gerangschikt. Dit algoritme is in theorie even snel als de links te volgen en in de praktijk ook snel genoeg. Op een SMP systeem is het optimaal met een rekentijd van O(n/p) stappen voor n knopen en p processoren.

4 C programma code geschreven onder Windows Listing 1. Linked list omkeren #include <stdio.h> #include <stdlib.h> #include <time.h> #include <Windows.h> #include <process.h> #define N /* maximum nr. of list elements */ #define M 1000 /* range of numbers */ #define P 8 /* 2 threads per core */ #define X /* number of mutexes */ #define NIL 1 /* invalid array index */ typedef struct _node int key; /* data */ int next; /* pointer to next node */ int prev; /* pointer to previous node */ NODE; typedef struct _list int head; /* point to first and last node */ int tail; /* NIL denotes end of the list */ int count; /* number of elements */ NODE nodes[n]; /* fixed maximum size */ LIST; LIST list; /* contains the data */ int tails[ N]; /* defines temporary sublists */ HANDLE mutexes[ X]; /* ensure 1 thread changes node */ HANDLE threads[ P]; /* parallel tasks */ /* Elementary linked list operations */ /* We use an array to hold the nodes that we manage such that nodes */ /* 0..n 1 always contain valid elements */ /* initialise an empty list */ init( LIST *list) int i; list >head = list >tail = NIL; list >count = 0; for( i = 0; i < N; i++) list >nodes[i].next = NIL; list >nodes[i].prev = NIL; /* new nodes are inserted at the front of the list */ /* this more or less reverses it */ insert( LIST *list, int key) if( list >count == N) printf( "The list is full!\n"); return; if( list >tail == NIL) list >tail = list >count; list >nodes[ list >head].prev = list >count; list >nodes[ list >count].next = list >head; list >head = list >count; list >nodes[ list >count++].key = key;

5 /* remove a node from the list */ /* we may have to move a node to preserve the structure */ delete( LIST *list, int i) int h, n, p; list >count ; h = list >head; p = list >nodes[i].prev; /* Relink previous node */ if( p!= NIL) list >nodes[p].next = list >nodes[i].next; if( list >nodes[i].next!= NIL) list >nodes[list >nodes[i].next].prev = p; /* Adjust the head and tail */ if( i == list >head) list >head = list >nodes[i].next; if((i == list >tail) && (p!= NIL)) list >tail = p; list >nodes[p].next = NIL; if( list >count!= i) /* Relink semifinal node */ p = list >nodes[list >count].prev; if( p!= NIL) list >nodes[p].next = i; n = list >nodes[list >count].next; if( n!= NIL) list >nodes[n].prev = i; /* Adjust the head and tail */ if( list >count == h) list >head = i; if( list >count == list >tail) list >tail = i; /* move the last entry to the freed position */ list >nodes[i] = list >nodes[list >count]; /* clear the freed node */ list >nodes[list >count].key = 0; list >nodes[list >count].next = NIL; list >nodes[list >count].prev = NIL; print( LIST *list) int i,j; printf( "The list: \t"); for( i = list >head, j = 1; i!= NIL; i = list >nodes[i].next, j++) printf( "%03d ", list >nodes[i].key); if( j > N) printf( " \n **** ERROR **** \n\n"); exit( 2); printf( "\n"); /* Fill the list with random test data */ fill_random( LIST *list) int i; init( list); srand( (int) time( 0)); for( i = 0; i < N; i++) insert( list, (rand() % (M 3) + 3));

6 /* Delete a few random elements from the list */ test_deletion( LIST *list) int i, next; for( i = list >head; i!= NIL; i = next) next = list >nodes[i].next; if(!(list >nodes[i].key % 3)) delete( list, i); /* Combine the sublists starting at nodes i and n1 into one */ /* Precondition: the elements of sublist i and n1 are already handled */ /* except for the heads. */ reverse2( LIST *list, int i) int j1, j2, n1, n2, p; /* find next sublist n1 and the one after that (n2) */ j1 = tails[i]; n1 = list >nodes[j1].next; /* The second sublist */ if( n1 == NIL) /* We have reached the last node */ return; j2 = tails[n1]; n2 = list >nodes[j2].next; /* Node after second sublist */ p = list >nodes[i].prev; /* concatenate the sublists */ list >nodes[j2].next = i; list >nodes[j1].next = n2; if( p!= NIL) /* Node before first sublist */ list >nodes[p].next = n1; /* swap pointers for the predecessor nodes */ list >nodes[n1].prev = p; list >nodes[i].prev = j2; if( n2!= NIL) list >nodes[n2].prev = j1; /* join two sublists */ tails[n1] = j1; /* obtain exclusive access for nodes and let reverse2() do the actual work */ /* this function is run by each thread simultaneously */ /* each thread performs count / P iterations */ unsigned int stdcall reverse1( int p) DWORD status; int i, j1, n1, j2, n2; for( i = p; i < list.count; i += P) while( TRUE) /* try to obtain mutexes */ status = WaitForSingleObject( mutexes[i], 9); if( status!= WAIT_OBJECT_0) continue /* try again */ /* find next sublist n1 */ j1 = tails[i]; n1 = list.nodes[j1].next; /* The second sublist */ if( n1 == NIL) break; /* one mutex is enough here */ j2 = tails[n1]; n2 = list.nodes[j2].next; /* Node after second sublist */

7 if( n1 % X!= i % X) status = WaitForSingleObject( mutexes[n1 % X], 0); if( status == WAIT_OBJECT_0) if( n2 == NIL) break; /* two mutexes is enough here */ if((n2 % X!= n1 % X) && (n2 % X!= i % X)) status = WaitForSingleObject( mutexes[n2 % X], 0); if( status == WAIT_OBJECT_0) break; /* success */ ReleaseMutex( mutexes[n1 % X]); /* failed so release the mutex */ ReleaseMutex( mutexes[i % X]); /* failed so release first mutex */ /* now we own both mutexes */ reverse2( &list, i); /* so we can safely proceed */ ReleaseMutex( mutexes[n2 % X]); /* return codes not checked here */ ReleaseMutex( mutexes[n1 % X]); ReleaseMutex( mutexes[i % X]); /* release all three mutexes */ _endthreadex( 0); /* now end this thread */ return 0; /* never reached */ /* reverse the elements of the linked list */ reverse( LIST *list) int i; unsigned int id; for( i = 0; i < X; i++) /* create enough mutexes */ if((mutexes[i] = CreateMutex( NULL, FALSE, NULL)) == NULL) printf( "CreateMutex() failed. \n"); exit( 2); printf( "Starting %0d threads for %0d nodes. \n", P, list >count); for( i = 0; i < P; i++) /* create a thread for each node */ threads[i] = (HANDLE) _beginthreadex( NULL, 0, reverse1, (void *) i, 0, &id); if( threads[i] == NULL) printf( "BeginThreadEx() failed \n"); exit( 2); /* wait up to 100 seconds for the other threads to finish */ if((int) WaitForMultipleObjects( P, threads, TRUE, ) > list >count) printf( "Wait failed \n"); exit( 2); printf( "Back to 1 thread. \n", P); for( i = 0; i < P; i++) /* clean up threads & mutexes */ CloseHandle( threads[i]); for( i = 0; i < X; i++) CloseHandle( mutexes[i]); i = list >head; /* swap head & tail pointers */ list >head = list >tail; list >tail = i; int main( void) int i; printf( "Starting 1 thread. \n"); /* initialisation of linked data list */ fill_random( &list); init( &copy); test_deletion( &list); for( i = list.head; i!= NIL; i = list.nodes[i].next) insert( &copy, list.nodes[i].key);

8 /* initialisation of auxiliary data */ for( i = 0; i < N; i++) tails[i] = NIL; for( i = 0; i < list.count; i++) tails[i] = i; /* now do it */ // print( &list); reverse( &list); // print( &list); exit( 0);

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

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

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

ALGORITMIEK: answers exercise class 7

ALGORITMIEK: answers exercise class 7 Problem 1. See slides 2 4 of lecture 8. Problem 2. See slides 4 6 of lecture 8. ALGORITMIEK: answers exercise class 7 Problem 5. a. Als we twee negatieve (< 0) getallen bij elkaar optellen is het antwoord

Nadere informatie

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT TELETASK Handbook Multiple DoIP Central units DALISOFT 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool Connect the TDS20620V2 If there is a TDS13620 connected to the DALI-bus, remove it first.

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

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 8 februari 2010 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

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

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

Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017.

Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017. Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 30 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Dynamische verzamelingen Stack implementaties Array met maximale grootte Linked List

Nadere informatie

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead 7.1 Exploring Combinations of Ten Look at these cubes. 2. Color some of the cubes to make three parts. Then write a matching sentence. 10 What addition sentence matches the picture? How else could you

Nadere informatie

Classification of triangles

Classification of triangles Classification of triangles A triangle is a geometrical shape that is formed when 3 non-collinear points are joined. The joining line segments are the sides of the triangle. The angles in between the sides

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 6 januari 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

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

EE1400: Programmeren in C BSc. EE, 1e jaar, , 4e college EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-2013, 4e college Arjan van Genderen, Computer Engineering 11-12-2012 Delft University of Technology Challenge the future Mededelingen Voortgangstoets: Woensdagmiddag

Nadere informatie

Illustrator Tutorial - How to Create a Watch

Illustrator Tutorial - How to Create a Watch Illustrator Tutorial - How to Create a Watch «Andrew Bannecker - Simple, True and Tender Vector Movie Posters by GABZ» Categories: Tutorials Have you ever seen print advertising of some watch brand before?

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

De doorsnede van twee verzamelingen vinden

De doorsnede van twee verzamelingen vinden De doorsnede van twee verzamelingen vinden Daniel von Asmuth Inleiding Dit artikel probeert enkele algoritmen te vergelijken om de doorsnede van twee verzamelingen of rijen van getallen te vinden. In 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

Preschool Kindergarten

Preschool Kindergarten Preschool Kindergarten Objectives Students will recognize the values of numerals 1 to 10. Students will use objects to solve addition problems with sums from 1 to 10. Materials Needed Large number cards

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen

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

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

CS 202 Fundamental Structures of Computer Science II Bilkent University Computer Engineering Department

CS 202 Fundamental Structures of Computer Science II Bilkent University Computer Engineering Department Hashing CS 202 Fundamental Structures of Computer Science II Bilkent University Computer Engineering Department Bilkent University 1 Hashing We will now see a data structure that will allow the following

Nadere informatie

MyDHL+ Van Non-Corporate naar Corporate

MyDHL+ Van Non-Corporate naar Corporate MyDHL+ Van Non-Corporate naar Corporate Van Non-Corporate naar Corporate In MyDHL+ is het mogelijk om meerdere gebruikers aan uw set-up toe te voegen. Wanneer er bijvoorbeeld meerdere collega s van dezelfde

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

(1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs. (2) Ons gezelschap is er om kunsteducatie te verbeteren

(1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs. (2) Ons gezelschap is er om kunsteducatie te verbeteren (1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs (2) Ons gezelschap is er om kunsteducatie te verbeteren (3) Ons gezelschap helpt gemeenschappen te vormen en te binden (4) De producties

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

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

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

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces? Hoofdstuk 3: Processen: Beschrijving en Besturing Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces? 1 Wat is een proces? Een proces is een programma in uitvoering

Nadere informatie

Basic operations Implementation options

Basic operations Implementation options Priority Queues Heaps Heapsort Student questions EditorTrees WA 6 File Compression Graphs Hashing Anything else Written Assignments 7 and 8 have been updated for this term. Each of them is smaller than

Nadere informatie

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

Chromosomal crossover

Chromosomal crossover Chromosomal crossover As one of the last steps of genetic recombination two homologous chromosomes can exchange genetic material during meiosis in a process that is referred to as synapsis. Because of

Nadere informatie

Deel 1: schriftelijk deel

Deel 1: schriftelijk deel Examen Computerarchitectuur en systeemsoftware Donderdag 15 januari 2009, namiddag Deel 1: schriftelijk deel Algemene bemerkingen: Het examen bestaat uit 2 delen. Dit zijn de vragen voor het eerste deel.

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

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Bewijzen en Technieken 1 7 januari 211, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe.

Nadere informatie

Geeft de lengte van een object (string, lijst, tupel) terug als integer

Geeft de lengte van een object (string, lijst, tupel) terug als integer Python cheat sheet: Operatoren: De standaard operatoren voor wiskundige bewerkingen (+,-,*,/,**) worden als vanzelfsprekend ondersteld. Voor integers en floating point getallen doen deze functies wat je

Nadere informatie

EM7680 Firmware Update by Micro SD card

EM7680 Firmware Update by Micro SD card EM7680 Firmware Update by Micro SD card 2 NEDERLANDS/ENGLISH EM7680 Firmware update by Micro SD card Table of contents 1.0 (NL) Introductie... 2 2.0 (NL) Firmware installeren... 2 3.0 (NL) Opmerking...

Nadere informatie

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Add the standing fingers to get the tens and multiply the closed fingers to get the units. Digit work Here's a useful system of finger reckoning from the Middle Ages. To multiply $6 \times 9$, hold up one finger to represent the difference between the five fingers on that hand and the first

Nadere informatie

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain.

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain. Domino tiles Dominoes is a game played with rectangular domino 'tiles'. Today the tiles are often made of plastic or wood, but in the past, they were made of real stone or ivory. They have a rectangle

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

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

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

8+ 60 MIN Alleen te spelen in combinatie met het RIFUGIO basisspel. Only to be played in combination with the RIFUGIO basicgame.

8+ 60 MIN Alleen te spelen in combinatie met het RIFUGIO basisspel. Only to be played in combination with the RIFUGIO basicgame. 8+ 60 MIN. 2-5 Alleen te spelen in combinatie met het RIFUGIO basisspel. Only to be played in combination with the RIFUGIO basicgame. HELICOPTER SPEL VOORBEREIDING: Doe alles precies hetzelfde als bij

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord December 17, 2018 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True : gohome () Goed:

Nadere informatie

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Handleiding/Manual Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van

Nadere informatie

Engels op Niveau A2 Workshops Woordkennis 1

Engels op Niveau A2 Workshops Woordkennis 1 A2 Workshops Woordkennis 1 A2 Workshops Woordkennis 1 A2 Woordkennis 1 Bestuderen Hoe leer je 2000 woorden? Als je een nieuwe taal wilt spreken en schrijven, heb je vooral veel nieuwe woorden nodig. Je

Nadere informatie

OUTDOOR HD BULLET IP CAMERA PRODUCT MANUAL

OUTDOOR HD BULLET IP CAMERA PRODUCT MANUAL OUTDOOR HD BULLET IP CAMERA PRODUCT MANUAL GB - NL GB PARTS & FUNCTIONS 1. 7. ---- 3. ---- 4. ---------- 6. 5. 2. ---- 1. Outdoor IP camera unit 2. Antenna 3. Mounting bracket 4. Network connection 5.

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

Hoofdstuk 7: Werken met arrays

Hoofdstuk 7: Werken met arrays Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel

Nadere informatie

B1 Woordkennis: Spelling

B1 Woordkennis: Spelling B1 Woordkennis: Spelling Bestuderen Inleiding Op B1 niveau gaan we wat meer aandacht schenken aan spelling. Je mag niet meer zoveel fouten maken als op A1 en A2 niveau. We bespreken een aantal belangrijke

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

Introductie in flowcharts

Introductie in flowcharts Introductie in flowcharts Flow Charts Een flow chart kan gebruikt worden om: Processen definieren en analyseren. Een beeld vormen van een proces voor analyse, discussie of communicatie. Het definieren,

Nadere informatie

De doorsnede van twee verzamelingen vinden

De doorsnede van twee verzamelingen vinden De doorsnede van twee verzamelingen vinden Inleiding Daniel von Asmuth 12 februari 2015 Dit artikel vergelijkt enkele algoritmen om de doorsnede van twee verzamelingen of rijen van getallen te vinden.

Nadere informatie

Random-Getallen. Tristan Demont en Mark van der Boor en

Random-Getallen. Tristan Demont en Mark van der Boor en Random-Getallen Tristan Demont en Mark van der Boor 0768931 en 0772942 18 januari 2013 Begeleider: Relinde Jurrius Opdrachtgever: Berry Schoenmakers Modelleren B, 2WH02 Technische Universiteit Eindhoven

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

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer: Oefententamen 2 C Naam: Studentnummer: Tijd: 2 uur Maximaal aantal punten: 30 Menselijke compiler (10 punten) 0. (1 punt) Stel, je haalt het tentamen als je tenminste een 5.5 gemiddeld hebt gehaald voor

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

Installatie van Windows 10 op laptops. Windows 10 installation on laptops

Installatie van Windows 10 op laptops. Windows 10 installation on laptops Installatie van Windows 10 op laptops In mei vindt de migratie naar Windows 10 plaats op de laptops. Per dag worden ongeveer 25 laptops gemigreerd. Elke laptop heeft een ISSC-sticker met een laptop-nummer.

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

General info on using shopping carts with Ingenico epayments

General info on using shopping carts with Ingenico epayments Inhoudsopgave 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What is an

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

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur) Planning 1. Mini College 2. Introductiecursus Imperatief Programmeren 3. Crash and Compile (vanaf 17:00 uur) Geschiedinis van de Codemonkeys imperatief programmeren voor beginners Geschiedenis van de Codemonkey

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord en Leonie Bosveld December 19, 2016 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True

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

2019 SUNEXCHANGE USER GUIDE LAST UPDATED

2019 SUNEXCHANGE USER GUIDE LAST UPDATED 2019 SUNEXCHANGE USER GUIDE LAST UPDATED 0 - -19 1 WELCOME TO SUNEX DISTRIBUTOR PORTAL This user manual will cover all the screens and functions of our site. MAIN SCREEN: Welcome message. 2 LOGIN SCREEN:

Nadere informatie

Multi-core systemen. door Alexander Melchior

Multi-core systemen. door Alexander Melchior Multi-core systemen Multi-cpu & Multi-core Multi cpu & Multi core door Alexander Melchior Toevoeging aan GDP Overdragen Capita Selecta Waarom? Een stukje geschiedenis 2005: Introductie eerste consumenten

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

EM7580 Firmware Update by Micro SD card

EM7580 Firmware Update by Micro SD card EM7580 Firmware Update by Micro SD card 2 NEDERLANDS/ENGLISH EM7580 Firmware update by Micro SD card Table of contents 1.0 (NL) Introductie... 3 2.0 (NL) Firmware installeren... 3 3.0 (NL) Opmerking...

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

Luister alsjeblieft naar een opname als je de vragen beantwoordt of speel de stukken zelf!

Luister alsjeblieft naar een opname als je de vragen beantwoordt of speel de stukken zelf! Martijn Hooning COLLEGE ANALYSE OPDRACHT 1 9 september 2009 Hierbij een paar vragen over twee stukken die we deze week en vorige week hebben besproken: Mondnacht van Schumann, en het eerste deel van het

Nadere informatie

Datastructuren en Algoritmen voor CKI

Datastructuren en Algoritmen voor CKI Ω /texmf/tex/latex/uubeamer.sty-h@@k 00 /texmf/tex/latex/uubeamer.sty Datastructuren en Algoritmen voor CKI Vincent van Oostrom Clemens Grabmayer Afdeling Wijsbegeerte Hoorcollege 5 16 februari 2009 Waar

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

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 7 februari 2011

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 7 februari 2011 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 7 februari 2011 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

MyDHL+ ProView activeren in MyDHL+

MyDHL+ ProView activeren in MyDHL+ MyDHL+ ProView activeren in MyDHL+ ProView activeren in MyDHL+ In MyDHL+ is het mogelijk om van uw zendingen, die op uw accountnummer zijn aangemaakt, de status te zien. Daarnaast is het ook mogelijk om

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 Computersystemen

Tentamen Computersystemen Tentamen Computersystemen baicosy6 2e jaar bachelor AI, 2e semester 21 oktober 213, 9u-11u OMHP D.9 vraag 1 Van een Single Cycle Harvard machine hebben de componenten de volgende propagation delay time:

Nadere informatie

ROM en RAM in een ROMforth

ROM en RAM in een ROMforth Albert Nijhof 24/06/2016 ROM en RAM in een ROMforth Vragen Twee HERE's? Voor een forth die in (Flash)ROM compileert is het uitgangspunt dat programmacode en onveranderlijke data naar ROM gaan en veranderbare

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 8 december 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als jeeen onderdeel

Nadere informatie

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

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

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:

Nadere informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2 Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel

Nadere informatie

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

Nadere informatie

2000 Volkswagen Passat GLS

2000 Volkswagen Passat GLS REAR DOOR WINDOW Rear door window, assembly overview Fig. 304: Exploded View Of Rear Door Window 1 - Door Removing and installing: --> Rear door, removing and installing 2 - Spring nut Qty 2 3 - Screw

Nadere informatie

Hoofdstuk 3. Week 5: Sorteren. 3.1 Inleiding

Hoofdstuk 3. Week 5: Sorteren. 3.1 Inleiding Hoofdstuk 3 Week 5: Sorteren 3.1 Inleiding Zoals al bleek in college 1 kunnen zoekalgoritmen veel sneller worden uitgevoerd, indien we weten dat de elementen in de lijst, waarin wordt gezocht, geordend

Nadere informatie

Genetische algoritmen in Java met JGAP

Genetische algoritmen in Java met JGAP Genetische algoritmen in Java met JGAP Inleiding JGAP, uitgesproken als "jee-gep", is een framework voor het implementeren van genetische algoritmen en het gebruik ervan in Java. Genetische algoritmen

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Priority queue Priority queue ADT insert(q, x): voeg element x toe aan de queue maximum(q):

Nadere informatie

Hoofdstuk 9: Menu s toevoegen

Hoofdstuk 9: Menu s toevoegen Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2005 Hoofdstuk 9: Menu s toevoegen 9.0 Leerdoel

Nadere informatie

Intermax backup exclusion files

Intermax backup exclusion files Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:

Nadere informatie

The first line of the input contains an integer $t \in \mathbb{n}$. This is followed by $t$ lines of text. This text consists of:

The first line of the input contains an integer $t \in \mathbb{n}$. This is followed by $t$ lines of text. This text consists of: Document properties Most word processors show some properties of the text in a document, such as the number of words or the number of letters in that document. Write a program that can determine some of

Nadere informatie

1. Coroutines in C Pull Push Makefile Pull Push Push som Link...

1. Coroutines in C Pull Push Makefile Pull Push Push som Link... Inhoudsopgave 1. Coroutines in C++... 1 1.1. Pull... 1 1.2. Push... 2 1.3. Makefile... 3 1.4. Pull2... 3 1.5. Push2... 4 1.6. Push som... 4 1.7. Link... 5 1. Coroutines in C++ 1.1. Pull De laatste standaard

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

n-queens Local Search met Conflict Minimalizatie

n-queens Local Search met Conflict Minimalizatie n-queens Local Search met Conflict Minimalizatie Efficient Local Search with Conflict Minimalization: A Case Study of the n-queens Problem, door Rok Sosič en Jun Gu. Sjoerd van Egmond svegmond@liacs.nl

Nadere informatie

Function checklist for the ML-350 or XL-350 with a print set. Missing loop.

Function checklist for the ML-350 or XL-350 with a print set. Missing loop. Function checklist for the ML-350 or XL-350 with a 260217 print set. Below mentioned check-point should resolve function problems of the lift systems. Missing loop. When a lift is connected to an external

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