Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student)

Relevanta dokument
Allmänna anvisningar: Skriv dina svar på svarsblanketten. Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student)

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

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Tentamen Grundläggande programmering

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

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

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

DD1361 Programmeringsparadigm. Carina Edlund

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Lösningar till tentamen i EIT070 Datorteknik

Klassdeklaration. Metoddeklaration. Parameteröverföring

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Grundläggande datavetenskap, 4p

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Introduktion till programmering och Python Grundkurs i programmering med Python

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Styrenheten styrsignalsekvenser programflödeskontroll

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

Tentamen PC-teknik 5 p Lösningar och kommentarer

Programexempel för FLEX

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

TDIU01 - Programmering i C++, grundkurs

Introduktion till Haskell

Digital- och datorteknik

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

Tentamen i Algoritmer & Datastrukturer i Java

Imperativ programmering. Föreläsning 2

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

F4: Assemblerprogrammering

Objektorienterad Programmering (TDDC77)

Föreläsning 6: Introduktion av listor

Tentamen OOP

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

Lösningar till tentamen i EIT070 Datorteknik

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Programmering A. Johan Eliasson

Lösningsförslag till Tenta i Mikrodator

Tentamen i Introduktion till programmering

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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?

Tentamen. Datorteknik Y, TSEA28

Visual Basic, en snabbgenomgång

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

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

Tentamen PC-teknik 5 p

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för:

Digitalteknik och Datorarkitektur

TDIU01 - Programmering i C++, grundkurs

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

Lösningsförslag till Tenta i Mikrodator

SMD 134 Objektorienterad programmering

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

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2010/11 moment 9 Sida 1 Uppdaterad

Repetition C-programmering

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

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

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Tentamen PC-teknik 5 p

Datorarkitekturer med operativsystem ERIK LARSSON

Sista delen av kursen

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

Programmering II (ID1019) :00-12:00

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

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

Tentamen i. TDDA 69 Data och programstrukturer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Datorarkitekturer med operativsystem ERIK LARSSON

Sista delen av kursen

Digital- och datorteknik

Programmering II (ID1019) :00-12:00

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

TDIU01 - Programmering i C++, grundkurs

Programmeringsteknik med C och Matlab

LÖSNINGSFÖRSLAG TENTAMEN PROGRAMMERING I ETT FUNKTIONELLT SPRÅK ML, 5P

Pipelining i Intel 80486

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

Digital- och datorteknik

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

Programkonstruktion. Tentamen,

Lösningar till tentamen i EIT070 Datorteknik

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

TENTAMEN OOP

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Introduktion C-programmering

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Transkript:

Programmering och Programspråk Provmoment: Ladokkod: Tentamen ges för: Tentamen NPL011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2014-12-13 Tid: 09.30 13.30 Hjälpmedel: Inga hjälpmedel Totalt antal poäng på tentamen: För att få respektive betyg krävs: G=22 VG=33 40 poäng Allmänna anvisningar: Skriv dina svar på svarsblanketten. Markera och ange alla svar tydligt och entydigt efter instruktionerna. Rättningstiden är som längst tre veckor Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! Ansvarig lärare: Håkan Sundell (Anders Gidenstam) Telefonnummer: 033 435 4426 (4214)

Svarsblankett Namn: (Ifylles av student) Personnummer: (Ifylles av student) Uppgift 1: A B C D a) b) c) d) e) Uppgift 4: A B C D a) b) c) d) e) Uppgift 2: A B C D a) b) c) d) e) Uppgift 5: A B C D a) Svar: b) Svar: c) d) Svar: e) Svar: Uppgift 3: A B C D a) b) c) d) e) Uppgift 6: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: Uppgift 7: Uppgift 8: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: 2

1. Svara med något av de angivna alternativen på följande frågor. (a) En dator består av huvuddelarna? A. CPU, Bildskärm, Periferienhet Processor, Minne, In/Ut Moderkort, Primärminne, Sekundärminne D. Tangentbord, Processor, Bildskärm (b) En processor följer vanligtvis en instruktionscykel med stegen? A. Memory, Decode, och Datapath Cycle Fetch, Execute, och Interrupt Cycle Register, Prefetch, och Arithmethic Cycle D. Bus, Data, och Control Cycle (c) Trenden för framtidens datorer kommer främst att vara att? A. Öka databussens bredd Öka antalet register Öka klockans hastighet D. Öka antalet kärnor (d) Informationen som ingår i ett virtuellt minne, lagras normalt sett i en? A. Cache Hårddisk MMU D. DMA (e) I säkerhetssyfte så växlar processorn i princip sin exekvering regelbundet mellan? A. Control och Execute mode. Safe och Alert mode. Basic och Advanced mode. D. Kernel och User mode. (5p) 1

