Dynamisch Programmeren. Het Rugzakprobleem

Maat: px
Weergave met pagina beginnen:

Download "Dynamisch Programmeren. Het Rugzakprobleem"

Transcriptie

1 INLEIDING Dynamisch Programmeren 1 Dynamisch Programmeren Section Page Inleiding Oplossing Subprobleem Datastruktuur Uitvoer Testdata Rekenvoorbeeld Programma Index Het Rugzakprobleem Piter Dykstra 12 januari Inleiding. Het probleem is als volgt. Een inbreker breekt in bij mensen die je rustig tot de categorie der zinloos rijken kunt rekenen. In de juwelenkamer vindt onze kleine zelfstandige een aantal items van verschillende omvang en verschillende waarde. Nu is de rugzak van onze handwerker beperkt van omvang, zodat het er op aan komt om alleen de meest waardevolle zaken (per volume) mee te nemen. De vraag is nu: Hoe kan de zakenman het best te werk gaan? Naïef beredeneerd zal bijna iedereen als volgt te werk gaan: 1. Je neemt de dingen met de hoogste prijs-per-volume-verhouding. Net zolang tot die er niet meer zijn, of totdat er geen plaats meer is in de rugzak. 2. Als er nog plek over is in de rugzak neem je daarna van het item dat dan de meest optimale prijs-volume-verhouding heeft zoveel als mogelijk. 3. En daarmee ga je door totdat je alle items hebt geprobeerd.

2 2 Dynamisch Programmeren OPLOSSING 1 Dit werkt in de praktijk uitstekend, zo wijst de ervaring uit. Maar de methode is niet helemaal waterdicht. En omdat het om echt groot geld gaat, is het wel de moeite om daar even god naar te kijken. Het is mogelijk dat door van een groot en duur ding er één te veel te nemen, er een redelijk grote ruimte in de rugzak overbijft, die niet meer optimaal gevuld kan worden. Door nou iets minder gretig te zijn op de allerduurste dingen, kan het zijn dat de rest efficiënter kan worden gevuld, zodat uiteindelijk toch meer waarde in de zak verdwijnt. Ver gezocht? Jazeker! Maar het aardige is dat de waterdichte oplossing een door zijn eenvoud schitterend voorbeeld van dynamisch programmeren geeft, waardoor het een stuk eenvoudiger wordt om alignment en clustering te begrijpen. 2. Oplossing. Om niet de gouden oplossing mis te lopen passen we dynamisch programmeren toe. Daarvoor zijn in het probleem 3 componenten nodig: 1. Een eenvoudig subprobleem, waarin een deel van het probleem wordt opgelost. Er moet uit een aantal item s worden gekozen totdat er niet meer in de zak past. Een lege zak is snel gevuld en geen items is ook snel opgelost. Hoe meer items des te moeilijker; hoe groter de zak, eveneens, des te moeilijker. Een subprobleem kan dus zijn: probleem(i, j ), waarin i het aantal items is, j de grootte van de zak en probleem is de oplossing van het hele rugzakprobleem voor i items en j-grootte; d.w.z. de manier om een rugzak ter grootte van j met i mogelijke items te vullen, zodat de waarde van die items samen maximaal is. We beginnen zonder items (i = 0) en met een zak waar niks in kan (j = 0). En van hieruit breiden we als een olievlek het aantal opgeloste subproblemen uit. De resterende twee componenten zijn eigenlijk eigenschappen waaraan het subprobleem moet voldoen. 2. Subprobleem-overlap. Bij de oplossing van een subprobleem moet er gebruik worden gemaakt van oplossingen van andere (kleinere) subproblemen. Dat heet de subprobleem overlap. We hebben twee mogelijkheden: als we probleem(i, j ) willen oplossen, kunnen we gebruik maken van probleem(i - x, j ) of probleem(i, j - y ). De vraag is nu of we uitgaande van de optimale deeloplossingen wel een optimale oplossing voor probleem(i, j ) kunnen krijgen?

