T131217 Intro till programutveckling

[ sida 1 ]
Introduktion till Programutveckling från Information till Tillämpning (7,5 hp)
Provmoment:
Ladokkod:
Tentamen ges för:
Tentamen (5 hp)
21IP1A
ASYST13h
Datum och tid:
2013-12-17, kl 09.00 – 13.00
Hjälpmedel: Inga hjälpmedel tillåtna
Rättningstiden för en tentamen vid HIT är högst 20 arbetsdagar (ca 4 veckor). Utöver rättningstiden tillkommer administrativ
tid för StudentCentrum och administration för distribution av tentamen samt inregistrering av resultat.
Resultatet bör därför vara synligt på ”MittKonto” senast inom 5 veckor efter skrivningstillfället.
Betyg:
Maxpoäng på denna tentamen är 40 poäng.
För betyget Godkänd på tentamen krävs minst 20 poäng. För betyget Väl Godkänd på tentamen krävs minst 30 poäng.
Allmänna anvisningar:
1. Skriv endast på ena sidan av pappret, ej fram och baksida.
2. Ange tydligt till vilken fråga svaret hör.
3. Lägg svaren i samma ordning som frågorna i tentamenshäftet
4. Svårlästa svar kan inte rättas!
5. Ansträng er att besvara frågorna tydligt.
6. Markera på omslaget till tentamen vilka frågor du lämnat svar på.
7. Om du finner uppgifterna i tentamenstexten ofullständiga skall du göra egna antaganden för de uppgifter du saknar.
Redovisa dina egna antaganden.
Samtliga frågor besvaras med kurslitteratur och föreläsningar som utgångspunkt.
Om du använt ytterligare informationsmaterial för dina svar, anger du från vilket material i dina svar.
Ett tips är att du ägnar som första steg lite tid åt att gå igenom frågorna för att därigenom planera och disponera tiden på
bästa sätt. Du bör även vid denna inspektion fundera lite över hur frågan är formulerad för att uttolka frågans intention.
Begrepp som t ex, diskutera, exemplifiera, beskriv och förklara säger något om frågans innebörd och hur du bör svara.
Lycka till med tentamen!
Anna Palmquist, fråga 4-5 (0734-612003)
Björn Abelli, fråga 1-3 (0709-955910)
Cecilia Sönströd, fråga 6-9 (0709-479852)
OBS!! Vid en skriftlig tentamen måste studenten visa att han/hon har tillräckliga kunskaper inom
problemområdet. Många gånger är det möjligt att ge exempel och illustrera, ibland det bästa eller till och
med det enda sättet, och kan påverka poängsättningen för svaret.
Om du anser att en frågeställning inte är komplett, så är det upp till dig att komplettera med eventuellt
saknade förutsättningarna. I sådana fall måste du också ange eventuella tillkommande förutsättningar i
ditt svar.
[ sida 2 ]
Markera rätt svar för kryssfrågorna med ett tydligt X i därför avsedd ruta i svarsfälten nedan.
På kryssfrågorna är endast ett svar korrekt.
Om mer än en ruta är ikryssad på en fråga räknas det som ett felaktigt svar.
Svarsformulär för fråga 1
1.1
1.2
A
B
C
D
1.3
A
B
C
D
1.4
A
B
C
D
1.5
A
B
C
D
1.6
1.7
1.8
1.9
A
B
C
D
1.11
A
B
C
D
1.16
A
B
C
D
A
B
C
D
1.12
A
B
C
D
1.17
A
B
C
D
A
B
C
D
1.13
A
B
C
D
1.18
A
B
C
D
A
B
C
D
1.14
A
B
C
D
1.19
A
B
C
D
Varje korrekt svar ger 0,5 poäng, dvs max 10 poäng för fråga 1.
Glöm inte att lägga denna sida i det gula tentamenshäftet!
A
B
C
D
1.10
A
B
C
D
1.15
A
B
C
D
1.20
A
B
C
D
[ sida 3 ]
Delfrågor för fråga 1. Kryssa i dina svar på sidan 2!
1.1. Vilken princip för schemaläggning av CPU:n illustreras nedan?
A.
B.
C.
D.
Först in – först ut
Round Robin
Kortast jobb
Längst jobb
1.2. Vad kallas den katalog i katalogträdet som ligger på högsta nivån?
A.
B.
C.
D.
Överordnad katalog (Parent directory)
Underkatalog (Subdirectory)
Rotkatalog (Root directory)
Arbetskatalog (Working directory)
1.3. Vilken är den värsta flaskhalsen i ett datorsystem?
A. Överföring av data mellan primärrminne och CPU.
B. Överföring av data till och från sekundärminne.
C. Styrenhetens avkodning av programinstruktioner.
D. Exekvering av programinstruktioenr i den aritmetisk/logiska enheten.
1.4. Vilken typ av moln används exklusivt av en specifik grupp eller organisation?
A. Publika moln
B. Privata moln
C. Gemensamma moln (community cloud)
D. Hybridmoln
1.5. I vilken teknik för internetanslutning skickas signalerna via vanliga telefonledningar, men på en
frekvens som inte används för tal?
A. Telefonmodem
B. Digital abonnentanslutning (DSL)
C. Kabelmodem
D. WiFi
För uppgifterna 1.6 – 1.8, matcha delen
av den magnetiska disken med rätt benämning.
A. Spår
B. Block
C. Axel
D. Sektor
[ sida 4 ]
1.9. Vilket av följande beskriver en fil som måste läsas eller skrivas på ett linjärt sätt?
A. binärfil
B. sekventiell fil
C. textfil
D. katalog
1.10. Vilket av följande innehåller ett register för programinstruktioner?
A.
B.
C.
D.
kontrollenheten
arithmetisk/logiska enheten
sekundärminnet
primärminnet
För uppgifterna 1.11 - 1.13, matcha operatorn med rätt operatorkategori.
1.11. MOD
1.12. AND
1.13. >
A. Relationsoperatorer
B. Boolska operatorer
C. Unära operatorer
D. Aritmetiska operatorer
För uppgifterna 1.14 - 1.16, matcha topologin med korrekt beskrivning.
1.14. Ring
1.15. Buss
1.16. Stjärna
A. Noderna är sammankopplade i en loop. Alla meddelanden går i en riktning.
B. Noderna inom nätverket är hierarkiskt länkade till varandra.
C. Noderna är kopplade till en centrum-nod genom vilken alla meddelanden går.
D. Noderna är kopplade via en kommunikationslinje via vilken alla meddelanden
går i båda riktningarna.
För uppgifterna 1.17 - 1.20, matcha grinden med ett korrekt påstående om den.
1.17. AND
1.18. NAND
1.19. OR
1.20. NOT
A.
B.
C.
D.
Ger utsignal 0 endast om alla insignaler är 1.
Ger utsignal 1 endast om alla insignaler är 1.
Ger utsignal 0 endast om alla insignaler är 0.
Inverterar insignalen.
Glöm inte att lägga svarssidan (sida 2) för kryssvaren i det gula tentamenshäftet!
För de följande frågorna bör svaren vara korta och koncisa, dvs att det inte borde behövas några längre
essäer. Svaret för respektive fråga skall skrivas på ett separat blad, tydligt angivet vilken fråga det är ett
svar på.
[ sida 5 ]
Fråga 2 (3p+1p)
a) Vad blir utskriften när vi kör nedanstående program, givet att användaren matar in
den åtta tecken långa texten ”HIT 2013”?
b) Det finns många benämningar som stämmer in på den typ av krypto som
programmet illustrerar. Ange två utav dessa benämningar.
Module Module1
Dim alfabetet As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
Sub Main()
Console.Write("Mata in en text: ")
Dim text = Console.ReadLine()
Console.WriteLine(GetEncryptedString(text))
End Sub
Function GetIndex(tecken As Char) As Integer
For index = 0 To alfabetet.Length - 1
If alfabetet(index) = tecken Then
Return index
End If
Next
Return -1
End Function
Function GetEncryptedCharacter(tecken As Char, offset As Integer) As Char
Dim index = GetIndex(tecken)
If index < 0 Then
Return tecken
Else
index = (index + offset) Mod alfabetet.Length
Return alfabetet(index)
End If
End Function
Function GetEncryptedString(x As String) As String
Dim y As String = ""
For Each tecken As Char In x
y = y & GetEncryptedCharacter(tecken, x.Length)
Next
Return y
End Function
End Module
[ sida 6 ]
Fråga 3 (6p)
Skriv källkoden för ett program i Visual Basic.NET som beräknar medelvärdet utav ett
antal numeriska värden. Utöver proceduren Main skall programmet innehålla ytterligare
en procedur och en funktion. För enkelhets skull har vi tillhandahållit ”ramen” för
programmet.
• Proceduren MataInTal skall fylla vektorn tal med 10 numeriska värden som
användaren matar in, ett i taget.
• Funktionen BeräknaMedelvärde skall beräkna och returnera medelvärdet
utav talen i den vektor som ges som inparameter.
• Proceduren Main skall anropa proceduren MataInTal respektive funktionen
BeräknaMedelvärde. Som argument i det sistnämnda anropet skall användas
vektorn tal. I Proceduren Main skall slutligen också det returnerade värdet från
BeräknaMedelvärde skrivas ut.
Module Module1
Dim tal(9) As Integer
' OBS! I Visual Basic anges "upper bound", dvs att
' vektorn "tal" får plats med 10 element (index 0-9)
Sub Main()
' Här måste du skriva din egen kod
End Sub
Sub MataInTal()
' Här måste du skriva din egen kod
End Sub
Function BeräknaMedelvärde(vektor() As Integer) As Double
' Här måste du skriva din egen kod
End Function
End Module
Skriv hela programmet på ett separat papper.
[ sida 7 ]
Fråga 4 (1 + 1+ 1 p)
a) Varför är binära tal viktiga inom datorvärlden?
b) Ett byte innehåller hur många bitar?
c) Hur många byte finns det i en 64-bitars maskin?
Fråga 5 (2p)
Vad innebär datakomprimering och varför är datakomprimering ett viktigt ämne i dag?
Fråga 6 (4p)
De flesta programmeringsspråk innehåller två olika datastrukturer för att lagra flera
värden, nämligen vektorer och poster. Ge en beskrivning av dessa datastrukturer, där du
fokuserar på hur de lagrar värden. Använd gärna figurer, men ge generella beskrivningar.
Fråga 7 (2 + 2 p)
a) Hur fungerar algoritmen binärsökning? Ge en förklaring i ord som beskriver algoritmens
arbetssätt.
b) Använd binärsökning för att hitta nyckelvärdet 17 i nedanstående vektor. Visa varje steg i
sökningen genom att ange vilken del av vektor som är aktuell och vilka element som
jämförs med det värde vi letar efter.
2 3 5 7 11 13 17 19 23 29
Fråga 8 (2 + 2 p)
I denna uppgift skall ni designa en algoritm som givet en vektor med storlek 10 räknar ut
medelvärdet av talen i vektorn. För enkelhets skull antar vi att vektorn fått värden genom
att vi anropat en slumptalsfunktion. Vektorn kan alltså innehålla vilka heltal som helst.
a) Beskriv algoritmen i ord.
b) Ange algoritmen i pseudokod. Se appendix A för vilka operationer ni får använda i
pseudokoden – endast dessa är tillåtna.
Fråga 10 (1 + 1 + 1 p)
a) Vad är en simulering? Ge en någorlunda kortfattad definition.
b) Varför kan man behöva använda simuleringar?
c) Ge exempel på två olika typer av simuleringar som beskrivs i boken och beskriv
kortfattat hur de konstrueras.
Detta är sista sidan
Glöm inte att lägga dina svar (inklusive sida 2 från detta häfte, formuläret för kryssfrågorna) i
det gula tentamenshäftet!
Lägg svaren i samma ordning som frågorna!
[ sida 8 ]
Appendix A – Notation för pseudokods
Variabler
Enkla variabler: Använd variabelnamn som inleds med liten bokstav, t.ex. summa eller tal. Enkla variabler
behöver inte deklareras innan de används.
Vektorer: skall deklareras innan de används, genom att ange typ och storlek. Exempelvis: integer data[20].
För att referera till en plats i vektorn, använd [ ], exempelvis data[7].
Enkla satser
Tilldelning: Använd Set … to …., exempelvis: Set summa to 64 eller Set tal to tal + 1
Input/output: Read för input och Write för output, exempelvis Read num eller Write summa eller Write
’Summan är’ + summa
Kontrollstrukturer
Selektion (Val): Använd IF, eventuellt med ett ELSE. Syntaxen är:
IF (villkor)
satser om villkoret är sant
respektive
IF (villkor)
satser om villkoret är sant
ELSE
satser om villkoret är falskt
Repetition (Loop): Använd WHILE med följande syntax:
WHILE (villkor)
satser att upprepa