start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Maat: px
Weergave met pagina beginnen:

Download "start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c"

Transcriptie

1 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 gedaan kan worden, ook met een Turing machine uitgevoerd kan worden. Het omzetten van het algoritme naar een Turing machine is hierbij meestal geen eenvoudige zaak. In het algemeen is het oorspronkelijke algoritme ook niet meer te herkennen na de transformatie. Een Turing machine is weliswaar een abstracte computer maar kan in principe ook gebouwd worden en is daarom ook als een implementatie van het algoritme te beschouwen. Bedenk hierbij wel dat je voor ieder algoritme een aparte Turing machine moet bouwen. In dit hoofdstuk zullen we een heel andere benadering hanteren we het programmeerformalisme als uitgangspunt ipv een (abstracte) machine die het algoritme uitvoert. Het streven is om met een minimum aan formalisme een maximum aan expressie kracht te krijgen. Het verrassende is dat er een formalisme mogelijk is dat maar op 1 regel is gebaseerd. Het formalisme dat we hanteren is gebaseerd op de Lambda Caluclus. De Lambda Calculus werd in de jaren 30 van de vorige eeuw door Alonzo Church ontwikkeld als een alternatief fundament voor de wiskunde (i.p.v. logica). Al snel bleek dat de Lambda Calculus ook zeer geschikt is om algoritmen mee te beschrijven. Alan Turing bewees dat de Lambda Calculus dezelfde klasse van algoritmen kan beschrijven als zijn Turing machines. De Lambda Calculus is nogal abstract en lastig te leren. Daarom gebruiken wij hier een wat meer toegankelijke versie die meer op een gewone programmeertaal lijkt. Definitie van een minimale programmeertaal Een programma in onze programmeertaal bestaat uit een aantal functies met een start functie. Een functie is een voorschrift waarmee het ene patroon door een ander kan worden vervangen. Hier een aantal voorbeelden: f a b = b a g x y = f x y id x = x k x y = x c x y z = x (y z) s f g x = f x (g x) app f x = f x start = id (k (f c s) (g s c)) Een functie bestaat uit een naam gevolgd door een aantal variabele namen (0 of meer), gevolgd door = gevolgd door een functie body. In de functie body mogen alleen namen van variabelen en namen van andere functies uit ons programma en haakjes om te groeperen verschijnen. Een functie body is altijd een functie applicatie (het toepassen van een functie op een aantal argumenten). Hierbij mag de functie die wordt toegepast ook een variabele zijn. De argumenten mogen functies, variabelen of andere functie toepassingen zijn. Bv. in de functie f wordt in de body a toegepast op b. In de functie c wordt x toegepast op de toepassing van y op z. Het runnen van een programma bestaat nu uit, beginnende met de start functie, alle functie applicaties uit te voeren tot dit niet meer verder kan. Het uitvoeren van een functie applicatie bestaat uit het vervangen van een functie aanroep door de rechterkant van de bijbehorende functie waarbij op de plaats van de variabelen de actuele argumenten worden ingevuld. In ons voorbeeld wordt dit: start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c De laatste functie applicatie kan niet meer herschreven worden omdat s 3 argumenten verwacht en er maar 1 krijgt. De afspraak is dan dat we niet verder herschrijven. Er zijn verschillende vragen te stellen. 1. Maakt het uit in welke volgorde je functie herschrijvingen uitvoert? 2. Eindigt het herschrijfproces altijd? 1

2 Bv. we hadden bij de tweede pijl ook kunnen kiezen om eerst het argument van id te herschrijven en daarna pas de id functie uit te voeren. Hetzelfde geldt voor de derde pijl. Hier hadden we eerst de argumenten van k kunnen herschrijven en daarna k toe te passen. In dit geval leidt dit tot extra werk omdat het tweede argument van k wordt weggegooid. Probeer zelf in het bovenstaande voorbeeld verschillende volgorden uit. Het zal blijken dat dit voor het eindresultaat niets uit maakt. Het is gemakkelijk voorbeelden te geven programma s die niet eindigen. f x = f (f x) id x = x start = f id Het herschrijf proces wordt nu: start = f id -> f (f id) -> f (f (f id)) ->... In dit geval eindigt de herschrijving niet. Voor het herschrijven zullen we de strategie hanteren dat we steeds de buitenste functie aanroep proberen te herschrijven tot dit niet meer verder gaat en dat we daarna de argumenten van de overgebleven functie van links naar rechts gaan herschrijven (waarbij we weer dezelfde regel hanteren). Deze herschrijfstrategie heet left-outer-most reductie. Er geldt nu de volgende stelling: Stelling (Church-Rosser) Als er een voor een programma een eindigende herschrijfstrategie bestaat, dan zal left-outer-most reductie ook eindigen en bovendien zal het resultaat hetzelfde zijn. Het bewijs van deze stelling is zeer technisch en zullen we daarom achterwege laten. Intuïtief is het resultaat wel te snappen omdat de buitenste functie applicatie nooit kan wegvallen en daarom op zeker moment altijd uitgevoerd moet worden. Het moment van herschrijven van de buitenste functie applicatie kan daarom het al of niet eindigen van het programma niet veranderen. De antwoorden op bovenstaande vragen zijn dus: 1. De volgorde maakt alleen uit als de ene volgorde eindigt en de andere niet. Alle eindigende herschrijf strategieën leiden tot hetzelfde resultaat. 2. Nee. Hiermee hebben we het basis formalisme gedefinieerd. Het lijkt op het eerste gezicht een weinig bruikbaar formalisme. Er zitten bv geen getallen en bewerkingen op getallen in het formalisme. Deze zullen we zelf moeten definiëren. De enige regel die we hebben is het vervangen van linkerkanten door rechterkanten. In deze zin is het formalisme erg minimaal. Alvorens verder te gaan maken een kleine uitbreiding op het formalisme, n.m.l. anonieme functies. Deze vereenvoudigen de notatie in veel gevallen maar veranderen de kracht van het formalisme niet. Een anonieme functie heeft de vorm \v1 v2 -> body en mag aan de rechter kant van functie definities verschijnen op iedere plek waar ook een functie aanroep mag staan. We geven een paar voorbeelden. h = (\x y -> x) c s f a b = app (\x -> c x a) b We kunnen een definitie met anonieme functies altijd vervangen door een aantal definities zonder anonieme functies. In het eerste voorbeeld kunnen we de anonieme functie vervangen door k. Het tweede voorbeeld kunnen we vervangen door twee functies: f a b = app (f a) b f a x = c x a 2

