[ 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