TDDC74 Programmering, abstraktion och modellering DUGGA 1

Relevanta dokument
TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

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

Våra enkla funktioner eller procedurer

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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

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

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

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

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

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

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

TDDC74 Programmering: Abstraktion och modellering Datortenta

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

Procedurer och villkor

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 Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

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

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

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

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

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

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

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

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

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

Förra gången: Primitiva data

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

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

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 8 10, 3 mars 2016

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

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

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

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

TDP002 - Imperativ programmering

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

TDDC74 Lab 02 Listor, sammansatta strukturer

Np MaB vt Låt k = 0 och rita upp de båda linjerna. Bestäm skärningspunkten mellan linjerna.

Dugga 2 i Matematisk grundkurs

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

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

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

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

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

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

DD1361 Programmeringsparadigm. Carina Edlund

Programmering II (ID1019) :00-17:00

Föreläsning 9 Exempel

5B1147. Envariabelanalys. MATLAB Laboration. Laboration 1. Gränsvärden och Summor

LABORATION 1. Inledande Lisp - rekursion

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

PROGRAMMERING-Java Omtentamina

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

Institutionen för Matematik, KTH Lösningar till tentamen i Analys i en variabel för I och K (SF1644) 1/ e x h. (sin x) 2 1 cos x.

TDDC74 - Lektionsmaterial C

TATA42: Föreläsning 2 Tillämpningar av Maclaurinutvecklingar

HI1024 Programmering, grundkurs TEN

2 februari 2016 Sida 1 / 23

HI1024 Programmering, grundkurs TEN

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Tentamen i Envariabelanalys 2

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

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å

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

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

HI1024 Programmering, grundkurs TEN

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

TDDC77 Objektorienterad Programmering

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

I dag: Blockstruktur, omgivningar, problemlösning

Lösningar till tentamen i EIT070 Datorteknik

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Anteckningar för kursen "Analys i en Variabel"

LMA515 Matematik, del B Sammanställning av lärmål

Tentamen TEN1 HI

Rekursiva algoritmer sortering sökning mönstermatchning

TSBB14 Laboration: Intro till Matlab 1D

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Transkript:

AID-nummer: Datum: 2011-02-04 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 1 Fredag 4 feb 14-16 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. Betygsgradering: Det är tre duggor. 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 20p. För betyget 4 minst 25p och för betyget 5 minst 30p. Lycka till

