colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser
|
|
- Christiana van der Linden
- 7 jaren geleden
- Aantal bezoeken:
Transcriptie
1 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 van vorig college onderwerpen van dit college interpreteren waarde van expressie berekenen voor gegeven x en y transformeren de expressies zelf veranderen 1 2 prioriteit in recursive descent parser prioriteit van operatoren versleutel de prioriteit in de syntax b.v.: expr = term + expr term term = fact * term fact fact = var int ( expr ) var ( args ) args = ε arg2 arg2 = expr expr, arg2 kun je hier met look ahead 1 steeds de juiste keuze maken? gaat dit ook goed als je operator toevoegt? los dit op in de regels van de grammatica i.p.v. E -> E * E E + E ( E ) num schrijven we E -> E + T T T -> T * F F F -> ( E ) num helaas is dit weer linksrecursief, maar we weten hoe we dit moeten aanpakken let ook op bindingsrichting = ( 3 2 ) 1 = 0 maar 3 ( 2 1 ) = 3 1 = 2 voor sommige operatoren is dit geen probleem 4 1
2 parser voor factor Knoop* parsef () E -> E + T T T -> T * F F Knoop* n = scanner. token (); F -> num switch ( n -> id ) case Int: scanner. volgendetoken (); return n; case Einde: return n; default: Error ( "parse error: integer, of einde verwacht" ); return n; 5 parser voor term Knoop* parset ( ) Knoop* f = parsef ( ); Knoop* o = scanner.token ( ); switch ( o -> id ) case Op: if ( o -> soort[0] == '*') o -> child ( 0 ) = f; scanner. volgendetoken (); o -> child ( 1 ) = parset ( ); return o; else return f; case Einde: return f; default: Error ( "parse error: * of einde verwacht" ); return f; E -> E + T T T -> T * F F F -> num E -> T (+ E)? T -> F (* T)? F -> num hoewel het een operator is, kunnen we o->op niet gebruiken 6 parser voor expressie Knoop* parsee ( ) Knoop* t = parset ( ); Knoop* o = scanner.token ( ); switch ( o -> id ) case Op: if ( o -> soort[0] == '+' ) o -> child ( 0 ) = t; scanner. volgendetoken ( ); o -> child ( 1 ) = parsee ( ); return o; else return t; case Einde: return t; default: Error ( "parse error: + of einde verwacht" ); return t; E -> E + T T T -> T * F F F -> num E -> T (+ E)? T -> F (* T)? F -> num 7 statische tests je kunt niet alles met een parser voor een CFG controleren wat kun je nog meer controleren? hele input gelezen operatoren zijn bekend variabelen zijn bekend functies zijn bekend operatoren hebben juiste aantal argumenten functies hebben juiste aantal argumenten types? 8 2
3 syntax sequents ϕ 1 ϕ n o ψ 1 ψ m met ϕ i en ψ j logische formules bedenk een handig symbool voor o, dat niet botst met namen van variabelen en operatoren ϕ, ψ = p, p, p q, p q, p q, p q, (p) ook hier hoort volgens de standaard interpretatie een prioriteit bij operatoren bindt sterker dan en : p q = ( p) q sterker dan : p q r = (p q) r (volg de standaard logica regels) het is handig als variabelen namen langer dan 1 letter mogen zijn twee aanpakken 1: interpretatie expressies evalueren we beperken ons tot interpretatie pak direct de syntax boom en bepaal waarde expressies relatief eenvoudig, maar niet erg efficient geen aparte compilatie nodig 2: vertalen (compileren) genereer code die waarde expressie bepaalt ingewikkelder, maar circa 10 keer sneller dan interpretatie er bestaan ook mengvormen b.v. Java byte-code of.net genereer hoog niveau code (platform onafhankelijk) interpreteer die code 9 10 interpretatie basis: denotationele semantiek geeft betekenis aan expressies ingrediënten: syntax operatie pattern-match op syntax Scott brackets: geeft match op syntax aan E [[ a 1 + a 2 ]] = E [[ a 1 ]] + E [[ a 2 ]] E [[ a 1 * a 2 ]] = E [[ a 1 ]] * E [[ a 2 ]] E [[ n ]] = n voor getallen functie die binding van variabelen kent state :: Var -> Int we nemen altijd aan dat het een juiste boom is: bindingen kloppen 11 binding van variabelen wiskundig: state is functie van variabelen naar waarde state :: Var -> Int b.v. s = x 1, y 2 dan s x = 1 en s y = 2 mooi voor semantische regeltjes lastig te maken in C++ maak een datastructuur voeg wat functies toe 12 3
4 syntax n numeral x variable a expression a = n x a 1 + a 2 a 1 * a 2 semantiek basis semantiek A [[ a 1 + a 2 ]] s = A [[ a 1 ]] s + A [[ a 2 ]] s A [[ a 1 * a 2 ]] s = A [[ a 1 ]] s * A [[ a 2 ]] s A [[ n ]] s = n A [[ x ]] s = s x voorbeeld met s = x 1, y 2 A [[ x + 3 ]] s = A [[ x ]] s + A [[ 3 ]] s = s x + 3 = getal = 4 syntax context geeft verschil aan 13 syntax booleans b = True False a 1 == a 2 a 1 < a 2 b 1 /\ b 2 semantiek B [[ True ]] s B [[ False ]] s B [[ a 1 == a 2 ]] s B [[ a 1 < a 2 ]] s B [[ b 1 /\ b 2 ]] s syntax = true echte vergelijking = false syntax = A [[ a 1 ]] s == A [[ a 2 ]] s = A [[ a 1 ]] s < A [[ a 2 ]] s = if ( B [[ b 1 ]] s ) B [[ b 2 ]] s else false voorbeeld met s = x 1, y 2 logische waarde luiheid zit hier ingebakken B [[ x + 3 < y ]] s = A [[ x + 3 ]] s < A [[ y ]] s = A [[ x ]] s + A [[ 3 ]] s < s y = s x + 3 < 2 = < 2 = 4 < 2 = false 14 expressies we hebben dus 2 semantische functies A [[ a ]] s levert een getal B [[ b ]] s levert een logische waarde hoe implementeren we dat? twee aparte evaluatie functies één functie met getypeerd resultaat gebruik de C-truc: 0 false, 1 true alle methoden hebben voor- en nadelen kies wat in gegeven situatie het beste past implementatie context in moderne talen kan dat direct in C++ is het handiger A [[ x ]] s = s x te vervangen door A [[ x ]] s = lookup x s ook het binden van een variabele doen we met een functie
5 context in C++ maak een lijst van bindingen class ENV public: char * naam; int val; ENV * next; met deze expressies geen update nodig ENV ( char s [], int n, ENV* p = NULL ) : val ( n ), next ( p ) naam = new char [ strlen ( s )+1 ]; strcpy ( naam, s ); ; context in C++ 2 int lookup ( ENV* env, char s [] ) had de checker if ( env == NULL ) moeten zien Error ( "Naam niet gevonden" ); else if ( strcmp ( s, env->naam ) == 0 ) return env -> val; else return lookup ( env -> next, s ); ENV*& bind ( char s [], int n, ENV* e ) return e = new ENV ( s, n, e ); implementatie A [[ a ]] s minstens 3 mogelijkheden: overloaded functies functie die gevalsonderscheid doet methode eval bij knopen we zullen de mogelijkheden verder bekijken 19 A [[ a ]] s met overloaded functie int eval ( Getal * g ) return g->waarde ( ); int eval ( Operator *o ) int x = eval ( o -> child ( 0 )); int y = eval ( o -> child ( 1 )); switch ( o->op ) case '+': return x+y; case '*': return x*y; compiler wil hier statisch de juiste kiezen, maar dat kan niet dynamic binding bij methoden had de parser moeten zien default: Error ( "Onbekende operator in eval" ); 20 5
6 A [[ a ]] s met gevalsonderscheid int eval ( Knoop *k ) switch ( k -> id ) case Num: return k -> waarde ( ); case Op: switch ( k -> op ) case '+': int x = eval ( k -> child ( 0 )); int y = eval ( k -> child ( 1 )); return x+y; case '*': compiler ziet niet dat dit goed gaat, mag dus niet default: Error ( "Onbekende operator in eval" ); 21 A [[ a ]] s met gevalsonderscheid 2 int eval ( Knoop *k ) switch ( k -> id ) case Op: Operator * o = static_cast <Operator*> ( k ); switch ( o -> op ) case '+': int x = eval ( o -> child ( 0 )); int y = eval ( o -> child ( 1 )); return x+y; case '*': expliciete type conversie nu kan dit wel je kunt alles naar alles casten, foutgevoelig default: Error ( "Onbekende operator in eval" ); 22 class Knoop protected: Knoop** children; int stap; char * soort; public: KnoopType id; int arity; A [[ a ]] s met methode eval alleen als er variabelen zijn Knoop (.) : arity ( a ), stap ( 3 ), id ( kt ) virtual int eval ( ENV* e ) Error ( "Kan de basisklasse Knoop niet evalueren" ); ; nieuwe methode eval getal class Getal : public Knoop int w; public: Getal ( int n ) : w ( n ), Knoop ( "Getal", Int, 0 ) int waarde ( ) return w; int eval ( ENV* e ) return w; ; nieuwe methode
7 int Var :: eval ( ENV* e ) if ( arity==0 ) return lookup ( e, name ); else Error ( ) ; pas op: eval variabele met argumenten is het een functie had de checker moeten zien eigenlijk moet je verschil maken tussen x + 1 x () + 1 functies en variabelen kunnen eigenlijk dus niet zo maar in zelfde klasse eval operator int Operator :: eval ( ENV* e ) int x = child ( 0 ) -> eval ( e ); int y = child ( 1 ) -> eval ( e ); switch ( op ) case '+': return x+y; case '*': return x*y; default: Error ( "Onbekende operator in eval" ); had de checker moeten zien syntax keuze n numeral x variable a expression a = n x a 1 + a 2 a 1 * a 2 if b then a 1 else a 2 semantiek A [[ a 1 + a 2 ]] s = A [[ a 1 ]] s + A [[ a 2 ]] s A [[ a 1 * a 2 ]] s = A [[ a 1 ]] s * A [[ a 2 ]] s A [[ n ]] s = n A [[ x ]] s = s x A [[ if b then a 1 else a 2 ]] s = if ( B [[ b ]] s ) A [[ a 1 ]] s A [[ a 2 ]] s zorg dat A 1 of A 2 wordt geëvalueerd moet het zo? door het aannemen van een bovengrens voor aantal variabelen wordt de implementatie iets eenvoudiger rij i.p.v. lijst lijsten mogen echter geen probleem meer zijn
8 moet het echt zo? transformaties kunnen we niet zonder environment? idee: vervang alle variabelen door waarde in boom uitrekenen kan zonder environment nadelen je moet ook kopie van expressie maken voor substitutie heb je toch een environment nodig werkt zo iets ook bij functies? ook hier bedenken we eerst wat we willen bijvoorbeeld optimalisatie: T [[ 0 + x ]] = T [[ x ]] T [[ x + 0 ]] = T [[ x ]] T [[ 0 * x ]] = T [[ 0 ]] T [[ x * 0 ]] = T [[ 0 ]] T [[ 1 * x ]] = T [[ x ]] T [[ x * 1 ]] = T [[ x ]] T [[ n * m ]] = n * m T [[ n + m ]] = n + m simpele wiskunde regeltjes wat als die recursief zijn? 29 geen environment nodig 30 implementatie mogelijkheden nieuwe methoden Knoop overloaded functie kan niet, want je kunt niet statisch de juiste kiezen gevalsonderscheid daarvoor heeft Knoop een enum KnoopType Int, Op,.. ; er zijn dan type_casts nodig, niet leuk nieuwe methode toevoegen dynamic binding gebruiken vaak de mooiste oplossing we hoeven alleen te weten of een Knoop een getal is, indien dat zo is willen we ook de waarde 31 class Knoop.. public: virtual bool waarde ( int& v) return false; virtual void opti ( Knoop *& root ); ; waarom die? T [[ 0 + x ]] = T [[ x ]] T [[ x + 0 ]] = T [[ x ]] T [[ 0 * x ]] = T [[ 0 ]] T [[ x * 0 ]] = T [[ 0 ]] T [[ 1 * x ]] = T [[ x ]] T [[ x * 1 ]] = T [[ x ]] T [[ n * m ]] = n * m T [[ n + m ]] = n + m 32 8
9 waarde voor getallen class Getal : public Knoop int w; public: bool waarde ( int & v ) v = w; return true; ; voor alle andere knopen voldoet de default dit moet bottum-up: optimalisatie knopen void Knoop :: opti (Knoop *& root) for ( int i=0; i<arity; i+=1 ) child ( i ) -> opti ( child ( i )); maf, maar nodig als er voor deze knoop niets speciaals te doen is, optimaliseer dan in ieder geval de kinderen optimalisatie operatoren void Operator :: opti ( Knoop *& root ) for ( int i=0; i<arity; i+=1 ) child ( i ) -> opti ( child ( i )); int x, y; if ( child ( 0 ) -> waarde ( x )) if ( child ( 1 ) -> waarde ( y )) switch (op).. case '+': root = new Getal ( x + y ); return; case '*': root = new Getal ( x * y ); return; default: return; root nodig eigenlijk delete nodig bottum up 2 getallen, reken uit T [[ 0 + x ]] = T [[ x ]] T [[ x + 0 ]] = T [[ x ]] T [[ 0 * x ]] = T [[ 0 ]] T [[ x * 0 ]] = T [[ 0 ]] T [[ 1 * x ]] = T [[ x ]] T [[ x * 1 ]] = T [[ x ]] T [[ n * m ]] = n * m T [[ n + m ]] = n + m 35 optimalisatie operatoren 2 else // x is getal, y niet switch ( op ) case '+': if ( x == 0 ) root = child ( 1 ); return; case '*': switch ( x ) case 0: root = new Getal ( 0 ); return; case 1: root = child ( 1 ); return; default: return; default: return;.. 1 * x 0 + x 0 * x T [[ 0 + x ]] = T [[ x ]] T [[ x + 0 ]] = T [[ x ]] T [[ 0 * x ]] = T [[ 0 ]] T [[ x * 0 ]] = T [[ 0 ]] T [[ 1 * x ]] = T [[ x ]] T [[ x * 1 ]] = T [[ x ]] T [[ n * m ]] = n * m T [[ n + m ]] = n + m 36 9
10 voorbeeld optimalisatie resultaat optimalisatie int main ( ) invoer = new stringinvoer ( "1*x*1 + 3* ( 0*tmp + 4 )" ); scanner. volgendetoken ( ); Knoop* k = parsee ( ); k -> drukaf ( ); k -> opti ( k ); cout << "---- optimized ----\n"; k -> drukaf ( ); system("pause"); return EXIT_SUCCESS; 37 1*x*1 + 3* ( 0*tmp + 4 ) tmp * 0 * * x * optimized x vindt dit alles? T [[ 0 + x ]] = T [[ x ]] T [[ x + 0 ]] = T [[ x ]] T [[ 0 * x ]] = T [[ 0 ]] T [[ x * 0 ]] = T [[ 0 ]] T [[ 1 * x ]] = T [[ x ]] T [[ x * 1 ]] = T [[ x ]] T [[ n * m ]] = n * m T [[ n + m ]] = n + m 38 gevalsonderscheid subtypen het helpt om een attribuut in de klasse te stoppen dat het (sub)type aangeeft om hier echt gebruik van te maken heb je vaak een type_cast nodig, niet zo mooi dus overloaded functies werken meestal niet goed te gebruiken regel wordt statisch bepaald een extra methode is meestal de beste oplossing maak de methode virtual geef nieuwe implementatie als er iets speciaals moet gebeuren in die subklasse zou ook het probleem met operator namen beter oplossen dan soort[0] semantiek algemeen assignments: pas waarde van variabele in environment aan evaluatie levert dus waarde + nieuwe environment C++ is lastig omdat environment kan veranderen tijdens evaluatie globale objecten: zitten ook in de environment moeten er weer uitgehaald worden als de scope stopt andere vormen van semantiek: behalve deze denotationele semantiek zijn er nog vele anderen: operational, natural, axiomatic, maken redeneren over programma's mogelijk
11 herschrijven voor sequents gebruik de gegeven regeltjes regeltjes veranderen expressie i.t.t. de interpretatie van numerieke expressies besluit of je de afleidingsboom wil bouwen of niet je kunt strategie kiezen eerst een kant alles herschrijven probeer regels in de gegeven volgorde bedenk iets slims onthouden waar je bent pointer bewerkte deel bevat alleen variabelen, die kun je ook speciaal bewaren weet waar je aan begint kopieren van expressies zelfs als je geen boom bouwt moet je sequents kopieren b.v. Φ ο α β, Ψ R : Φ ο α, Ψ Φ ο β, Ψ maak een goede copy operator vergeet niet te veranderen wat nodig is bedenk hoe je de te evalueren sequents beheert bedenk hoe je resultaten combineert denotationele semantiek sequents ook hier kun je semantiekregeltjes opstellen geven transformaties + strategie gebruik verzameling variabelen als environment strategie: b.v. maak eerst linkerkant leeg door volgorde van semantische regels S [[ ϕ, Φ ο Ψ ]] e = S [[ Φ ο ϕ, Ψ ]] e S [[ α β, Φ ο Ψ ]] e = S [[ α, Φ ο Ψ ]] e S [[ β, Φ ο Ψ ]] e S [[ v, Φ ο Ψ ]] e = S [[ Φ ο Ψ ]] ( e v ) S [[ ο ϕ, Ψ ]] e = S [[ ϕ ο Ψ ]] e S [[ ο α β, Ψ ]] e = S [[ ο α, Ψ ]] e S [[ ο β, Ψ ]] e S [[ ο v, Ψ ]] e = Closed, if v e 43 terminatie van het herschrijven we hoeven niet altijd het hele tableau uit te werken bij zelfde variabele links en rechts is sequent gesloten bij één tegenvoorbeeld is de bewering al ongeldig bewering is gesloten als alle sequents gesloten zijn 44 11
12 correctheid wanneer is je implementatie correct? als hij voor alle mogelijke sequents het goede antwoord geeft hoe kun je dat nagaan? kijk naar de code voor alle regeltjes test de juiste implementatie met minstens 1 voorbeeld test open en gesloten tableaus gebruik b.v. unittest voor het uitvoeren van deze tests volgende week toets over lijsten en bomen telt als 2 practicumopgaven gesloten boek pen en papier individueel opgave mag een week later ingeleverd worden Sjaak Smetsers geeft college wat hebben we gedaan interpreteren basis is semantiek + goede parse tree nauwelijks of niet in boek en dictaat veel literatuur over imperatief: heel T3 gaat over semantiek in vertalerbouw maak je een programma dat code genereert die expressies evalueert 47 12
templates: het probleem recursieve datastructuren college 10 gebruik template wat zouden we willen templates exceptions type-parameters!
templates: het probleem recursieve datastructuren college 10 templates exceptions typedef... El; class Knoop El head; Knoop* tail; ; void swap ( El& x, El& y ) const EL t = x; x = y; y = t; er is maar
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 informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde
Nadere informatieOvererving & Polymorfisme
Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit
Nadere informatiecompileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken
compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken - belangrijkste punten: - ontleden van de programmatekst - bijhouden van de datastructuren Data Structuren en Algoritmen
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 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 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 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 informatiePracticumopgave 3: SAT-solver
Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel
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 informatieHet omzetten van reguliere expressies naar eindige automaten, zie de vakken Fundamentele Informatica 1 en 2.
Datastructuren 2016 Programmeeropdracht 3: Patroonherkenning Deadlines. Woensdag 23 november 23:59, resp. vrijdag 9 december 23:59. Inleiding. Deze opdracht is gebaseerd op Hoofdstuk 13.1.7 in het boek
Nadere informatieSemantiek (2IT40) Bas Luttik. HG 7.14 tel.: Hoorcollege 8 (7 juni 2007)
Bas Luttik s.p.luttik@tue.nl http://www.win.tue.nl/~luttik HG 7.14 tel.: 040 247 5152 Hoorcollege 8 (7 juni 2007) Functionele talen Idee: een programma definieert reeks (wiskundige) functies. Programma
Nadere informatieEen topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:
Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de
Nadere informatieLogica voor Informatici najaar 2000 Opgaven en Oplossingen Hoofdstuk 3
Logica voor Informatici najaar 2000 Opgaven en Oplossingen Hoofdstuk 3 3.1 Stel ϕ, ψ α, β γ, en ψ, α, γ χ. Indien nu bovendien bekend wordt dat χ onwaar is, maar ψ en β waar, wat weet u dan over ϕ? oplossing:
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 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: stapels, rijen en binaire bomen
Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)
Nadere 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 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 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 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 informatieDatastructuren college 10
we hadden Backtracking verbetering i i Datastructuren college 0 0: : : 0: : : P r r r r r b r b r P r r r b r b r backtracking we hoeven vaak de kandidaat niet helemaal af te maken om hem te kunnen verwerpen
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 informatieTentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld
Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek
Nadere 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 informatieObjectgericht programmeren 1.
Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie
Nadere informatiestart -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c
Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer
Nadere informatieProgrammeermethoden. Recursie. week 11: november kosterswa/pm/
Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,
Nadere informatieEen 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 informatieUitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur
Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf
Nadere informatieTentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere 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 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 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 informatieAanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur
Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten
Nadere informatieRecursive-Descent Parsing
Week 2 Recursive-Descent Parsing PRACTICUM Tijdens dit practicum wordt een eenvoudige one-pass recursive-descent vertaler ontwikkeld in Java. We volgen daarbij hoofdstuk 4 van Watt & Brown. De te ontwikkelen
Nadere informatieLogica voor Informatica
Logica voor Informatica 10 Predikatenlogica Wouter Swierstra University of Utrecht 1 Vorige keer Syntax van predikatenlogica Alfabet Termen Welgevormde formulas (wff) 2 Alfabet van de predikatenlogica
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 informatieDatastructuren: 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:
Nadere informatieLet op dat de scoping regels gerespecteerd blijven; het volgende voorbeeld mag geen fout melden.
Vrije Universiteit Brussel Faculteit Wetenschappen Vakgroep Computerwetenschappen Academiejaar 2009 2010: tweede examenzittijd Interpretatie van Computerprogrammaʼs I schriftelijke test Voorafgaandelijk:
Nadere informatieProgrammeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/
Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun
Nadere 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 informatieVariabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
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 informatieKwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();
Kwis (3) class X { public void a() { System.out.println("x"); class Y extends X { public void a() { System.out.println("y"); class Z extends Y { public void a() { System.out.println("z"); public static
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan
Nadere 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 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 informatieDatastructuren Programmeeropdracht 2: Expressies. 1 Expressies. Deadlines. Woensdag 12 oktober 23:59, resp. woensdag 2 november 23:59.
Datastructuren 2016 Programmeeropdracht 2: Expressies Deadlines. Woensdag 12 oktober 23:59, resp. woensdag 2 november 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek
Nadere informatieAlgoritmen en Datastructuren 1. Functies
Algoritmen en Datastructuren 1 Functies Rad van Fortuin score = 0 huidigespeler++ draai rad bankroet verlies beurt joker huidigespeler++ jokers++ rad else score += bedrag * k rad/klinker toon gok medeklinker
Nadere informatieVerzamelingen, Lijsten, Functioneel Programmeren
Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen
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 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 informatierecursie 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 informatievoegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is
PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt
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 informatieProgrammeren met Arduino-software
Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en
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 informatieDe Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop
DLF Pointerworkshop Opgaven 2 maart 2016 XKCD # 371 In dit document staan een aantal oude tentamenopgaven om te oefenen voor het hertentamen PR Bij de selectie is rekening gehouden met de opgaven die het
Nadere informatieTweede 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)
Nadere informatieALGORITMIEK: 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
Nadere informatieSucces! Theo DʼHondt 13 juni 2010
Vrije Universiteit Brussel Faculteit Wetenschappen Vakgroep Computerwetenschappen Academiejaar 2009 2010: eerste examenzittijd Interpretatie van Computerprogrammaʼs I schriftelijke test Voorafgaandelijk:
Nadere informatieTentamen Kunstmatige Intelligentie (INFOB2KI)
Tentamen Kunstmatige Intelligentie (INFOB2KI) 30 januari 2014 10:30-12:30 Vooraf Mobiele telefoons dienen uitgeschakeld te zijn. Het tentamen bestaat uit 7 opgaven; in totaal kunnen er 100 punten behaald
Nadere informatieProgrammeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/
Programmeermethoden Functies vervolg Walter Kosters week 5: 1 5 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Files manipuleren 1 Deze void-functie telt niet-lege regels in een file invoer: void
Nadere informatieLab Webdesign: Javascript 3 maart 2008
H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen
Nadere 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 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 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 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 1 20 januari 2012 Prof. T. Schrijvers
Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet
Nadere 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 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 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 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 informatieREEKS I. Zaterdag 6 november 2010, 9u
TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS I Zaterdag 6 november 2010, 9u NAAM :... VRAAG 1: MINSTENS [5 PUNTEN] Schrijf een methode minstens(), met twee
Nadere informatieJava Programma structuur
Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,
Nadere informatieTentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u
Tentamen Compilers (2IC25) 21 juni 2010, 9.00u-12.00u 1. Beschouw de reguliere expressie e = (a (a b) ) c (Er mag geen materiaal worden geraadpleegd.) (De TL-interpretator is als bijlage toegevoegd.) Faculteit
Nadere informatieALGORITMIEK: 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
Nadere informatieALGORITMIEK: 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
Nadere informatieBeginselen van programmeren Practicum 1 (Doolhof) : Oplossing
Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Introductie In dit document geven we een mogelijke oplossing voor het eerste practicum. Deze oplossing gebruikt verschillende klassen en overerving,
Nadere informatie17 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 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 informatieTentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u
12/k Tentamen Compilers (2M220) 19 maart 2002, 9.00u-12.00u 1. Beschouw de volgende deelverzameling van de ASCII-karakters V = { 0, 1,..., 9, A, B,..., Y, Z, a, b,..., y, z } De karakters in V staan vermeld
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 informatieProgrammeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/
Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,
Nadere 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 informatieElementary Data Structures 3
Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer
Nadere 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 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 informatieProgrammeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def
Nadere informatieReguliere talen: overzicht
Reguliere talen!!reguliere grammatica: versimpelde Contextvrije grammatica!!finite-state Automaton: andere manier om een taal te beschrijven!!reguliere Expressie nog een andere manier Alle drie kunnen
Nadere informatieoefening JavaScript - antwoorden
oefening JavaScript - antwoorden De antwoorden op deze opgaven zijn meestal wat aan de brede kant voor een Word document. Het is daarom handig om ze in Notepad++ te kopiëren en ze dan te bekijken. opgave
Nadere informatieInhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109
Inhoud leereenheid 4 Inleiding JavaScript Introductie 99 Leerkern 100 1 Leren programmeren in JavaScript 100 2 Chapter 1: Introduction 101 3 Chapter 2, paragrafen 1 t/m 5 102 4 Chapter 2, paragrafen 6
Nadere informatieINFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN
INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN voorbeeldexamen NAAM :... OPMERKINGEN VOORAF Je krijgt 3 uur de tijd om de opdrachten voor dit examen uit te voeren. Verder werken aan je oplossing
Nadere informatieIngebouwde klassen & methodes
Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private
Nadere 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 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 informatieTentamen Imperatief Programmeren
Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven
Nadere 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 informatie