TDDC74 Programmering, abstraktion och modellering. Tentamen

Relevanta dokument
TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

TDDC74 - Lektionsmaterial C

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Tentamen i. TDDC67 Funktionell programmering och Lisp

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum:

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Ändringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

TDDC74 Programmering: Abstraktion och modellering Dugga 1, kl 14-16

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

Våra enkla funktioner eller procedurer

Tentamen i. TDDA 69 Data och programstrukturer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016

Dagens föreläsning Programmering i Lisp Fö 5

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Datalogi, grundkurs 1

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Procedurer och villkor

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

Förra gången: Primitiva data

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Idag: Dataabstraktion

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

I dag: Blockstruktur, omgivningar, problemlösning

Rekursiva algoritmer sortering sökning mönstermatchning

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

Deklarationer/definitioner/specifikationer

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.

Funktionell programmering DD1361

Föreläsning 9 Exempel

Objektorienterad programmering i Racket

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Datalogi, grundkurs 1

Objektorienterad programmering i Racket

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Modularitet och tillstånd. Stora system kräver en uppdelning. En lösning: modularitet. Basera programmets struktur på den fysiska systemets struktur:

FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på

Uppgift 6A - Frekvenstabell

Datalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl.

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Tentamen Grundläggande programmering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

allt.cl Page 1 of 17 Date: torsdag 7 december 2006

Idag: Dataabstraktion

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Programmering II (ID1019) :00-17:00

Datalogi, grundkurs 1

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Föreläsning 6: Metoder och fält (arrays)

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

TDDC77 Objektorienterad Programmering

Tillämpad Programmering (ID1218) :00-13:00

Typkonvertering. Java versus C

Tentamen i. Programmering i språket C

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Transkript:

AID-nummer: Datum: 2011-08-17 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Onsdag 17 augusti 2011 8-12 Uppgifterna löses direkt på denna uppgiftslapp, som lämnas in i sedvanligt tentamensomslag. Räcker inte utrymmet kan du komplettera med lösa papper. Skriv tydligt så att inte dina lösningar missförstås. Använd väl valda namn på parametrar etc. Även om det i uppgiften står att du skall skriva en funktion, så får du gärna skriva ytterligare hjälpfunktioner, som kan vara nödvändiga. Enligt den nya standarden i Scheme/Racket använder man en ny uppsättning funktioner för cons-celler man vill ändra pekare i (dvs muterbara cons-celler), dvs mcons, mcar, mcdr, set-mcar!, set-mcdr! etc. Det går lika bra att använda cons, car, cdr, set-car!, set-cdr!. Betygsgradering: 12-16,5 betyg 3 17-20,5 betyg 4 21-24 betyg 5 Lycka till

AID-nummer: Datum: 2011-08-17 2 Uppgift 1. Beräkning av uttryck och quote (2 poäng) Vi ger följande uttryck för beräkning. Vilket värde skrivs ut eller om det blir fel, beskriv typen av fel. > (define a 10) > (define b a) > (define c a) > (define d (list a (quote b) b c)) > d = > (a b c) = > '(list a 1 5) = > (define (f a x) (+ a x)) > (f a a) = > (define (g x a) (define (h y) (+ y a)) (h (+ x b)))) > (g b b) = > (h 1) = > (define k (lambda (x y) (y (y x)))) > (k 10 (lambda (x) (+ x 2))) = > (k f list) = 0-1 rätt 0p 2-3 rätt 0,5p 4-5 rätt 1,0p 6-7 rätt 1,5p 8 rätt 2,0p

