Lena Kallin Westin 2005-08-22 Institutionen för datavetenskap Umeå universitet 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 : 050822 Namn (texta) : Personnummer : Epost : @cs.umu.se Namnteckning Sida 1 av 5
TENTAMEN Programmeringsteknisk översiktskurs för yrkeshögskoleprogram, 5p. (TDBA75) Datum : 050822 Tid : 9-15 Hjälpmedel : Inga (Ordbok tillåten) Antal Uppgifter : 9 Poäng : 40 Kryssa för de uppgifter du lämnar in 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 18.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 resultatet kommer via mail när tentorna är rättade. Sida 2 av 5
Uppgift 1 (1 + 1 = 2 poäng) a) Antag att vi har följande deklarationer: Dim i As Integer Dim j As Integer Betrakta följande logiska uttryck: (I) Not (i < 0) And (j < 0) (II) Not (i < 0 And j < 0) (III) i >= 0 And j >= 0 Antag att både i och j har värdet 2. Hur många logiska uttryck har då värdet True? b) Vilken av följande uppgifter är INTE operativsystemets uppgift? i Hanterar processorns resurser ii Hanterar RAM-minnet iii Håller koll på lagringsresurserna iv Utför aritmetiska och logiska operationer v Ser till att input och output fungerar som det ska vi Etablerar grunderna för användarytan Uppgift 2 (3 poäng) Beskriv begreppet räckvidd (kallas också scope eller synlighet) och vad det innebär i ett programmeringsspråk som Visual Basic. Ge exempel! 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 händer när man klickar på knappen Command1 om koden för formuläret ser ut som nedan? Function fun(byref Op1 As Integer, ByVal Op2 As Integer) As Integer Op1 = Op2 * 3 Op2 = Op1 + 7 fun = Op1 * Op2 End Function Sub proc(byref Param1 As Integer, ByRef Param2 As Integer) Param1 = fun(param2, Param1) + Param2 MsgBox ("Param1 = " & Param1) End Sub Private Sub Command1_Click() Dim Id1 As Integer Dim Id2 As Integer Id1 = 3 Id2 = 1 Call proc(id1, Id2) MsgBox (" Id1 = " & Id1) MsgBox (" Id2 = " & Id2) End Sub Sida 3 av 5
Uppgift 5 (3 poäng) Antag att du har koden Public Function evensum(n As Integer) As Integer Dim i As Integer Dim summa As Integer summa = 0 For i = 2 To n Step 2 summa = summa + i Next i evensum = summa End Function Skriv om koden ovan så att den använder en while-loop istället. Uppgift 6 (4 poäng) Skriv en funktion powersum som tar ett heltal n som parameter och returnerar summan av kvadraten av talen från 5 upp till n. Om det n som anges är mindre än 5 ska -1 returneras. Funktionen ska alltså ha följande huvud Public Function powersum (n As Integer) As Integer Exempel: powersum (3) ska bli -1 (eftersom 3 är mindre än 5) powersum (8) ska bli 174 (= 5*5 + 6*6 + 7*7 + 8*8) powersum (13) ska bli 789 (= 5*5 + 6*6 +... + 12*12 + 13*13) Uppgift 7 (6 poäng) Under kursen har vi pratat om olika hot mot en dator; virus, trojanska hästar och maskar. Förklara vad var och en av hoten är och hur de fungerar. Uppgift 8 (6 poäng) Vilka krav ska en algoritm uppfylla? Nämn minst två olika sätt att skriva algoritmer som vi gått igenom på kursen. Sida 4 av 5
OBS! Du ska välja EN av dessa uppgifter, du får inte lösa båda (då rättas den första). Uppgift 9 val 1 (8 poäng) Butikerna på C-hem och M-hem har länge haft sina varor upplagda på en speciell fil. Filen är en textfil och varje vara är representerad med butikens namn, varans namn, varans pris och antal artiklar i lager av den varan. Ett exempel på en fil är: C-hem, Kaffe Gevalia 500g, 19.90, 100 M-hem, Blyertspennor i fempack HB, 10.00, 50 M-hem, Glödlampa 40W, 5.50, 23... Eftesom båda affärerna har gått bra på sista tiden så börjar filen bli för stor. De vill dela upp filen i två filer, en för varje affär. Problemet går alltså ut på att skriva ett program som tar in en textfil med namn varor.txt av den typ som beskrivs ovan och gå igenom den och skapa två nya textfiler. Den ena filen ska heta Chem.dat och ska innehålla C-hems alla varor och den andra ska heta Mhem.dat och ska innehålla M-hems varor. Ni får anta att filen är korrekt skriven och att inga problem uppstår vid öppning och stängning av filen. Uppgift 9 val 2 (8 poäng) Antag att du har två listor av tal lagrade i variablerna array1 och array2. Båda listorna är sorterade i stigande ordning och du ska slå ihop de båda listorna (array av doubles) till en ny array med namnet slutarray som också ska vara sorterad. Du får anta att array1 innehåller n element och array2 innehåller m element och att slutarray har n+m platser. Exempel Om array1 = (1.28, 3.12, 9.87), n = 3, array2 = (0.25, 3.21, 3.34, 10.9, 12.3) och m = 5 så ska slutarray bli (0.25, 1.28, 3.12, 3.21, 3.34, 9.87, 10.9, 12.3) Skriv den del av koden som gör själva hopslagningen, du behöver alltså inte deklarera variablerna som nämns ovan eller ge dem värden. Sida 5 av 5