TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Relevanta dokument
KOMPLETTERANDE HEMTENTAMEN TDDB53

KOMPLETTERANDE HEMTENTAMEN 2 TDDB53

KOMPLETTERANDE HEMTENTAMEN TDDB53

Tentamen Grundläggande programmering

Datatyp - mera. Begreppet värde, igen. Ett slags mått på en egenskap, eller något fenomen. Ska ges en bred tolkning!

Exempel på ett litet Ada-program

Föreläsning 6: Introduktion av listor

Klassdeklaration. Metoddeklaration. Parameteröverföring

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

Introduktion till MATLAB, med utgångspunkt från Ada

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Preliminär elmarknadsstatistik per månad för Sverige 2014

Föreläsning 3: Booleans, if, switch

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Månadsnamn september Några deklarationer

Imperativ programmering. Föreläsning 2

Språket Python - Del 1 Grundkurs i programmering med Python

Tentamen i. TDDC67 Funktionell programmering och Lisp

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 ID1004 Objektorienterad programmering October 29, 2013

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

2016, Arbetslösa samt arbetslösa i program i GR i åldrarna år

Preliminär elmarknadsstatistik per månad för Sverige 2014

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 5: Introduktion av pekare

Föreläsning 1: Momstabellen i C++

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

EN BÄTTRE BALANS MED SVAGT SJUNKANDE TRÄVARUPRISER 2015 OCH EN NY PRISUPPGÅNG I MITTEN AV 2016

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Systemutvecklare SU13, Malmö

Logik och kontrollstrukturer

Parameteröverföring. Exempel. Exempel. Metodkropp

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Sista delen av kursen

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Föreläsning 4: Poster

2D1310 Programmeringsteknik Tentamen (1p) lördag 29 april 2000 kl 14-17

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

Översikt över Visual Basic

Programmering A. Johan Eliasson

2D1339 Programkonstruktion för F1, ht 2003

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen i Algoritmer & Datastrukturer i Java

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

EN BÄTTRE BALANS MED SVAGT SJUNKANDE TRÄVARUPRISER 2015 OCH EN NY PRISUPPGÅNG I MITTEN AV 2016

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Visual Basic, en snabbgenomgång

Twincat: PLC Control

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Deklarationer/definitioner/specifikationer

EN BÄTTRE BALANS MED SVAGT SJUNKANDE TRÄVARUPRISER 2015 OCH EN NY PRISUPPGÅNG I MITTEN AV 2016

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

"Crash Course in Programming"

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

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

Föreläsning 3-4 Innehåll

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Beräkningsvetenskap föreläsning 2

Preliminär elmarknadsstatistik per månad för Sverige 2013

Uppgift 1 (grundläggande konstruktioner)

Grundläggande datalogi - Övning 1

Tentamen i. Programmering i språket C

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

Programmeringsteknik I

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

DAT043 Objektorienterad Programmering

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

5 Grundläggande in- och utmatning

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

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

Programmeringsteknik med C och Matlab

Pascal... Pascal. Pascal... Pascal...

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

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

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Transkript:

Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel: Poänggränser: Inga Följande poängkrav, med eventuell bonus inräknad, gäller i princip: för betyg 3: 7 p (av totalt 16) för betyg 4: 11 p för betyg 5: 14 p

2 1. (2 p) I dessa delfrågor förekommer vanligen någon slags utgångspunkt i deklarationer eller liknande, och den följs av några påståenden i) v). Du ska svara genom att för varje påstående helt enkelt ange om detta är sant (S) eller falskt (F), givet utgångspunkten. Antalet sanna/falska påståenden per delfråga kan variera från 0 och uppåt! Du behöver inte motivera ditt S eller F! 3 6 rätt ger 0,5 tentapoäng (tp), 7 9 rätt ger 1 tp, 10 12 rätt ger 1,5 tp, och 13 15 rätt ger 2 tp. 1.a Variablerna X och Y tillhör datatypen Float. Följande konstruktioner är då enligt språkreglerna korrekt formulerade Float värden: i) X mod 10 ii) Float Truncation(Y) iii) Get(Y) iv) Y or abs(x) v) X := Y * 2.0 1.b Dessa deklarationer gäller: type Point is record x, y : Float; end record; P1 : Point; C : Float; Nedanstående konstruktioner är då, enligt språkets regler, korrekt skrivna: i) C := Point.x ii) P1.y = C iii) Point First iv) P1 := (0.0, 1.0) v) P1(x) := C 1.c Här råder följande deklarationer: type Month is (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); M : Month := Aug; I : Integer; Nedanstående styrning av for satsen (dvs inledningen före ordet loop) är då konstruerad på korrekt sätt: i) for x in Jan.. May ii) for x in Month(I).. M iii) for M in Month iv) for I in M.. Jun v) for x in Month First.. Oct