3 Men kan eenvoudig nagaan dat de nieuwe functies samen hetzelfde resultaat opleveren als de oorspronkelijke definitie met anonieme functie. Let er op dat in de aanroep van de nieuwe functie f a als extra argument zit. Getallen als functies Om te kunnen rekenen hebben we in ieder geval getallen en hun operaties (optellen, aftrekken, vermenigvuldigen, delen, etc.) nodig. Voor de definitie van getallen vallen we terug op de Peano axioma s. Peano was de eerste die een formele definitie van natuurlijke getallen gaf. Voor die tijd beschouwde men natuurlijke getallen als een (goddelijk) gegeven. Het principe van volledige inductie zoals dit in het dictaat discrete wiskunde wordt behandeld is gebaseerd op de Peano Axioma s. Het idee van Peano was de natuurlijke getallen onder te verdelen in twee klassen. De ene klasse bevat alleen het getal 0. Deze andere klasse bevat alle getallen die een opvolger van een natuurlijk zijn (alle andere getallen). We zullen 0 in het Peano formalisme zero noemen en de opvolger van het getal n aanduiden met suc n (successor n). Op deze wijze is 1: suc zero, 2: suc (suc zero), etc. We beginnen al functies in het bovenstaande formalisme te herkennen. Maar we zijn er nog niet. Laten we eerst naar de optel operatie van natuurlijke getallen kijken. We kunnen deze als volgt definiëren: add n zero = n add n (suc pm) = suc (add n pm) In woorden: Als we 0 bij n optellen is het resultaat n. Als we de opvolger van pm bij n willen optellen is het resultaat de opvolger van het resultaat van de som van n en pm. Omdat de laatste optelling eenvoudiger is dan de oorspronkelijke zal de recursie uiteindelijk eindigen als pm 0 is geworden. De definitie boven lijkt een aardige poging getallen en optelling in ons formalisme te definiëren, maar de definities hebben ook aan de linker kant een patroon (zero en suc m) en dit is niet toegestaan. Bovendien hebben we voor zero en suc nog geen definitie. We geven nu een definitie van zero, suc en add in bovenstaand formalisme en zullen m.b.v een aantal voorbeelden laten zien dat deze definities inderdaad tot de gewenste resultaten leiden. zero = \f g -> f suc n = \f g -> g n add n m = m n (\pm -> suc (add n pm)) We zien dat in de definities volop gebruik wordt gemaakt van anonieme functies. In zero en suc is dit niet echt nodig (we kunnen de definities vervangen door: zero f g = f en suc n f g = g n). add zouden we zonder anonieme functies naar 2 minder goed leesbare functies moeten transformeren. In add zien we dat we het argument m echt als functie gebruiken en toepassen op 2 argumenten. Bekijk nu het herschrijven van de expressie add (suc zero) (suc zero) add (suc zero) (suc zero) -> def add (suc zero)(suc zero)(\pm -> suc (add (suc zero) pm)) -> (f a) b == f a b suc zero(suc zero)(\pm -> suc (add (suc zero) pm)) -> def. suc (\pm -> suc (add (suc zero) pm)) zero -> toepassing suc (add (suc zero) zero)) -> def add suc (zero (suc zero) ((\pm -> suc(add (suc zero) pm))) -> def zero suc (suc zero) Dit lijkt misschien allemaal heel ingewikkeld, maar het komt precies op hetzelfde neer als de definitie van optellen die we boven hebben gegeven. We maken handig gebruik van het feit dat een getal nu een functie is die je kunt toepassen op twee argumenten. Als het getal 0 is selecteert dit het eerste argument. Als het getal de opvolger is van een ander, dan selecteert dit het tweede argument en past dit toe op de ander. Daarom moet het tweede argument van m in add ook een functie zijn. Je kunt de definitie ook lezen als: 3

4 add n m = n, if m == 0 en add n m = suc (add n pm), if m == suc pm. Opgave Definieer zelf vermenigvuldiging en uitgaande van optelling. Doe hetzelfde met machtsverheffen. Opgave Definieer de functie pred, die de voorganger van een getal geeft. Definieer hierbij de voorganger van 0 als 0. Gebruik deze definitie om aftrekken (sub) te definiëren. Probeer ook een rechtstreekse definitie van sub te geven. Opgave Definieer de faculteit functie gebruikmakend van bovenstaande definitie van getallen. We zien dat het formalisme krachtig genoeg is om natuurlijke getallen en de operaties daarop te definiëren. In het voorafgaande hebben we de functionele programmeertaal Amanda gebruikt. Programma s in Amanda kunnen op een recht-toe-recht-aan manier naar dit formalisme geconverteerd worden. We hebben al gezien hoe we natuurlijke getallen representeren. We kijken nu naar de definitie van lijsten. In Amanda heeft een lijst de vorm: [] of (x:xs). We definiëren nu voor [] de functie Nil en voor (x:xs) de functie Cons. Nil = \f g -> f Cons x xs = \f g -> g x xs We kunnen nu b.v de functie length als volgt definieren: length xs = xs zero (\x xs -> suc (length xs)) Andere data typen kunnen op analoge wijze geconverteerd worden. Opgave Geef zelf een implementatie van binaire bomen en de functie depth. Opgave Bedenk een representatie voor True, False en de if constructie. Amanda beschikt over een aantal syntactische constructies zoals lijstcomprehensies en pattern matching. Ook deze constructies zijn om te werken naar constructies binnen het minimale formalisme. Turing Machines en het minimale formalisme We hebben al gezien dat het eenvoudig is om een Turing machine in Amanda (en daarom ook in het minimale formalisme) te implementeren. Het omgekeerde is veel lastiger. Het minimale formalisme is weliswaar eenvoudig maar lastig m.b.v een Turing machine uit te drukken omdat we in feite de herschrijfregel (links door rechts vervangen) moeten uitdrukken. Omdat de herschrijfregels willekeurig kunnen zijn is dit lastig. We zullen daarom een programma niet rechtstreeks op een Turing machine afbeelden, maar via een tussenstap. De tussenstap is een vertaling van een programma naar een equivalent programma waarin maar 3 verschillende functies in voorkomen. We geven eerst de definities van deze 3 functies. I x = x K x y = x S f g x = f x (g x) I is de identiteitsfunctie, K gooit zijn tweede argument weg en S past zijn eerste argument toe op het derde argument en op de toepassing van het tweede op het derde argument. Het blijkt nu dat we iedere functie kunnen om schrijven in termen van I, K en S. We beginnen met een aantal voorbeelden. De truc is dat we de rechterkant van de functie f x1.. xn = rechts-expr net zolang herschrijven tot dat deze van de vorm SKI-expr x1.. xn is, waarbij SKI-expr een uitdrukking is die alleen maar S,K, I en andere functie namen bevat en geen 4

5 variabelen meer. Bij het omschrijven werken we een voor een de variabelen weg te beginnen bij de laatste. h x y = y => I y => K I x y f x y z = x (y z) => S (K x) y z => S (K S) K x y z t x y z = y z (x z) => S y x z => S S (K x) y z => S (K (S S)) K x y z Er geldt dus: h = K I f = S (K S) K t = S (K (S S)) K Als een functie nog andere functies bevat kunnen deze op het eind vervangen worden door hun SKI representaties. Hoewel het omzetten van een functie naar het SKI formaat ingewikkeld lijkt is het algoritme wat deze omzetting uitvoert vrij kort. Een Turing machine die SKI expressie kan evalueren We schetsen nu een Turing machine die SKI expressies kan evalueren. We gebruiken een Turing machine met 6 tapes. Tape 0 bevat de invoer en uiteindelijk het eindresultaat. Er zijn 3 tapes (Arg0, Arg1 en Arg2) die de argumenten van een expressie bevatten (maximaal 3 voor een S expressie). Tape 4 is de to do expressie stack. Hierop kunnen meerdere expressies gescheiden door een separator geplaatst worden. De expressies op deze tape staan in de volgorde waarin ze geëvalueerd moeten worden. Tape 5 is de huidige expressie stack. Deze bevat de expressie die op dit moment geëvalueerd wordt. Het algoritme start met het kopiëren van de input naar de to do stack. Op de oorspronkelijke invoertape wordt het markeringssymbool # gezet. Op deze plaats moet straks het resultaat neergezet worden. 1. Het algoritme begint met een check of er nog iets op de to do tape staat. Zo nee, dan is het resultaat dat wat op de invoer tape staat. Staat er wel wat op de to do stack dan wordt de eerste expressie naar tape 5 gekopieerd. We gaan nu verder met wat op tape 5 staat. 2. Als dit begint met een I dan checken we eerst of er wat na de I staat. Als dit zo is dan kan I verwijderd worden waarna het algoritme opnieuw begint met de rest van de invoer (I is immers de identiteitsfunctie). Als er na de I niets meer staat dan is het resultaat I en wordt teruggeschreven naar de positie van de eerste # op de invoer tape. 3. Als deze begint met een K dan checken we eerst hoeveel argumenten er na de K op de invoer staan. Dit is een kwestie van tellen hoeveel geneste haakjes expressies er op de invoer na de K staan. a. Als dit er twee of meer zijn dan moeten de K en het tweede argument verwijderd worden. Waarna het algoritme opnieuw begint op de plaats waar K stond in de invoerstring. b. Als er 0 argumenten zijn de is het resultaat K en zijn we klaar. c. Als er 1 argument is dan moet de K blijven staan en herhalen we het algoritme voor het ene argument. 4. Als de expressie met een S begint dan checken we eerst het aantal argumenten na de S. a. Als dit er 3 of meer zijn dan kopiëren we de eerste 3 argumenten naar resp Arg0, Arg1 en Arg2, waarbij we ze samen met de S verwijderen van de invoer. Daarna kopiëren we de string Arg0 Arg2 (Arg1 Arg2) terug naar de positie waar S stond en herhalen het algoritme vanaf de positie waar S stond. b. Als er 0 argumenten zijn dan is het resultaat S. c. Als er 1 argument is Opmerking Als we ons echter beperken tot een vast programma dan is het wel mogelijk een Turing machine te maken die het programma kan uitvoeren zonder de tussenstap via SKI expressies te maken. Je hoeft 5

6 dan immers maar een vast aantal functies te kunnen executeren (net zoals voor de SKI machine). De constructie gaat op vergelijkbare wijze. 6

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

Vorig college. IN2505-II Berekenbaarheidstheorie College 4. Opsommers versus herkenners (Th. 3.21) Opsommers

Vorig college. IN2505-II Berekenbaarheidstheorie College 4. Opsommers versus herkenners (Th. 3.21) Opsommers Vorig college College 4 Algoritmiekgroep Faculteit EWI TU Delft Vervolg NDTM s Vergelijking rekenkracht TM s en NDTM s Voorbeelden NDTM s 20 april 2009 1 2 Opsommers Opsommers versus herkenners (Th. 3.21)

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

Wat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.

Wat is FP? The Haskell School of Expression. 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

We beginnen met de eigenschappen van de gehele getallen.

We beginnen met de eigenschappen van de gehele getallen. II.2 Gehele getallen We beginnen met de eigenschappen van de gehele getallen. Axioma s voor Z De gegevens zijn: (a) een verzameling Z; (b) elementen 0 en 1 in Z; (c) een afbeelding +: Z Z Z, de optelling;

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

3 De stelling van Kleene

3 De stelling van Kleene 18 3 De stelling van Kleene Definitie 3.1 Een formele taal heet regulier als hij wordt herkend door een deterministische eindige automaat. Talen van de vorm L(r) met r een reguliere expressie noemen we

Nadere informatie

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde 8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde Optellen: 5a + 3b + 2a + 6b = 7a + 9b 1) Alleen gelijksoortige

