Løsningsforslag Skriftlig eksamen 5. januar 2011



Relaterede dokumenter
Skriftlig eksamen, Programmer som Data Onsdag 5. januar 2011

Løsningsforslag Skriftlig eksamen 3. januar 2013

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Løsningsforslag Skriftlig eksamen 9. januar 2012

Programmering og Problemløsning, 2017

Induktive og rekursive definitioner

ELEKTRONISK INDBERETNING POST 23/ VERSION 1.13

Eksempel: Skat i år 2000

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

/05/2013 Tilføjet dokumentation af bvn input for GetEngagementDetailed

REDCAPS DATADICTIONARY. Ekport og overblik over datadictionary Redigering af instrumenter via datadictionary Import a datadictionary

ELEKTRONISK INDBERETNING BØRNEDATABASEN VIA DGWS 13/ VERSION 1.02

En intro til radiologisk statistik

BOSK F2011, 1. del: Udsagnslogik

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11


Indberetningsstruktur for Elevplanindberetning

JavaScript. nedarvning.

Samlet Funktion Køn Anciennitet Alder

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering...

Rekursion C#-version

Uniq.Survey-Xact.DK. Vejledning. Rambøll Management Olof Palmes Allé 20 DK-8200 Århus N Denmark. Tlf:

Programmering og Problemløsning, 2017

Autencitetssikring. Vejledning til autenticitetssikringsniveau for den fællesoffentlige log-in-løsning. Side 1 af september Version 1.0.

Om EthicsPoint. Om EthicsPoint Indrapportering Generelt Sikkerhed og fortrolighed i forbindelse med indrapportering Tips og bedste praksisser

Dokumentation af programmering i Python 2.75

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

DM517:Supplerende noter om uafgørlighedsbeviser:

Øvelse 10. Tobias Markeprand. 11. november 2008

"50+ i Europa" Helbred, aldring og pensionsforhold i Europa

Programmering for begyndere Lektion 2. Opsamling mm

HåndOffice Spillertrupper og Holdkort

Appendices) Appendix"1:"Interview"Guides" Appendix"2:"Transcriptions" Appendix"3:"Organic"Restaurants"and"Cafés"

Sådan vedligeholder du UNI Login med data fra KMD Elev

Abstrakte datatyper C#-version

1 1 t ( ) x k ================= sin( x) + 4 og har graf gennem (0,2), dvs F(0) = x + k

De fire beviser for sjælens udødelighed. i Platons Faidon

Kapitel 3 Betinget logik i C#

Af Helle Wachmann og Bolette Balstrup, pædagoger og henhv. leder og souschef i Svanen TEMA: ANERKENDENDE PÆDAGOGIK OG INKLUSION, VERSION 2.

Et SML-program til at finde rødder i en kontinuert funktion

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Du har arbejdet for dine penge. Nu skal de arbejde for dig. - Drop opsparingen og investér i stedet pengene.

13 responses. Summary. [Image] Spørgeskema. Landsbytræf Spørgeskema til oplægsholdere og stadepladser - Go...

DANMARKS TEKNISKE UNIVERSITET Side 1 af 17 sider. Skriftlig prøve, den: 19. december 2012 Kursus nr : (navn) (underskrift) (bord nr)

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer

Puslespil om den danske model. Vis sammenhængen i den danske model

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Pakkens indhold. Ordliste. Powerline Adapter

Løsning af skyline-problemet

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

BRP Kursusintroduktion og Java-oversigt

Om brændværdi i affald

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Bilag 3: Elevinterview 2 Informant: Elev 2 (E2) Interviewer: Louise (LO) Interviewer 2: Line (LI) Tid: 10:45

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Indsigelse mod vindmølleplanlægning for Jernbæk & Holsted N Til rette vedkommende i Vejen Kommune:

Yderligere udvidelser af oversætter for Minimal

Reeksamen, DSDS, forår 2008

Nyhedsmodul brugermanual

15#1 #66#2 = 7% 8 "! 3!:# %:8++#*%# 6 ) =#1!5 :(* 2011# 6! !"#2 # :(* (22# ):# 1#5) (:#

En mini e-bog til dig fra Solrød Kommune i samarbejde med Aros Business Academy 7 FEJL DU IKKE MÅ BEGÅ, NÅR DU SØGER JOB

