Comparative Programming Languages: verschil tussen versies
→Januari 2014 (25/01): copie van examenvragen toegevoegd |
|||
Regel 2: | Regel 2: | ||
[[Afbeelding:FrankPiessens.jpg|right|200px|]] | [[Afbeelding:FrankPiessens.jpg|right|200px|]] | ||
=Informatie over het examen= | =Informatie over het examen= | ||
[https://github.com/KULeuven-CS/CPL Oplossingen van (sommige) examens (zonder enige garanties).] | |||
=Examenvragen= | =Examenvragen= | ||
Versie van 23 jan 2015 10:13
Informatie over het examen
Oplossingen van (sommige) examens (zonder enige garanties).
Examenvragen
Januari 2014
1) Gegeven een programmake:
a) Teken de AST. b) Teken daar de contour diagrams op. c) Teken vanuit iedere bounded variable een pijl naar zijn declaratie ofzoiets. (zoals in de slides, einde hoofdstuk 3) d) Naar wat evalueert het programma?
2) gegeven een programmake in IMPLCIT(hoofdstuk 4):
a) Geef de uiteindelijke staat van de store. b) Naar wat evalueert het programma? c) Naar wat zou het evalueren moest het call-by-refence zijn ipv call-by-value?
3) Er zijn 3 stukjes programme gegeven met een "hole" in (hoofdstuk 5)
ze leken op (uit herinnering ...): a) ((2-3) - []) b) ([] - (2-3)) c) (let x = 3-1 in ([] x)) [en dus niet (let x = (2-3) in (x-2))]
Slechts 1 van de 3 is mogelijk. Welke en waarom?
4) Gegeven enkele expressies: Geef de unknown types en het type van de gehele expressies zoals INFERENCE (hoofdstuk 7) dat zou doen.
5) Vul CLASSES (hoofdstuk 9) aan met de expressie 'instanceof'(zoals bij Java).
Januari 2014 (25/01)
Zie kopie
1) Gegeven een programma:
a) Wat is het resultaat bij static-scoping b) Wat is het resultaat bij dynamic-scoping c) Schrijf een programma dat bij static-scoping de constante 0 functie is en bij dynamic-scoping het dubbel teruggeeft
2) Gegeven een programma:
a) Wat is de inhoud van de store op het einde van het programma b) Wat is het resultaat van het programma bij call-by-value c) Wat is het resultaat van het programma bij call-by-reference
3) Gegeven een programma, geef een trace van de value-of/k functie voor de continuation. (Zelfde trace als het scheme programma van de cursus geeft, maar dat enkel voor de value-of/k en niet de apply-cont).
bv.
(x-5) => value-of/k((1-5), []) => value-of/k(1, []-<5>) => value-of/k(5, 1-[]) => -4
maar dan met ingewikkeldere expressie...
4) Gegeven een aantal types, geef een programma dat met inferrence dat type als resultaat geeft (%x is een var-type)
bv.
a) int b) (int -> int) -> (int ->bool) c) %1 d) (%1 -> %2) -> (%2 -> int) -> (%1 -> bool) e) %1 -> %2 f) (%1 -> %2) -> %1
5) Pas de interpreter (CLASSES) aan zodat je een methode kan oproepen op statische manier (met behulp van zijn klassenaam).
Zodat je kan schrijven: call-static <obj> <klassenaam> <methode-naam> <args>
Je moest hierbij de constraint afdwingen dat de klasse van obj dezelfde moest zijn als <klassenaam> of een subklasse.