Nadere informatie

Logisch en Functioneel Programmeren voor Wiskunde D

Logisch en Functioneel Programmeren voor Wiskunde D Logisch en Functioneel Programmeren voor Wiskunde D Wouter Swierstra Doaitse Swierstra Jurriën Stutterheim Technical Report UU-CS-2011-033 Sept 2011 Department of Information and Computing Sciences Utrecht

Nadere informatie

Bijzondere getallen. Oneindig (als getal) TomVerhoeff. Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica

Bijzondere getallen. Oneindig (als getal) TomVerhoeff. Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Bijzondere getallen Oneindig (als getal) TomVerhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica T.Verhoeff@TUE.NL http://www.win.tue.nl/~wstomv/ Oneindig ... Oneindig 2 Top tien

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

Gaap, ja, nog een keer. In één variabele hebben we deze formule nu al een paar keer gezien:

Gaap, ja, nog een keer. In één variabele hebben we deze formule nu al een paar keer gezien: Van de opgaven met een letter en dus zonder nummer staat het antwoord achterin. De vragen met een nummer behoren tot het huiswerk. Spieken achterin helpt je niets in het beter snappen... 1 Stelling van

Nadere informatie

III.2 De ordening op R en ongelijkheden

III.2 De ordening op R en ongelijkheden III.2 De ordening op R en ongelijkheden In de vorige paragraaf hebben we axioma s gegeven voor de optelling en vermenigvuldiging in R, maar om R vast te leggen moeten we ook ongelijkheden in R beschouwen.