Bilag til den indsigelse, som sommerhusgrundejerforeningerne på Samsø har fremsendt til Skov- og Naturstyrelsen den 27. april 2012.

Premier. Forforstærkere. Brugervejledning. For modellerne

ZA6588. Flash Eurobarometer 411 (Cross-border Access to Online Content) Country Questionnaire Denmark

TYPOGRAFI OG OMBRYDNING

BØRN OG UNGES TRIVSEL

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

ZA5898. Flash Eurobarometer 384 (Citizens Awareness and Perceptions of EU Regional Policy, wave 3) Country Questionnaire Denmark

Skriftlig eksamen i Datalogi

Håndtering af stof- og drikketrang

BØRNEINDBLIK 6/14 STRESSEDE FORÆLDRE SKÆLDER UD OG RÅBER

Serviceoperationer Puls

KIDSCREEN-52 Health Questionnaire for Children and Young People. Parent Version Danish (DK)

ZA5563. Flash Eurobarometer 330 (Young People and Drugs) Country Questionnaire Denmark

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

R e g e l f o r m a l i s m e r til b r u g v e d datamatisk lingvistik.


Mini guides til eksamen

Rapport Elevtrivsel Marts 2016

SDU Assignment - undervisere

Relationel Algebra...1. Indholdsfortegnelse...1. Operationer på den relationelle model...2

Grænseflade til afhentning og indberetning af prøvekarakterer i dansk og matematik på Optagelse.dk

"Hvor kommer bruset i brusetabletter fra?"

DR DR Byen Emil Holms Kanal København C Att.: DR Jura Politik Strategi. Klage over skjult reklame for Apple ipad sendt på DR Update

ISO 27001/27002:2013 i SecureAware Policy TNG

CFunding-IT. Web DB Multimediedesigner 3. Semester Gruppe 15

Eksempler på elevbesvarelser af gådedelen:

Lodret belastet muret væg efter EC6

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Moduler i Standard ML

Installation og opsætning af Outlook klient til Dynamics CRM

Formula 1. Hvis du vil udfordre dine elever, kan du bede dem slå gloserne fra, når de læser teksten.

Transkript:

Løsningsforslag Skriftlig eksamen 5. januar 2011 Version 3, 2011-01-28 Spørgsmål 1 Spørgsmål 1.1 b c d 1 2 b c d Spørgsmål 1.2 Det regulære udtryk kunne være: (b c d)((b c d)(b c d)) Spørgsmål 1.3 Her er en let reduceret version af den NF man får fra Mogensens opskrift, idet der benyttes den oplagte konstruktion for én-eller-flere gentagelsen +: < 2 3 1 < 5 6 7 4 < 8 9 10 Spørgsmål 1.4 < S1 S2 S3 S4 S6 S7 S5 1

Spørgsmål 2 Spørgsmål 2.1 ρ 11 : int Spørgsmål 2.2 ρ 11 + 10 : int ρ 10 : int - (4) - (2) ρ true : bool ρ 22 : int - (pair) ρ (true, 22) : bool int - (pair) ρ (11 + 10, (true, 22)) : int (bool int) ρ e : t u - (fst) ρ fst(e) : t ρ e : t u - (snd) ρ snd(e) : u Spørgsmål 2.3 Regel (1) er korrekt. Den siger at udtrykket e r skal have par-type t u, og let-kroppen e b skal typetjekkes i et environment hvor x har type t og y har type u. Dette typetjek skal give en type t b som så er typen for hele let-udtrykket. Regel (2) er forkert fordi e b kunne være false, der jo umuligt kan have type int. Regel (3) er forkert fordi den ikke kræver at e r har en par-type. Regel (4) er forkert af samme grund faktisk kræver ikke en gang at e r er type-korrekt. Regel (5) er forkert af to grunde: for det første er det urimelig at kræve at e b har samme type t som første komponent af e r for det andet tillader den at x og y optræder i e r hvilket er meget ejendommeligt det ville tillade udtryk som dette: let (x,y) = (x,y) in x end som det er svært at tillægge nogen værdi. 2