3 2. (2 p) Du ska här tolka innebörden av ett par små Ada konstruktioner: 2.a Variablerna I och S har typen Integer, och båda har från början värdet 1. Vilka värden, i tur och ordning, kommer S att ha vid markeringen... när nedanstående kod utförs? while I <= 7 loop S := I; for J in reverse 1.. I 1 loop S := S * J; I := I + 1;... 2.b A, B och X är Float variabler. Beskriv på vanlig svenska och så kortfattat som möjligt vilket storleksförhållande som måste råda mellan dessa tre variabler för att uttrycket nedan ska vara sant (true). Float Max(A, B) abs(a B) / 2.0 = X 3. (3 p) I den här uppgiften ska du själv skriva lite Ada kod. 3.a En subrutin anropas som Incr(x, p), där x står för en Integervariabel och p för ett logiskt värde. Subrutinen ska åstadkomma följande: om p är sann ska x ökas med 1, annars minskas med 1. Skriv definitionen av Incr. 3.b I variabeln P1 nedan finns samlat all arbetstid för en person under ett år, veckovis, och såväl normal arbetstid som övertid. Skriv de lösryckta satser i Ada (nån subrutin behövs alltså inte) som krävs för att beräkna L_Faktor hos P1. Detta värde ska vara summan av alla arbetade timmar under året, där emellertid övertimmarna ska räknas dubbelt. type VeckoArbetsTid is record NormalTid : Float; -- Antal normala veckoarbetstimmar Övertid : Float; -- Antal övertimmar för veckan end record; type ÅrsLista is array(1.. 53) of VeckoArbetsTid; type ÅrsArbetsTid is record Ident : Integer; -- Personidentifikation Tid : ÅrsLista; -- Arbetade timmar L_Faktor : Float; -- Underlag för löneberäkning end record; P1 : ÅrsArbetsTid;

4 4. (2 p) Din uppgift här är att förstå den övergripande innebörden av ett par kodavsnitt, och tolka dessa till vardagligt språk (svenska). Det är inte detaljerna i beräkningsgången frågan gäller, utan kodens slutliga resultat eller verkan betraktad utifr ån. 4.a K är en Integer variabel. Vilket värde K än har beskriver uttrycket nedan en viss egenskap, eller ett karakteristiskt drag hos K. Vilken/vilket då? (Eller: vilken funktion av K utgör uttrycket?) K / Integer Max(Abs(K), 1) 4.b Givet är deklarationerna nedan. Ett huvudprogram har deklarerat variablerna L, T och X och gör anropet B(L, T, X). Du ska för var och en av huvudprogrammets tre variabler beskriva dels om dess värde ändrats efter anropet, dels vilken innebörd det nya värdet i så fall har (dvs vilket karakteristiskt drag det beskriver). type ARR is array(1.. 100) of Integer; procedure B(A : ARR; V, N : in out Integer) is C : Integer; begin N := 0; for I in 1.. ARR Last 1 loop C := 1; for J in I + 1.. ARR Last loop if A(J) = A(I) then C := C + 1; end if; if C > N then N := C; V := A(I); end if; end B; 5. (1 p) Här föreligger samma datatyp ARR som ovan, samt subrutinen nedan. Anropet IsAscending(A) är tänkt att returnera true bara om alla värden i A förekommer i strikt stigande ordning. Vad är det emellertid för fel med IsAscending? Till ledning: Koden är grammatiskt korrekt och orsakar inte kompileringsfel! function IsAscending(L : ARR) return Boolean is begin for i in 1.. 100 loop if L(i) >= L(i + 1) then return false; end if; return true; end IsAscending;

5 6. (2 p) Du har här nio begrepp a) i) och ett antal sm å kodexempel 1) 9), som alla är korrekta i sitt sammanhang. Uppgiften handlar om att försöka koppla vart och ett av begreppen till ett av exemplen. Somliga begrepp kan vara snävare än andra (dvs omfattas av andra). Samma exempel skulle kunna kopplas till flera begrepp, och tvärtom. Men det skulle också kunna saknas exempel på vissa begrepp, och omvänt. Du ska betrakta varje exempel som oberoende av alla andra. Vissa exempel har en utgångspunkt i given kod, men i övrigt har namn och konstruktioner den sedvanliga innebörden, eller ska kunna inses av sammanhanget. Du ska svara genom att för varje delfråga a) i) antingen ange att exempel saknas eller ange numret på ett exempel som i sin helhet utgör ett korrekt och fullständigt exempel på begreppet i fråga. Du får utnyttja varje exempel bara en enda gång. 2 3 rätt ger 0,5 tentapoäng (tp), 4 5 rätt ger 1 tp, 6 7 ger 1,5 tp och 8 9 rätt ger 2 tp. Utgångspunkt: type Direction is (North, East, South, West); Begrepp: Exempel: a) literal 1) Direction First b) Direction värde 2) 0.0 c) logiskt värde 3) X : Float := 3.0; d) deklaration 4) for D in North.. West loop e) sats Put(D); f) range g) funktionsanrop 5) "East" h) Float värde 6) abs(x 1.0) i) repetitionsstruktur 7) function One return Float is begin return 1.0; end One; 8) <= 9) Put(2.0, 2, 0, 0); 7. (1 p) Vad får det för konsekvenser att ett program inte gör use på ett paket vars innehåll det använder? 8. (3 p) Dessa frågor relaterar till Adas syntax ( grammatik ), dvs hur konstruktioner tillåts byggas upp, beskrivet med generella begrepp. 8.a Du har en variabel K av datatypen Float. Vilka slags Ada konstruktioner skall då finnas i nedanstående sats på de platser som betecknas med symbolerna α resp β? Du ska ange detta med precisa, kortfattade och heltäckande begrepp eller termer, inte med konkreta exempel. α := K / β;

6 8.b Beskriv uppbyggnaden av Adas exit sats. Du ska inte göra detta med hjälp av exempel. Du ska i stället använda kortfattade, formella och allmänna begrepp, så att alla tänkbara fall täcks in.