3 2 SUBPROBLEEM Dynamisch Programmeren 3 We zullen in 3 zien dat dat inderdaad zo is. 3. Subprobleem-optimalisatie Wanneer we steeds meer subproblemen hebben opgelost, door i en j steeds op te hogen, komen we vanzelf terecht in een situatie waarin probleem(aantalitems, maxgrootte ) is opgelost. De vraag is dan of ook het hele probleem is opgelost? Dat is triviaal in ons geval omdat het subprobleem op twee parameters na gelijk is aan het hoofdprobleem, maar dat is in het algemeen niet zo; een subprobleem kan dan ook net iets anders geformuleerd zijn. 3. Subprobleem. Stel we willen probleem(i, j ) oplossen en we hebben optimale oplossingen voor probleem(i, j ) met i < i. Welke van die oplossingen kunnen we gebruiken om een optimale oplossing voor probleem(i, j ) te krijgen? Eigenlijk is de enige keus die we hebben: We gebruiken item i it wel (*), of niet (**). In dat laatste geval is: probleem(i, j ) = probleem(i - 1, j ).(**) Maar als het wel verstandig is om item i te gebruiken (*), dan is de meest optimale oplossing gelijk aan de meest optimale oplossing voor een rugzak die de grootte van item i kleiner is dan wat we nu hebben (!) plus de waarde van item i. Dus: probleem(i, j ) = probleem(i - 1, j - grootte(item(i)) ) + waarde(item(i)) (*) Ons subprobleem heeft dus de subprobleem-overlap-eigenschap! We hebben alleen een alternatief wanneer er een deelprobleem-oplossing bestaat, d.w.z. : j - grootte(item(i)) 0 Maar wanneer is (*) de aangewezen keus boven (**)? Wel, wanneer (*) meer oplevert dan (**), d.w.z. : probleem(i - 1, j - grootte(item(i)) ) + waarde(item(i)) > probleem(i - 1, j ) In ons geval zou dat als volgt kunnen: Stel we willen probleem(i, j ) oplossen en we hebben al optimale oplossingen voor probleem(i - 1, j ). Dan beschouwen we item i en we gaan na of de oplossing voor probleem(i,

4 4 Dynamisch Programmeren UITVOER 3 j - grootte(item(i)) ) plus de waarde(item(i)) meer is dan probleem(i - 1, j ). Zo ja, dan nemen we die nieuwe waarde, anders houden we gewoon probleem(i - 1, j ) als oplossing voor probleem(i, j ). De rest is implementatie. 4. Datastruktuur. We hebben in dit probleem niet te maken met een tweedimensionaal array, zoals bij paarsgewijze alignment, omdat we niet geïnteresseerd zijn in oplossingen met minder dan i items, wanneer we ze al voor i items hebben uitgerekend. Daarom houden we een ééndimensionaal array van oplossingen bij. Of eigenlijk twee arrays, want we gebruiken van de oplossing van een subprobleem twee zaken: 1. De waarde (ofwel rugzakwaarde ); de hoogste waarde van de items, die totnutoe in de rugzak van grootte i is verzameld. 2. Het item dat als laatste is toegevoegd aan de rugzak van grootte i. Meer is niet nodig! Of in Java: define Volume int define leeg 1 define Item int define Waarde int define maxvolume 23 De data 4 static Waarde [ ] rugzakwaarde new Waarde[maxVolume]; static Item [ ] rugzakitem new Item [maxvolume ]; See also section Uitvoer. Wanneer we voor de rugzakken van elke grootte weten wat er als laatste aan toe is gevoegd om een optimale inhoud te krijgen, dan kunnen we door gebruik te maken van de subprobleem overlap-eigenschap, bij de oplossing voor rugzak van grootte i volume(laatsteitem ), zien wat het voorlaatste item moet zijn geweest. Dat is namelijk van die rugzak het laatste item. Als we van rugzak met volume maxvolume 1 = 22 (meest rechtse in figuur 1) willen weten wat er allemaal in zit, dan zien we in rugzakitem [22] dat het item 5 als laatste is toegevoegd. Item 5 is 6 eenheden groot. Rugzak

