Programmeertechnieken
|
|
|
- Julius Arthur Vink
- 9 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Aanvulling op Programmeren Radboud Universiteit Nijmegen 10 December 2012
2 1 Omschrijving Linked lists Implementatie Boomstructuren 2 Recursie De rij van Fibonacci Het driehoekprobleem 3 Het substitutiecijfer Tetragramfrequenties
3 Omschrijving Linked lists Implementatie Boomstructuren Vind de gemiddelde wachttijd in een postkantoor met P loketten N klanten Klanten komen aan tussen 0 en T Gem. verwerkingstijd τ, met P(t) = te t2 Alle klanten worden afgehandeld
4 De toestand Omschrijving Linked lists Implementatie Boomstructuren De toestand op tijdstip t bestaat uit Het aantal mensen in de rij per kassa De vertrektijden per kassa
5 Gebeurtenissen Omschrijving Linked lists Implementatie Boomstructuren Er zijn twee type gebeurtenissen Een klant komt aan Een klant vertrekt Eindconditie De simulatie loopt af als er geen gebeurtenissen meer zijn.
6 Strategieschets Omschrijving Linked lists Implementatie Boomstructuren Er moet gebeuren Gemiddelde over meerdere simulaties Sorteren van gebeurtenissen op tijd Alle geordende gebeurtenissen afwerken Idee Maak een altijd gesorteerde queue m.b.v. een linked list
7 Linked list code Omschrijving Linked lists Implementatie Boomstructuren 1 struct list_elem { 2 int data; 3 struct list_elem* next; 4 };
8 Linked list, grafisch Omschrijving Linked lists Implementatie Boomstructuren
9 Element toevoegen Omschrijving Linked lists Implementatie Boomstructuren
10 Array vs linked list Omschrijving Linked lists Implementatie Boomstructuren Array: Gemakkelijk items toevoegen aan het eind Snel element i opvragen Vaste lengte Linked list: Gemakkelijk items toevoegen in het midden Opvragen is lineair Variabele lengte
11 De eventstructuur Omschrijving Linked lists Implementatie Boomstructuren 1 #define NEW_CLIENT 0 2 #define CLIENT_HANDLED typedef struct list_elem { 5 int type; 6 float time; 7 int counter; /* Loketnummer */ 8 struct list_elem* next; 9 } Event;
12 Sorted insert (I) Omschrijving Linked lists Implementatie Boomstructuren 1 Event* sorted_insert(event* queue, Event* event) { 2 Event* cur = queue; 3 4 /* Moet event vooraan in de queue? */ 5 if (cur == NULL event->time < cur->time) { 6 event->next = cur; 7 return event; 8 }
13 Sorted insert (II) Omschrijving Linked lists Implementatie Boomstructuren 8 while (cur!= NULL) { 9 if (cur->next == NULL 10 event->time < cur->next->time) { 11 /* Element invoegen */ 12 event->next = cur->next; 13 cur->next = event; 14 return queue; 15 } cur = cur->next; 18 }
14 De simulatie Omschrijving Linked lists Implementatie Boomstructuren 1 Event* queue = NULL; 2 float* counter_time = malloc(p * sizeof(float)); 3 int* counter_queue = malloc(p * sizeof(int)); 4 5 float avg = 0; 6 for (j = 0; j < NUM_ITER; j++) { 7 avg += do_simulation(); 8 } 9 10 float sol = avg / (float)(n * NUM_ITER);
15 De strategie Omschrijving Linked lists Implementatie Boomstructuren Per simulatie: Vul de queue met aankomstevents Klant bij loket Maak nieuw vertrekevent Klant weg bij loket met rij Maak nieuw vertrekevent Blijf doorgaan zolang de queue niet leeg is
16 De aankomsten Omschrijving Linked lists Implementatie Boomstructuren Aankomsten kunnen meteen toegevoegd worden 1 for (i = 0; i < N; i++) { 2 Event* new_client = malloc(sizeof(event)); 3 new_client->type = NEW_CLIENT; 4 new_client->time = rand() / (float)rand_max * T; 5 new_client->next = NULL; 6 7 queue = sorted_insert(queue, new_client); 8 }
17 De queue loop Omschrijving Linked lists Implementatie Boomstructuren 1 while (queue!= NULL) { 2 if (queue->type == NEW_CLIENT) { 3 /* Handel nieuwe client af */ 4 } 5 if (queue->type == CLIENT_HANDLED) { 6 /* Handel vertrek af */ 7 } 8 9 Event* tmp = queue; 10 queue = queue->next; /* Naar de volgende */ 11 free(tmp); 12 }
18 Een nieuwe client Omschrijving Linked lists Implementatie Boomstructuren 1 if (queue->type == NEW_CLIENT) { 2 int min_counter = get_shortest_queue(); 3 4 counter_queue[min_counter]++; 5 6 if (counter_queue[min_counter] == 1) { 7 add_handled_event(queue, min_counter); 8 } 9 }
19 De kortste rij Omschrijving Linked lists Implementatie Boomstructuren Kortste rij qua aantal mensen: 1 int get_shortest_queue() { 2 int shortest = 0; 3 for (i = 1; i < P; i++) { 4 if (counter_queue[i] < counter_queue[shortest]) { 5 shortest = i; 6 } 7 } 8 9 return shortest; 10 }
20 Een afgehandelde client Omschrijving Linked lists Implementatie Boomstructuren 1 if (queue->type == CLIENT_HANDLED) { 2 counter_queue[queue->counter]--; 3 last_time = queue->time; 4 5 if (counter_queue[queue->counter] > 0) { 6 queue = add_handled_event(queue, queue->counter); 7 } 8 }
21 Een handled event toevoegen Omschrijving Linked lists Implementatie Boomstructuren 1 Event* add_handled_event(event* queue, int counter) { 2 Event* event = malloc(sizeof(event)); 3 event->type = CLIENT_HANDLED; 4 event->time = queue->time + sqrt(-log(rand() 5 / (float)rand_max)) * tau * M_2_SQRTPI; 6 event->counter = counter; 7 event->next = NULL; 8 return sorted_insert(queue, event); 9 }
22 Finis coronat opus Omschrijving Linked lists Implementatie Boomstructuren Doel bereikt is opgelost! Kleine optimalisaties: Events toevoegen gaat lineair met aantal events Er is een slimmere manier dan linked lists
23 Binaire boom Omschrijving Linked lists Implementatie Boomstructuren 1 struct tree_elem { 2 float data; 3 struct tree_elem* left; 4 struct tree_elem* right; 5 };
24 Binaire boom, grafisch Omschrijving Linked lists Implementatie Boomstructuren
25 Voor- en nadelen Omschrijving Linked lists Implementatie Boomstructuren Sneller opzoeken Sneller toevoegen Moeilijk te balanceren
26 Recursieve functies Recursie De rij van Fibonacci Het driehoekprobleem Een recursieve functie bestaat uit: Een vaste startwaarde / eindwaarde Een aanroeping van zichzelf Eindwaarde functie eindigt In de wiskunde: f (0) = 1 f (n) = n f (n 1)
27 Voorbeeld in C Recursie De rij van Fibonacci Het driehoekprobleem De faculteitsfunctie: 1 int fac(int n) { 2 if (n == 0) 3 return 1; 4 5 return n * fac(n - 1); 6 }
28 Recursief vs. niet recursief Recursie De rij van Fibonacci Het driehoekprobleem Recursief: 1 int fac(int n) { 2 if (n == 0) 3 return 1; return n * fac(n - 1); 7 } Niet recursief: 1 int fac(int n) { 2 int i, f = 1; 3 for (i = 2; i <= n; i++) 4 f *= i; 5 6 return f; 7 }
29 Fibonacci-serie Recursie De rij van Fibonacci Het driehoekprobleem f 0 = 0 f 1 = 1 f n = f n 1 + f n 2
30 Naïeve implementatie Recursie De rij van Fibonacci Het driehoekprobleem 1 int fibonacci(int n) { 2 if (n < 2) 3 return n; 4 5 return fibonacci(n - 2) + fibonacci(n - 1); 6 }
31 Problemen en oplossingen Recursie De rij van Fibonacci Het driehoekprobleem Fibonacci is erg traag voor grote n Er wordt heel veel opnieuw berekend Idee f n 2 (en dus ook f n 1 ) kunnen we onthouden!
32 Betere implementatie Recursie De rij van Fibonacci Het driehoekprobleem 1 int fib[200] = {0}; 2 3 int fibonacci(int n) { 4 if (n < 2) 5 return n; 6 7 if (fib[n] > 0) 8 return fib[n]; 9 10 int fibn = fibonacci(n - 2) + fibonacci(n - 1); 11 fib[n] = fibn; 12 return fibn; 13 }
33 Resultaten Recursie De rij van Fibonacci Het driehoekprobleem Antwoord in paar milliseconden! Opslaan van subresultaten heet dynamic programming Snelheid ten koste van geheugen
34 Het driehoekprobleem Recursie De rij van Fibonacci Het driehoekprobleem 3 Loop naar beneden Zoek pad met hoogste score
35 Het driehoekprobleem Recursie De rij van Fibonacci Het driehoekprobleem 3 Loop naar beneden Zoek pad met hoogste score
36 De uitdaging Recursie De rij van Fibonacci Het driehoekprobleem Stel de driehoek is 100 lagen diep Aantal paden: 2 99 Stel je doet paden per seconde Dan duurt het nog steeds meer dan 20 miljard jaar!
37 Subprobleem Recursie De rij van Fibonacci Het driehoekprobleem 3 Waarde bij 3? Bereken waarde bij 7 Bereken waarde bij 4 Pak maximum
38 Opslaan van waarden Recursie De rij van Fibonacci Het driehoekprobleem Waarde op positie x,y opslaan Simpele oplossing kost wat geheugen 1 int value[100][100]; (0,0) (0,1) (1,1) (0,2) (1,2) (2,2)
39 Oplossing driehoekprobleem Recursie De rij van Fibonacci Het driehoekprobleem 1 int get_value(int x, int y) { 2 if (y == 99) /* Laatste rij */ 3 return tree[x][y]; 4 5 if (value[x][y] > 0) 6 return value[x][y]; 7 8 int left = get_value(x, y + 1); 9 int right = get_value(x + 1, y + 1); 10 value[x][y] = tree[x][y] + max(left, right); 11 return value[x][y]; 12 }
40 Het substitutiecijfer Het substitutiecijfer Tetragramfrequenties Maak een bijectie: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z G T U J C P L D O R Y W X Z F I V Q S K A N E M H B Vertaal: HALLO DGWWF WERELD ECQCWJ
41 De uitdaging Het substitutiecijfer Tetragramfrequenties Aantal mogelijkheden: 26! Hoe vinden we de originele tekst? Welke eigenschap van de brontekst blijft bewaard?
42 Letterfrequenties Het substitutiecijfer Tetragramfrequenties e t a o i n s h r d l c u m w f g y p b v k j x q z
43 Tetragrammen Het substitutiecijfer Tetragramfrequenties Letterfrequenties zijn een goed begin Tetragramfrequenties zijn stabieler DITISEENZIN splitst op in DITI, ITIS, TISE, ISEE, SEEN, EENZ, ENZI, NZIN Bereken frequenties uit grote boeken (bijbel)
44 Strategie Het substitutiecijfer Tetragramfrequenties Een tekst lijkt meer op Nederlands als de tetragramfrequenties overeenkomen! Score We kunnen dus een scorefunctie maken Tel de frequenties f in tekst Vergelijk met de referentie r S = i e (f i r i ) 2 2σ 2
45 Oplossingsruimte Het substitutiecijfer Tetragramfrequenties We zoeken oplossing met hoogste score Oplosruimte is te groot om alles af te gaan
46 Het substitutiecijfer Tetragramfrequenties We zoeken absoluut maximum Stel we beginnen op een random plaats Zoek een pad naar boven Idee Bekijk buren van de huidige locatie en loop naar buur die beter is
47 code Het substitutiecijfer Tetragramfrequenties 1 void hillclimb(char* text, char* alpha) { 2 int i, j; 3 float best_score = 0; 4 5 for (i = 0; i < 25; i++) 6 for (j = i + 1; j < 26; j++) { 7 swap(alpha, i, j); 8 float new_score = score(transcribe(text, alpha)); 9 if (new_score > best_score) { 10 i = j = 0; 11 best_score = new_score; 12 } else 13 swap(alpha, i, j); 14 } 15 }
48 Einde Het substitutiecijfer Tetragramfrequenties Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter. (Eric Raymond)
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,
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,
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
Uitwerking tentamen Algoritmiek 9 juli :00 13:00
Uitwerking tentamen Algoritmiek 9 juli 0 0:00 :00. (N,M)-game a. Toestanden: Een geheel getal g, waarvoor geldt g N én wie er aan de beurt is (Tristan of Isolde) b. c. Acties: Het noemen van een geheel
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.
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
Tweede college algoritmiek. 12 februari Grafen en bomen
College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)
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
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
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)!
Algoritmiek. 15 februari Grafen en bomen
Algoritmiek 15 februari 2019 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices) en E een verzameling van
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
Tentamen Programmeren in C (EE1400)
TU Delft Faculteit EWI Tentamen Programmeren in C (EE1400) 28 jan 2011, 9.00 12.00 - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
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
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
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
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));
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
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
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)
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
Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search
Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben
Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ.
Tweede Toets Datastructuren 29 juni 2016, 13.30 15.30, Educ-Γ. Motiveer je antwoorden kort! Zet je mobiel uit. Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe
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
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
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
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
Uitwerking tentamen Algoritmiek 10 juni :00 13:00
Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.
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
Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra
Algoritmiek 017/Gretige Algoritmen Tiende college algoritmiek 13/1 april 017 Gretige Algoritmen Algoritme van Dijkstra 1 Algoritmiek 017/Gretige Algoritmen Muntenprobleem Gegeven onbeperkt veel munten
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
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
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/
Datastructuren: stapels, rijen en binaire bomen
Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:
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
ALGORITMIEK: antwoorden werkcollege 5
1 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit
ALGORITMIEK: antwoorden werkcollege 5
ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit
Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,
Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt
1 Inleiding in Functioneel Programmeren
1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp
Tree traversal. Ferd van Odenhoven. 15 november Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering. Doorlopen van bomen
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 traversal 15 november
Recursie: definitie. De som van de kwadraten van de getallen tussen m en n kan als volgt gedefinieerd worden:
Recursie: definitie Een object wordt recursief genoemd wanneer het partieel bestaat uit of partieel gedefinieerd is in termen van zichzelf. Recursie wordt gebruikt bij wiskundige definities, bijvoorbeeld:
Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam
Arduino Cursus, Deel 2 Programmeren Simon Pauw, ZB45, Amsterdam Programmeren Geen zorgen als je niet alles begrijpt. Doel: Het snappen van bestaande code. Meeste kennis ook toepasbaar buiten de Arduino
Datastructuren en algoritmen voor CKI
Datastructuren en algoritmen voor CKI Jeroen Bransen 1 11 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Heaps en heapsort Heap 1 2 3 4 5 6 7 8 9 10 16 14 10 8 7 9 3 2 4 1 16 14 10 8 7 9 3
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
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
U ziet de progressie van de download aan de groene blokjes in het balkje helemaal onder aan de pagina.
Gegevens exporteren en bewerken vanuit GRIEL Stap 1. Selecteer de juiste gegevens en download deze 1. Stel het datumfilter in op de gewenste periode. Druk op ververs. 2. Maak met behulp van het filter
Containers stapelen. M.L. Koning april 2013
Technische Universiteit Eindhoven 2WH03 - Modelleren C Containers stapelen L. van Hees 0769244 M.L. Koning 0781346 2 april 2013 Y.W.A Meeuwenberg 0769217 1 Inleiding De NS vervoert dagelijks grote hoeveelheden
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
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
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,
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
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
Algoritmiek. 2 februari Introductie
College 1 Algoritmiek 2 februari 2017 Introductie 1 Introductie -1- docent: Rudy van Vliet [email protected] assistent werkcollege: Bart van Strien [email protected] website: http://www.liacs.leidenuniv.nl/~vlietrvan1/algoritmiek/
Examencursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO kan niet korter
Voorbereidende opgaven VWO Examencursus wiskunde A Tips: Maak de voorbereidende opgaven voorin in een van de A4-schriften die je gaat gebruiken tijdens de cursus. Als een opdracht niet lukt, werk hem dan
Derde college complexiteit. 7 februari Zoeken
College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande
Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra
College 10 Tiende college algoritmiek mei 013 Gretige algoritmen, Dijkstra 1 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag van n (n 0) eurocent. Alle
Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep.
Opgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven.
TW2020 Optimalisering
TW2020 Optimalisering Hoorcollege 8 Leo van Iersel Technische Universiteit Delft 2 november 2016 Leo van Iersel (TUD) TW2020 Optimalisering 2 november 2016 1 / 28 Minimum Opspannende Boom (Minimum Spanning
software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies
software constructie recursieve datastructuren college 15 software engineering highlights 1 de software bestaat uiteindelijk uit datatypen functies verbindingen geven gebruik aan main is de top van het
Tweede Toets Datastructuren 28 juni 2017, , Educ-β.
Tweede Toets Datastructuren 28 juni 2017, 13.30 15.30, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert
Hoe een TomTom een sudoku oplost
Hoe een TomTom een sudoku oplost dr. Arnold Meijster [email protected] Palindromen Opdracht: Ga van een willekeurig woord na, of het een palindroom is of niet. lol pop lepel negen droomoord parterretrap
Wat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.
Wat is FP? The Haskell School of Expression Functioneel Programmeren Een andere manier om tegen programmeren aan te kijken Gebaseerd op het uitrekenen van expressies 1+1=2 Eenvoudig maar krachtig (modulair,
Uitleg. Welkom bij de Beverwedstrijd 2006. Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden.
Uitleg Welkom bij de Beverwedstrijd 2006 Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden. Je krijgt 5 vragen van niveau A, 5 vragen van niveau B en 5 vragen van niveau C. Wij denken
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
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
Stoomcursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO ( ) = = ( ) ( ) ( ) = ( ) ( ) = ( ) = = ( )
Voorbereidende opgaven VWO Stoomcursus wiskunde A Tips: Maak de voorbereidende opgaven voorin in een van de A4-schriften die je gaat gebruiken tijdens de cursus. Als een opdracht niet lukt, werk hem dan
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
Dynamisch Programmeren. Het Rugzakprobleem
INLEIDING Dynamisch Programmeren 1 Dynamisch Programmeren Section Page Inleiding................................................. 1 1 Oplossing................................................ 2 2 Subprobleem.............................................
Zevende college algoritmiek. 24 maart Verdeel en Heers
Zevende college algoritmiek 24 maart 2016 Verdeel en Heers 1 Verdeel en heers 1 Divide and Conquer 1. Verdeel een instantie van het probleem in twee (of meer) kleinere instanties 2. Los de kleinere instanties
Programmeermethoden NA. Week 6: Lijsten
Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal
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 [email protected] en [email protected]
extra oefening algoritmiek - antwoorden
extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.
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.
Semaforen. Semaforen p. 1/2
Semaforen 2008 Semaforen p. 1/2 Vorige Keer mbv mutual exclusion kritieke sectie (cs) 1. software : Dekker s, Peterson s algoritme 2. hardware: uniprocessor machine: disable interrupts 3. hardware: multiprocessor
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
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
Programmeermethoden NA
Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Getal opbouwen Stel je leest losse karakters (waaronder
Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie
Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter [email protected] 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3:
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
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
Doorzoeken van grafen. Algoritmiek
Doorzoeken van grafen Algoritmiek Vandaag Methoden om door grafen te wandelen Depth First Search Breadth First Search Gerichte Acyclische Grafen en topologische sorteringen 2 Doolhof start eind 3 Depth
Tweede Toets Datastructuren 26 juni 2019, , Educ-β.
Tweede Toets Datastructuren 26 juni 2019, 17.00 19.00, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert
Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )
OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................