AID-nummer: Datum: 2011-08-17 3 Uppgift 2. Rekursiva funktioner (9 poäng) 2a. (3p) Skriv en rekursiv funktion (tabort-tal lst), som tar bort alla talen på toppnivån i en lista. > (tabort-tal '(a 2 3 b c 4 d)) => (a b c d) (define (tabort-tal lst) Beskriver din funktion en rekursiv eller iterativ (linear) processkösning? Använd din lösning och visa med substitutionsmodellen exemplet (tabort-tal '(a 2 c 3)). 2b. (3p) Skriv en funktion (taborta-alla-tal lst), som tar bort alla talen oavsett nivån i en lista. > (tabort-alla-tal '(a (2 (c 4) e) (5))) => (a ((c) e) ()) (define (tabort-alla-tal lst)

AID-nummer: Datum: 2011-08-17 4 Uppgift 2. Rekursiva funktioner, forts 2c. (2p) Skriv en rekursiv funktion (skriv-ut första nästa -fn slutvillkor-fn), som skriver ut ett antal värden, från första, sedan beräknas nästföljande med funktionen nästa-fn, och sedan nästa etc, tills värdet uppfyller funktionen slutvillkor-fn. Utskriften kan göras med display och newline. För att skriva ut de udda talen från 1 till 7 skriver vi: > (skriv-ut 1 (lambda (e) (+ e 2)) (lambda (e) (= e 9))) 1 3 5 7 (define (skriv-ut första nästa-fn slutvillkor-fn) 2d. (1p) Använd funktionen skriv-ut för att skriva ut alla primtalen mellan 2 och 100. Vi antager vi har en funktion prime?, som avgör om ett tal är ett primtal eller ej. (skriv-ut 2 nästa?? slutvillkor??) 2 3 5 etc Komplettera med kod för de två saknade argumenten nästa?? och sluvillkor?? nästa?? = slutvillkor?? =

AID-nummer: Datum: 2011-08-17 5 Uppgift 3. Par/cons-celler (3 poäng) 3a. (1p) Vad blir värdet i parentesformat av följande uttryck. Rita även upp värdet med den grafiska representationen med cons-celler och pekare (box and pointer notation). > (define start (cons (list 'x) (list 'a '(b)))) start => 3b. (2p) Skriv ett Scheme-uttryck som skapar följande struktur start (define start a b () Rita sedan en ny struktur efter det att följande har beräknats: (let ((c-cell (mcons 'c '()))) (set-mcar! start (mcdr (mcar start))) (set-mcdr! (mcdr start) c-cell) (set-mcdr! start c-cell))

AID-nummer: Datum: 2011-08-17 6 Uppgift 4. Objektorienterad modellering (3 poäng) Nedan följer en objektorienterad modellering av personer med sina leksaker. Varje sak har ett namn och kan ha en färg samt varje person har ett namn och en leksakslista. (define (skapa-sak namn) (let ((färg 'ingen-färg)) (lambda (medd. arg-lista) (cond ((eq? medd 'namn) namn) ((eq? medd 'färg?) färg) ((eq? medd 'ny-färg) (set! färg (car arg-lista))) (else "fel meddelande"))))) (define (skapa-person namn) (let ((leksaker '())) (define (lägg-till-leksak sak-obj) (set! leksaker (cons (cons (sak-obj 'namn) sak-obj) leksaker)) (void)) (define (skriv-ut-leksaker) (map (lambda (par) (display (car par)) (display " ")) leksaker) (newline)) (define (leksaker-färg färg) ; se uppgift 4c (define (dispatch msg) (cond ((eq? msg 'namn) (lambda () namn)) ((eq? msg 'lägg-till-leksak) lägg-till-leksak) ((eq? msg 'skriv-ut-leksaker) skriv-ut-leksaker) ((eq? msg 'alla-med-viss-färg) leksaker-färg) (else (error "fel meddelande")))) dispatch)) (define min-docka (skapa-sak "dockan-anna")) ; ge dockan-anna färgen gul, se uppgift 4a (define min-bil (skapa-sak "racerbil")) ; ge racerbil färgen röd, se uppgift 4a (define min-boll (skapa-sak "tennisboll")) ; ge tennisboll färgen gul, se uppgift 4a (define lilla-lisa (skapa-person "Lisa")) ; se uppgifter i 4b

AID-nummer: Datum: 2011-08-17 7 Uppgift 4. Objektorienterad modellering, forts 4a. (1p) Skriv Scheme-uttryck, som ger de tre sakerna en färg. 4b. (1p) Skriv Scheme-uttryck, som lägger in de tre sakerna i Lisa. 4c. (1p) Komplettera koden för leksaker-färg, som ger en lista med namnen på de leksaker som har en given färg. Vi kan då t. ex. få reda på att dockan-anna och tennisboll är gula.

AID-nummer: Datum: 2011-08-17 8 Uppgift 5. Högre ordningens funktioner (3 poäng) Skriv först en procedur (compose-2 f g), som tar två funktioner f och g och som returnerar den procedur, som utför kompositionen av dessa två funktioner. I matematiken brukar komposition betecknas med en ring o. Vi har sambandet f o g (x) = (f (g x)) > (define kadr (compose-2 car cdr)) ; skapa en funktion som tar fram andra elementet > (kadr '(a b c)) = b Skriv sedan en generell funktion compose, som tar ett godtyckligt antal funktioner (minst 1 st) och som returnerar en funktion som utför funktionskomposition på all dessa funktioner. > ((compose car) '(a b c d)) = a > (define längd-efter-kdddr (compose length cdr cdr cdr)) > (längd-efter-kdddr '(a b c d e)) = 2, dvs längden efter 3 cdr är en lista med 2 element

AID-nummer: Datum: 2011-08-17 9 Uppgift 6. Procedurobjekt, omgivningsdiagram (4 poäng) 6a. (2p) I samband med omgivningsdiagram förklara bindning (binding) ram (frame) omgivning (environment) procedurobjekt (procedure object) Förklara sedan hur omgivningsdiagrammet används då man i Scheme ger följande uttryck: definition: (define variabel uttryck) i en omgivning En tilldelning: (set! variabel uttryck) i en omgivning En lambda-uttryck: (lambda formella-parametrar kropp) i en omgivning En funktionsapplicering: (procedur-uttryck aktuella-parametrar ) i en omgivning En Förklara begreppen med hjälp av följande exempel genom att rita upp omgivningsdiagrammet, där ramarna märks ordentligt och ange i den ordning som deluttrycken beräknas och relativt vilken ram samt vad som händer i omgivningsdiagrammet: > (define x 10) > (define f (lambda (x y) (set! x (+ x 1)) (+ x y))) > (f x 5) =?

AID-nummer: Datum: 2011-08-17 10 Uppgift 6. Procedurobjekt, omgivningsdiagram, forts 6b. (2p) Vilka värden skrivs ut och rita omgivningsdiagrammet. > (define all '()) > (define (memory-generator start) (let ((sum start)) (lambda (val) (set! sum (+ sum val)) (set! all (cons val all)) sum))) > (define adder (memory-generator 10)) > (adder 20) = > (adder 10) = > all = Omgivningsdiagrammet: