tentamen - Umeå universitet

Lena Kallin Westin
Institutionen för datavetenskap
Umeå universitet
2005-06-06
TENTAMEN
Uppgift
(poäng)
1 (2)
2 (3)
3 (4)
4 (4)
5 (3)
6 (4)
7 (6)
8 (6)
9 (8)
Summa
Inlämnad
Poäng
Kurs
:
Programmeringsteknisk översiktskurs för
yrkeshögskoleprogram, 5p. (TDBA75)
Datum
:
050606
Namn (texta)
:
Personnummer
:
:
Epost
@cs.umu.se
Namnteckning
Sida 1 av 5
TDBA75
Tentamen
2005-06-06
TENTAMEN
Programmeringsteknisk översiktskurs för
yrkeshögskoleprogram, 5p. (TDBA75)
Datum
: 050606
Tid
: 9-15
Hjälpmedel
: Inga (Ordbok tillåten)
Antal Uppgifter
: 9
Poäng
: 40
• Kryssa för de uppgifter du lämnar in
• Skriv lösningarna med en uppgift per sida!
• Lösningarna skall vara snyggt och prydligt nedskrivna. Tankegången skall vara
lätt att följa. Alla antaganden som inte är uppenbara skall redovisas.
Tips!
• Försök på alla uppgifter! Uppgifterna är ordnade efter poäng, inte svårighetsgrad.
• Om du inte kan lösa en av flera deluppgifter, gör lämpliga antaganden och gå
vidare till efterföljande deluppgifter. Skriv kommentarer i koden om du inte
kommer på hur koden ska se ut.
• Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något
verkar konstigt. Läraren kommer till salen ca 11.00 och kan även nås via telefon.
• Det är ditt ansvar att övertyga om att du besitter den kunskap som efterfrågas.
• Det är viktigt att du löser den givna uppgiften!
Lycka till!
Information om tentamensvisning kommer via mail när tentorna är rättade.
Sida 2 av 5
TDBA75
Tentamen
2005-06-06
Uppgift 1 (2 poäng)
Vad är ett virus i datorsammanhang?
Uppgift 2 (3 poäng)
Vad är en brandvägg och vilka skadliga ”gärningar” kan en sådan skydda från?
Uppgift 3 (4 poäng)
Välj två av de programmeringsparadigmer (familjer av programspråk) vi gått igenom på
kursen och beskriv dem, jämför dem med varandra och visa på likheter och skillnader.
Uppgift 4 (4 poäng)
Vad kommer att skrivas ut när nedanstående program exekveras (körs)? Visa tydligt (tex
genom en tabell) vad som händer i varje steg.
Dim intNumber As Integer
Dim intSum As Integer
Dim intLimit As Integer
intLimit = 10
intNumber = 0
intSum = 0
While intSum <= intLimit
intNumber = intNumber +1
intSum = intSum + 2 * intNumber
MsgBox(intNumber & ” ” & intSum)
Wend
Uppgift 5 (3 poäng)
Skriv om loopen i uppgift 4 som en do until-loop istället.
Uppgift 6 (4 poäng)
Skriv en funktion evenSum som tar ett heltal n som parameter och returnerar summan
av de jämna talen från 2 upp till n. Funktionen ska alltså ha följande huvud
Public Function evenSum(n As Integer) As Integer
Exempel: evenSum(8) ska bli 20 (= 2 + 4 + 6 + 8) medan evenSum(13) ska bli 42
(=2 + 4 + 6 + 8 + 10 + 12)
Om du behöver det så får du anta att det finns en funktion Even som tar ett heltal och
returnerar True om talet är udda och annars False.
Sida 3 av 5
TDBA75
Tentamen
2005-06-06
Uppgift 7 (6 poäng)
Utgå från följande värden:
Dim x As Double
Dim y As double
Dim m As Integer
Dim n As Integer
Dim s As String
Dim t As String
x = 2.5
y = -1.5
m = 18
n = 4
s = "Hej"
t = "hopp"
Vilka värden har följande uttryck?
1)
2)
3)
4)
5)
6)
x +
5 *
s +
Not
s +
1 -
n * y x – n /
t
(x < 0)
n
(1 - (1
(x + n) * y
5.0
And (n > 0)
- (1 -(1 - n))))
Uppgift 8 (6 poäng)
I Visual Basic kan man ha två olika slags parametrar, de som är ByRef och de som är
ByVal. Vad innebär de olika typerna, vilken av dem är default och hur fungerar de?
Beskriv och använd exempel för att förklara hur det fungerar.
Uppgift 9 (8 poäng)
Det finns en enkel (och ineffektiv) algoritm för att hitta alla primtal som är mindre än ett
visst tal. (Ett primtal är ett tal som enbart är jämnt delbart med 1 och talet självt.)
Algoritmen bygger på att man ”stryker” alla efterföljande multipler av ett primtal,
eftersom dessa per definition inte kan vara primtal. Man startar med talet 2 som är ett
primtal och stryker alla multipler av 2. Därefter går man vidare med nästa primtal, dvs.
nästa ej ”strukna” tal osv.
Exempel: undersök vilka tal som är primtal upp till 20.
1
2
3
4
^
5
6
^
—
7
8
^
9
10 11 12 13 14 15 16 17 18 19 20
^
^
^
^
^
^
—
—
—
—
o
o
o
Då talet 2 är ett primtal stryks alla tal som är multiplar av 2 , visas med ^ (uppåtpilen).
Sen kommer vi till 3 (även det primtal), alla multiplar av 3 stryks, här markerat med —
Sida 4 av 5
TDBA75
Tentamen
2005-06-06
(strecket). Nästa tal är 4 som inte är ett primtal (uppåtpilen visar att 2:an gjorde så att 4 ej
kan vara ett primtal). Efter 4 kommer 5, som inte är struken och alltså ett primtal. Alla
multiplar av 5 stryks, vilket markerats med o (den lilla cirkeln). Nästa tal, 6, är inte ett
primtal då både 2 och 3 (uppåtpilen och strecket) strukit talet 6. På detta sätt behandlar
algoritmen tal för tal till vi når 20.
Algoritmen kan implementeras genom att man skapar en array bestående av boolska
värden, vi kallar denna array för tal. Arrayens syfte är att hålla reda på om ett visst tal
är ett primtal eller ej, om tal(i) har värdet true så är i ett primtal.
Algoritm
Initialisera arrayen genom att för alla tal i = 1..n:
Sätt tal(i) = true
För alla tal i=2..n:
Om tal(i) är true
Sätt tal(j) = false då j=k*i (k = 2, 3, ... så länge j mindre än n)
Skriv ett programavsnitt som implementerar algoritmen ovan. Du behöver alltså inte bry
dig om att skriva hur arrayen får sina värden.
Sida 5 av 5