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

Relevanta dokument
TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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

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

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

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

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

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 Lab 02 Listor, sammansatta strukturer

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

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

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

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

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 Lab 04 Muterbara strukturer, omgivningar

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 Programmering, abstraktion och modellering. Tentamen

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)

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

Datalogi, grundkurs 1

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

TDDC74 - Lektionsmaterial C

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

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

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

Våra enkla funktioner eller procedurer

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Procedurer och villkor

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

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

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?

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen i Introduktion till programmering

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Programmering II (ID1019) :00-17:00

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

Tillämpad Programmering (ID1218) :00-13:00

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

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Datalogi, grundkurs 1

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.

Programmering II (ID1019)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDC77 Objektorienterad Programmering

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

kl Tentaupplägg

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

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

Uppgift 1 (grundläggande konstruktioner)

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

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

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

kl Tentaupplägg

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Tentamen Datastrukturer (DAT036)

Programmering II (ID1019) :00-12:00

Föreläsning 9 Exempel

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

Programkonstruktion. Tentamen,

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

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å

kl Tentaupplägg

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

729G74 - IT och programmering, grundkurs. Dugga.

kl Tentaupplägg

Tentamen i. TDDA 69 Data och programstrukturer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

DD1361 Programmeringsparadigm. Carina Edlund

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

Programkonstruktion och Datastrukturer

Programkonstruktion. Tentamen,

tentaplugg.nu av studenter för studenter

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

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

kl Tentaupplägg

TDDI TDDI22 Tentaregler

Objektorienterad programmering, Java, 5p TDBA63

kl Tentaupplägg

kl Examination - Ada

Uppgift 1 ( Betyg 3 uppgift )

Transkript:

TDDC74 Programmering: Abstraktion och modellering Dugga 1, 2017-02-22 kl 14-16 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 bland annat konsekvent språk. Du behöver inte skriva kodkommentarer, annat än för väldigt svårförklarade hjälpfunktioner (som bör undvikas). Namngivning ska vara tillräcklig (och följa konventioner). Skriv inte onödigt komplicerade lösningar. Om det är naturligt, definiera gärna hjälpfunktioner! Hjälpfunktioner ska som vanligt lösa tydliga och lättförklarade uppgifter. Du får använda alla tillgängliga primitiver och språkkkonstruktioner i Racket, om annat inte anges i uppgiftstexten. Frågor Är något otydligt i uppgifterna kan du använda meddelande-funktionen i tentaklienten för att skicka frågor till rättande lärare. Att lämna in Skicka in uppgifterna med hjälp av tentaklienten, 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. När du har lämnat in en uppgift, fortsätt arbeta på nästa. Du har en inlämning per uppgift (så skicka inte ev a- och b-uppgifter separat). Följ angivna namn, och testa att alla körexempel i uppgiften fungerar exakt som de är inskrivna! Din totalpoäng på duggan ges som summan av lösningar du lämnat in i tid, oavsett om de hinner rättas klart inom skrivtiden eller ej. 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 50% av det totala poängen. 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 filen uppg1.rkt. 2

Uppgift 2, Teori och semantik (3p) 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. Det fungerar inte. Varför inte? Svara kortfattat (max en-två meningar). (define n (+ n 1)) b) Vi skriver in koden nedan i Racket. Varför fungerar den inte? Svara kortfattat (max en-två meningar). (let ((x 0) (y x)) (+ x y)) c) Ger följande procedur upphov till en iterativ eller rekursiv process? Varför? Svara kortfattat (max en-två meningar). (define (f1 n) (if (= n 0) 112 (f1 (- n 1)))) (f1 100) 3

Uppgift 3, Enkelrekursion (4p) Skriv dina svar i filen uppg3.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. Inkludera uttrycket (provide divisors prime?) i din fil. a) Definiera en funktion divisors som tar ett heltal n 0 och returnerar en lista av talets delare. Detta är exempel på korrekt utdata: > (divisors 16) (1 2 4 8 16) > (divisors 17) (1 17) Det är helt OK att skapa en funktion som returnerar listan i omvänd ordning. b) Definiera en funktion prime? som testar om ett heltal n 2 är ett primtal (ett tal som enbart är delbart med sig självt och ett). Du får självklart använda tidigare definierade funktioner. > (prime? 4) #f > (prime? 3) #t > (prime? 257) #t > (if (prime? 257) (printf "257 är ett primtal!~n") (printf "Nej~n")) 257 är ett primtal! 4

Uppgift 4, Dubbelrekursion (3p) Skriv dina svar i filen uppg4.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. Inkludera raden (provide reverse-all) i din fil. Skapa en funktion reverse-all som tar en lista, potentiellt innehållande underlistor (alla äkta listor, inte allmänna parstrukturer) och vänder den. Begränsning: Du får inte använda Rackets reverse-funktion. Så här ska det fungera: > (reverse-all (1 2 3 4)) (4 3 2 1) > (reverse-all (1 2 (3 4) 5)) (5 (4 3) 2 1) > (reverse-all (1 2 (a b (- /)) 5)) (5 ((/ -) b a) 2 1) > (reverse-all (1 () 5)) (5 () 1) 5

Uppgift 5, Högre ordningens funktioner (och rekursion) (3p) Skriv dina svar i filen uppg5.rkt. Det är viktigt att alla funktioner som anges nedan har exakt samma namn som i uppgiften. Inkludera raden (provide dmap) i din fil. I Racket finns funktionen map, som tar en funktion f och en lista seq och returnerar en lista som ser likadan ut, med undantag för att f applicerats på vart och ett av elementen. Ett exempel: > (define (square x) (* x x)) > (map square (1 2 3)) (1 4 9) Jämför map-to-each i laboration 2. Du får nu in en lista med listor, modell ((a b c) (d e f)). Exakt en nivå av listori-listor kan förekomma. Till exempel förekommer inte listor som ((1 2 (3 4 5)) (7 8)) eller (1 2). Definiera en funktion dmap som tar en funktion f, en lista av listor sseq och returnerar en likadan lista av listor, men med f applicerat på vart och ett av värdena. Din kod måste använda map, och vara på formen (define (dmap f sseq) (map????? sseq)) Så här ska det fungera: > (dmap square ((1 2 3) (4 5 6))) ((1 4 9) (16 25 36)) > (dmap square ((1 2 3) () (4 5 6))) ((1 4 9) () (16 25 36)) > (dmap (lambda (x) a) ((1 2 3) (4) (5))) ((a a a) (a) (a)) 6