Nadere informatie

1.3 Rekenen met pijlen

1.3 Rekenen met pijlen 14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij

Nadere informatie

Introductie tot de cursus

Introductie tot de cursus Inhoud introductietalen en ontleders Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en

Nadere informatie

1. Vectoren in R n. y-as

1. Vectoren in R n. y-as 1. Vectoren in R n Vectoren en hun meetkundige voorstelling. Een vector in R n is een rijtje (a 1, a 2,..., a n ) van reële getallen. De getallen a i heten de coördinaten van de vector. In het speciale

Nadere informatie

Fundamenten van de Informatica

Fundamenten van de Informatica Fundamenten van de Informatica Luc De Raedt Academiejaar 2006-2007 naar de cursustekst van Karel Dekimpe en Bart Demoen A.1: Talen en Eindige Automaten 1 Deel 1: Inleiding 2 Motivatie Fundamenten van de

Nadere informatie

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING

TENTAMEN Basismodellen in de Informatica VOORBEELDUITWERKING TENTAMEN Basismodellen in de Informatica vakcode: 211180 datum: 2 juli 2009 tijd: 9:00 12:30 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Sudkamp, van de

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

Aanvulling bij de cursus Calculus 1. Complexe getallen

Aanvulling bij de cursus Calculus 1. Complexe getallen Aanvulling bij de cursus Calculus 1 Complexe getallen A.C.M. Ran In dit dictaat worden complexe getallen behandeld. Ook in het Calculusboek van Adams kun je iets over complexe getallen lezen, namelijk

