CCHR: De snelste CHR implementatie
|
|
- Filip van Dongen
- 7 jaren geleden
- Aantal bezoeken:
Transcriptie
1 CCHR: De snelste CHR implementatie Promotor: Prof. Dr. Bart Demoen Begeleider: Dr. ir. Tom Schrijvers Pieter Wuille 20 december 2006
2 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
3 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
4 Waarom CHR in C? Waarom CHR in C? De mogelijkheid om CHR te gebruiken in pure C programma s Een poging tot CHR heel snel maken (oa. door grote vrijheid in C datastructuren)
5 Opbouw CCHR De verschillende stappen bij het gebruik van CCHR zijn: CCHR code C macro s C code Executable CCHR Compiler C Preprocessor C Compiler CCHR code Gewone C broncode Met cchr {...} blokken in Deze blokken worden vervangen door C macro s
6 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
7 Mogelijkheden CHR Constraints CHR Constraints zijn geïmplementeerd: Willekeurige ariteit Alle C datatypes (behalve arrays) als argumenten Extra parameters voor weergave of voor destructors voorbeeld constraint init(int),fib(int,bignum_t) destr(destruct_bignum(&$2));
8 Mogelijkheden CHR Rules CHR Rules zijn geïmplementeerd: Propagation (K,... ==>...) Simplification (R,...<=>...) Simpagation (K,... \ R,...<=>...) voorbeelden init(_) ==> fib(0,1), fib(1,1); gcd(0) <=> true; gcd(n) \ gcd(m) <=> M>=N gcd(m-n);
9 Mogelijkheden Variabelen Variabelen in CHR Rules zijn geimplementeerd: Als constraint-argument in head Als lokale variabele in guard Als lokale variabele in body voorbeelden con(n) ==> N>0 cons(n-1); con(n) ==> int M=N-1, M>=0 con(m); con(n) ==> N>0 int M=N-1, con(m);
10 Mogelijkheden Niet-HNF Rules Het is mogelijk CHR Rules die niet in HNF (Head-Normal Form) staan te gebruiken: Er kunnen C-expressies als argument voorkomen Een variabele mag meermaals voorkomen Een variabele mag in een expressie voorkomen voorbeelden con(0) <=> true; fib(n,_) \ init(n) <=> true; fib(n-1,m1), fib(n,m2) ==> fib(n+1,m1+m2);
11 Mogelijkheden C statements Het is mogelijk willekeurige C statements in guard of body te plaatsen: Moet tussen {...} Bv initialisatie van ingwikkelde argumenten voorbeeld str(str1) ==> char *Str2=malloc(2*strlen(Str1)), { strcpy(str2,str1); strcat(str2,str1); }, dblstr(str2);
12 Mogelijkheden Debug-modus Er is een debug modus: Door een optie aan C compiler mee te geven Print alle constraints, uitgevoerde regels, propagation history toevoegingen,...uit vereist een debug( printf string ) tag bij alle constraints
13 Source CCHR main lexer & parser analyse code generatie C code
14 Source main C code CCHR lexer & parser analyse code generatie de main module Bevat de main() C routine Overloopt alle opgegeven sourcefiles Vervangt.chr of.cchr door.c voor output Kopieert input naar output, behalve cchr-blokken Voor cchr blokken worden lexer, parser, analyser en code-generator aangeroepen
15 Source main C code CCHR lexer & parser analyse code generatie de lexer Geschreven mbv. Flex (die lexer genereert in C) Herkent operatoren, haakjes, symbolen Parser vraagt deze tokens op aan lexer de parser Geschreven mbv. Bison (die parser genereert in C) Herkent regels, code-blokken, argumenten, constraints,...
16 Source main C code CCHR lexer & parser analyse code generatie de analyser Analyseert output van de parser (abstract syntax tree) Genereert nieuwe data structuur met expressions, variabelen, constraints, regels,... Doet conversie naar Head Normal Form Analyseert gebruik van variabelen, waar propagation history bij te houden,...
17 Source main C code CCHR lexer & parser analyse code generatie de code-generator Gebruikt de gegevens gegenereerd door analyser Genereert een aantal macro s voor elke constraint/regel Voor elke constraint occurrence een macro met code
18 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
19 Geheugenallocatie Geheugenallocatie Alle ge-malloc()-ed geheugen wordt ge-free()-d Garbage Collector is niet noodzakelijk, dmv. user-defined destructors Eventueel kan alternatieve malloc()/free() gebruikt worden (eg. Boehm)
20 Gebruik van C macro s Gebruik van C macro s: voordelen Minder echte code in CCHR compiler zelf (hardcoded) Keuze van eg. datastructuren kan buiten compiler elijkere outputcode Debug-mode door simpel optie meegeven aan C compiler nadelen Veel moeilijker locatie van bugs te vinden Macro definities redelijk moeilijk leesbare code
21 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
22 GCD Voorbeeld constraint gcd(uint64_t); gcd(0ull) <=> true; gcd(n) \ gcd(m) <=> M>=N gcd(m-n); Beginnen met: gcd( ),gcd(5). resultaten implementatie runtime cycles/iteratie swi-prolog 37.1s 4100 cchr 0.08s 8.8 Java heeft geen tail recursion stack overflow
23 FIB Voorbeeld (met GMP library) typedef struct { mpz_t v; } bigint_t; cchr { constraint fib(int,bigint_t) destr(mpz_clear($2.v)); constraint init(int); init(_) ==> bigint_t Z=, bigint_t Y=, { mpz_init_set_si(z.v,1); mpz_init_set_si(y.v,1); }, fib(0,z), fib(1,y); init(max), fib(n-1,m1), fib(n,m2) ==> N<Max bigint_t Sum=, { mpz_init(sum.v); mpz_add(sum.v,m1.v,m2.v); }, fib(n+1, Sum); init(_) <=> true; }
24 FIB Voorbeeld: resultaten Beginnen met: init(7499). Versie 2 gebruikt: fib(max,_) \ init(max) <=> true; in plaats van: init(_) <=> true; resultaten implementatie runtime(v1) runtime(v2) swi-prolog 740s 294s jchr 4.56s 0.149s cchr 2.06s 1.22s cchr (no hist) s
25 Primes Voorbeeld constraint candidate(int),prime(int); candidate(1) <=> true; candidate(n) <=> prime(n), candidate(n-1); prime(y) \ prime(x) <=> (X%Y)==0 true; Beginnen met: candidate(23000). resultaten implementatie runtime swi-prolog 330s jchr 48.5s cchr 8.9s
26 1 Algemeen Waarom CCHR Structuur 2 Implementatie Mogelijkheden 3 Ontwerpbeslissingen Geheugenallocatie Macro s 4 Performantie GCD Voorbeeld FIB Voorbeeld Primes Voorbeeld 5 Gepland werk Gepland werk
27 Gepland werk Gepland werk Built-in constraints (mbv. union find) & reactivatie Meer datastructuren (eg. hashtables) Functies om over constraint store te itereren Meer voorbeelden uitwerken en testen Parameters bij rules (pragma s, eg. passive ) Meer optimalisaties
28 Einde Nog vragen?
Katholieke Universiteit Leuven
Katholieke Universiteit Leuven Faculteit Ingenieurswetenschappen Departement Computerwetenschappen CCHR: DE SNELSTE CHR IMPLEMENTATIE Pieter WUILLE Eindwerk aangeboden tot het behalen van de graad van
Nadere informatieZelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
Nadere informatieDe 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 informatieSyntax- (compile), runtime- en logische fouten Binaire operatoren
Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle
Nadere informatieInleiding tot Func.oneel Programmeren les 3
Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere
Nadere informatieEE1400: 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 informatieTentamen 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 informatie4EE11 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 informatieDatastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.
Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies
Nadere informatiecontinue 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 informatieModelleren 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 informatieHoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.
Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de
Nadere informatieEE1400: 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 informatieHOGESCHOOL 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 informatieDatastructuren 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 informatieDatastructuren en algoritmen
Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift
Nadere informatieAls 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 informatieAuteur 02-11-06. 1 Inleiding...3. 2 Namen in applicatie...4. 2.1 Opslag structuur... 4 2.2 Gedefinieerde structuren... 4
MV-MODULE RWSC versie 3 Inhoudsopgave 1 Inleiding...3 2 Namen in applicatie...4 2.1 Opslag structuur... 4 2.2 Gedefinieerde structuren... 4 3 Signaalgroep informatie bij bijzondere ingrepen...6 4 Extra's...7
Nadere informatieVoorbeeldtentamen 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 informatieC++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float
Nadere informatieCompilers.
Compilers joost.vennekens@denayer.wenk.be Job van een compiler Job van een compiler 68: newarray int int grens = min + (max - min) / 2; int[] kleiner = new int[n]; int[] groter = new int[n]; int k = 0;
Nadere informatieProgrammeren 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 informatieExamen 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 informatie1 Hoe PHP werkt van broncode tot weergave 1
Inhoud 1 Hoe PHP werkt van broncode tot weergave 1 Fase 1: lexicale analyse 2 Fase 2: parsering 3 Fase 3: compilatie 5 Fase 4: interpretatie 7 Samenvatting 7 2 Ik hou van Xdebug 9 Inleiding 10 Werken met
Nadere informatieProgrammeren 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 informatieProgrammeren in C++ (deel 1)
FHT&L MODULE BESCHRIJVING Programmeren in C++ (deel 1) PRO4 Samenstelling: Cees van Tilborg, Thijs Dorssers Datum: september 2011 Versie: 1h Titel: Programmeren in C++ Identificatie Progresscode: PRO4
Nadere informatieDemo 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 informatiecolleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser
colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp
Nadere informatieHOOFDSTUK 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 informatieDatatypes 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 informatieLineaire 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 informatieIntroductie in C++ Jan van Rijn. September 2013
Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)
Nadere informatieVakgroep 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 informatieDe Meta-circulaire Pico evaluator
De Meta-circulaire Pico evaluator 2de kandidatuur Informatica, VP (Toegepaste) Informatica Wolfgang De Meuter Laboratorium voor Programmeerkunde Departement Informatica Vrije Universiteit Brussel Pleinlaan
Nadere informatieCollege Introductie
College 2016-2017 Introductie Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Waarom is FP anders? in plaats van opdrachten die na elkaar moeten worden uitgevoerd, definiëren we
Nadere informatieinleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur
1 Inleiding inleiding theoretische informatica 2007-2008 practicum 1 deadline woensdag 20 februari 2008 om 14.00 uur Dit practicum is een kennismaking met functioneel programmeren. Twee belangrijke functionele
Nadere informatieInleiding C++ Coding Conventions
Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,
Nadere informatie1 Inleiding in Functioneel Programmeren
1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp
Nadere informatieOrganiseer uw verschillende SOAP services in één scenario
1 Organiseer uw verschillende SOAP services in één scenario Wouter Luijten wouterluijten@creetion.com 2 Introductie Tijdens de implementatie van een proces heeft u vaak te maken met een veelvoud aan services.
Nadere informatieDeeltentamen Grammatica s en ontleden 22 december 2005
Tentamen Grammatica s en ontleden 22 december 2005 1 Deeltentamen Grammatica s en ontleden 22 december 2005 Let op: opgave 1 t/m 4 tellen voor (slechts) 5 punten mee, opgave 5 voor maar liefst 50 punten,
Nadere informatiePython. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14
Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies
Nadere informatieJavascript 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 informatieInstructies 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 informatieCompilerConstructie / Les 3 Activatierecords & Intermediaire Code
CompilerConstructie / Les 3 Activatierecords & Intermediaire Code Christophe Van Ginneken 1 les 3 in 1 [slide minuut] Java ML Sparc MIPS broncode (intermediaire code)* machine code Pascal Front End Back
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Lezing 4e Gymnasium, 19 november 2015 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieWat 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,
Nadere informatieModelleren 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 informatieOpen Source Software. Bart van Dijk (b.van.dijk@hccnet.nl)
Open Source Software Bart van Dijk (b.van.dijk@hccnet.nl) Open Source Software (OSS) Wat is het Waarom willen we het wel (of niet) OSS voorbeelden Geschiedenis Licenties Ontwikkeling en ondersteuning Wat
Nadere informatieMeer command-line utilities
Meer command-line utilities Mattias Holm & Kristian Rietveld Vorige week - Hoe werkt een shell? - Pipes en redirectie. - Verscheidene handige utilities. - Shell scripting. Doel - Meer utilities introduceren
Nadere informatieFunctioneel 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 informatieSamenvatting hst. 3 sec. 1-3
Samenvatting hst. 3 sec. 1-3 infixr 4 (< >) :: Parser a b! Parser a b! Parser a b (p < > q) xs = p xs ++ q xs infixl 6 () :: Parser a (b!c)! Parser a b! Parser a c (p q) xs = [(f b,zs) (f,ys)"p
Nadere informatieDit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie
Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie www.liacs.nl/home/kosters/pm/ Met dank aan allen die aan deze tekst hebben
Nadere informatieTentamen 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 informatieUNIVERSITEIT 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 informatieDe 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 informatieProject 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 informatieModelleren 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 informatieEen 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 informatieDeel 2 S7 Graph Ont4 - GA3
Deel 2 S7 Graph Ont4 - GA3 Deel 2 : Graph 09/05 1 Wanneer er in een installatie een sequentiële beweging geprogrammeerd moet worden is het interessant om gebruik te maken van S7 Graph. De progammastructuur
Nadere informatieObjective-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 informatieAPPLICATIEBOUW 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 informatieModulewijzer 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 informatieTentamen 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 informatieBESCHRIJVING VAN DE SOFTWARE-INTERFACE TUSSEN HET DOSEERALGORITME EN DE PROCESBESTURING VOOR TOERITDOSEERTOESTELLEN.
BESCHRIJVING VAN DE SOFTWARE-INTERFACE TUSSEN HET DOSEERALGORITME EN DE PROCESBESTURING VOOR TOERITDOSEERTOESTELLEN. RIJKSWATERSTAAT Adviesdienst Verkeer en Vervoer Afdeling IBW Boompjes 200 Postbus 1031
Nadere informatieEen 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 informatieUitbreiding van de Model Specification Language (MSL) compiler. Thierry Cornelis
Uitbreiding van de Model Specification Language (MSL) compiler Thierry Cornelis 29 november 2002 Inhoudsopgave 1 Prototype 1 3 1.1 AToM 3............................... 3 1.2 Compileren............................
Nadere informatieKleine cursus PHP5. Auteur: Raymond Moesker
Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven
Nadere informatieHaskell: programmeren in een luie, puur functionele taal
Haskell: programmeren in een luie, puur functionele taal Jan van Eijck jve@cwi.nl 5 Talen Symposium, 12 juli 2010 Samenvatting In deze mini-cursus laten we zien hoe je met eindige en oneindige lijsten
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord December 17, 2018 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True : gohome () Goed:
Nadere informatieOntwerp 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 informatieModelleren en Programmeren: Prolog
Modelleren en Programmeren: Prolog Marijn Schraagen 8 januari 2016 Introductie Basiselementen Rekenen Recursie Introductie Prolog vs. Java Java is procedureel en imperatief Code beschrijft stap voor stap
Nadere informatieOm de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.
1 Inleiding tot.net Software werd en wordt meestal geschreven in C of C++. De broncode van een C/C++ programma wordt dan gecompileerd naar machine code, die eventueel nog gelinkt wordt met machine code
Nadere informatie9 Meer over datatypen
9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,
Nadere informatieRecursion. 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 informatieTentamen 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 informatieUniversiteit 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 informatiesoftware constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies
software constructie recursieve datastructuren college 15 software engineering highlights 1 de software bestaat uiteindelijk uit datatypen functies verbindingen geven gebruik aan main is de top van het
Nadere informatieRCL Arduino Workshop 1
RCL Arduino Workshop 1 Leren door doen april 2015 - slides voor RCL Arduino workshop 1 ON4CDU & ON8VQ Workshop Leren door doen Werken in een groep Beperkte tijd Alleen essentiele vragen stellen Thuis oefenen
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord en Leonie Bosveld December 19, 2016 Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11 Boolean variabelen: niet checken met == Fout: if clicked == True
Nadere informatie4EE11 Project Programmeren voor W. College 4, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e
4EE11 Project Programmeren voor W College 4, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Controleren (verificatie) van software - Pair programming - Code review
Nadere informatieBEGINNER 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 informatiehttp://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 informatieExamen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2010-2011 21 juni 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief
Nadere informatieCollege Notatie, Recursie, Lijsten
College 2016-2017 2. Notatie, Recursie, Lijsten Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 20 mei 2008 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen
Nadere informatieNoties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst
s Informatica Hoofdstuk 1 Object Klasse Methode Parameters Type Velden Toestand Compiler Resultaten (returnwaarde) In java fungeren objecten als een model voor de elementen waarin een probleem kan worden
Nadere informatieTesten van Java code met JML
Testen van Java code met JML Engelbert Hubbers Martijn Oostdijk Erik Poll University of Nijmegen Testen met JML p.1/23 Overzicht De specificatietaal JML voor Java Wat voorbeelden van JML specificaties
Nadere informatieExamen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad
Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar 2006-2007 23 Januari, 2007 **BELANGRIJK** : Schrijf je naam onderaan dit blad Leg volgende 3 begrippen kort en bondig uit : a. Concurrent
Nadere informatieModelleren en Programmeren: Prolog
Modelleren en Programmeren: Prolog Marijn Schraagen 13 januari 2016 Herhaling basiselementen Lijsten Trace Ingebouwde lijstpredicaten Feiten en regels aanpassen Herhaling basiselementen Feiten en regels
Nadere informatieVisual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
Nadere informatieUitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur
Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)
Nadere informatieOpdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is
Opdrachten herhalen public void tekenscherm (object o, PEA pea) { int x; x = 1; while ( x
Nadere informatieCompilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291, webpagina:
Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. (040 247)4291, e-mail: G.Zwaan@tue.nl webpagina: http://www.win.tue.nl/~wsinswan/compilers/ compileren compilatie vertalen (een werk) bijeenbrengen door
Nadere informatie6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica
Samenvatting door een scholier 1809 woorden 28 oktober 2005 6,1 16 keer beoordeeld Vak Methode Informatica Turing informatica samenvatting. hst3: algoritme:een beschrijving van stappen die gedaan moeten
Nadere informatieOEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Nadere informatieStacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49
Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen
Nadere informatiePYTHON REEKS 1: BASICS. Mathias Polfliet
PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte
Nadere informatieUitwerkingen. Python Assessment
Uitwerkingen Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Uitwer king 1: Elementairedatatypes 1.a Een string bevat tekst in de vorm van Unicode characters, terwijl
Nadere informatieProgrammeertechnieken Week 7
Programmeertechnieken Week 7 Tim Cocx, Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/pt2017/ "Confidence in Code" "Ons programma / onze module is af, maar hoe weten we nu of alles werkt?"
Nadere informatie