AID-nummer: Datum: 2011-02-04 2 Uppgift 1 (2 poäng) Vi gör följande definitioner: (define x (+ 1 2 3)) (define (f x) (+ (* 2 x) 3)) (define g (lambda (y) (+ x (f y)))) (define (h x) (lambda (y) (* x y))) Vad blir värdet av följande uttryck? Om uttrycket ej går att beräkna, ange vad det blir för fel. x = (x) = f = (f (+ 1 x)) = (g) = (f (g 2)) = (h 1) = ((h 2) 3) = Poängsättning: 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-02-04 3 Uppgift 2 (1 poäng) Vi har följande funktion (define (f x) (if (< (hämta-värde x) 0) 0 (hämta-värde x))) Vi antager vi har en funktion hämta-värde, som i en databas hämtar fram ett värde och som är kostsam, så att man inte vill dubblera anrop till den i onödan. Vi har diskuterat tre olika sätt att lösa problemet, som vi kan karakterisera som lokal variabel, hjälpfunktion eller lambda-uttryck. Skriv om funktion f på två av dessa sätt så att onödiga dubblerade anrop ej görs. Första sättet: (define (f x) Andra sättet: (define (f x)

AID-nummer: Datum: 2011-02-04 4 Uppgift 3 (3,5 poäng) I laborationen bearbetade ni enskilda siffror i ett positivt nummer (> 0). Där infördes två primitiver last-digit och but-last-digit, som ni lämpligen använder i denna uppgift. Dessutom infördes number-of-digits, som ni också kan använda i dessa uppgifter. (last-digit 123) = 3 (but-last-digit 123) = 12 (number-of-digits 3421) = 4 3a. (1p) Definiera först två funktioner add-digit-last och add-digit-first, som tar ett tal (> 0) och en siffra och lägger till siffran sist resp. först. Lägger vi 0 först i ett tal ges ingen effekt. (add-digit-last 5 123) = 1235 (add-digit-last 0 123) = 1230 (add-digit-first 5 123) = 5123 (add-digit-first 0 123) = 123 (define (add-digit-last digit number) (define (add-digit-first digit number)

AID-nummer: Datum: 2011-02-04 5 Uppgift 3, forts 3b. (1,5p) Skriv en funktion number-of-zeros, som räknar antalet nollor i ett tal (> 0). Ett tal kan ej ha inledande nollor. (number-of-zeros 10020300) = 5 (define (number-of-zeros number) Beskriver din lösning en rekursiv (linear) eller iterativ processlösning? Motivera genom att göra en utveckling av (number-of-zeros 102) med substitutionsmodellen. 3c. (1p) Skriv en funktion calc-new-number, som ändrar vissa siffror i ett tal enligt följande: Om siffran < 5 skall den dubbleras, är 5 <= siffran < 8 skall siffran vara som den är, annars skall siffran minskas med 2 (calc-new-number 123456789) = 246856767 (define (calc-new-number number)

AID-nummer: Datum: 2011-02-04 6 Uppgift 4 (2 poäng) MacLaurinutveckling: Man kan använda summor för att beräkna funktionsvärden. Följande samband gäller: k k + 1 x ln( 1+ x) = ( 1) för x < 1 k k = 1 Vi vill använda denna formel för att beräkna ln i intervallet 1-2. Vi antar vi har en global variabel *steps* som anger hur många termer i summan, som skall beräknas. Vill vi räkna med 100 termer skriver vi (define *steps* 100) Topp-funktionen kallar vi calc-ln, som tar ett argument mellan 1 och 2. Lämpligen införs en rekursiv underfunktion som gör själva summeringen av termerna. 1 (define (calc-ln x) ; 1 <= x < 2 1 Funktionen expt utför upphöjt, t ex (expt 2 4) beräknar 2 4

AID-nummer: Datum: 2011-02-04 7 Uppgfit 5 (1,5 poäng) Här kan de primitiva funktionerna från uppgift 3 användas. 5a. (1p) Definiera en funktion remove-digits, som tar ett positivt tal och en villkorsprocedur, som tar bort de siffror i talet som uppfyller villkorsproceduren. (remove-digits 123456 odd?) = 246 ; tar bort de udda siffrorna (1, 3 och 5) (define (remove-digits number filter-fn) ; filter-fn tar en siffra som argument 5b. (0,5p) Använd remove-digits för att svara på följande frågor: Vad blir värdet av (remove-digits 123456789 (lambda (d) (or (< d 2) (> d 5)))) = Komplettera funktionen remove-a-digit, som tar bort alla förekomster av ett visst givet tal. (remove-a-digit 3 132334) = 124, tar bort all 3 orna (define (remove-a-digit digit number) (remove-digits number ))

AID-nummer: Datum: 2011-02-04 8 Uppgift 6 (2p) Skriv en funktion average-fn, som tar en funktion fn som argument och som returnerar en ny funktion som värde, med följande samband: g(x) = (f(x) + f(x+1)) / 2 Vi skall kunna skriva (define (f x) (+ (* x x) 1)) ((average-fn f) 1) = 3½, dvs vi har beräknat (f(1) + f(2)) / 2 = (2 + 5) / 2 Vi skulle även kunna definiera g med (define g (average-fn f)) och då skriva (g 1) (define (average-fn fn) Visa genom noggrann utveckling med substitionsmodellen, vilket värde som erhålls av ((average-fn (lambda (x) (+ x 5))) 1)