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

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering: Abstraktion och modellering Datortenta

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

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 - Lektionsmaterial C

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

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

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

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

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

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Lab 04 Muterbara strukturer, omgivningar

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

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)

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?

Idag: Dataabstraktion

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

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å

Föreläsning 9 Exempel

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

Tentamen i. TDDA 69 Data och programstrukturer

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

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

Datalogi, grundkurs 1

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 1

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

Funktionell programmering DD1361

Våra enkla funktioner eller procedurer

TDDC74 Lab 02 Listor, sammansatta strukturer

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

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

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

Procedurer och villkor

Några saker till och lite om snabbare sortering

Datalogi, grundkurs 1

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

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

Tentamen Datastrukturer (DAT037)

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

Idag: Dataabstraktion

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

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

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

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Tentamen TEN1 HI

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

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

Sökning och sortering

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

Tentamen Datastrukturer (DAT036)

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

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

Rekursiva algoritmer sortering sökning mönstermatchning

Tentamen TEN1 HI

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

Datalogi, grundkurs 1

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Uppgift 6A - Frekvenstabell

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Tentamen Datastrukturer (DAT036)

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

Kurskod D0010E Datum Skrivtid 5tim

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

DD1361 Programmeringsparadigm. Carina Edlund

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Abstrakta datatyper Laboration 2 GruDat, DD1344

Tentamen Datastrukturer D DAT 035/INN960

Förra gången: Primitiva data

Objektorienterad programmering i Racket

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Tentamen Datastrukturer, DAT037 (DAT036)

Övning 1 - Abstrakta datatyper

Länkade strukturer. (del 2)

Deklarationer/definitioner/specifikationer

Transkript:

Tentamen Provkod TEN1, Tid: kl 14-18, 2013-06- 07, Kåra Läs alla frågorna först och bestäm dig för den ordning som passar dig bäst. Även om det i uppgi;en står a< du skall skriva en procedur/funk?on, så får du gärna skriva y<erligare hjälpfunk?oner som kan vara nödvändiga. Skriv tydligt för a< öka läsbarheten. Använd väl valda namn på parametrar och indentera din kod. Sammanlagt 2 poäng?lldelas väl- skriven kod, dvs, kod som innehåller bra namngivning, korrekt indentering, användning av dataabstrak?on vid behov, och andra principer för bra Scheme- kod. Det finns sex uppgi;er i tentan. Poängen per uppgi;/deluppgi; anges i samband med varje uppgi;. Betygsgradering: För betyget 3 krävs minst 12p, för betyget 4 minst 16p och för betyget 5 minst 19p. Högst möjliga antal poäng är 24. Lycka?ll!

Uppgift 1 - föränderliga liststrukturer (4 poäng) Antag att x och y är definierade enligt nedan: (define x 3) (define y 6) Rita följande strukturerna som mcons-lådor och pekare: 1. (define k (mcons x (mcons x y))) 2. (define m (mcons x y)) 3. (define n (mcons (mcar k) (mcar (mcdr k)))) 4. (define p (mcons m n)) 5. (define q (mcons m n)) 6. (set-mcar! (mcar q) 8) 7. (set-mcdr! q 12) 8. (set-mcdr! p (mcar (mcar q))) Uppgift 2 - enkel iteration/rekursion (4 poäng) Skriv en fakultetsfunktion (fak n), som beräknar n! (n! = n. (n - 1)..... 2. 1). T ex 0! = 1 per definition, 4! = 4. 3. 2. 1=24, 5! = 5. 4. 3. 2. 1 = 120 Redogör sedan för huruvida din funktion är en rekursiv eller iterativ processlösning? Motivera. Uppgift 3 - iteration/rekursion (4 poäng) Vissa funktioner kan beräknas genom att summera en oändlig serie. Vi skall här skriva en funktion, som summerar en ändlig serie (McLaurin-serien), där vi anger hur många termer som skall summeras. Funktionen sin kan beräknas med hjälp av följande approximation: Skriv sedan en funktion (sin n x) som beräknar sin x med hjälp av McLaurin-serien med n termer. Du får gärna använda Schemefunkionen expt - (expt m n) - som beräknar m n och naturligtvis fakultetsfunktionen från tidigare uppgiften. 2

Uppgift 4 - listhantering (4 poäng) Skriv en Schemefunktion merge med två parametrar där båda antas vara ordnade listor av heltal. merge skapar en ny ordnad lista av heltal som innehåller alla element som ingår i de två parametrarna. Följande exempel förklarar merge ytterligare. > (merge () ()) () > (merge () (1 2 3)) (1 2 3) > (merge (1 2 6) (2 3 4 5)) (1 2 2 3 4 5 6) Använd substitutionsmodellen för att redovisa hur din implementation av merge beräknar (merge (4 7) (1 3 8)). 3