2. Svara med något av de angivna alternativen på följande frågor. (a) Processorn i en C64 avgör i vilken riktning som villkorliga hopp skall ta via? A. Programräknaren (PC) Ackumulatorn (A) Stackpekaren (SP) D. Flaggor i Statusregistret (SR) (b) Översättningsprocessen från källkod till exekverbar kod kan indelas i de tre huvudstegen? A. Exekvering, Interpretering, Kodgenerering Tolkning (eng. Parsing), Grammatikanalys, Kodgenerering Interpretering, Kodgenerering, Syntaxanalys D. Lexikalanalys, Tolkning (eng. Parsing), Kodgenerering (c) Programspråket BASIC är ett programspråk? A. Logiskt Objektorienterad Imperativt D. Funktionellt (d) Hastigheten på exekveringen av ett program kan ordnas i minskande ordning enligt? A. Interpretator, JIT-kompilator, Assembler, Kompilator JIT-kompilator, Kompilator, Interpretator, Assembler Assembler, Kompilator, JIT-kompilator, Interpretator D. Kompilator, Assembler, Interpretator, JIT-kompilator (e) Ett huvudproblem med parallella program är att samtidig åtkomst till gemensam data kan innebära risk för? A. Felaktig exekvering Felaktig information Överhettning av processorn D. Långsamma program (5p) 2

3. Svara med något av de angivna alternativen på följande frågor. (a) En funktion med typen [Integer] -> Bool -> Bool? A. Tar in en lista av heltal och ett booleskt värde som argument och returnerar ett booleskt värde som resultat. Tar in en lista av heltal och två booleska värden som argument. Tar in en funktion av typen lista av heltal till booleskt värde som argument och returnerar ett booleskt värde som resultat. D. Tar in en mängd (Set) och ett booleskt värde som argument. (b) Funktionen map som tar in en funktion, som tar ett argument av godtycklig typ, och en lista med element av samma typ som argument och returnerar resultatet av att applicera funktionen på vart och ett av elementen i listan har typen? A. a -> b -> [a] -> [b] (a -> [a]) -> [a] (a -> b) -> [a] -> [b] D. (a -> a) -> [a] -> [a] (c) Vad är sant om programspråket Haskell? A. Det som skrivs i.hs källkodsfilen är definitioner, d.v.s. namngivna uttryck. Alla funktioner är antingen sanna eller falska. Listor och par är de enda sammansatta datatyperna i Haskell. D. Ett Haskell program består av en sekvens av kommandon. (d) Funktionen foo är definierad enligt följande foo x y = if y == [] then x else foo (tail y) x Vilket av följande påståenden gäller för f? A. Funktionens typ är a -> [b] -> b. Funktionen tar in en lista och ett värde som argument och producerar en lista vars element är värdet ihopsatt med elementen från listan. Funktionens första argument måste vara av listtyp. D. Funktionen är felaktigt formulerad och kan därför inte laddas in (p.g.a. syntax- eller typfel). (e) Vad är sant om funktionen filter :: (a -> Bool) -> [a] -> [a]? A. Funktionen tar en funktion som tar ett argument av typen a och returnerar ett booleskt värde som sitt första argument. Funktionen tar ett värde av typen a, ett värde av typen Bool och en lista med element av typen a som argument. Funktionens första argument är en funktion som används för att göra om varje element i dess andra argument till ett element i resultatet. D. Funktionens första argument är en funktion som tar ett värde av typen a och ett värde av typen Bool som argument och returnerar ett värde av typen [a]. (5p) 3

