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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

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 Dugga 3, kl 14 16, 25 mars 2015

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 Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

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

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

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 1, exempeldugga

TDDC74 Programmering: Abstraktion och modellering Datortenta

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

TDDC74 Programmering, abstraktion och modellering DUGGA 1

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

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

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

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

Föreläsning 9 Exempel

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

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

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

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 - Lektionsmaterial C

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

Datalogi, grundkurs 1

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

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

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

Idag: Dataabstraktion

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

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

Funktionell programmering DD1361

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

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

Datalogi, grundkurs 1

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å

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

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

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

Sökning och sortering

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

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

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

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

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

HI1024 Programmering, grundkurs TEN

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

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

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

Uppgift 6A - Frekvenstabell

Idag: Dataabstraktion

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

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

Tentamen i. TDDA 69 Data och programstrukturer

Dugga Datastrukturer (DAT036)

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

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

Våra enkla funktioner eller procedurer

Tentamen i Introduktion till programmering

Några saker till och lite om snabbare sortering

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

Föreläsning 1: Tal, mängder och slutledningar

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

Deklarationer/definitioner/specifikationer

Övningsuppgifter kapitel 8

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

HI1024 Programmering, grundkurs TEN

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

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Rekursiva algoritmer sortering sökning mönstermatchning

Objektorienterad programmering i Racket

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

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

DD1361 Programmeringsparadigm. Carina Edlund

Algebra och kombinatorik 10/ Föreläsning 4. Låt X vara en ändlig mängd. En permutation av X är en bijektiv funktion X X. Sats: S n =n!

Laboration 3, uppgift En klass för en räknare

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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

Programmeringsteknik med C och Matlab

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

{ } { } En mängd är en samling objekt A = 0, 1. Ex: Mängder grundbegrepp 5 C. Olof M C = { 7, 1, 5} M = { Ce, Joa, Ch, Je, Id, Jon, Pe}

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

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

HI1024 Programmering, grundkurs TEN

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

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

Transkript:

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Skriv tydligt så att inte dina lösningar missförstås. Använd väl valda namn på parametrar och indentera din kod. Ä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. Varje uppgift i denna dugga ger 3 poäng. Betygsgradering: Det finns tre duggor i kursen. Varje dugga ger 12p, dvs totalt 36p. För att passera en dugga krävs minst 3p på duggan. Totalt skall du på de tre duggorna för betyget 3 ha minst 19p, för betyget 4 minst 24p och för betyget 5 minst 29p. Lycka till! OBS!!!! Lösningarna till duggans uppgift 2-4 finns I denna fil. De lösningar som presenteras är en av manga möjliga lösningar. Om di lösning inte se rut som min (JM) behöver du inte oroa dig om det. Alla har sin egen stil.

Uppgift 1 Antag att x och y är definierade enligt nedan: (define x 5) (define y 9) (define z (cons x y)) Rita följande strukturerna grafisk (som cons- lådor och pekare): a) (list x y) b) (cons x y) c) (cons (cons x y) y) d) (list (list x y) x) e) (cons (list x z) y) f) (cons x (cons z (list z y))) Lösningen publiceras separate.

