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

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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 Tenta, kl 14 18, 11 juni 2014

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

TDDC74 Programmering, abstraktion och modellering DUGGA 3

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

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

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering: Abstraktion och modellering Datortenta

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

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

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

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

TDDC74 - Lektionsmaterial C

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Tentamen i. TDDC67 Funktionell programmering och Lisp

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

Idag: Dataabstraktion

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

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

Tentamen i. TDDA 69 Data och programstrukturer

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

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 Lab 02 Listor, sammansatta strukturer

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å

Objektorienterad programmering i Racket

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

Objektorienterad programmering i Racket

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

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.

Våra enkla funktioner eller procedurer

Teoretisk del. Facit Tentamen TDDC (6)

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?

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

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

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

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

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

Föreläsning 9 Exempel

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

Deklarationer/definitioner/specifikationer

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Idag: Dataabstraktion

Parameteröverföring. Exempel. Exempel. Metodkropp

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Objektorienterad programmering, Java, 5p TDBA63

Börja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Design av en klass BankAccount som representerar ett bankkonto

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Datalogi, grundkurs 1

Snabbmanual WM Effektanalysator

Programmering II (ID1019) :00-11:00

TENTAMEN I DATAVETENSKAP

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

729G74 - IT och programmering, grundkurs. Dugga.

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

I dag: Blockstruktur, omgivningar, problemlösning

Tentamen i. Programmering i språket C

TDP002 - Imperativ programmering

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

DD1361 Programmeringsparadigm. Carina Edlund

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Tentamen Datastrukturer (DAT037)

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Datorövning 1 Calc i OpenOffice 1

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Grafik. TDDC66 Datorsystem och programmering Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen i Grundläggande programmering STS, åk

Programmering II (ID1019) :00-12:00

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

Transkript:

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte ordnade i någon särskild ordning! Skriv tydligt och läsligt. Använd väl valda namn på parametrar och indentera din kod. Väl valda namn inkluderar konsekvent språk med mera. Stora parenteser får användas för att avsluta alla öppna parenteser. Även om det i uppgiften står att du skall skiva en procedur/funktion, så får du gärna skriva ytterligare hjälpfunktioner som kan vara nödvändiga. OBS! I denna dugga får du använda alla primitiver, inklusive kommandon som set!, set-mcar!, set-mcdr! för att ändra bindningar och ändra i strukturer. Betyg: Det finns tre duggor i kursen. På varje dugga kan man få som mest 12p (så totalt 36p för alla tre). För att kunna få betyget 3 på duggorna måste du sammanlagt (på alla tre duggor) ha fått minst 18p, för betyget 4 gäller minst 23p och för betyget 5 minst 27p. Lycka till!

Uppgift 1, Omgivningsdiagram (3 poäng) Rita det omgivningsdiagram som uppstår då de följande uttrycken evalueras. Alla evalueringar skall visas i ett och samma omgivningsdiagram. När värdet på en variabel ändras, kryssa över det gamla värdet och skriv det nya bredvid. (define x 42) (set! x (+ x 6)) (define f (lambda (n) (* n 2))) ((lambda (n) (* n 2)) 17) (f 100) (let ((state 0)) (lambda () (set! state (- 1 state)))) 2

Uppgift 2, box-pointer -diagram (2 poäng) Rita box-pointer-diagram över det som händer när följande kod evalueras: (define a (mcons 1 (mcons 2 3))) (define b (mcons 4 5)) (set-mcdr! (mcdr a) b) (set! b (mcons 6 7)) Om något förändras, ska det framgå hur det förändras. Stryk över gamla pilar och rita nya (snarare än att rita helt nya kopior av hur det ser ut efter förändringen). Uppgift 3, Tillståndsmodellering (3 poäng) Vi vill representera ett minne mem för siffror, där varje minne ska ha koll på just sitt värde. Det ska hantera kommandona add och sub, vilket ökar respektive minskar minnets värde med indata och returnerar minnets värde efter ändringen. Så här ska det fungera: > (define m1 (make-mem)) > (define m2 (make-mem)) > (m1 add 10) 10 > (m2 add 0) 10 0 > (m1 sub 5) 5 > (m1 add 2) 7 Uppgifter a) Skriv make-mem. (2p) b) Skriv en procedur reset-value som tar ett minne och nollställer dess värde. (1p) > (m1 add 0) 7 > (reset-value m1) > (m1 add 0) 0 3

Uppgift 4, Dataabstraktion och programmering (4 poäng) I denna uppgift väljer vi att beskriva en digitalklocka. En klocka kommer fysiskt att sparas i muterbara cons-celler. Vår digitalklocka visar tiden som två tal: timmar och minuter. Minuter varierar i intervallet 0-59 och timmar i 0-23 (kl 00:08, t ex, beskrivs som {0 8}). OBS! Läs igenom hela uppgiften. Deluppgifterna kan lösas oberoende av varandra, dvs, i del b) kan du anta att procedurerna i del a) finns och fungerar som de skall. Konstrukorproceduren för en klocka definierar vi så här: (define (make-clock hours minutes) (mcons hours (mcons minutes ()))) Uppgifter a) Komplettera dataabstraktionen genom att implementera följande selektorer och mutatorer. (1 poäng) (define (clock-hours clock) (define (clock-minutes clock) (define (clock-set-hours! clock hours) (define (clock-set-minutes! clock minutes) Allt mutatorerna behöver göra är att sätta rätt del av strukturen till det angivna värdet. De behöver inte göra någon kontroll av indata. T ex behöver clock-set-hours! inte testa att 0 hours < 23. b) Skriv proceduren tick som tickar fram en klocka med en minut. Nedan skapar vi två klockor och får dem att ticka ett par gånger. (3 poäng) > (define clock-1 (make-clock 12 58)) {12 58} > (define clock-2 (make-clock 23 59)) {23 59} 4

> (tick clock-1) > clock-1 {12 59} > (tick clock-1) > clock-1 {13 0} > clock-2 {23 59} > (tick clock-2) > clock-2 {0 0} 5