Systemutvecklare SU13, Malmö Tentamen, delkurs Programmeringsteknik C#, del 1 (30 YH-poäng) Plats: Plushögskolan Malmö Tid: 3 oktober 2014, kl. 9.00-13.00 Tillåtna hjälpmedel: Papper, penna, suddgummi, linjal, miniräknare. Ej tillåtna hjälpmedel: Datorer, mobiltelefoner, surfplattor, böcker, anteckningar, kompendier etc. Max poäng: 68 poäng Examinator: Thomas Frank, Nodebite AB Sida 1 av 10
Del 1, slutna svar Ditt namn: Läs igenom frågorna på följande sidor och välj svarsalternativ. FYLL I DITT NAMN (!) och kryssa i dina svar på denna sida. (Mer än ett ikryssat svar per fråga ger 0 poäng på frågan.) Lämna ENDAST in denna sida för del 1. Variabler Fråga 1 a b c d Fråga 2 a b c d Fråga 3 a b c d Fråga 4 a b c d Fråga 5 a b c d e f g h If-satser m.m. Fråga 11 a b c d Fråga 12 a b c d Fråga 13 a b c d Fråga 14 a b c d Fråga 15 a b c d e f g h Operatorer Fråga 6 a b c d Fråga 7 a b c d Fråga 8 a b c d Fråga 9 a b c d Fråga 10 a b c d e f g h Loopar, listor m.m. Fråga 16 a b c d Fråga 17 a b c d Fråga 18 a b c d Fråga 19 a b c d Fråga 20 a b c d e f g h Funktioner/metoder Fråga 21 a b c d Fråga 22 a b c d Fråga 23 a b c d Fråga 24 a b c d Sida 2 av 10
Variabler Fråga 1 Fråga 2 Vilket av följande påståenden är falskt? I C# deklareras en variabel alltid med en bestämd: a) pappa b) relation c) datatyp d) klass En booleansk variabel kan: a) vara falsk (false) b) vara mittemellan sant och falskt (trulse) c) bestämmas utifrån ett logisk villkor (t.ex. 1 > 2) d) vara sann (true) Fråga 3 Fråga 4 Innan man kan göra beräkningar med ett tal i en sträng behöver man: a) loopa igenom varje tecken i strängen b) lägga ihop den med en annan sträng c) omvandla strängen till en annan datatyp d) ta bort citattecknen med hjälp av strängmetoden Unquote En variabel i C# finns tillgänglig i a) överallt i hela programmet b) bara om man skriver "this." framför den c) inom det kodblock där den har deklarerats och andra kodblock inuti detta kodblock d) överallt inom en funktion oavsett var i funktionen den har deklararats Fråga 5 string a = "32"; var b = a + 32; var c = Int32.Parse(a) + 32; c += 2; c ++; var d = b + c; Console.WriteLine(d); 3 poäng Vad skriver följande program ut till konsolen? a) null b) 323267 c) 323268 d) 323264 e) 323232 f) 67 g) 131 h) 128 Sida 3 av 10
Operatorer Fråga 6 Fråga 7 a) Arbetar man med decimaltal betyder x >= y samma sak som x + 1 > y b) Arbetar man med heltal betyder x <= y samma sak som x + 1 > y c) Arbetar man med heltal betyder x >= y samma sak som x - 1 > y d) Arbetar man med heltal betyder x >= y samma sak som x + 1 > y Om man skriver var Console.Write(1 < 2? "hej" : "då"); så skrivs följande ut till konsolen? a) hej : då b) true hej då c) hej d) då Fråga 8 Fråga 9 Om man skriver a -= a; så blir a alltid? Om man skriver a += a; så blir a alltid? a) 1 a) 0 b) 0 b) dubbelt så stort som innan c) dubbelt så stort som innan c) 1 d) hälften så stort som innan d) hälften så stort som innan Fråga 10 3 poäng int a = 1; a++; a++; a++; a++; a--; a++; a *= a; a -= a; a /= 1; Console.WriteLine(a); Vad skriver följande program ut till konsolen? a) 5 b) 2 c) 0 d) 6 e) 4 f) 8 g) 1 h) 7 Sida 4 av 10
If-satser m.m. Fråga 11 Fråga 12 Vilket av följande påståenden är falskt? a) Man kan använda else utan if b) Else måste komma efter else if c) Else if måste komma efter else d) Man kan använda if utan else a) If måste användas tillsammans med ett villkor b) Else måste användas tillsammans med eller c) Else måste användas med tillsammans ett villkor d) Else if måste användas tillsammans med ett villkor Fråga 13 Fråga 14 Vilket av följande påståenden är sant En ternary operator a) innehåller inga värden b) kanibland ersätta en if..else-sats c) fungerar bara med tal, inte strängar d) innehåller inget villkor a) Man kan inte använda if i en for-loop b) Man kan använda fler else if-satser i rad c) Man använder else if efter else d) Man kan använda flera else-satster i rad Fråga 15 if (1 > 2) { Console.WriteLine(1 > 2? 3 : 4); } else if (2 < 1) { Console.WriteLine(1 < 2? 5 : 6); } else { Console.WriteLine(1 > 2? 7 : 8); } 3 poäng Vad skriver följande program ut till konsolen? a) 6 b) 5 c) 7 d) 8 e) 1 f) 2 g) 4 h) 3 Sida 5 av 10
Loopar, listor m.m. Fråga 16 Vilken typ av loop är enklast att använda med en lista? a) En while-loop b) En foreach-loop c) En do..while-loop d) En for-loop Fråga 17 Vilken typ av loop kör alltid minst en gång? a) En while-loop b) En for-loop c) En do..while-loop d) En foreach-loop Fråga 18 Vilken typ av loop är enklast att använda med en dictionary? a) En while-loop b) En do..while-loop c) En for-loop d) En foreach-loop Fråga 19 Vilken typ ger dig en räknare som du kan förändra för varje varv i loopen? a) En do..while-loop b) En for-loop c) En foreach-loop d) En while-loop Fråga 20 for (int i = 1; i <= 10; i += 2) { for (int j = -i; j <= -i; j++) { Console.Write((i + j) + " " + (i + j) + " "); } } 3 poäng Vad skriver följande program ut till konsolen? a) 1 2 3 4 5 4 3 2 1 0 b) 0 0 0 0 0 0 0 0 0 0 c) 2 4 6 8 10 12 14 16 18 d) 0 1 2 3 4 5 6 7 8 9 e) 0 1 1 0 1 1 0 1 1 0 f) 1 1 1 1 1 1 1 1 1 1 g) 1 0 1 0 1 0 1 0 1 0 h) 1 2 3 4 5 6 7 8 9 10 Sida 6 av 10
Funktioner/metoder Fråga 21 Vad kallas det när flera funktioner har samma namn men vilken som anropas beror på antal och/eller typ av inparametrar i anropet? a) Detta går inte att göra. b) Overloading c) Underloading d) Namespacing Fråga 22 En funktion måste minst ta emot hur många argument/in-parametrar? a) 3 b) 0 c) 1 d) 2 Fråga 23 En funktion kan returnera olika datatyper. Om den inte ska returnera någonting definierar du den a) som en klass b) private c) med void d) som en statisk metod Fråga 24 Hur många gånger får man lov att anropa samma funktion? a) det beror på hur lång den är b) så många gånger man vill c) högst en gång d) bara en gång per objekt Sida 7 av 10
Del 2, öppna svar Instruktioner: Läs igenom frågorna på följande sidor och svara på dem på separata skrivpapper. Obs! Märk varje pappersark noga med: Ditt namn Xxx Yyy. Frågans nummer C#-tenta, öppen fråga X. Markera även tydligt var svar på olika delfrågor börjar! När du är klar med samtliga öppna frågor (eller inte hinner skriva mer) sidnumrerar du dina skrivna sidor enligt sida X av Y. Detta minimerar risken att något du har skrivit förväxlas eller tappas bort! Fråga 1: I will scratch you! (12 poäng totalt) Du ska skapa en applikation där katter har ben, ben har tassar och tassar har klor. Man ska kunna be ett katts ben att klösa. Benet ska då lyftas, säga till sin tass att sträckas ut, varvid tassen ska säga till alla klor att sträcka ut sig. (Du behöver inte göra något grafiskt här det räcker med konsolmeddelanden där benet, tassen och klorna meddelar vad de gör.) a) Hur löser du detta objektorienterat? Vilken/vilka klasser skapar du? Vilka egenskaper och metoder har klassen/klasserna? Ange även typ för egenskaper och metoder! (4 poäng) b) Löser du problemet med arv eller komposition? Eller bådadera? Förklara och motivera! Visa att du förstår dessa två begrepp och skillnaden mellan dem. (2 poäng) c) Skriv C#-kod för benets klösa-metod, samt de övriga metoder som kommer att anropas/köras när den körs. (6 poäng) Sida 8 av 10
Fråga 2: Adoptive parents (12 poäng totalt) Under delkursen har vi haft lektionsexempel och övningar som gick ut på att kunna hålla reda på släktskapsrelationer mellan olika individer. a) Löser man denna typ av problem med arv eller komposition? Eller bådadera? Förklara och motivera! Visa att du förstår dessa två begrepp och skillnaden mellan dem. (2 poäng) Om en människa är adopterad hur skulle du utöka denna typ av program så att person kan minnas/veta om både sina adoptivföräldrar och sina biologiska föräldrar. Behöver du lägga till nya klasser? Behöver du lägga till egenskaper och/eller metoder till befintliga klass(er)? Förklara tydligt hur du resonerar och löser problemet. (4 poäng) c) Skriv C#-kod som motsvarar din lösning. Utgå gärna från att viss kod redan finns på plats dessförinnan (motsvarande den vi har gått igenom under våra lektioner), men förklara i så fall vilka klass(er), egenskaper och metoder som redan finns, samt vilka du lägger till och skriver egen kod för. (6 poäng) Sida 9 av 10
Fråga 3: Hinnys and mules (12 poäng totalt) En mulåsna ett hästdjur som är en korsning mellan ett åsnesto och en hästhingst, till skillnad från en mula som är en korsning mellan ett häststo och en åsnehingst. Du ska utveckla ett program där man kan skapa objekt som är hästar och åsnor och dessa kan para sig med varandra i valfria kombinationer. Resultatet av en parning kan således bli nya hästar, åsnor, mulåsnor eller mulor (även dessa är objekt) som man i sin tur bör kunna be para sig. Tänk dock på att mulor och mulåsnor är infertila - de kan inte få barn. a) Hur löser du detta objektorienterat? Vilken/vilka klasser skapar du? Vilka egenskaper och metoder har klassen/klasserna? Ange även typ för egenskaper och metoder! (6 poäng) b) Löser du problemet med arv eller komposition? Eller bådadera? Förklara och motivera! Visa att du förstår dessa två begrepp och skillnaden mellan dem. (2 poäng) c) Skriv C#-kod för para-sig metoden, samt eventuella hjälpmetoder eller varianter av denna. (4 poäng) Sida 10 av 10