Nadere informatie

extra oefening algoritmiek - antwoorden

extra oefening algoritmiek - antwoorden extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.

Nadere informatie

[8] De ene 1 is de andere niet

[8] De ene 1 is de andere niet [8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, 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 informatie

Java Les 3 Theorie Herhaal structuren

Java Les 3 Theorie Herhaal structuren Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een

Nadere informatie

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie

Nadere informatie

Automaten. Informatica, UvA. Yde Venema

Automaten. Informatica, UvA. Yde Venema Automaten Informatica, UvA Yde Venema i Inhoud Inleiding 1 1 Formele talen en reguliere expressies 2 1.1 Formele talen.................................... 2 1.2 Reguliere expressies................................

Nadere informatie

Variabelen en statements in ActionScript

Variabelen 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 informatie

Praktisch bestaan er enkele eenvoudige methoden om een decimaal getal om te zetten naar een binair getal. We bespreken hier de twee technieken.

Praktisch bestaan er enkele eenvoudige methoden om een decimaal getal om te zetten naar een binair getal. We bespreken hier de twee technieken. Talstelsels 1 Algemeenheden Digitale systemen werken met nullen en enen omdat dit elektronisch gemakkelijke te verwezenlijken is. De transistor kent enkel twee toestanden (geleiden of sperren) Hierdoor

Nadere informatie

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

inleiding 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 informatie

2. Optellen en aftrekken van gelijknamige breuken

2. Optellen en aftrekken van gelijknamige breuken 1. Wat is een breuk? Een breuk Een breuk is een verhoudingsgetal. Een breuk geeft aan hoe groot een deel is van een geheel. Stel een taart is verdeeld in stukken. Je neemt 2 stukken van de taart. Je hebt

Nadere informatie

equationeel programmeren 2015 01 05 college 1

equationeel programmeren 2015 01 05 college 1 equationeel programmeren 2015 01 05 college 1 schema praktische zaken opmerkingen vooraf lambda termen materiaal schema praktische zaken opmerkingen vooraf lambda termen materiaal wie hoorcolleges: Femke

Nadere informatie

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen.

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen. Hoofdstuk 7 Volledige inductie Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen we het volgende: (i) 0 V (ii) k N k V k + 1 V Dan is V = N. Men ziet dit als

Nadere informatie

Machten, exponenten en logaritmen

Machten, exponenten en logaritmen Machten, eponenten en logaritmen Machten, eponenten en logaritmen Macht, eponent en grondtal Eponenten en logaritmen hebben alles met machtsverheffen te maken. Een macht als 4 is niets anders dan de herhaalde

Nadere informatie

Termherschrijven. Jan van Eijck CWI. jve@cwi.nl. Achtergrondcollege Software Evolution, 22 september 2005

Termherschrijven. Jan van Eijck CWI. jve@cwi.nl. Achtergrondcollege Software Evolution, 22 september 2005 Termherschrijven Jan van Eijck CWI jve@cwi.nl Achtergrondcollege Software Evolution, 22 september 2005 Samenvatting Wat zijn termen? Samenvatting Samenvatting Wat zijn termen? Wat zijn regels voor vereenvoudigen

Nadere informatie

Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek. Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u

Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek. Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen

Nadere informatie

RSA. F.A. Grootjen. 8 maart 2002

RSA. F.A. Grootjen. 8 maart 2002 RSA F.A. Grootjen 8 maart 2002 1 Delers Eerst wat terminologie over gehele getallen. We zeggen a deelt b (of a is een deler van b) als b = qa voor een of ander geheel getal q. In plaats van a deelt b schrijven

Nadere informatie

Hoofdstuk 1. Inleiding. Lichamen

Hoofdstuk 1. Inleiding. Lichamen Hoofdstuk 1 Lichamen Inleiding In Lineaire Algebra 1 en 2 heb je al kennis gemaakt met de twee belangrijkste begrippen uit de lineaire algebra: vectorruimte en lineaire afbeelding. In dit hoofdstuk gaan

Nadere informatie

Haskell: programmeren in een luie, puur functionele taal

Haskell: 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 informatie

Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief

Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief Herman Geuvers Radboud Universiteit Nijmegen Technische Universiteit Eindhoven 1 Helden van de wiskunde:

Nadere informatie

Credit cards, computationele complexiteit en consistentie uitspraken

Credit cards, computationele complexiteit en consistentie uitspraken Credit cards, computationele complexiteit en consistentie uitspraken Joost J. Joosten 14 december 2005 Praag en bier Sinds enkele maanden werk ik als post-doc aan de Czech Academy of Sciences in Praag.

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

Logische Complexiteit Hoorcollege 12

Logische Complexiteit Hoorcollege 12 Logische Complexiteit Hoorcollege 12 Jacob Vosmaer Bachelor CKI, Universiteit Utrecht 22 maart 2011 Tijdscomplexiteit Inleiding Grote O en kleine o Complexiteitsanalyse van een simpele taal Complexiteitsverschillen

Nadere informatie

II.3 Equivalentierelaties en quotiënten

II.3 Equivalentierelaties en quotiënten II.3 Equivalentierelaties en quotiënten Een belangrijk begrip in de wiskunde is het begrip relatie. Een relatie op een verzameling is een verband tussen twee elementen uit die verzameling waarbij de volgorde

Nadere informatie

De partitieformule van Euler

De partitieformule van Euler De partitieformule van Euler Een kennismaking met zuivere wiskunde J.H. Aalberts-Bakker 29 augustus 2008 Doctoraalscriptie wiskunde, variant Communicatie en Educatie Afstudeerdocent: Dr. H. Finkelnberg

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

EXCEL BASIS 2013

EXCEL BASIS 2013 EXCEL BASIS 2013 WWW.I-LEARNING.BE - 4 FORMULE-INVOER ALS EXCEL EEN BEREKENING MOET DOEN, MOET JE EEN FORMULE OF EEN FUNCTIE INVOEREN 4.1 OPERATOREN + om op te tellen - om af te trekken / om te delen *

Nadere informatie

Min maal min is plus

Min maal min is plus Min maal min is plus Als ik een verontruste wiskundeleraar moet geloven, is de rekenregel voor het product van twee negatieve getallen nog steeds een probleem. Hessel Pot schreef me: waarom willen we dat

Nadere informatie

Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen

Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen Ter inleiding: tellen Turven, maar: onhandig bij grote aantallen. Romeinse cijfers: speciale symbolen voor

Nadere informatie

Modelleren en Programmeren

Modelleren 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 informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

Aanvullingen bij Hoofdstuk 6

Aanvullingen bij Hoofdstuk 6 Aanvullingen bij Hoofdstuk 6 We veralgemenen eerst Stelling 6.4 tot een willekeurige lineaire transformatie tussen twee vectorruimten en de overgang naar twee nieuwe basissen. Stelling 6.4. Zij A : V W

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

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

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

Nadere informatie

10. Controleopdrachten

10. Controleopdrachten Computeralgebra met Maxima 10. Controleopdrachten 10.1. Functies en operatoren voor lijsten/vectoren/arrays Een van de eenvoudigste maar belangrijkste lusachtige functies is de makelist opdracht. Voor

Nadere informatie

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel. Grafen Grafen Een graaf bestaat uit een verzameling punten (ook wel knopen, of in het engels vertices genoemd) en een verzameling kanten (edges) of pijlen (arcs), waarbij de kanten en pijlen tussen twee

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs 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

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

1 Hele getallen. Rekenen en wiskunde uitgelegd Kennisbasis voor leerkrachten basisonderwijs. Uitwerkingen van de opgaven bij de basisvaardigheden

1 Hele getallen. Rekenen en wiskunde uitgelegd Kennisbasis voor leerkrachten basisonderwijs. Uitwerkingen van de opgaven bij de basisvaardigheden Rekenen en wiskunde uitgelegd Kennisbasis voor leerkrachten basisonderwijs Uitwerkingen van de opgaven bij de basisvaardigheden 1 Hele getallen Peter Ale Martine van Schaik u i t g e v e r ij c o u t i

Nadere informatie

1. Optellen en aftrekken

1. Optellen en aftrekken 1. Optellen en aftrekken Om breuken op te tellen of af te trekken maak je de breuken gelijknamig. Gelijknamig maken wil zeggen dat je zorgt voor 'gelijke noemers': Om de breuken met 'derden' en 'vijfden'

Nadere informatie

6. Functies. 6.1. Definities en gebruik van functies/variabelen

6. Functies. 6.1. Definities en gebruik van functies/variabelen Computeralgebra met Maxima 6. Functies 6.1. Definities en gebruik van functies/variabelen Een van de belangrijkste gereedschappen in een CAS betreft het gebruik van functies (definitie, berekening en grafiek).

Nadere informatie

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Opdracht 1 Topics on Parsing and Formal Languages - fall 2010 Rick van der Zwet 8 december 2010 Samenvatting Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek [JS2009]

Nadere informatie

Hoofdstuk 9: NEGATIEVE GETALLEN

Hoofdstuk 9: NEGATIEVE GETALLEN 1 H9. Negatieve getallen Hoofdstuk 9: NEGATIEVE GETALLEN 1. Wat moet ik leren? (handboek p. 53 57) 9.1 Getallen onder 0 Het verschil verwoorden tussen positieve en negatieve getallen. Weten dat we 0 zowel

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (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 informatie

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12 Katern 2 Getaltheorie Inhoudsopgave 1 Delers 1 2 Deelbaarheid door 2, 3, 5, 9 en 11 6 3 Grootste gemene deler en kleinste gemene veelvoud 12 1 Delers In Katern 1 heb je geleerd wat een deler van een getal

Nadere informatie

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument Complexiteit 2017/05 College 5 Vijfde college complexiteit 21 februari 2017 Selectie Toernooimethode Adversary argument 1 Complexiteit 2017/05 Opgave 28 Gegeven twee oplopend gesorteerde even lange rijen

Nadere informatie

Transformaties van grafieken HAVO wiskunde B deel 1

Transformaties van grafieken HAVO wiskunde B deel 1 Transformaties van grafieken HAVO wiskunde B deel Willem van Ravenstein 500765005 Haags Montessori Lyceum (c) 06 Inleiding In de leerroute transformaties van grafieken gaat het om de karakteristieke eigenschappen

Nadere informatie

3.1 Haakjes wegwerken [1]

3.1 Haakjes wegwerken [1] 3.1 Haakjes wegwerken [1] Oppervlakte rechthoek (Manier 1): Opp. = l b = (a + b) c = (a + b)c Oppervlakte rechthoek (Manier 2): Opp. = Opp. Groen + Opp. Rood = l b + l b = a c + b c = ac + bc We hebben

Nadere informatie

2. Syntaxis en semantiek

2. Syntaxis en semantiek 2. Syntaxis en semantiek In dit hoofdstuk worden de begrippen syntaxis en semantiek behandeld. Verder gaan we in op de fouten die hierin gemaakt kunnen worden en waarom dit in de algoritmiek zo desastreus

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

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008 Katholieke Universiteit Leuven September 008 Algebraïsch rekenen (versie 7 juni 008) Inleiding In deze module worden een aantal basisrekentechnieken herhaald. De nadruk ligt vooral op het symbolisch rekenen.

Nadere informatie

Law and Order in Algorithmics

Law and Order in Algorithmics Law and Order in Algorithmics Maarten Fokkinga Vakgroep SETI, fac INF, Universiteit Twente Versie van May 25, 1993 Algoritmiek (engels: algorithmics) is de theorie en praktijk van het algebraïsch redeneren

Nadere informatie

Practicum Programmeerprincipes

Practicum Programmeerprincipes OPLOSSINGEN REEKS 1 KENNISMAKING MET PICO Evaluatie van expressies Practicum Programmeerprincipes 2009-2010 fvdbergh@vub.ac.be Oefening 1. Oplossing van deze kennismakingsoefening gegeven in de les. Oefening

Nadere informatie

TU/e 2DD50: Wiskunde 2 (1)

TU/e 2DD50: Wiskunde 2 (1) TU/e 2DD50: Wiskunde 2 (1) Organisatorische informatie Wat Dag Tijd Zaal Docent College Tue 5+6 Aud 6+15 Gerhard Woeginger Thu 1+2 Aud 1+4 Gerhard Woeginger Clicker session Tue 7+8 Aud 6+15 Gerhard Woeginger

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet. Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven

Nadere informatie

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 17 november 2004, 9:00u-12:00u

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 17 november 2004, 9:00u-12:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen is het gebruik van rekenmachine of computer niet toegestaan. Vul je antwoorden in op dit formulier. Je dient dit formulier

Nadere informatie

De Meta-circulaire Pico evaluator

De 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 informatie

Informatica: C# WPO 10

Informatica: C# WPO 10 Informatica: C# WPO 10 1. Inhoud 2D arrays, lijsten van arrays, NULL-values 2. Oefeningen Demo 1: Fill and print 2D array Demo 2: Fill and print list of array A: Matrix optelling A: Matrix * constante

Nadere informatie

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur Tentamen Discrete Wiskunde 0 april 0, :00 7:00 uur Schrijf je naam op ieder blad dat je inlevert. Onderbouw je antwoorden, met een goede argumentatie zijn ook punten te verdienen. Veel succes! Opgave.

Nadere informatie

1. Orthogonale Hyperbolen

1. Orthogonale Hyperbolen . Orthogonale Hyperbolen a + b In dit hoofdstuk wordt de grafiek van functies van de vorm y besproken. Functies c + d van deze vorm noemen we gebroken lineaire functies. De grafieken van dit soort functies

Nadere informatie

Constructie der p-adische getallen

Constructie der p-adische getallen Constructie der p-adische getallen Pim van der Hoorn Marcel de Reus 4 februari 2008 Voorwoord Deze tekst is geschreven als opdracht bij de cursus Kaleidoscoop 2007 2008 aan de Universiteit Utrecht. De

Nadere informatie

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u

Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek. Vakcode 5A050, 19 januari 2005, 14:00u-17:00u Faculteit Elektrotechniek - Leerstoel ES Tentamen Schakeltechniek Vakcode 5A050, 19 januari 2005, 14:00u-17:00u achternaam : voorletters : identiteitsnummer : opleiding : Tijdens dit tentamen is het gebruik

Nadere informatie

De volgorde bij samengestelde reken-wiskunde bewerkingen

De volgorde bij samengestelde reken-wiskunde bewerkingen Ministerie van Onderwijs, Wetenschap en Cultuur (MinOWC) Lesbrief Basis-, VOJ- en VOS onderwijs De volgorde bij samengestelde reken-wiskunde bewerkingen juli 2015, MinOWC, Paramaribo Niets uit deze folder

Nadere informatie

Hoofdstuk 3: NEGATIEVE GETALLEN

Hoofdstuk 3: NEGATIEVE GETALLEN 1-6 H3. Negatieve getallen Hoofdstuk 3: NEGATIEVE GETALLEN 1. Wat moet ik leren? (handboek p. 96 123) 3.1 Positieve en negatieve getallen Het verschil verwoorden tussen positieve en negatieve getallen.

Nadere informatie

Vergelijkingen en hun oplossingen

Vergelijkingen en hun oplossingen Vergelijkingen en hun oplossingen + 3 = 5 is een voorbeeld van een wiskundige vergelijking: er komt een = teken in voor, en een onbekende of variabele: in dit geval de letter. Alleen als we voor de variabele

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

3.2 Basiskennis. 3.2.1 De getallenlijn. 3.2.2 Symbolen, tekens en getallen. 92 Algebra. Inhoofdstuk1zijnaandeordegeweest: Het=teken. =staat.

3.2 Basiskennis. 3.2.1 De getallenlijn. 3.2.2 Symbolen, tekens en getallen. 92 Algebra. Inhoofdstuk1zijnaandeordegeweest: Het=teken. =staat. 92 Algebra 3.2 Basiskennis Inhoofdstuk1zijnaandeordegeweest: 3.2.1 De getallenlijn... -5-4 -3-2 -1 0 1 2 3 4 5... 3.2.2 Symbolen, tekens en getallen Het=teken 5+2+3=10 = geeft aan dat wat links van = staat,

Nadere informatie

Formeel Denken. Herfst 2004

Formeel Denken. Herfst 2004 Formeel Denken Herman Geuvers Deels gebaseerd op het herfst 2002 dictaat van Henk Barendregt en Bas Spitters, met dank aan het Discrete Wiskunde dictaat van Wim Gielen Herfst 2004 Contents 1 Talen 1 1.1

Nadere informatie

Implementatie van Programmeertalen (IPT) 4 mei 2001

Implementatie van Programmeertalen (IPT) 4 mei 2001 Informatica Instituut, Faculteit Wiskunde en Informatica, UU. In elektrosche vorm beschikbaar gemaakt door de TBC van A Eskwadraat. Het college IPT werd in 2000/2001 gegeven door Drs. A. Dijkstra en Drs.

Nadere informatie

Genererende Functies K. P. Hart

Genererende Functies K. P. Hart genererende_functies.te 27--205 Z Hoe kun je een rij getallen zo efficiënt mogelijk coderen? Met behulp van functies. Genererende Functies K. P. Hart Je kunt rijen getallen op diverse manieren weergeven

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

Gödels Onvolledigheidsstellingen

Gödels Onvolledigheidsstellingen Gödels Onvolledigheidsstellingen Jaap van Oosten Department Wiskunde, Universiteit Utrecht Symposium A-eskwadraat, 11 december 2014 De Onvolledigheidsstellingen van Gödel zijn verreweg de beroemdste resultaten

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN 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 informatie

inhoudsopgave januari 2005 handleiding algebra 2

inhoudsopgave januari 2005 handleiding algebra 2 handleiding algebra inhoudsopgave Inhoudsopgave 2 De grote lijn 3 Bespreking per paragraaf 1 Routes in een rooster 4 2 Oppervlakte in een rooster 4 3 Producten 4 4 Onderzoek 5 Tijdpad 9 Materialen voor

Nadere informatie

Aanvulling basiscursus wiskunde. A.C.M. Ran

Aanvulling basiscursus wiskunde. A.C.M. Ran Aanvulling basiscursus wiskunde A.C.M. Ran 1 In dit dictaat worden twee onderwerpen behandeld die niet in het boek voor de basiscursus (Basisboek wiskunde van Jan van de Craats en Rob Bosch) staan. Die

Nadere informatie

Honours projecten BSc Informatica: twee voorstellen

Honours projecten BSc Informatica: twee voorstellen Honours projecten BSc Informatica: twee voorstellen mogelijk ook geschikt voor BSc Kunstmatige Intelligentie Alban Ponse section Theory of Computer Science Informatics Institute, University of Amsterdam

Nadere informatie

oefening JavaScript - antwoorden

oefening 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 informatie

Derde college complexiteit. 7 februari Zoeken

Derde college complexiteit. 7 februari Zoeken College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

7 Omzetten van Recursieve naar Iteratieve Algoritmen 7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme

Nadere informatie

Propositielogica Het maken van een waarheidstabel

Propositielogica Het maken van een waarheidstabel Informatiekunde naam datum Propositielogica Het maken van een waarheidstabel Eindhoven, 4 juni 2011 De propositielogica Zoekopdrachten met de operatoren AND, OR en zijn zogenaamde Booleaanse expressies.

Nadere informatie