Uppgift 2 En mängd är en oordnad samling av unika element. Följande är exempel på mängder: {} är tomma mängden {1, 2, 3} är en mängd av tre heltal {äpple, apelsin, persika, melon} är en mängd som innehåller namnen på några frukter Mängder kan i Scheme representers som listor, t ex, (define tomma-mängden ()) (define tre-tal (1 2 3)) (define fyra-tal (2 3 4 5)) (define frukt (äpple apelsin persika melon)) (define däggdjur (häst elefant val människa)) (define havsdjur (delfin val haj)) Skriv Schemefunktionen (snitt mängd-1 mängd-2) som beräknar snittet av två mängder, dvs, den beräknar en ny mängd som innehåller de element som finns i båda mängderna. Exempel: > (snitt frukt däggdjur) () > (snitt () frukt) () > (snitt tomma-mängden ()) () > (snitt tre-tal fyra-tal) (2 3) > (snitt däggdjur havsdjur) (val) Använd funktionen equal? för att testa om två element är lika. (define (finns? e mangd) ; finns e i mangd? (cond ((null? mangd) #f) ((equal? e (car mangd)) #t) (else (finns? e (cdr mangd))))) (define (snitt mangd-1 mangd-2) (cond ((null? mangd-1) ()) ((null? mangd-2) ()) ((finns? (car mangd-1) mangd-2) (cons (car mangd-1) (snitt (cdr mangd-1) mangd-2))) (else (snitt (cdr mangd-1) mangd-2))))

Uppgift 3 Inom matematiken är Pascals triangel en geometrisk framställning av binomialkoefficienterna i form av en triangle: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Antag att det finns en Schemefunktion (pascal i j) som returnerar det element som finns på den i:onde radens j:onde position, t ex: (pascal 1 1) ger 1 (pascal 3 2) ger 2 (pascal 5 3) ger 6 (pascal 3 3) ger 1 (pascal 5 1) ger 1 Din uppgift är att skriva följande funktionerna: a. (pascal-coeffs n) som returnerar en lista med alla element på rad n i Pascals triangel. T ex, > (pascal-coeffs 1) (1) > (pascal-coeffs 3) (1 2 1) b. (all-pascal-coeffs n) som returnerar en lista som innehåller alla rader 1, 2,, n i Pascals triangel. T ex, > (all-pascal-coeffs 1) ((1)) > (all-pascal-coeffs 3) ((1) (1 1) (1 2 1)) Du får anta att båda funktionerna anropas med ett positivt heltal, så du behöver inte tänka på felsituationer.

;a (define (pascal-coeffs n) (define (iter m coeffs) (if (< m 0) coeffs (iter (- m 1) (cons (pascal n m) coeffs)))) (iter n ())) ;b (define (all-pascal-coeffs n) (define (iter count result) (if (= count 0) result (iter (- count 1) (cons (pascal-coeffs count) result)))) (iter n ()))

Uppgift 4 En svensk- engelsk ordbok har skapats enligt nedan. Ordboken innehåller ett godtyckligt antal ord: (define ordbok ( ((svensk. jag) (engelsk. i)) ((engelsk. have) (svensk. har)) ((engelsk. a) (svensk. en)) ((engelsk. computer) (svensk. dator)) ((svensk. ett) (engelsk. a)) ((svensk. bok) (engelsk. book)) )) a) Definiera två selektorer ord-engelska och ord-svenska som givet ett ord returnerar engelska resp svenska varianten på ordet, t ex, > (ord-engelska ((engelsk. computer) (svensk. dator))) computer > (ord-engelska ((svensk. ett) (engelsk. a))) a > (ord-svenska ((svensk. ett) (engelsk. a))) ett b) Definiera funktionen engelska->svenska som tar en lista på engelska ord och returnerar en lista som innehåller svenska motsvarigheten till dessa ord. engelska->svenska skall använda selektorerna ovan vid hämtning av rätt del i ett ord. Exempel: > (engelska- >svenska (i have a book)) (jag har en bok) Observera att vissa ord har två översättningar, I dessa fall spelar det ingen roll vilken översättning din procedur hittar först. Det spelar alltså ingen roll om I have a book översätts till jag har en bok eller jag har ett bok. ;a (define (ord-engelska uppslagsord) (ord-oversatt uppslagsord 'engelska)) (define (ord-svenska uppslagsord) (ord-oversatt uppslagsord 'svenska)) (define (ord-oversatt uppslagsord sprak) (let ((forsta (car uppslagsord)) (andra (cadr uppslagsord))) (if (eq? (car forsta) sprak) (cdr forsta) (cdr andra))))

;b ;ordlista innehåller de ord som skall överättas (define (engelska->svenska ordlista) (map (lambda (ord) (oversatt ord 'engelska 'svenska)) ordlista)) ;vi är bara intresserad av den första, alltså om flera ;översättningar finns på ett ord vi bryr oss inte. (define (sla-upp ord sprak) (car (filter (lambda (uppslagsord) (eq? ord (ord-oversatt uppslagsord sprak))) ordbok))) ;översätt ett ord från språk-1 till språk-2 ;slå upp ordet först och sedan plocka rätt del (define (oversatt ord sprak-1 sprak-2) (let ((uppslagsord (sla-upp ord sprak-1))) (ord-oversatt uppslagsord sprak-2)))