Spørgsmål 3 Spørgsmål 3.1 Ligesom der er et terminalsymbol (eller token) TEXT for tekster omgivet af skråstreger, antager jeg at der er et terminalsymbol LBEL for navne på spørgeskemadefinitioner og spørgsmål. Questionnaire ::= "questionnaire" LBEL "{" Questions "}" Questions ::= * empty * Question Questions Optional ::= * empty * "optional" BaseQuestion ::= Optional "freetext" LBEL TEXT "" Optional "number" LBEL TEXT "" Optional "singlechoice" LBEL TEXT Textlist "" Optional "multichoice" LBEL TEXT Textlist "" Texts ::= TEXT TEXT Texts Textlist ::= "[" Texts "]" Spørgsmål 3.2 og 3.3 Main: QUESTIONNIRE NME LBRCE Questions RBRCE { ($2, $4) } Questions: * empty * { [] } Question Questions { $1 :: $2 } Optional: * empty * { false } OPTIONL { true } Question: Optional FREETEXT NME TEXT SEMI { Freetext($1, $3, $4) } Optional NUMBER NME TEXT SEMI { Number($1, $3, $4) } Optional SINGLECHOICE NME TEXT Textlist SEMI { Singlechoice($1, $3, $4, $5) } Optional MULTICHOICE NME TEXT Textlist SEMI { Multichoice($1, $3, $4, $5) } Texts: TEXT { [$1] } TEXT Texts { $1 :: $2 } Textlist: LBRCK Texts RBRCK { $2 } 3

Spørgsmål 4 Spørgsmål 4.1 Lidt fremsyn viser at det er nyttigt at definere en hjælpefunktion mapndconcat f xs af type ( a - string) - a list - string som anvender funktion f på alle elementer af listen xs og konkatenerer de resulterende strenge. (Funktionerne String.concat og List.map findes i PLCSD appendix, for eksempel): let mapndconcat f xs = String.concat "" (List.map f xs) let makettributes attributes = mapndconcat (fun (a, v) - " " + a + "=" + enquote v) attributes Man kan selvfølgelig også definere makettributes direkte, rekursivt: let rec makettributes attributes = match attributes with [] - "" (a, v) :: rest - " " + a + "=" + enquote v + makettributes rest Spørgsmål 4.2 Her skal man selvfølgelig benytte sig af den netop definerede makettributes funktion: let tag0 tag attributes = "<" + tag + makettributes attributes + "" let tag1 tag attributes contents = "<" + tag + makettributes attributes + "" + contents + "<" + tag + "" Spørgsmål 4.3 let makefreetext label ask = ask + ": " + tag0 "input" [("type","text") ("name",label)] Spørgsmål 4.4 Her bruges hjælpefunktionen fra 4.1. For at få hver tabellinje pænt på sin egen tekstlinje tilføjes et linjeskift "\n" men der står udtrykkeligt i opgaven at dette skal man ikke bekymre sig om: let maketable lines = tag1 "table" [] (mapndconcat (fun line - tag1 "tr" [] (tag1 "td" [] line) + "\n") lines) Løsningen kunne nok være blevet en anelse klarere ved at indføre nye hjælpefunktioner tr og td: let tr contents = tag1 "tr" [] contents let td contents = tag1 "td" [] contents let maketable lines = tag1 "table" [] (mapndconcat (fun line - tr (td line) + "\n") lines) Spørgsmål 4.5 Også her bliver svaret klarere ved at definere en hjælpefunktion makesinglechoice1 som genererer HTMLkode svarende til en enkelt valgmulighed. let makesinglechoice1 label choice = tag1 "input" [("type", "radio") ("name", label) ("value", choice)] choice let makesinglechoice label ask choices = ask + ":\n" + maketable (List.map (makesinglechoice1 label) choices) 4

Bemærk at hjælpefunktionen makesinglechoice1 kaldes med kun ét argument label resultatet er en partielt anvendt funktion af type string - string som er den List.map anvendes på. lternativt kan man anvende en anonym funktion: let makesinglechoice label ask choices = ask + ":\n" + maketable (List.map (choice - tag1 "input" [("type", "radio") ("name", label) ("value", choice)]) choices) Eller man kan definere en rekursiv hjælpefunktion hvis man ikke kan huske at List.map findes eller hvordan den virker men det skulle man gerne kunne. Spørgsmål 4.6 let makequestion question = match question with Freetext(isOptional, label, ask) - makefreetext label ask Number(isOptional, label, ask) - makenumber label ask Singlechoice(isOptional, label, ask, choices) - makesinglechoice label ask choices Multichoice(isOptional, label, ask, choices) - makemultichoice label ask choices 5