Samenvatting Struct VCP
Scheme
Racket
Structuur VCP Samenvatting
Hoofdstuk 1: Inleiding en Basisbegrippen
S-expressies
Symbolic expression
Syntax-regel 1: elke atomaire expressie is een geldige expressie bv: #t, 5, “string”
Syntax-regel 2: iedere lijst van geldige expressies tussen haakjes is een geldige expressie
Compiler
Vertaler
Een compiler is een programma dat een programma volledig omzet naar machine instructies
Interpreter
Tolk
Een evaluator/interpreter is een computerprogramma dat programma’s stapje voor stapje uitvoert
REPL
Read Eval Print Loop
Read: Leest een expressie (is de syntax goed?)
Eval: Evalueer de expressie
Print: display de waarde (waarde = resultaat van expressie die geevalueerd is)
Syntax fouten
Er loopt iets fout in de Read fase
Run-time fouten
Er loopt iets fout in de Eval fase
3 verschillende notaties
Prefix: (+ 1 2)
Inifx: (1 + 2)
Postfix: (1 2 +)
scheme gebruikt prefix, voordeel: (+ 1 2 3 4 5): + moet maar 1 keer genoteerd worden
Hoofdstuk 2: Eenvoudige Prcedures
2.1 Uitdrukkingen met getallen en variabelen
Nesting in context van geneste expressies
Generated with PDFtion
,Dingen in zichzelf combineren, in principe kan dit willekeurig diep
Geneste expressies evalueren
Expressies die het diepst zitten worden eerst uitgerekend
(+ (* 1 2) (- 3 4))
* wordt geevalueerd, dan min en dan plus met de geevalueerde operanden
Variabelen, bindingen en omgeving
(define kapitaal 200)
Variabele kapitaal wordt gebonden aan 200 in de globale omgeving
Variabelen worden opgezocht in de omgeving, hun binding is de waarde
Algemeen formaat van eerste vorm van define
(define kapitaal 200)
(define <naam> <uitdrukking>)
2.2 Voorbij eenvoudige rekenkunde met getallen:
Terminologie
Ariteit, unair, binair, …
Ariteit = aantal argumenten
We spreken over unaire, binaire en ternaire procedures indient de ariteit 1, 2 of 3 is
+ heeft een variabele ariteit omdat je er zoveel argumenten kunt insteken als je wilt
(modulo x y) is binair
(sin x) is unair
Booleans
#t = true, #f = false
Relationele operatoren
Kijkt na of een wiskundige relatie “geldt” voor zijn argumenten
Heeft #t of #f als waarde (resultaat na evaluatie)
bvb: (< 4 5) → #t, (= 4 5) → #f
Predicaat
Procedures die een boolean teruggeven, eindigt meestal op ?
(even? 2)
> #t
(boolean? 10)
> #f
Types en Type-predicaten
Scheme kent gehele getallen, booleans, procedures, …
Predicaten om na te gaan of iets tot een bepaald type hoort
bvb: number?, procedure?, boolean?, …
Generated with PDFtion
, 2.3 Zelf procedures schrijven
Tweede vorm van define
(define (<naam> <parameters>) <uitdrukking>)
Verschil tussen substitutiemodel en omgevingsmodel om functie-oproepen te
verklaren
Substitutie-model
Zoals wiskundige functie (argumenten uitrekenen en substitueren)
(kwadraat (+ 1 5))
>(kwadraat 6)
>(* 6 6)
> 36
Het omgevingsmodel
Define voegt een naam toe aan de huidige omgeving, de naam wordt gebonden aan een procedure-object
Het procedure-object onthoudt de parameters en de body van de procedure
tijdens de oproep wordt de omgeving tijdelijk uitgebreid met nieuwe bindingen van formele parameters aan
reeds uitgerekende actuele parameters, de body wordt uitgerekend in deze tijdelijk uitgebreide omgeving
2.4 Programmeerstijl & Abstractie
Procedurele abstractie
Als je een procedure oproept hoef je de body niet te kennen
Hergebruik
slechts 1 keer schrijven, debuggen en onderhouden
dat stukje code kunnen we in meerdere dingen gebruiken (bvb oppervlakte cirkel voor cylinders, kegels, …)
2.5 Toepassing van geziene concepten
Verschil tussen Racket en R5RS
R5RS: kleine taal, weinig concepten
Racket: Grote taal, veel concepten
Hoofdstuk 3: Complexe procedures
3.1 Procedures Maken Beslissingen (if & cond)
Werking if en cond
(if <uitdrukking1>
<uitdrukking_2>
<uitdrukking_3>)
Uitdrukking_1: test van de if
Generated with PDFtion
Scheme
Racket
Structuur VCP Samenvatting
Hoofdstuk 1: Inleiding en Basisbegrippen
S-expressies
Symbolic expression
Syntax-regel 1: elke atomaire expressie is een geldige expressie bv: #t, 5, “string”
Syntax-regel 2: iedere lijst van geldige expressies tussen haakjes is een geldige expressie
Compiler
Vertaler
Een compiler is een programma dat een programma volledig omzet naar machine instructies
Interpreter
Tolk
Een evaluator/interpreter is een computerprogramma dat programma’s stapje voor stapje uitvoert
REPL
Read Eval Print Loop
Read: Leest een expressie (is de syntax goed?)
Eval: Evalueer de expressie
Print: display de waarde (waarde = resultaat van expressie die geevalueerd is)
Syntax fouten
Er loopt iets fout in de Read fase
Run-time fouten
Er loopt iets fout in de Eval fase
3 verschillende notaties
Prefix: (+ 1 2)
Inifx: (1 + 2)
Postfix: (1 2 +)
scheme gebruikt prefix, voordeel: (+ 1 2 3 4 5): + moet maar 1 keer genoteerd worden
Hoofdstuk 2: Eenvoudige Prcedures
2.1 Uitdrukkingen met getallen en variabelen
Nesting in context van geneste expressies
Generated with PDFtion
,Dingen in zichzelf combineren, in principe kan dit willekeurig diep
Geneste expressies evalueren
Expressies die het diepst zitten worden eerst uitgerekend
(+ (* 1 2) (- 3 4))
* wordt geevalueerd, dan min en dan plus met de geevalueerde operanden
Variabelen, bindingen en omgeving
(define kapitaal 200)
Variabele kapitaal wordt gebonden aan 200 in de globale omgeving
Variabelen worden opgezocht in de omgeving, hun binding is de waarde
Algemeen formaat van eerste vorm van define
(define kapitaal 200)
(define <naam> <uitdrukking>)
2.2 Voorbij eenvoudige rekenkunde met getallen:
Terminologie
Ariteit, unair, binair, …
Ariteit = aantal argumenten
We spreken over unaire, binaire en ternaire procedures indient de ariteit 1, 2 of 3 is
+ heeft een variabele ariteit omdat je er zoveel argumenten kunt insteken als je wilt
(modulo x y) is binair
(sin x) is unair
Booleans
#t = true, #f = false
Relationele operatoren
Kijkt na of een wiskundige relatie “geldt” voor zijn argumenten
Heeft #t of #f als waarde (resultaat na evaluatie)
bvb: (< 4 5) → #t, (= 4 5) → #f
Predicaat
Procedures die een boolean teruggeven, eindigt meestal op ?
(even? 2)
> #t
(boolean? 10)
> #f
Types en Type-predicaten
Scheme kent gehele getallen, booleans, procedures, …
Predicaten om na te gaan of iets tot een bepaald type hoort
bvb: number?, procedure?, boolean?, …
Generated with PDFtion
, 2.3 Zelf procedures schrijven
Tweede vorm van define
(define (<naam> <parameters>) <uitdrukking>)
Verschil tussen substitutiemodel en omgevingsmodel om functie-oproepen te
verklaren
Substitutie-model
Zoals wiskundige functie (argumenten uitrekenen en substitueren)
(kwadraat (+ 1 5))
>(kwadraat 6)
>(* 6 6)
> 36
Het omgevingsmodel
Define voegt een naam toe aan de huidige omgeving, de naam wordt gebonden aan een procedure-object
Het procedure-object onthoudt de parameters en de body van de procedure
tijdens de oproep wordt de omgeving tijdelijk uitgebreid met nieuwe bindingen van formele parameters aan
reeds uitgerekende actuele parameters, de body wordt uitgerekend in deze tijdelijk uitgebreide omgeving
2.4 Programmeerstijl & Abstractie
Procedurele abstractie
Als je een procedure oproept hoef je de body niet te kennen
Hergebruik
slechts 1 keer schrijven, debuggen en onderhouden
dat stukje code kunnen we in meerdere dingen gebruiken (bvb oppervlakte cirkel voor cylinders, kegels, …)
2.5 Toepassing van geziene concepten
Verschil tussen Racket en R5RS
R5RS: kleine taal, weinig concepten
Racket: Grote taal, veel concepten
Hoofdstuk 3: Complexe procedures
3.1 Procedures Maken Beslissingen (if & cond)
Werking if en cond
(if <uitdrukking1>
<uitdrukking_2>
<uitdrukking_3>)
Uitdrukking_1: test van de if
Generated with PDFtion