College Notatie, Recursie, Lijsten
|
|
- Gerda Beckers
- 5 jaren geleden
- Aantal bezoeken:
Transcriptie
1 College Notatie, Recursie, Lijsten Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016
2 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen bij wie hij hoort, kiest hij voor f : lees dus als (f x) y 2
3 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen bij wie hij hoort, kiest hij voor f : lees dus als (f x) y eigenlijk neemt elke functie precies één argument en levert dan eventueel een functie die het volgende argument neemt, etc. functieapplicatie bindt sterker dan alle operatoren Dat scheelt in de haakjes 2
4 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen bij wie hij hoort, kiest hij voor f : lees dus als (f x) y eigenlijk neemt elke functie precies één argument en levert dan eventueel een functie die het volgende argument neemt, etc. functieapplicatie bindt sterker dan alle operatoren Voorbeeld: Dat scheelt in de haakjes f x y z 1 + g 4 <=> (((f x) y) z) 1 + (g 4) 2
5 Patronen Je kunt een functie definiëren met verschillende patronen als formele parameter: som [ ] = 0 som [x] = x som [x, y] = x + y som [x, y, z] = x + y + z 3
6 Patronen Je kunt een functie definiëren met verschillende patronen als formele parameter: som [ ] = 0 som [x] = x som [x, y] = x + y som [x, y, z] = x + y + z Bij aanroep van de functie kijkt de interpreter of de parameter past op een van de definities; de aanroep som [3, 4] past bijvoorbeeld op de derde regel van de definitie (en op geen andere). 3
7 Patronen Je kunt een functie definiëren met verschillende patronen als formele parameter: som [ ] = 0 som [x] = x som [x, y] = x + y som [x, y, z] = x + y + z Bij aanroep van de functie kijkt de interpreter of de parameter past op een van de definities; de aanroep som [3, 4] past bijvoorbeeld op de derde regel Let op: van als de definitie het argument (en opeen geen lijst is andere). met meer dan 3 elementen gaat dit niet goed! 3
8 Syntax Diagram (ter referentie!) 4
9 Soorten van patronen O.a. de volgende constructies zijn toegestaan als patroon: Getallen (bijvoorbeeld 3) De constanten, zoals True en False; Namen (bijvoorbeeld x); Lijsten, waarvan de elementen ook weer patronen zijn (bijvoorbeeld [1, x, y]); De operator : met patronen links en rechts (bijvoorbeeld (x : y));... 5
10 Voorbeelden uit de Prelude Met behulp van patronen zijn een aantal belangrijke functies te definiëren: True && True = True && = False 6
11 Voorbeelden uit de Prelude Met behulp van patronen zijn een aantal belangrijke functies te definiëren: True && True = True && = False Met de operator : kunnen lijsten worden opgebouwd. Hiermee kunnen twee nuttige standaardfuncties geschreven worden: head (x : y) = x tail (x : y) = y Werken geen van beide voor lege lijsten! 6
12 Over pure talen, en iteratie Pure talen (zonder zijeffecten, waaronder ook assignments als x = x + 1) zijn eenvoudiger om over te redeneren, en te parallelliseren Maar hoe schrijf je dan iteratieve algoritmen? Met functies als map De voorvader van de bekendere foreach Maar map voldoet niet voor alle gevallen, en hoe definiëren we map zelf? Met recursie! 7
13 Faculteit met expliciete recursie Recursieve definities van de faculteit-functie zijn: fac n n == 0 = 1 n > 0 = n fac (n 1) 8
14 Faculteit met expliciete recursie Recursieve definities van de faculteit-functie zijn: fac n n == 0 = 1 n > 0 = n fac (n 1) fac 0 = 1 fac n = n fac (n 1) 8
15 Recursie, en daar gaat het om... Recursieve functies (d.w.z. functies die zichzelf aanroepen) zijn normaalgesproken alleen zinvol onder de volgende twee voorwaarden: de parameter van de recursieve aanroep is eenvoudiger (bijvoorbeeld: numeriek kleiner, of een kortere lijst) dan de parameter van de te definiëren functie; voor een basis-geval is er een niet-recursieve definitie. 9
16 Recursie, en daar gaat het om... Recursieve functies (d.w.z. functies die zichzelf aanroepen) zijn normaalgesproken alleen zinvol onder de volgende twee voorwaarden: de parameter van de recursieve aanroep is eenvoudiger (bijvoorbeeld: numeriek kleiner, of een kortere lijst) dan de parameter van de te definiëren functie; voor een basis-geval is er een niet-recursieve definitie. Terug naar het voorbeeld: fac 0 = 1 fac n = n fac (n 1) 9
17 Recursie gaat goed met lijsten samen.. Vrijwel alle functies op lijsten hebben het volgende patroon: som :: [Int] > Int som [ ] = 0 som (kop : staart) = kop + som staart 10
18 Recursie gaat goed met lijsten samen.. Vrijwel alle functies op lijsten hebben het volgende patroon: som :: [Int] > Int som [ ] = 0 som (kop : staart) = kop + som staart Tip: als je zelf zo n functie schrijft, begin dan altijd met het lege geval, controleer het type, en kijk of dat je aanstaat. 10
19 Niet alle recursie gaat goed... De volgende functie is niet erg zinvol: f x = f x 11
20 Niet alle recursie gaat goed... De volgende functie is niet erg zinvol: f x = f x Gaat zoiets altijd fout? 11
21 Niet alle recursie gaat goed... De volgende functie is niet erg zinvol: f x = f x Gaat zoiets altijd fout? Belangrijk in geval van zo n identieke aanroep is dat een functie productief is, d.w.z. dat er iets geproduceerd is voordat er dieper in een expressie een recursieve aanroep plaatsvindt: 11
22 Niet alle recursie gaat goed... De volgende functie is niet erg zinvol: f x = f x Gaat zoiets altijd fout? Belangrijk in geval van zo n identieke aanroep is dat een functie productief is, d.w.z. dat er iets geproduceerd is voordat er dieper in een expressie een recursieve aanroep plaatsvindt: repeat repeat x = x : repeat x 11
23 repeat is zinvol In tegenstelling tot wat je zou kunnen denken is repeat niet onzinnig: head :: [a] > a head (x : xs) = x head (repeat 3) => head (3 : repeat 3) => 3 In Haskell wordt een expressie niet verder uitgerekend dan nodig is! Voor de pattern match (in head) is het voldoende om de definitie van repeat één keer uit te vouwen, en zo : zichtbaar te maken, zodat pattern matching slaagt. 12
24 repeat is zinvol In tegenstelling tot wat je zou kunnen denken is repeat niet onzinnig: head :: [a] > a head (x : xs) = x head (repeat 3) => head (3 : repeat 3) => 3 In Haskell wordt een expressie niet verder uitgerekend dan nodig is! Voor de pattern match (in head) is het voldoende om de definitie van repeat één keer uit te vouwen, en zo : zichtbaar te maken, zodat pattern matching slaagt. Het is de pattern matching in Haskell die de evaluatie aandrijft. 12
25 Eisen aan recursie (heroverweging) Recursieve functies zijn zinvol onder de volgende voorwaarden: de parameter van de recursieve aanroep is eenvoudiger (bijvoorbeeld: numeriek kleiner, of een kortere lijst) dan de parameter van de te definiëren functie; voor een basis-geval is er een niet-recursieve definitie. of: de functie is productief! Dit laatste is uniek voor lazy geëvalueerde talen. 13
26 Aansluiten bij bekende notatie De wiskundige definitie van machtsverheffen kan vrijwel letterlijk als Haskell-functie worden gebruikt: xˆ0 = 1 xˆn = x xˆ(n 1) 14
27 Aansluiten bij bekende notatie De wiskundige definitie van machtsverheffen kan vrijwel letterlijk als Haskell-functie worden gebruikt: xˆ0 = 1 xˆn = x xˆ(n 1) Een recursieve definitie waarin voor het gevalsonderscheid patronen worden gebruikt (in plaats van Boolese expressies) wordt daarom ook wel een inductieve definitie genoemd (over het type van het patroon). 14
28 Tussendoortje: meer dan één manier We kunnen schrijven: som lijst null lijst = 0 otherwise = head lijst + som (tail lijst) 15
29 Tussendoortje: meer dan één manier We kunnen schrijven: som lijst null lijst = 0 otherwise = head lijst + som (tail lijst) Maar meestal schrijven we: som [ ] = 0 som (kop : staart) = kop + som staart omdat we dit duidelijker vinden. 15
30 Anonieme waarden De standaardfunctie length, die het aantal elementen in een lijst bepaalt, kan ook inductief worden gedefinieerd: length [ ] = 0 length (kop : staart) = 1 + length staart 16
31 Anonieme waarden De standaardfunctie length, die het aantal elementen in een lijst bepaalt, kan ook inductief worden gedefinieerd: length [ ] = 0 length (kop : staart) = 1 + length staart Als kop niet nodig is, mag het teken gebruikt worden: length [ ] = 0 length ( : staart) = 1 + length staart 16
32 Anonieme waarden DeOp standaardfunctie deze manier wordt length, ervoor die het gezorgd aantal dat elementen iets wat in je een nietlijst wilt bepaalt, gebruiken, kan ook inductief niet kuntworden gebruiken. gedefinieerd: length [ ] = 0 length (kop : staart) = 1 + length staart Als kop niet nodig is, mag het teken gebruikt worden: length [ ] = 0 length ( : staart) = 1 + length staart 16
33 Layout is belangrijk Anders dan in de meeste andere programmeertalen is een regelovergang niet helemaal zonder betekenis. Bekijk bijvoorbeeld de volgende twee where-constructies: where v = f x y w = g z where v = f x y w = g z 17
34 Layout is belangrijk Anders dan in de meeste andere programmeertalen is een regelovergang niet helemaal zonder betekenis. Bekijk bijvoorbeeld de volgende twee where-constructies: where v = f x y w = g z where v = f x y w = g z De plaats van de regelovergang (tussen x en y, of tussen y en w) maakt nogal wat uit. 17
35 Layout regels (zo ongeveer) In een rij definities gebruikt Haskell de volgende methode om te bepalen wat bij elkaar hoort: een regel die precies even ver is ingesprongen als de vorige, wordt als nieuwe definitie beschouwd; is de regel verder ingesprongen, dan hoort hij bij de vorige regel; is de regel minder ver ingesprongen, dan hoort hij niet meer bij de huidige lijst definities. 18
36 Layout regels (zo ongeveer) In een rij definities gebruikt Haskell de volgende methode om te bepalen wat bij elkaar hoort: een regel die precies even ver is ingesprongen als de vorige, wordt als nieuwe definitie beschouwd; is de regel verder ingesprongen, dan hoort hij bij de vorige regel; is de regel minder ver ingesprongen, dan hoort hij niet meer bij de huidige lijst definities. Dat laatste is van belang als een where-constructie binnen een andere where-constructie voorkomt. Bijvoorbeeld in 18 f x y = g (x + w) where g u = u + v where v = u u w = 2 + y
37 In de praktijk volstaat meestal: In de praktijk gaat alles vanzelf goed als je één ding in het oog houdt: gelijkwaardige definities moeten even ver worden ingesprongen Dit betekent ook dat alle globale functiedefinities even ver moeten worden ingesprongen (bijvoorbeeld allemaal nul posities). 19
38 Commentaar Er zijn in Haskell twee soorten commentaar: met de symbolen -- begint commentaar dat tot het eind van de regel doorloopt; met de symbolen {- begint genest commentaar dat doorloopt tot de symbolen -}. Maar wie hoort bij wie: {- allemaal even niet nodig...code... {- code commentaar -}...code... -} 20
39 Commentaar Er zijn in Haskell twee soorten commentaar: met de symbolen -- begint commentaar dat tot het eind van de regel doorloopt; met de symbolen {- begint genest commentaar dat doorloopt tot de symbolen -}. Maar wie hoort bij wie: {- allemaal even niet nodig...code... {- code commentaar -}...code... -} 20 Maar wat als -- deel uitmaakt van een operator zoals <-->?
40 Syntactische fouten Als een functie-definitie niet aan de vorm-eisen voldoet, krijg je daarvan een melding zodra deze functie geanalyseerd wordt: isnul x = x = 0 Wat is er fout? 21
41 Syntactische fouten Als een functie-definitie niet aan de vorm-eisen voldoet, krijg je daarvan een melding zodra deze functie geanalyseerd wordt: isnul x = x = 0 Wat is er fout? Bij de analyse van deze functie meldt de ghci interpreter: Prelude> let isnul x = x = 0 interactive:1:16: parse error on input = 21
42 Typering en type inferentie Typerings-fouten treden bijvoorbeeld op bij het toepassen van de functie length op iets anders dan een lijst, zoals in length 3: Prelude> length 3 interactive:1:7: No instance for (Num [a]) arising from the literal 3 at... Possible fix: add an instance declaration for (Num [a]) In the first argument of length, namely
43 Typering en type inferentie Typerings-fouten treden bijvoorbeeld op bij het toepassen van de functie length op iets anders dan een lijst, zoals in length 3: Prelude> length 3 interactive:1:7: No instance for (Num [a]) arising from the literal 3 at... Possible fix: add an instance declaration for (Num [a]) In the first argument of length, namely 3... Foutmeldingen van de type checker kunnen wat cryptisch zijn, omdat ze teveel van de onderliggende mechanismen laten zien. 22
44 Opvragen van het type van een expressie Het type van een expressie kan bepaald worden met de interpreter-opdracht :t (afkorting van type ). Achter :t staat de expressie die getypeerd moet worden. Bijvoorbeeld:? :t True && False True && False :: Bool Het symbool :: kan gelezen worden als heeft het type. De expressie wordt met de :type-opdracht niet uitgerekend; alleen het type wordt bepaald. 23
45 De basistypes Er zijn aantal basis-types: Int: het type van de gehele getallen (integer numbers of integers), tot een maximum van ruim 2 miljard; Integer: het type van gehele getallen, zonder praktische begrenzing Float: het type van de floating-point getallen; Bool: het type van de Boolese waardes True en False; Char: het type van letters, cijfers en symbolen op het toetsenbord (characters) 24
46 Lijsten kunnen verschillende types hebben? :t [ a, b, c ] [ a, b, c ] :: [Char]? :t [True,False] [True,False] :: [Bool]? :t [ [1,2], [3,4,5] ] [[1,2],[3,4,5]] :: [[Int]] 25
47 Lijsten kunnen verschillende types hebben? :t [ a, b, c ] [ a, b, c ] :: [Char]? :t [True,False] [True,False] :: [Bool]? :t [ [1,2], [3,4,5] ] [[1,2],[3,4,5]] :: [[Int]] Alle waarden in een lijst moeten hetzelfde type hebben. 25
48 Zo niet... Zo niet, dan verschijnt er een melding van een typerings-fout: Prelude> :t [2,True] No instance for (Num Bool) arising from the literal 2 at... Possible fix: add an instance declaration for (Num Bool)... 26
49 Zo niet... Zo niet, dan verschijnt er een melding van een typerings-fout: Prelude> :t [2,True] No instance for (Num Bool) arising from the literal 2 at... Possible fix: add an instance declaration for (Num Bool)... Ook voor deze cryptische melding is er een reden. De 2 kan namelijk heel veel verschillende dingen betekenen. 26
50 Ook functies hebben een type Het type van een functie wordt bepaald door het type van de parameter en het type van het resultaat:? :t sum sum :: [Int] -> Int 27
51 Ook functies hebben een type Het type van een functie wordt bepaald door het type van de parameter en het type van het resultaat:? :t sum sum :: [Int] -> Int De functie sum neemt als argument een lijst van integer waarden (dat is de [Int]) en levert een enkele integer op. 27
52 En dit kan ook Je mag alles in een lijst zetten, dus ook functies:? :t [sin,cos,tan] [sin,cos,tan] :: [Float -> Float] 28
53 Expliciet types opgeven Een functiedefinitie met een expliciet opgegeven type: sum :: [Int] > Int sum [ ] = 0 sum (x : xs) = x + sum xs 29
54 Voordelen: er wordt gecontroleerd of de functie inderdaad het type heeft dat je ervoor hebt gedeclareerd; de declaratie maakt het voor een menselijke lezer eenvoudiger om een functie te begrijpen. als je alle types aan het begin zet heb je een soort inhoudsopgave je kunt het type gebruiken om een functie in Hoogle op te zoeken 30
55 Parametrische polymorfie Voor sommige functies op lijsten maakt het niet uit wat het type van de elementen van die lijst is. Het type van de functie length wordt dan ook als volgt genoteerd: length :: [a] > Int 31
56 Parametrische polymorfie Voor sommige functies op lijsten maakt het niet uit wat het type van de elementen van die lijst is. Het type van de functie length wordt dan ook als volgt genoteerd: length :: [a] > Int Het type van deze elementen wordt aangegeven door een typevariabele, in het voorbeeld a. Typevariabelen worden, in tegenstelling tot de vaste types als Int en Bool, met een kleine letter geschreven. NB: deze polymorfie noemt men vaak generics in de OO wereld. 31
57 Typering door beperking Het type van een definitie wordt bepaald door de beperkingen die worden opgelegd door de expressie: id x = x legt geen beperking op aan het argument, dat dan willekeurig mag zijn. Dus id :: a >?, en omdat het argument wordt opgeleverd is het dan id :: a > a. Bij eenbijeerste [ ] = 1 eenbijeerste (x : xs) = x bepaalt het patroon dat het argument een lijst is, en de rechterkanten dat het resultaat een Int is, en dat x ook een integer is. Alles bij elkaar: [Int] > Int.
58 Voorbeelden head :: [a] > a tail :: [a] > [a] 33
59 Voorbeelden head :: [a] > a tail :: [a] > [a] Polymorfe functies, zoals length en head, hebben met elkaar gemeen dat ze alleen de structuur van de lijst gebruiken. Een niet-polymorfe functie, zoals sum, gebruikt ook eigenschappen van de elementen van de lijst, zoals optelbaarheid. 33
60 Exploiteer polymorfie Niet alleen functies op lijsten kunnen polymorf zijn. De eenvoudigste polymorfe functie is de identiteits-functie (de functie die zijn parameter onveranderd oplevert): id :: a > a id x = x De functie id kan op elementen van willekeurig type werken (en het resultaat is dan van hetzelfde type). 34
61 Exploiteer polymorfie Niet alleen functies op lijsten kunnen polymorf zijn. De eenvoudigste polymorfe functie is de identiteits-functie (de functie die zijn parameter onveranderd oplevert): id :: a > a id x = x De functie id kan op elementen van willekeurig type werken (en het resultaat is dan van hetzelfde type). De functie kan zelfs worden toegepast op functies, zoals in id sqrt. 34
62 Quizvraag Wat denk je van: id id (id id) (id id id) 35
63 Quizvraag Wat denk je van: id id (id id) (id id id) Vraag je het type van beide aan ghci dan krijg je b > b (of a > a, of c > c,...). Zoals het type al aangeeft kan id worden toegepast op parameters van een willekeurig type, dus ook zichzelf. 35
64 Quizvraag Wat denk je van: id id (id id) (id id id) Vraag je het type van beide aan ghci dan krijg je b > b (of a > a, of c > c,...). Zoals het type al aangeeft kan id worden toegepast op parameters van een willekeurig type, dus ook zichzelf. Welke functies zijn dit? 35
65 Meer dan één parameter De functie abcformule heeft drie floating-point getallen als parameter en een lijst met floating-point getallen als resultaat. De type-declaratie luidt daarom: abcformule :: Float > Float > Float > [Float] 36
66 Meer dan één parameter De functie abcformule heeft drie floating-point getallen als parameter en een lijst met floating-point getallen als resultaat. De type-declaratie luidt daarom: abcformule :: Float > Float > Float > [Float] En de functie map map :: (a > b) > [a] > [b] 36 De eerste parameter van map is een functie tussen willekeurige types (a en b), die dus niet eens hetzelfde hoeven te zijn. De tweede parameter van map is een lijst, waarvan de elementen hetzelfde type (a) moeten hebben als de parameter van de functie-parameter. En idem voor b.
67 Quizvraag Denk je dat de volgend expressie goed getypeerd is, en zo ja wat is dan het type: [sin, id] 37
68 Quizvraag Denk je dat de volgend expressie goed getypeerd is, en zo ja wat is dan het type: [sin, id] Antwoord: Prelude> :t sin sin :: Float -> Float Prelude> :t id id :: a -> a Prelude> :t [sin, id] [sin, id] :: [Float -> Float] 37
69 Quizvraag Denk je dat de volgend expressie goed getypeerd is, en zo ja wat is dan het type: [length, head] 38
70 Quizvraag Denk je dat de volgend expressie goed getypeerd is, en zo ja wat is dan het type: [length, head] Antwoord: Prelude> :t length length :: [a] -> Int Prelude> :t head head :: [a] -> a Prelude> :t [length,head] [length,head] :: [[Int] -> Int] Prelude> 38
71 Operator naar functie en terug een operator tussen haakjes wordt gebruikt als een functie: Prelude> Prelude> (+)
72 Operator naar functie en terug een operator tussen haakjes wordt gebruikt als een functie: Prelude> Prelude> (+) andersom: een functie tussen back quotes gedraagt zich als de overeenkomstige operator. Prelude> div Prelude> 8 div 4 2 Prelude> (1 abcformule 2)
College 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 informatieFunctioneel Programmeren
Functioneel Programmeren ii c Copyright 1992 2003 Informatica-instituut, Universiteit Utrecht Deze tekst mag voor educatieve doeleinden gereproduceerd worden op de volgende voorwaarden: de tekst wordt
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 informatieFunctioneel Programmeren
Functioneel Programmeren ii c Copyright 1992 2002 Informatica-instituut, Universiteit Utrecht Deze tekst mag voor educatieve doeleinden gereproduceerd worden op de volgende voorwaarden: de tekst wordt
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 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 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 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 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 informatie2IA05 Functioneel Programmeren
2IA05 Functioneel Programmeren wk1: Introductie Rik van Geldrop, Jaap van der Woude Declaratieve programmeerstijl 2/20 2 H C H = A A H I JE A 1 F A H = JEA B, A? = H = JEA B D A M = J. K? JE A A C EI?
Nadere informatieCollege I/O
College 2016-2017 I/O Doaitse Swierstra Verteld door Jurriaan Hage Utrecht University Input en Output Tot dusverre: een module bevat een aantal functiedefinities GHCi drukt de waarde af van een ingetikte
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 informatieTweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur
Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde
Nadere informatieEen korte samenvatting van enkele FORTRAN opdrachten
Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5
Nadere 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 informatieFunctioneel programmeren met Helium
NIOC 2004 Functioneel programmeren met Helium Bastiaan Heeren en Daan Leijen {bastiaan,daan}@cs.uu.nl Universiteit Utrecht NIOC 2004, Groningen, 3 november. Overzicht Overzicht 1 Functioneel programmeren
Nadere informatieConstanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.
een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers
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 informatieFunctioneel Programmeren
Functioneel Programmeren ii c Copyright 1992 1998 Informatica-instituut, Universiteit Utrecht Deze tekst mag voor educatieve doeleinden gereproduceerd worden op de volgende voorwaarden: de tekst wordt
Nadere informatieLeeswijzer Functioneel Programmeren
Leeswijzer Functioneel Programmeren Jeroen Fokker 23 oktober 2000 Dit artikel beschrijft in het kort welke onderwerpen behandeld worden in het kollege Functioneel Programmeren en het gelijknamige diktaat.
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 informatieHOOFDSTUK 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 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 informatieImperatief programmeren. Introductie 9. Leerkern 10. Zelftoets 15. Terugkoppeling 16. Inhoud leereenheid 16
Inhoud leereenheid 16 Imperatief programmeren Introductie 9 Leerkern 10 1 Sleutelbegrippen 10 2 Pragmatisme 10 3 Case study: C 10 4 Case study: Ada 11 5 Overzicht van concepten in C en Ada 14 Zelftoets
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatie[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 informatie10 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 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 informatieFP-theorie. 2IA50, Deel B. Inductieve definities 1/19. / department of mathematics and computer science
FP-theorie 2IA50, Deel B Inductieve definities 1/19 Inductieve definitie Definitie IL α, (Cons-)Lijsten over α Zij α een gegeven verzameling. De verzameling IL α van eindige (cons-)lijsten over α is de
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 informatieFunctioneel programmeren
Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein
Nadere informatie2IA05 Functioneel Programmeren
2IA05 Functioneel Programmeren wk1: Introductie Rik van Geldrop, Jaap van der Woude Declaratieve programmeerstijl 2/13 2 H C H = A A H I JE A 1 F A H = JEA B, A? = H = JEA B D A M = J. K? JE A A C EI?
Nadere informatieInleiding tot Func.oneel Programmeren les 3
Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere
Nadere 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 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 informatieTentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
Nadere informatiecolleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser
colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp
Nadere informatieFunctioneel Programmeren met Helium
Functioneel Programmeren met Helium Bastiaan Heeren en Daan Leijen Instituut voor Informatica en Informatiekunde, Universiteit Utrecht {bastiaan, daan}@cs.uu.nl Moderne functionele talen zijn mathematisch
Nadere informatieReguliere Expressies
Reguliere Expressies Een reguliere expressie (regexp, regex, regxp) is een string (een woord) die, volgens bepaalde syntaxregels, een verzameling strings (een taal) beschrijft Reguliere expressies worden
Nadere informatieFunctioneel Programmeren met Clean
Functioneel Programmeren met Clean J.M. Jansen NLDA Oktober 2011 Functioneel Proggrammeren met Clean 2 1. EXPRESSIES... 5 1.1 EXPRESSIES EN HERSCHRIJVINGEN... 5 1.2 REGELS VOOR EXPRESSIES... 5 1.3 BEREKENEN
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 informatieObjective-C Basis. 23 april 2005, Eindhoven Patrick Machielse
Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd
Nadere informatieSQL datadefinitietaal
SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen
Nadere informatieControle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2
Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel
Nadere informatieAPPLICATIEBOUW 2E COLLEGE: ONTWERPEN, GEBRUIKERSINTERFACES, VARIABELEN & EXPRESSIES. Onderdeel van SmartProducts
APPLICATIEBOUW 2E COLLEGE: ONTWERPEN, GEBRUIKERSINTERFACES, VARIABELEN & EXPRESSIES Onderdeel van SmartProducts INHOUD COLLEGE 2 module4.io.utwente.nl/applicatiebouw Software ontwerpen Gebruikersinterfaces,
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
OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en
Nadere informatieEE1400: Programmeren in C BSc. EE, 1e jaar, , 2e college
EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-2013, 2e college Arjan van Genderen, Computer Engineering 20-11-2012 Delft University of Technology Challenge the future Agenda A.s. woensdagmiddag 14.00
Nadere informatieUitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur
Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur 1. Een Intent-object wordt gebruikt voor communicatie (a) van een Activity naar een bijbehorende View
Nadere informatieLogisch 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 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 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 informatieOpgaven. Python Assessment
Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen
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 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 informatieKennismaken Greenfoot
HOOFDSTUK 1 Kennismaken met Greenfoot onderwerpen: de interface van Greenfoot, omgaan met objecten, methodes aanroepen, een scenario uitvoeren concepten: object, klasse, methode-aanroep, parameter, retourwaarde
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 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 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 informatie3. Structuren in de taal
3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we
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 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 informatieProgrammeermethoden NA. Week 5: Functies (vervolg)
Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x
Nadere informatieDeel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,
Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt
Nadere informatie7 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 informatieVerzamelingen. Hoofdstuk 5
Hoofdstuk 5 Verzamelingen In de meest uiteenlopende omstandigheden kan het handig zijn om een stel objecten, elementen, of wat dan ook, samen een naam te geven. Het resultaat noemen we dan een verzameling.
Nadere informatieProgrammeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014
Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE, 22 april 2014 Inleiding Cursus coördinator e-mail Docent e-mail : Jacco Hoekstra : J.M.Hoekstra@TUDelft.nl : Ingeborg Goddijn : I.A.M.Goddijn@TUDelft.nl
Nadere informatieREEKS II. Zaterdag 6 november 2010, 11u
TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS II Zaterdag 6 november 2010, 11u NAAM :... VRAAG 1: AFSTAND [5 PUNTEN] In deze oefening gaan we opzoek naar identieke
Nadere informatieHOE TEKEN IK EEN OMGEVINGSMODEL
HOE TEKEN IK EEN OMGEVINGSMODEL MATTIAS DE WAEL 1. Inleiding Om de allereenvoudigste Scheme expressies te begrijpen volstaat het substitutiemodel. Het substitutiemodel verondersteld het bestaan van een
Nadere informatiemaplev 2012/5/1 15:47 page 469 #471 Procedures (vervolg)
maplev 2012/5/1 15:47 page 469 #471 Module 30 Procedures (vervolg) Onderwerp Voorkennis Expressies Procedures: Bereik van lokale variabelen, call by evaluated name, level-1-evaluatie van lokale variabelen,
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 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 informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
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 informatieMaak automatisch een geschikte configuratie van een softwaresysteem;
Joost Vennekens joost.vennekens@kuleuven.be Technologiecampus De Nayer We zijn geïnteresseerd in het oplossen van combinatorische problemen, zoals bijvoorbeeld: Bereken een lessenrooster die aan een aantal
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 informatieArrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:
Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.
Nadere informatieBerekenbaarheid 2016 Uitwerkingen Tentamen 26 januari 2017
erekenbaarheid 2016 Uitwerkingen Tentamen 26 januari 2017 1. Geef een standaard Turing-machine M 1 die de volgende taal herkent door eindtoestand: L 1 := {w {a, b, c} w a + w b = w c } Hierin is w a een
Nadere informatieTentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code
Nadere informatieImplementatie 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 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 informatieSQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003
SQL Aantekeningen 3 Maarten de Rijke mdr@science.uva.nl 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets
Nadere informatieOntwerp van Algoritmen: opgaven weken 3 en 4
0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 25 november 2015 Herhaling Meer herhaling Recursie Mutuele recursie Objecten Herhaling Fibonacci class Fibonacci { public static void fibonaccitot(int bovengrens)
Nadere informatiePropositielogica 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 informatieProgrammeermethoden NA. Week 3: Controlestructuren
Programmeermethoden NA Week 3: Controlestructuren Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Inleveren opdracht 1 Lever digitaal sxxxxxxx-syyyyyyy-opdr1.py
Nadere informatieimport java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!
Voorbeeld Java-programma import java.io.*; één klasse...met één functie...met één opdracht public class Hallo { public static void main (String[] a) { System.out.println("Hallo!"); accolades begrenzen
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 informatie2. 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 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 informatieDe keuzestructuur. Versie DD
De keuzestructuur Versie DD Tot nu toe Programma in rechte lijn = sequentie of opeenvolging Nieuw Vertakking in parcours = selectie of keuzestructuur Controlestructuren Opeenvolging = sequentie Keuze =
Nadere informatieFuncties. Huub de Beer. Eindhoven, 4 juni 2011
Functies Huub de Beer Eindhoven, 4 juni 2011 Functies: je kent ze al Je hebt al verschillende PHP functies gebruikt: pi() om het getal π uit te rekenen. sin( 0.453 ) om het de sinus van het getal 0.453
Nadere informatieTEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR
TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2011-2012 Zaterdag 5 november 2011, 9u30 NAAM :... VRAAG 1: EVEN VEEL [5 PUNTEN] Schrijf een methode evenveel(), met twee argumenten,
Nadere informatieOpgave 1. (4 punten) Inleiding: Vraag: Hints: (maximaal 2 bonuspunten) Herkansingstentamen Algoritmiek voor Biologen
Opgave 1. (4 punten) Elk jaar verliest een boom al z'n bladeren. Een boom begint op dag D met B bladeren. Op de eerste dag is voor elk blad dat aan de boom zit de kans op afvallen 0.03. Voor elke volgende
Nadere informatieTentamen Programmeren in C (EE1400)
TU Delft Faculteit EWI Tentamen Programmeren in C (EE1400) 28 jan 2011, 9.00 12.00 - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
Nadere informatie2. 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[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:
[14] Functies Een goede programmeur doet altijd zijn best om zoveel mogelijk aan hergebruik van code te doen. Je probeert in je programma code te gebruiken die iemand anders heeft gemaakt, of code die
Nadere informatieTijdens het tentamen mag het cursusmateriaal niet geraadpleegd worden.
Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het schriftelijk tentamen van de cursus Concepten van programmeertalen en is te beschouwen als proeftentamen. Het is belangrijk
Nadere informatieLab Webdesign: Javascript 25 februari 2008
H4: FUNCTIES We zullen in dit hoofdstuk zien hoe we functies moeten maken, aanroepen, argumenten doorgeven en waarden retourneren. Ook zullen we het hebben over het begrip "recursie", en laten zien hoe
Nadere informatie10. 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