4. Svara med något av de angivna alternativen på följande frågor. (a) Vilket av följande påståenden om programspråket Prolog är sant? A. Rekursion används ofta i Prolog. Prolog är speciellt lämpat för numeriska beräkningar. Prolog använder lat evaluering. D. En fråga i Prolog kan inte ha flera svar. (b) Ett predikat p(a,b,c) i Prolog? A. Är en lista eller ett heltal. Definierar en relation över sina 3 argument. Kan beräknas till ett värde av vilken typ som helst. D. Är alltid en funktion med 2 argument som beräknar ett returvärde i (c) Vad är sant om predikatet fob( ) nedan? fob(0). fob(x) :- X > 0, NX is X-1, fob(nx). A. Predikatet är deklarativt. Predikatet är sant för alla positiva och negativa heltal. Predikatet är syntaktiskt felaktigt och kan inte laddas in eller köras. D. Predikatet använder inte rekursion. (d) Vad blir svaret på följande Prolog-fråga ingredient(rice,3)=ingredient(i,2)? A. true. false. I=rice. D. rice=i. (e) Listan [1,2,3] och mönstret [A, _, B] matchar? A. Aldrig. Om A instansieras till 1 och B till [2,3]. Om A instansieras till 1 och B till 3. D. Om A instansieras till 1 och B till [3]. (5p) 4

5. Studera följande givna ASSEMBLER-program för Commodore 64. Svara kortfattat på var och en av frågorna med ett av de givna alternativen, alternativt ett specifikt värde. (a) Vad har ackumulatorn för värde när programmet når adressen $100E?,1000 LDA #$03,1002 STA $2000,1005 LDA $2000,1008 CMP #$02,100A BEQ $100E,100C LDA #$02 D. Okänt, då programmet kraschar under körning (b) Vilket värde har minnet på adress $2000 när programmet antingen når adressen $100E eller kraschar?,1000 LDA #$02,1002 STA $2000,1005 INC $2000,1008 CMP #$02,100A BEQ $100E,100C LDA #$03 D. Okänt, då programmet kraschar under körning (c) Vad blir utskriften från nedanstående program, om vi antar att minnet på adress $2000 har värdet $00?,1000 LDA $2000,1003 CLC,1004 ADC #$31,1006 JSR $FFD2,1009 LDA $2000,100C CLC,100D ADC #$01,100F STA $2000,1012 CMP #$09,1014 BNE $1000 A. Siffrorna 0 till och med 9 Siffrorna 1 till och med 9 Siffrorna 1 till och med 8 5

(d) Vilket värde har minnet på adress $2000 när programmet når adressen $100C, givet att minnet på adress $2000 har värdet $01 från början?,1000 LDA #$02,1002 DEC $2000,1005 SEC,1006 ADC #$03,1008 CMP #$09,100A BNE $1002 (e) Vilket värde har minnet på adress $2000 när programmet når adressen $1010, givet att minnet på adress $2000 har värdet $01 från början?,1000 LDA #$02,1002 SEC,1003 INC $2000,1006 CMP #$01,1008 BEQ $1010,100A ADC #$02,100C CMP #$05,100E BNE $1002 (5p) 6

6. Studera följande givna BASIC-program för Commodore 64. Svara kortfattat på var och en av frågorna med ett av de givna alternativen, alternativt ett specifikt värde. (a) Vad blir utskriften från nedanstående program? 10 ANNA=2 20 ANITA=3 30 PRINT ANITA+ANNA*4 (b) Vad blir utskriften från nedanstående program om användaren matar in talen 3 och 2? 10 B=4 20 INPUT A : INPUT B 30 PRINT A+B+C (c) Vad blir utskriften från nedanstående program om användaren matar in talen 4 och 3? 10 INPUT B 20 INPUT A 30 IF ((B<4) OR (A>2)) AND NOT (A>8) THEN B=B-1 40 IF (A>4) OR ((B>2) AND NOT (B<8)) THEN A=A+1 50 PRINT A+B 7

(d) Vad blir utskriften från nedanstående program? 10 FOR X=5 TO 6 20 FOR Y=2 TO 5 30 S=S+1 40 NEXT Y : NEXT X 50 PRINT S (e) Vad blir utskriften från nedanstående program? 10 FOR X=9 TO 1 STEP -2 20 GOSUB 100 30 NEXT X 40 PRINT M 50 END 100 N=N+1 110 S=S+X 120 M=S/N 130 RETURN (5p) 8

7. Studera följande givna HASKELL-program noga. Svara kortfattat på var och en av frågorna med ett av de givna alternativen. (a) Vad blir värdet på uttrycket sm [1,1,1] givet nedanstående definition av sm? sm [_] = 1 sm (x:xs) = 2*x + sm xs D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (b) Vad blir värdet på uttrycket f (-) 2 givet nedanstående definition av f? f x y = y x y D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (c) Vad blir värdet på uttrycket fob 3 givet nedanstående definition av funktionen fob? fob 0 = 2 fob 1 = 3 fob n = fob (n-1) + fob (n-2) D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning 9