5 5 UITVOER Dynamisch Programmeren Fig 1. Het bepalen van de inhoud van de grootste rugzak (meest rechtse) aan de hand van de subproblemen. 22 is optimaal gevuld, omdat gebruik is gemaakt van de optimaal gevulde rugzak 22-6, dus rugzak 16 plus het waardevolste item in deze situatie. Bij rugzak 16 zien we dat item 5 daar ook als laatste is toegevoegd. En de optimale oplossing die daarvoor is gebruikt, was rugzak 16-6 = 10. Voor rugzak 10 was item 4 de beste keus in combinatie met de oplossing van rugzak 10-5 = 5. En rugzak 5 kan op zijn best één item 4 bevatten. De beste oplossing voor rugzak 22 is de lijst met items: 5, 5, 4, 4 met een totale waarde van = 46! define writeln System.out.println Geef uitvoer. 5 static void printoplossing () { Item huidigeitem ; Neem de grootste zak. 6 while (rugzakitem [huidigezak ] leeg ) {... Tot we de bodem zien doen we het volgende: We nemen het item dat het laatst is toegevoegd. 7 En drukken het af. 8 En ga verder met volgende deeloplossing Neem de grootste zak. 6 Volume huidigezak maxvolume 1; This code is used in section We nemen het item dat het laatst is toegevoegd. 7 huidigeitem rugzakitem [huidigezak ]; This code is used in section 5.

6 6 Dynamisch Programmeren REKENVOORBEELD 8 8. En drukken het af. 8 writeln ("De rugzak bevat een item: " + huidigeitem + " met waarde: " + waarde [huidigeitem ]); This code is used in section En ga verder met volgende deeloplossing. 9 huidigezak huidigezak volume[huidigeitem ]; This code is used in section Testdata. Van de items moeten natuurlijk een paar eigenschappen worden bijgehouden: de Waarde en het Volume. Vergeef me de non-objectgeoriënteerde aanpak. Het volgende tabelletje, waarmee we het principe programmeren, wordt uitgevoerd als twee integer-arrays: Item Waarde Volume De data 4 + static Waarde [ ] waarde { 3, 4, 7, 8, 10, 13 ; static Volume [ ] volume { 2, 3, 4, 6, 5, 6 ; 11. Rekenvoorbeeld. Allereerst lossen we het eenvoudigste geval op: geen items te stelen. We initialiseren de arrays rugzakwaarde en rugzakitem : Voor als er helemaal geen items zijn 11 for (int i 0; i < rugzakwaarde.length ; i++) rugzakwaarde [i] 0; for (int i 0; i < rugzakitem.length ; i++) rugzakitem [i] leeg ;

7 12 REKENVOORBEELD Dynamisch Programmeren De arrays zien er dan zo uit: Grootte Item - Waarde Aan deze lege set van items voegen we steeds ééntje toe en gaan voor alle rugzakken na wat de dan de beste samenstelling wordt: Voor alle items i doe: 12 for (int i 0; i < waarde.length ; i++) 13. en rugzakken... Voor alle rugzakken j doe: 13 for (int j 0; j < maxvolume; j++) 14. Beginnend bij item 0 kijken we voor elke rugzak of we het resultaat kunnen verbeteren. Item 0 is 2 eenheden groot; dus bij elke even rugzak kan er weer een item bij. Nadat twee items 0 zijn toegevoegd, ziet de score er zo uit: Grootte Item Waarde Nadat alle rugzakken maximaal met alleen items 0 zijn gevuld: Grootte Item Waarde Daarna gaan we verder met item 1. Dat is 3 eenheden groot en kan dus pas voor het eerst in rugzak 3. En het levert ook een prestatieverbetering van 1 op! Item 1 heeft een lagere waarde/volume-verhouding dan item 0. Toch is er in de rugzakken met een oneven volume plaats voor zo n item, omdat de totale waarde van de rugzak net een puntje hoger uitkomt.

8 8 Dynamisch Programmeren REKENVOORBEELD 14 Een item 0 gaat er dus uit daarvoor in de plaats komt een item 1 en de zak (van het subprobleem) is helemaal gevuld. Grootte Item Waarde Als we aan rugzak 4 een item 1 (met waarde 4 en volume 3) willen toevoegen, moeten we bij rugzak 1 kijken, hoe die verder optimaal gevuld kan worden. Rugzak 1 is leeg; de score is dus 4 en dat is lager dan we hadden (6). Niks doen dus Bij rugzak 5 hebben we wel succes. Toevoegen van item 1 brengt ons bij rugzak 2 met score 3 en 3+5 = 7 is 1 meer dan we hadden. In rugzak 5 voegen we dus item 1 toe. De stand ziet er dan zo uit: Grootte Item Waarde Wat we in elke stap doen is het oplossen van een subprobleem en in code ziet dat er zo uit: probleem(i, j). 15 Bepaal zoekindex subprobleem 16 if (zoekindex 0) { Bepaal zoekwaarde van dat subprobleem 17 if (rugzakwaarde [j] < zoekwaarde ) { Neem item j Het subprobleem voor item i heeft deze index: Bepaal zoekindex subprobleem 16 int zoekindex j volume[i]; This code is used in section De waarde van alternatief (**) wordt:

9 17 REKENVOORBEELD Dynamisch Programmeren 9 Bepaal zoekwaarde van dat subprobleem 17 int zoekwaarde rugzakwaarde [j volume [i]] + waarde [i]; This code is used in section Werk de resultaten bij: Neem item j 18 rugzakwaarde [j] zoekwaarde ; rugzakitem [j] i; This code is used in section Nog twee tabellen waarin per array per item de stand nog eens is weergegeven.. rugzakitem voor i=0 tot maxvolume - 1: rugzakwaarde voor i=0 tot maxvolume - 1:

10 10 Dynamisch Programmeren PROGRAMMA Programma. (Rugzak.java 20) public class Rugzak { De data 4 public static void main (String [ ] args ) { Voor als er helemaal geen items zijn 11 Voor alle items i doe: 12 { Voor alle rugzakken j doe: 13 { probleem(i, j). 15 printoplossing (); Geef uitvoer En wanneer we dit allemaal hebben uitgevoerd is de volgende tekst op het scherm onze beloning: piter@gandalf: /javablast/rugzak> make run javatangle Rugzak.w Output file(s): (Rugzak.java) javac *.java java Rugzak De rugzak bevat een item: 5 met waarde: 13 De rugzak bevat een item: 5 met waarde: 13 De rugzak bevat een item: 4 met waarde: 10 De rugzak bevat een item: 4 met waarde: 10 piter@gandalf: /javablast/rugzak>

11 22 NAMES OF THE SECTIONS Dynamisch Programmeren Index. args 20. dynamisch 1. huidigeitem 5, 7, 8, 9. huidigezak 5, 6, 7, 9. Item [4], 5. item 2, 4. laatsteitem 5. leeg [4], 5, 11. length 11, 12. main 20. maxvolume [4], 5, 6, 13. omvang 1. out 5. overlap 2, 5. println 5. printoplossing 5, 20. programmeren 1. Rugzak 20. rugzakitem 4, 5, 7, 11, 18. rugzakwaarde 4, 11, 15, 17, 18. String 20. subprobleem 2, 5. System 5. Volume [4], 6, 10. volume 5, 9, 10, 16, 17. Waarde [4], 10. waarde 1, 4, 8, 10, 12, 17. writeln [5], 8. zoekindex 15, 16. zoekwaarde 15, 17, 18. Names of the Sections. (Rugzak.java 20) Bepaal zoekindex subprobleem 16 Used in section 15. Bepaal zoekwaarde van dat subprobleem 17 Used in section 15. De data 4, 10 Used in section 20. En drukken het af. 8 Used in section 5. En ga verder met volgende deeloplossing. 9 Used in section 5. Geef uitvoer. 5 Used in section 20. Neem de grootste zak. 6 Used in section 5. Neem item j 18 Used in section 15. Voor alle items i doe: 12 Used in section 20. Voor alle rugzakken j doe: 13 Used in section 20. Voor als er helemaal geen items zijn 11 Used in section 20. We nemen het item dat het laatst is toegevoegd. 7 Used in section 5. probleem(i, j). 15 Used in section 20.

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

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 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan

Nadere informatie

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

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

Nadere informatie

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

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

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

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

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

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

SPOJ oplossingen Gilles Callebaut 7 augustus 2015 SPOJ oplossingen 2012-2013 Gilles Callebaut 7 augustus 2015 DISCLAIMER Oefeningen zijn niet altijd correct of optimaal. Gelieve de oefeningen enkel te gebruiken ter ondersteuning. Van kopiëren leer je

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

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

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen. Indexers in C#.Net In deze tutorial ga ik het hebben over indexers. Bij het gebruik van bijvoorbeeld een ArrayList object, kan je de gegevens uit deze collectie opvragen als ware het een array. // ArrayList

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

Oefeningen Java Oplossingen

Oefeningen Java Oplossingen Oefeningen Java en Opgave 1 Is de uitvoer van het volgende code-fragment (a), (b) of (c)? System.out.print("A"); System.out.println("B"); System.out.print("C\n"); System.out.print("D" + "E"); System.out.print("F");

Nadere informatie

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

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

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

Veel succes! 1. Gegeven is de volgende klasse:

Veel succes! 1. Gegeven is de volgende klasse: Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Derde deeltentamen

Nadere informatie

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall, sheets Programmeren 1 Java college 4, Walter Kosters De sheets zijn gebaseerd op met name hoofdstuk 8 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

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

Nadere informatie

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

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

Nadere informatie

Datastructuren Werkcollege Intro

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

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

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

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

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

Tentamen Imperatief Programmeren

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

Nadere informatie

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

Nadere informatie

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12 Open Universiteit Inhoud Introductie 2 Opgaven 3 Bijlage bij opgaven 9 Terugkoppeling 12 1 Open Universiteit Objectgeoriënteerd programmeren in Java 1 I N T R O D U C T I E Deze eindtoets is bedoeld als

Nadere informatie

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

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

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

Ingebouwde klassen & methodes

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

Nadere informatie

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2013 Organisatie Docenten Jeroen Bransen Michael Moortgat Docenten Jeroen Bransen Imperatief programmeren (Java) Tot de kerst (ongeveer) Michael Moortgat

Nadere informatie

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

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

Nadere informatie

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

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma 3 Vereiste kennis Dit boek richt zich op het leren programmeren door het oefenen met programmeercodes. Veel theorie komt in het begin niet aan de orde. Dat is een grote uitdaging want het is niet makkelijk

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

Voortgezet Prog. voor KI

Voortgezet Prog. voor KI Voortgezet Prog. voor KI Docent: Michael Wilkinson IWI 142 tel. 050-3638140 (secr. 3633939) Frank Brokken RC 352 tel. 050-3633688 Voorkennis: Inleiding Programmeren voor KI (nieuwe stijl) Stof: Practicum

Nadere informatie

Opdracht 7a. Applicatiebouw 2014/2015

Opdracht 7a. Applicatiebouw 2014/2015 Applicatiebouw 2014/2015 Opdracht 7a Inhoud Applicatiebouw op dag 7 College In het college wordt oa. overerving behandeld, waarmee je uit een bestaande klasse een nieuwe andere klasse kan maken. Ook zijn

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

Negende college algoritmiek. 15 april Dynamisch Programmeren

Negende college algoritmiek. 15 april Dynamisch Programmeren Negende college algoritmiek 15 april 2016 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen

Nadere informatie

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin: Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de

Nadere informatie

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak); Vaknaam: Programmeren I (Java) - Tentamen Module: 2 Datum/Tijd: 17 mrt 2015 / 18.30 20:30 Richting: ICT Code: IC011 Docent: E. Lieuw Boeken en aantekeningen NIET toegestaan. Kladpapier is wel toegestaan.

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

Informatica: C# WPO 11

Informatica: C# WPO 11 Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

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

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

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

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

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

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

Android apps met App Inventor 2 antwoorden

Android apps met App Inventor 2 antwoorden 2014 Android apps met App Inventor 2 antwoorden F. Vonk versie 1 11-11-2014 inhoudsopgave Mollen Meppen... - 2 - Schrandere Scholier... - 15 - Meteoor... - 21 - Dit werk is gelicenseerd onder een Creative

Nadere informatie

Game of Life in Java

Game of Life in Java Game of Life in Java Auteur: drs. M.S.L.F. Manssen http://www.manssen.eu Game of Life is een spel van een rooster van cellen, waarbij telkens een ronde gebeurt waarbij de nieuwe waardes van cellen gebeurt.

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

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

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

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

Nadere informatie

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur Naam: Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 4 opgaven. Elke opgave levert 10 punten op. Je cijfer is het totaal aantal

Nadere informatie

In BlueJ. Doe onderstaande met muis/menu s:

In BlueJ. Doe onderstaande met muis/menu s: In BlueJ Doe onderstaande met muis/menu s: Download en unzip het bestand sklok-run.zip en open het in BlueJ Maak een Schaakklok-object Voer herstart() uit voor dit object Vraag de resterende tijd op voor

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

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

Pascal uitgediept Data structuren

Pascal uitgediept Data structuren Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur

Nadere informatie

Voorbeeld: Simulatie van bewegende deeltjes

Voorbeeld: Simulatie van bewegende deeltjes Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1

Nadere informatie

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Modulewijzer Tirdat01

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

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

BEGINNER JAVA Inhoudsopgave

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

Nadere informatie

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

Inleiding programmeren

Inleiding programmeren Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg

Nadere informatie

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Complexiteit of efficiëntie van algoritmen Hoe meet je deze? Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Een betere maatstaf is het aantal berekeningsstappen

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 8 april Dynamisch Programmeren Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst

Nadere informatie

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden. Herhaling Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden. De basisbouwsteen is het object; een geïntegreerde eenheid van data en operaties werkend op deze

Nadere informatie

Programmeren in Java. De Java-GUI

Programmeren in Java. De Java-GUI DE JAVA-GUI Programmeren in Java 1 Programmeren in Java Section Page Inleiding................................................. 1 1 De Java-GUI............................................. 2 1 Swing-componenten......................................

Nadere informatie

Scala. Korte introductie. Sylvia Stuurman

Scala. Korte introductie. Sylvia Stuurman Korte introductie Sylvia Stuurman Wat is er zo bijzonder aan? Schaalbaar Objectgeoriënteerd (handiger dan Java!) Functioneel Scripts schrijven Gecompileerd: Java bytecode Pagina 2 voor scripts Pagina 3

Nadere informatie

Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice

Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice handleiding voor de programmeur Auteur: Informatiehuis Water Documentbeheer Wijzigingshistorie Datum Versie Auteur Wijziging Aat van den Heuvel

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

INFITT01 - Internettechnologie WEEK 8

INFITT01 - Internettechnologie WEEK 8 INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de

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

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Eerste deeltentamen Gameprogrammeren Vrijdag 26 september 2014, 8.30-10.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Elke opgave levert 10 punten op. Je cijfer is het totaal aantal punten

Nadere informatie

Tiende college algoritmiek. 26 april Gretige algoritmen

Tiende college algoritmiek. 26 april Gretige algoritmen Algoritmiek 01/10 College 10 Tiende college algoritmiek april 01 Gretige algoritmen 1 Algoritmiek 01/10 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag

Nadere informatie

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort Algoritmiek 018/Algoritme van Dijkstra Elfde college algoritmiek 18 mei 018 Algoritme van Dijkstra, Heap, Heapify & Heapsort 1 Algoritmiek 018/Algoritme van Dijkstra Uit college 10: Voorb. -1- A B C D

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

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N! Recursie Faculteit: in de wiskunde: n! is gedefiniëerd als: 0! = 1 n! = n (n 1)! in Java: public static int faculteit( int n ) // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

Nadere informatie

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368 Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368 Handleiding bij het gebruik van een microcontroller in het Accelerometerproject (Project II) Er zijn speciaal voor het Accelerometerproject

Nadere informatie

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk Project network Gebaseerd op paragrafen 10.1-10.7, 11.1-11.6 uit het boek. We simuleren een sociaal netwerk Er zijn twee soorten berichten: tekstberichten en fotoberichten,... voorgesteld door de klassen

Nadere informatie

Tentamen Formele Methoden voor Software Engineering (213520)

Tentamen Formele Methoden voor Software Engineering (213520) Tentamen Formele Methoden voor Software Engineering (213520) 15 april 2010, 8:45 12:15 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en

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

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

Modelleren en Programmeren voor KI

Modelleren en Programmeren voor KI Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver Tomas Klos Het SAT probleem Parvulae Logicales: Propositielogica, Hoofdstuk 6 (Semantiek), p. 62: Het SAT probleem Ik geef je een propositielogische

Nadere informatie

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Aanvullende

Nadere informatie

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

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

Nadere informatie

Stacks and queues. Hoofdstuk 6

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

Nadere informatie

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

Design principes.

Design principes. Design principes joost.vennekens@kuleuven.be Doelstelling Code die werkt doet wat klant wil betrouwbaar is gemakkelijk te veranderen is En dit ook blijft doen Software rot Rottende software geeft geurtjes

Nadere informatie

Ontwerp van Informatiesystemen

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

Nadere informatie

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers ES1 Project 1: Microcontrollers Les 1: Installeren en verifiëren van de SDE Door Hugo Arends, augustus 2012 Microcontrollers Een microcontroller is een elektronische component dat gebruikt wordt om (complexe)

Nadere informatie

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Tweede deeltentamen Gameprogrammeren Vrijdag 18 oktober 2013, 11.00-13.00 uur Naam: Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 10 punten op, opgave 2 levert 6 punten op, en opgave

Nadere informatie

NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009

NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009 NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009 NetBeans is een IDE voor (o.a.) Java, een programma waarmee je Javaprogramma's kunt schrijven en uitvoeren. Deze tutorial bevat informatie

Nadere informatie

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST College 12 Twaalfde college complexiteit 11 mei 2012 Overzicht, MST 1 Agenda voor vandaag Minimum Opspannende Boom (minimum spanning tree) als voorbeeld van greedy algoritmen Overzicht: wat voor technieken

Nadere informatie