Uppgift 5 - dataabstraktion och listhantering (4 poäng) En datamängd över <lygresor har strukturerats enligt följande: (define flights (list ;; airline orig dest flt# dprt arrv ;; (make-flight 'AS 'YVR 'SEA 2039 0930 1020) (make-flight 'AS 'SEA 'YVR 2126 1220 1310) (make-flight 'AS 'SEA 'ANC 85 1150 1430) (make-flight 'AS 'ANC 'FAI 93 1530 1620) (make-flight 'NW 'SEA 'MSO 2199 1700 2025) (make-flight 'UA 'YVR 'SEA 1483 0605 0650) (make-flight 'UA 'ANC 'FAI 1744 2220 2314) (make-flight 'UA 'SEA 'ANC 1760 1410 1636) (make-flight 'UA 'SEA 'SFO 1203 0630 0835) (make-flight 'UA 'SEA 'SFO 1764 1130 1334) (make-flight 'UA 'SEA 'OAK 1143 1228 1444) (make-flight 'UA 'SEA 'ORD 154 0700 1248) (make-flight 'UA 'SFO 'SEA 1706 1030 1234) (make-flight 'UA 'SFO 'RDD 7005 1420 1535) (make-flight 'UA 'SFO 'EWR 12 0800 1622) (make-flight 'UA 'RDD 'SFO 7014 0645 0800) (make-flight 'UA 'EWR 'LHR 906 1855 0645) (make-flight 'UA 'ORD 'EWR 362 1330 1648))) make-flight tar följande information och skapar en ny flygresa: förkortningen för flygbolaget som äger planet, förkortningen för den flygplats där resan börjar, förkortningen för den flygplats där resan slutar, flygresans nummer, avgångstid, ankomsttid. Konstruktorn definierar vi så här: (define make-flight (lambda (carrier origin dest flight-no depart arrive) (list carrier origin dest flight-no depart arrive))) T ex en resa som my-flight skulle kunna definieras som: (define my-flight (make-flight 'UA 'EWR 'LHR 906 1855 0645)) Antag nu att följande selektorer är definierade för att hämta olika information för en given flygresa: (flight-carrier my-flight) returnerar UA (flight-origin my-flight) returnerar EWR (flight-destination my-flight) returnerar LHR (flight-no my-flight) returnerar 906 (flight-depart my-flight) returnerar 1855 (flight-arrive my-flight) returnerar 645 4

Definiera proceduren columns med två parametrar: en lista såsom flygresor och en lista på godtyckligt antal selektorer för elementen i första listan. columns returnerar enbart de kolumner som anges av selektorlsistan. Följande exempel förklarar detta ytterligare. > (columns flights (list flight-carrier flight-origin)) ((AS YVR) (AS SEA) (AS SEA) (AS ANC) (NW SEA) (UA YVR) (UA ANC) (UA SFO) (UA SFO) (UA SFO) (UA RDD) (UA EWR) (UA ORD)) > (columns flights (list flight-carrier flight-origin flight-no)) ((AS YVR 2039) (AS SEA 2126) (AS SEA 85) (AS ANC 93) (NW SEA 2199) (UA YVR 1483) (UA ANC 1744) (UA SEA 1760) (UA SEA 1203) (UA SEA 1764) (UA SEA 1143) (UA SEA 154) (UA SFO 1706) (UA SFO 7005) (UA SFO 12) (UA RDD 7014) (UA EWR 906) (UA ORD 362)) 5

Uppgift 6 - omgivningsdiagram och objekt (4 poäng) En stack (eller en hög) är en struktur som innehåller 0 eller flera element. Nya element läggs (PUSH) ovanför det senaste elementet, och man kan enbart ta bort (POP) det senast inlagda elementet från stacken. En hög (eller en stack) är tom från början. Så här kan vi föreställa oss att man kan definiera och använda en stack: Implementera stack som objekt: (define (make-stack) (let ((content ())) (define (push x) (set! content (cons x content))) (define (pop) (if (null? content) (error "Empty stack -- POP") (let ((top (car content))) (set! content (cdr content)) top))) (define (initialize) (set! content '()) 'done) (define (dispatch m) (cond ((eq? m 'push) push) ((eq? m 'pop) (pop)) ((eq? m 'initialize) (initialize)) (else (error "Unknown request -- STACK" m)))) dispatch)) (define (pop stack) (stack 'pop)) (define (push stack x) ((stack 'push) x)) Och här följer hur den är tänkt att användas. > (define s (make-stack)) > (push s 2) > (push s 4) > (pop s) 4 Rita de omgivningsdiagram som avbildar hur ovanstående uttryck evalueras. 6