(d) Vad blir värdet på uttrycket foldr f 1 [1,2,3] givet nedanstående definition av funktionerna f och foldr? foldr op init [] = init foldr op init (x:xs) = op x (foldr op init xs) f x y = x * y D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (e) Vad blir värdet på uttrycket length (gen 3) givet nedanstående definition av funktionerna gen och length? gen x = x:gen (x-1) length [] = 0 length (_:xs) = 1 + length xs D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (5p) 10

8. Studera följande givna PROLOG-program noga. Svara kortfattat på var och en av frågorna med ett av de givna alternativen. (a) Vad blir svaret på frågan mm(7,[1,2,3,4]). givet definitionen av predikatet mm() nedan? mm(_, []). mm(x, [Y YS]) :- X \= Y, mm(x, YS). A. true false (b) Vad blir svaret på frågan f(4, 0, N). givet definitionen av predikatet f() nedan? f(0, A, A). f(1, _, 0). f(n, B, A) :- N1 is N-2, B1 is N+B, f(n1, B1, A). A. true false <Ange det eller de värden på N som Prolog svarar med> (c) Vad blir svaret på frågan lt([1,2]). givet definitionen av predikatet lt() nedan? lt([_ _]). A. true false 11

(d) Vad blir svaret på frågan small(x),dark(x). givet faktan och reglerna nedan? large(pumpkin). large(melon). small(apple). small(orange). orange(pumpkin). yellow(melon). green(apple). red(apple). orange(orange). dark(z) :- orange(z). dark(z) :- red(z). A. true false <Ange det eller de värden på X som Prolog svarar med> (e) Vad blir svaret på frågan px(z,[1,2,3]). givet definitionen av predikatet px() nedan? px([],[]). px([x Xs],[X Ys]) :- px(ys,xs). A. true false <Ange det eller de värden på Z som Prolog svarar med> (5p) 12

Lathund 6502 Assembler Syntax Semantik LDA #<value> A value LDA <address> A memory STA <address> memory A CMP #<value> Z C V N (A value) CMP <address> Z C V N (A memory) BEQ <address> if Z=1 then PC address BNE <address> if Z=0 then PC address DEC <address> memory memory - 1 INC <address> memory memory + 1 CLC C 0 ADC <value> A A + value + C SBC <value> A A - value not C JMP <address> PC address JSR <address> save PC on stack. PC address RTS restore PC from stack. Kernal subrutin $FFE4 $FFD2 A key currently pressed on keyboard prints out ASCII-code in A as character on screen Maskinkodsmonitorns inbyggda hjälp visas med: F1 ASCII x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 2x bla nk! " # $ % & ' ( ) * +, -. / 3x 0 1 2 3 4 5 6 7 8 9 : ; < = >? 4x @ A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z [ \ ] ^ _ 13

Lathund BASIC Syntax Semantik <var> = <expr> variable var value of expr GOTO <nr> execute code with line nr IF <expr> THEN <nr> if boolean expr is true then execute code with line nr PRINT <expr> display value of expr PRINT string display character string INPUT <var> variable var value inputted from user FOR <var>=<start> TO <stop> STEP <step> var start. for every loop increase var with step until var is equal to stop. NEXT <var> execute next loop-lap of corresponding FOR END end execution RUN <nr> start execution at code line nr LIST display current program 14

LATHUND HASKELL Namn på identifierare för värden (funktioner är också värden) börjar med liten bokstav, exempel: map, filter Namn på typer börjar med stor bokstav, exempel: Int, Double Mönstret _ matchar vilket värde som helst Listvärden skrivs inom [ ], exempel [1,2,3] Vid mönstermatchning och konstruktion av listor används : för att skilja huvud från svans, exempel: (x:xs) Syntax Semantik x = 42 Identifieraren x har värdet 42 f x = x+2 f är en funktion som tar ett argument, x, och returnerar värdet x+2 Main> f 4 6 :: Integer Kör funktionen f i Hugs 15

LATHUND PROLOG Predikat, konstanter, strukturer börjar med liten bokstav, exempel: member, john, date Variabler börjar med stor bokstav, exempel: X, Head _ betecknar den anonyma variabeln Listor skrivs inom [ ] används för att skilja huvud från svans, exempel: [Head Tail] Tilldelning av aritmetiskt värde görs med is. Syntax Semantik man(john). faktum (eng. fact) likes(john,x) :- likes(x,wine). regel (eng. rule)?- likes(john, X). fråga (eng. question)?- Y is 5*6+7. fråga (eng. question) 16