TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

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

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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

TDDC74 Programmering: Abstraktion och modellering Datortenta

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

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

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

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 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

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

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

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

TDDC74 Lab 02 Listor, sammansatta strukturer

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 3

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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?

Våra enkla funktioner eller procedurer

TDDC74 - Lektionsmaterial C

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

Procedurer och villkor

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

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

Tentamen Datastrukturer (DAT036)

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Lösningsförslag till tentamen Datastrukturer, DAT037,

Datalogi, grundkurs 1

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

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen, EDAA10 Programmering i Java

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

kl Tentaupplägg

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDE44 Programmering, grundkurs

Tentaupplägg denna gång

Kryptokorsordslösare Programmeringsmetodik DV (period 2) Inlämningsuppgift 1

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

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Tentamen Datastrukturer (DAT036)

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

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

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

Tentamen Datastrukturer (DAT036)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

LABORATION 1. Inledande Lisp - rekursion

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 18 Filer och avbildningar

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

Programmering II (ID1019)

Tentamen i. TDDA 69 Data och programstrukturer

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.

729G04 Programmering och diskret matematik

kl Tentaupplägg

Ordlistor, filhantering och ut på webben. Linda Mannila

Föreläsning 6: Introduktion av listor

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

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

Föreläsning 9 Datastrukturer (DAT037)

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen Datastrukturer (DAT036)

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

kl Tentaupplägg

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

Uppgift 1 ( Betyg 3 uppgift )

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

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen TEN1 HI

Planering av ett större program, del 2 - for och listor. Linda Mannila

Tentamen Datastrukturer, DAT037 (DAT036)

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Programmering II (ID1019) :00-12:00

Uppgift 1 ( Betyg 3 uppgift )

729G04 Programmering och diskret matematik

Transkript:

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning. Använd väl valda namn på parametrar och indentera din kod. Väl valda namn inkluderar konsekvent språk med mera. Om det är naturligt, definiera gärna hjälpfunktioner! Hjälpfunktioner ska som vanligt lösa tydliga och lättförklarade uppgifter. Du behöver inte skriva kodkommentarer, om det inte är en väldigt svårförklarad hjälpfunktion. Namngivning ska vara tillräcklig (och följa konventioner). Du får använda alla tillgängliga primitiver och språkkkonstruktioner, om annat inte anges. Skriv inte onödigt komplicerade lösningar. Det kan, i värsta fall, ge avdrag. Att lämna in Skicka in uppgifterna med hjälp av exam-klienten, när du är klar med dem! Du får svar via klienten när din uppgift är rättad. Vänta inte på att alla uppgifter är klara med att lämna in. Du har en inlämning per uppgift. Följ angivna namn, och testa att alla körexempel i uppgiften fungerar exakt som de är inskrivna! Betyg Det finns två duggor i kursen. På varje dugga kan man få som mest 15p. Totalpoängen avgör slutbetyget i kursen. För trea räcker ca 50%. Ett resultat man inte är nöjd med, kan plussas vid tentamenstillfället i juni. Lycka till!

Uppgift 1, Länkade strukturer (2p) Skriv kod som ger upphov till följande strukturer och bindningar. Skriv dina lösningar i uppg1.rkt. 2

Uppgift 2, Teori och semantik (1+1+1p) I dessa uppgifter svarar ni genom enkel textinlämning. Skriv era svar som kodkommentarer i uppg2.rkt och lämna in så. Lämna in uppgift a, b och c (eller de du svarar på) samtidigt, i samma fil. a) Vi skriver in koden nedan, i exakt den ordning som den står. Fungerar detta? Varför/varför inte? Svara kortfattat (max en-två meningar) som kodkommentar. (define n m) (define m 1) b) Skriv en funktion g som gör att detta returnerar 1: <din kod där du definierar funktionen g> (define (f f) (f 13)) (f g) c) Ger denna procedur upphov till en iterativ eller rekursiv process? Varför? Svara kortfattat (max en-två meningar) som kodkommentar. (define (f3 n) (if (= n 0) 112 (if (= 112 (f3 (- n 1))) 112 (f3 (- n 1))))) (f3 100) 3

Uppgift 3, Enkelrekursion Skriv dina svar i filen uppg3.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. a) Skriv en funktion translate, vilken givet ett ord och en ordlista med översättningar, returnerar översättningen på ordet. Om ordet inte finns i ordboken skall #f returneras. Du får inte använda inbyggda funktioner för associationslistor (som assoc eller assq). Följande exempel visar hur funktionen skall fungera: > (define dictionary ((broder. bar^adar) (fader. pedar) (du. to) (jag. man) (moder. m^adar) (människa. ^adam) (namn. n^am) (tak. t^aq) (vacker. zib^a) (vän. dust))) > (translate jag dictionary) man > (translate mamma dictionary) #f > (translate moder dictionary) m^adar b) Definiera en funktion add-word som returnerar en ordbok med ett extra/ombundet ord i. Så här ska det fungera: > (define dict0 (add-word katt kot dictionary)) ;; dict0 är som dictionary, men med ett extra ord > (define newdictionary (add-word fader otets dict0)) > (translate katt newdictionary) kot > (translate moder newdictionary) m^ad^ar > (translate fader newdictionary) otets Det spelar ingen roll om det finns dubbletter i listan, uppslagningen ska använda den senast tillagda. 4

Uppgift 4, Dubbelrekursion Skriv dina svar i filen uppg4.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. Varje parstruktur kan speglas. Så (1. 2) speglat blir (2. 1). Listan (1) är (1. ()) och speglas till ( (). 1 ). Din uppgift är att skapa en funktion reflect som tar en parstruktur eller ett atomärt värde, och returnerar speglingen av den. Alla delträd eller deluttryck måste också speglas. Så här ska den fungera: > (reflect 5) 5 > (reflect ()) () > (reflect (1. 2)) (2. 1) > (reflect ((a. b). (c. d))) ((d. c) b. a) Notera att det sista är DrRackets sätt att skriva ut ((d. c). (b. a)). Vill man testa, kan man jämföra de båda uttrycken med equal?-proceduren. > (equal? ((d. c) b. a) ((d. c). (b. a))) #t 5

Uppgift 5, Högre ordningens funktioner (och rekursion) Skriv dina svar i filen uppg5.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. a) I laboration 2 har du definierat en egen map-variant, som fungerar på vanliga listor. Nu ska du generalisera den, till en funktion som fungerar på valfria parstrukturer och atomära värden. Så här ska funktionen fungera: > (define (square x) (* x x)) > (tmap square 5) ;; OBS! Atomärt värde! Det är OK! 25 > (tmap null? 5) #f > (tmap null? ()) ;; vi applicerar aldrig funktionen på tomma listan () > (tmap square (5 10 15)) (25 100 225) > (tmap square (5. (3. 10))) (25 9. 100) Notera att det sista är DrRackets sätt att skriva ut (25. (9. 100)), vilket kan testas lätt: > (equal? (25 9. 100) (25. (9. 100))) #t b) Definiera en funktion replace som tar en struktur t (som ovan), ett atomärt värde old och ett atomärt värde new. Funktionen ska returnera en likadan struktur, förutom att old bytts ut mot new. Du måste använda tmap i lösningen, så din kod kommer att se ut som (define (replace t old new) (tmap????????? t)) 6