Upload
others
View
207
Download
27
Embed Size (px)
Citation preview
PRO
GRAM
MER
ING
1
Programmering 1
C#
ARBETSBOK
www.skolportalen.se Thelin Läromedel
ISB
N:
978-
91-7
379-
172-
4 Läromedel för
GY2011
Krister Trangius 2012
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 1
FÖRORD
Detta är arbetsbok som hör till Läroboken Programmering 1 med C#. Boken är anpassad efter
gymnasieskolans kursplan GY2011 för kursen Programmering 1 med kurskod PRRPRR01.
Boken är skriven av Krister Trangius, erfaren gymnasielärare i programmering. Boken är utgiven av
Thelin Läromedel. Boken finns även tillgänglig för läsning via internet via Skolportalen eBooks.
Om du som läsare skulle hitta några felaktigheter i boken är du välkommen att kontakta Krister på
Eventuella uppdateringar och rättelser till boken som tillkommit efter denna upplagas tryckning
finns att ladda hem via www.trangius.se.
Thelin Läromedel och Krister Trangius, april 2012.
Förord till reviderad upplaga
Detta är den reviderade upplagan. De flesta uppgifter är desamma. Vissa uppgifter har dock
ändrats, vissa har flyttats om, ett par har tagits bort och det har kommit till ett par uppgifter.
Detta efter kommentarer från lärare samt ytterligare genomgång av innehållet. Jag hoppas att
denna upplaga ska vara än mer komplett och heltäckande.
Krister Trangius, april 2012.
Samtliga varumärken som förekommer i boken tillhör innehavaren av varumärket.
OBSERVERA ATT ALL KOPIERING ELLER ANNAT MÅNGFALDIGANDE AV DENNA BOK ELLER DELAR
AV DEN ÄR FÖRBJUDET ENLIGT LAG.
THELIN LÄROMEDEL, LIDKÖPING
Tel. 0510‐66100, www.skolportalen.se
Andra upplagan, utskriven 2012‐06‐20
Beställningsnummer J200 4101
Tryckeri: JustNu
ISBN: 978‐91‐7379‐172‐4
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 2
ATT ANVÄNDA DETTA LÄROMEDEL
Detta häfte innehåller övningar till läroboken Programmering 1 med C#. Övningarna är anpassade
efter gymnasiekursen Programmering 1.
Övningarna är upplagda enligt kapitelindelningen i läroboken och bygger ibland på innehållet i
denna bok. Vissa kapitel har inga övningar knutna till sig i denna bok. Det beror antingen på att
inga övningar behövs för kapitlet (vilket är fallet för kapitel 1‐4) eller att det som kapitlet lär ut, är
så pass genomgående att man tränar på det när man gör i stort sett alla övningar (vilket är fallet
för kapitel 9 och 10).
Övningarna bör göras någorlunda i ordning. Många av de senare övningarna bygger på att man
har tillägnat sig kunskap från tidigare övningar.
Boken kan ses som indelad i två delar. Först kommer mindre uppgifter för de olika kapitlen, sist i
boken finns ett enskilt kapitel för mer komplexa uppgifter. Småuppgifterna är tänkt att öva upp en
viss aspekt inom programmering. Om det är ett visst moment man inte behärskar i den mer
komplexa övningen, kan man göra vissa enkla övningar för att träna sig i det moment.
Jag vill hävda att de viktigaste uppgifterna är de komplexa uppgifterna. Det är med dem man lär
sig det logiska tänket som man behöver behärska som programmerare. Att lära sig logiskt tänk
kan vara svårt och göras på olika sätt: individuell handledning, klassrumsdiskussioner,
grupparbeten med mera. I vassa av de komplexa uppgifterna finns också krav på att pseudokod
och aktivitetsdiagram skapas.
Det är inte tänkt att alla elever ska lösa alla uppgifter i häftet. För de flesta räcker det med ett
lämpligt urval. De komplexa uppgifterna lämpar sig ofta för grupparbeten (men aldrig för större
grupper än 3).
Utöver övningarna finns det också frågor. Svaren på frågorna går att finna i boken.
En viktig del inom programmering är att hitta själv hitta svar på olika uppgifter. För att göra detta
behöver man ofta dela upp problemen i mindre delproblem. Det står mer om detta i läroboken.
Programmering är något man lär sig genom att göra. Att göra för att lära, är syftet med detta
häfte!
Lycka till!
Krister Trangius
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 3
INNEHÅLLSFÖRTECKNING
FÖRORD ....................................................................................................................................... 1
Förord till reviderad upplaga ........................................................................................................... 1
Att använda detta läromedel ........................................................................................................ 2
Frågor till kapitel 5 (Bakgrund) ..................................................................................................... 7
Fråga 5.1 – Olika typer av programmering ...................................................................................... 7
Fråga 5.2 – Algoritm ........................................................................................................................ 8
Fråga 5.3 – Operativsystemet .......................................................................................................... 8
Fråga 5.4 – Plattformsoberoende .................................................................................................... 9
Fråga 5.5 – Turingkomplett .............................................................................................................. 9
Fråga 5.6 – C#:s rötter ................................................................................................................... 10
Fråga 5.7 – CLI................................................................................................................................ 10
Övningar och frågor till kapitel 6 (Komma igång med VS C#) ...................................................... 11
Övning 6.1 – Hello World .............................................................................................................. 11
Fråga 6.2 – Rader i C# .................................................................................................................... 11
Fråga 6.3 – Kompilering ................................................................................................................. 11
Fråga 6.4 – Skriptspråk vs C# ......................................................................................................... 12
Fråga 6.5 – Kommentarer .............................................................................................................. 12
Övningar och frågor till kapitel 7.1 (Variabler) ............................................................................ 13
Fråga 7.1.1 – Namngivning av variabler ........................................................................................ 13
Övning 7.1.2 – Summan av två tal ................................................................................................. 13
Övning 7.1.3 – Summan och medelvärdet av tre tal ..................................................................... 13
Övning 7.1.4 – Decimaltal till heltal .............................................................................................. 13
Övning 7.1.5 – En saga med två string‐variabler ........................................................................... 14
Övning 7.1.6 – Avrunda flyttal ....................................................................................................... 14
Övning 7.1.7 – Char ....................................................................................................................... 14
Fråga 7.1.8 – När använder man char? ......................................................................................... 14
Övning 7.1.9 – felaktiga variabeltyper .......................................................................................... 15
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 4
Övning 7.1.10 – Operatorn % ........................................................................................................ 15
Övningar till kapitel 7.3 (if‐satsen) .............................................................................................. 16
Övning 7.3.1 – Kontrollera vädret (del 1) ...................................................................................... 16
Övning 7.3.2 – Kontrollera vädret (del 2) ...................................................................................... 16
Övning 7.3.3 – Kontrollera vädret (del 3) ...................................................................................... 16
Övning 7.3.4 – Var är det kallast? (del 1) ...................................................................................... 16
Övning 7.3.5 – Var är det kallast? (del 2) ...................................................................................... 17
Övning 7.3.6 – Felaktig if‐sats ....................................................................................................... 17
Övningar och frågor till kapitel 7.4 (switch‐satsen) ..................................................................... 18
Fråga 7.4.1 – If eller switch? .......................................................................................................... 18
Övning 7.4.2 –banksimulator ........................................................................................................ 18
Övningar till kapitel 7.5 (while och do while) .............................................................................. 19
Övning 7.5.1 – Skriva ut en talföljd (1‐20) ..................................................................................... 19
Övning 7.5.2 – Skriva ut en talföljd (upp till 100) .......................................................................... 19
Övning 7.5.3 – Krona eller klave .................................................................................................... 19
Övning 7.5.4 – Felaktig loop .......................................................................................................... 20
Övning 7.5.5 – Yatzy ...................................................................................................................... 20
Övningar till kapitel 8 (Pseudokod och strukturdiagram) ............................................................ 21
Övning 8.1 – termostat .................................................................................................................. 22
Övningar till kapitel 11 (Metoder) .............................................................................................. 23
Övning 11.1 – Hello() ..................................................................................................................... 23
Övning 11.2 – Lägga samman två textsträngar ............................................................................. 23
Övning 11.3 – Addera() ................................................................................................................. 23
Övning 11.4 – Räkna ut moms (del 1) ........................................................................................... 23
Övning 11.5 – Räkna ut moms (del 2) ........................................................................................... 23
Övning 11.6 – ToPercentage() ....................................................................................................... 23
Övning 11.7 – Myndig? .................................................................................................................. 23
Övning 11.8 – Skapa en meny ....................................................................................................... 24
Övning 11.9 – Klassen MyTemperature......................................................................................... 24 Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 5
Övningar till kapitel 12 (Vektorer och listor) ............................................................................... 25
Övning 12.1 – Alla namn (del 1) .................................................................................................... 25
Övning 12.2 – Alla namn (del 2) .................................................................................................... 25
Övning 12.3 – Väderstationen ....................................................................................................... 25
Övning 12.4 – Väderstationen (version 2) ..................................................................................... 25
Övning 12.5 – Tvådimensionell vektor .......................................................................................... 26
Övningar och frågor till kapitel 13 (Objektorientering) ............................................................... 27
Fråga 13.1 – Objekt vs klasser ....................................................................................................... 27
Fråga 13.2 – Objekt vs variabler .................................................................................................... 27
Uppgift 13.3 – Djuret (del 1) .......................................................................................................... 28
Uppgift 13.4 – Djuret (del 2) .......................................................................................................... 28
Uppgift 13.5 – Djuret (del 3) .......................................................................................................... 28
Uppgift 13.6 – Temperatur i olika städer ....................................................................................... 28
Övningar till kapitel 14 (Sökning, sortering och rekursion) .......................................................... 29
Övning 14.1 – Binär sökning .......................................................................................................... 29
Utökningar .............................................................................................................................................. 29
Övning 14.2 – Bubblesort .............................................................................................................. 29
Övning 14.3 – Rekursion ................................................................................................................ 30
Övning 14.4 – Andra algoritmer .................................................................................................... 30
Övningar till kapitel 15 (Grafiska användargränssnitt) ................................................................ 31
Övning 15.1 – Kalkylatorn ............................................................................................................. 31
Övning 15.2 – Kalkylatorn (del 2 ‐ fixa buggar) ............................................................................. 32
Övning 15.3 – Kalkylatorn (del 3 – utökningar) ............................................................................. 32
Komplexa övningar ..................................................................................................................... 33
Komplex övning 1 – Gissa talet ...................................................................................................... 33
Komplex övning 2 – Höja talet ....................................................................................................... 34
Komplex övning 3 – Reaktionsspelet ............................................................................................. 35
Komplex övning 4 – FindPrim() ..................................................................................................... 35
Komplex Övning 5 – Godisautomaten ........................................................................................... 36
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 6
Komplex övning 6 – Klassen HighScore ......................................................................................... 37
Två klasser .............................................................................................................................................. 37
Klassen HighScore .................................................................................................................................. 37
Detaljerad beskrivning av de olika metoderna ....................................................................................... 38
Testkör .................................................................................................................................................... 39
Implementering ...................................................................................................................................... 40
Utökningar .............................................................................................................................................. 40
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 7
FRÅGOR TILL KAPITEL 5 (BAKGRUND)
I kapitel fem går vi igenom viss bakgrund till programmering. Det finns inga specifika övningar till
detta kapitel, då det är främst teoretiskt. Svaren på alla frågor går att finna i boken. Diskutera
gärna svaren i grupper!
Fråga 5.1 – Olika typer av programmering
Vi skiljer på tre olika typer av programmering: sekventiell, objektorienterad och händelsebaserad.
Förklara skillnaden så gott du kan:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 8
Fråga 5.2 – Algoritm
Beskriv vad en algoritm är för något:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 5.3 – Operativsystemet
Beskriv vilken roll operativsystemet spelar i en dator:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 9
Fråga 5.4 – Plattformsoberoende
Beskriv vad det innebär att ett programmeringsspråk är plattformsoberoende:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 5.5 – Turingkomplett
Beskriv vad det innebär att något (en dator eller ett operativsystem, tex) är turingkomplett:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 10
Fråga 5.6 – C#:s rötter
Beskriv vilka språk som C# är släkt med:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 5.7 – CLI
Beskriv vad CLI är och vad det är bra för:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 11
ÖVNINGAR OCH FRÅGOR TILL KAPITEL 6 (KOMMA IGÅNG MED VS C#)
I kapitel 6 skapar vi vårt första projekt i C# och skriver ut text på skärmen. Kapitlet är främst
teoretiskt.
Övning 6.1 – Hello World
Skapa ett nytt projekt i Visual Studio. Skriv ett program som skriver ut texten ”Hello World” på
skärmen.
Fråga 6.2 – Rader i C#
Viket tecken använder man för att avsluta en vanlig rad i C#:
.........................................................................................................................................................
Fråga 6.3 – Kompilering
Förklara vad som händer när man kompilerar ett program i C#. Använd begreppen källkod, Just In
Time och CIL i din beskrivning (rita gärna figurer):
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 12
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 6.4 – Skriptspråk vs C#
Beskriv vad skillnaden är på ett skriptspråk och C#:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 6.5 – Kommentarer
Beskriv varför det är viktigt att kommentera sin kod:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 13
ÖVNINGAR OCH FRÅGOR TILL KAPITEL 7.1 (VARIABLER)
I kapitel 7.1 lär vi oss om variabler som är ett sätt för programmeraren att lagra data.
Fråga 7.1.1 – Namngivning av variabler
Beskriv vad du tycker att man bör tänka på när man namnger variabler:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
................................................................................................................................................................
.........................................................................................................................................................
Övning 7.1.2 – Summan av två tal
Skapa ett program där man matar in två tal, sedan lägger programmet ihop dessa tal.
Övning 7.1.3 – Summan och medelvärdet av tre tal
Skapa ett program där man får mata in tre heltal. Programmet beräknar sedan beräknar summan
och medelvärdet av dessa tal.
Övning 7.1.4 – Decimaltal till heltal
Skapa ett program som omvandlar ett inmatat decimaltal till närmsta heltal.
Ange ett decimaltal: 11,534 decimaltalet 11,534 avrundas till heltalet 12
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 14
Övning 7.1.5 – En saga med två string‐variabler
Låt användaren mata in namnet på två personer. Skriv sedan ut en kort berättelse om dessa två
personer.
Övning 7.1.6 – Avrunda flyttal
Använd metoden Math.Round() för att avrunda ett flyttal som användaren skriver in till två
decimaler.
Övning 7.1.7 – Char
Använd dig av exempel 7.16 i läroboken. Prova att använda olika numeriska värden i UNICODE‐
tabellen. Vilka slutsatser kan du dra av detta?
Fråga 7.1.8 – När använder man char?
Beskriv i vilka lägen det kan vara smart att använda char (istället för string):
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 15
Övning 7.1.9 – felaktiga variabeltyper
I följande kodstycke ger inte rätt utskrift:
int a = 1; int b = 2; float c = a / b; Console.WriteLine(c);
Utskriften vi får är:
0
Men det vi vill ha är ju 0,5 inte 0.
Det finns två lösningar på problemet, finn båda!
Övning 7.1.10 – Operatorn %
Analysera följande kodstycke och vilken utskrift som ges:
int a = 8 % 3; Console.WriteLine(a);
Testa med olika värden på sidan om %‐tecknet. Dra slutsatser.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 16
ÖVNINGAR TILL KAPITEL 7.3 (IF‐SATSEN)
I kapitel 7.3 lär vi oss jämförelsesatsen if.
Övning 7.3.1 – Kontrollera vädret (del 1)
Skapa ett program som ställer frågan ”Är det fint väder?”. Om användaren svarar ”j” skriver
programmet ut ”Vi går på picknick!”. Annars händer ingenting.
Övning 7.3.2 – Kontrollera vädret (del 2)
Arbeta vidare på övning 7.2.1 men lägg till att användaren kan svara ”n”. Då skriver programmet
ut ”Vi stannar inne och läser en bok”. Det ska inte spela någon roll om man användaren matar in
liten eller stor bokstav.
Övning 7.3.3 – Kontrollera vädret (del 3)
Arbeta vidare på övning 7.2.2. Gör så att om användaren matar in något annat än ”j”, ”J”, ”n”
eller ”N”, så skriver programmet ut ”Jag förstår inte”.
Övning 7.3.4 – Var är det kallast? (del 1)
Skapa ett program där man får mata in temperaturen i Östersund och Åmål. Programmet ska
sedan berätta var det är kallast.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 17
Övning 7.3.5 – Var är det kallast? (del 2)
Skapa ett program som jämför temperaturen mellan Östersund, Åmål och Arboga. Programmet
ska berätta var det är kallast. Du kommer att behöva använda OCH‐operatorn &&. Utgå från
följande kod och ersätt ”...” med kod:
Console.Write("Ange temperatur för Östersund: "); int ostersund = Convert.ToInt32(Console.ReadLine()); Console.Write("Ange temperatur för Åmål: "); int amal = Convert.ToInt32(Console.ReadLine()); Console.Write("Ange temperatur för Arboga: "); int arboga = Convert.ToInt32(Console.ReadLine()); if (...) { Console.WriteLine("Det är kallast i Östersund "); } else if (...) { Console.WriteLine("Det är kallast i Åmål"); } else { Console.WriteLine("Det är kallast i Arboga"); }
Övning 7.3.6 – Felaktig if‐sats
Något stämmer inte riktigt med följande if‐sats:
int var = 10; if (var = 10) Console.WriteLine("den är 10!");
Fundera över följande: När vi försöker kompilera koden så får vi ett felmeddelande, varför får vi
just detta felmeddelande tror du?
Skriv om koden så att det blir rätt!
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 18
ÖVNINGAR OCH FRÅGOR TILL KAPITEL 7.4 (SWITCH‐SATSEN)
Switch‐satsen är en annan jämförelsesats än if‐satsen. Egentligen kan man göra allt med en if‐sats
men switch har också sina användningsområden.
Fråga 7.4.1 – If eller switch?
Beskriv när man ska använda sig av en if‐sats och när man ska använda sig av en switch‐sats:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Övning 7.4.2 –banksimulator
Skriv ett program som simulerar en bank. Man ska kunna sätta in pengar och ta ut pengar, samt
kola saldo. Detta görs via en meny som du ska göra med en switch‐sats:
[I]nsättningt [U]ttag [S]aldo [A]vsluta
Observera att du bör arbeta med loopar för denna uppgift, se kapitel 7.5!
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 19
ÖVNINGAR TILL KAPITEL 7.5 (WHILE OCH DO WHILE)
I kapitel 7.5 lär vi oss att göra loopar för att köra samma kodslinga om och om igen. while och do
while är två olika loopar i C#.
Övning 7.5.1 – Skriva ut en talföljd (1‐20)
Skapa ett program som skriver ut alla tal mellan 1 och 20.
Övning 7.5.2 – Skriva ut en talföljd (upp till 100)
Skapa ett program där användaren får mata in ett tal mellan 1 och 100. Programmet skriver sedan
ut alla tal, från talet som användaren matade in upp till och med 101. Allt på samma rad. Om man
matar in något annat än ett tal mellan 1 och 100 stängs programmet av.
Exempel:
Mata in ett tal: 42 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
Övning 7.5.3 – Krona eller klave
Be användaren mata in hur många gånger denne vill singla slant. Programmet ska sedan slumpvis
mata ut om det blir krona eller klave, lika många gånger som användaren angett.
För att implementera uppgiften i C# behöver du söka reda på hur man slumpar fram saker.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 20
Övning 7.5.4 – Felaktig loop
I följande loop får vi ett felmeddelande:
string str; do { Console.WriteLine("Vil du fortsätta loopen?"); str = Console.ReadLine(); } while(str = "j");
Vad innebär felmeddelandet? Hur fixar du så att det blir rätt?
Övning 7.5.5 – Yatzy
Skapa ett program som sex gånger slumpar fram tärningsslag (tal mellan 1 och 6). Börja med att
skriva pseudokod för detta.
För att implementera uppgiften i C# behöver du söka reda på hur man slumpar fram saker.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 21
ÖVNINGAR TILL KAPITEL 8 (PSEUDOKOD OCH STRUKTURDIAGRAM)
I kapitel 8 lär vi oss mer om pseudokod och att skapa strukturdiagram. I övningar som kommer
senare i denna bok kommer vi vidare att öva på att skapa både pseudokod och strukturdiagram. I
detta kapitel finner du en övning då du ska skapa kod utifrån ett redan färdigt strukturdiagram!
För att skapa C#‐kod utifrån pseudokod kan jag rekommendera implementering av sök‐ och
sorteringsalgoritmer.
(Övning på nästa sida.)
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 22
Övning 8.1 – termostat
Skapa pseudokod och C#‐kod för strukturdiagramet nedan. Nån stans bör också temperaturen
skrivas ut.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 23
ÖVNINGAR TILL KAPITEL 11 (METODER)
I kapitel 11 lär vi oss att strukturera kod med hjälp av metoder.
Övning 11.1 – Hello()
Skapa en metod Hello() som tar en string‐variabel som indata och skriver ut texten ihop med
ett annat meddelande.
Övning 11.2 – Lägga samman två textsträngar
Skapa en metod som tar in två string‐variabler, lägger samman dessa och returnerar som en
sträng. (T.ex. strängarna ”Hej din gamle galosch!” och ”Hur mår du?” blir alltså ”Hej du gamle
galosch! Hur mår du?”)
Övning 11.3 – Addera()
Skapa (den smått meningslösa) metoden Addera() som tar in två heltal och returnerar summan.
Övning 11.4 – Räkna ut moms (del 1)
Skapa en metod som lägger till momsen till en viss summa. Antag att momsen är 25%.
(T.ex. talet 100 ger alltså svaret 125).
Övning 11.5 – Räkna ut moms (del 2)
Gör om funktionen i uppgift 8.4, så att man i metodanropet (via parameterlistan) får ange vad
momsen ligger på.
Övning 11.6 – ToPercentage()
Skapa metoden ToPercentage() som tar in ett decimaltal och returnerar ett heltal.
(T.ex. flyttalet 0.73 ger alltså heltalet 73.)
Övning 11.7 – Myndig?
Skapa en metod som kontrollerar om en person är myndig. Metoden ska ta in ett heltal och
returnera true eller false.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 24
Övning 11.8 – Skapa en meny
Skapa ett program med ett menyval. I menyn får man välja att exekvera olika uppgifter som du
hittills löst. Ett exempel på hur menyn kan se ut:
Välj ett alternativ genom att trycka respektive tangent: [K]ontrollera vädret [övning 7.3.3] [S]kriva ut en talföljd 1‐20 [övning 7.5.1] [A]ddera() [övning 11.3] [R]äkna ut moms [övning 11.5] [Q]uit
Alla menyalternativ ska ligga i olika metoder.
Övning 11.9 – Klassen MyTemperature
Utgå från klassen i exempel 11.14 i läroboken. Gör följande förbättringar:
Som det är nu ligger uträkningen från Celsius till Fahrenheit (fahrenheit = ((celsius
* 9) / 5) + 32) på två ställen. En i varje överlagring. Skapa istället en intern metod för
denna uträkning. Metoden ska inte vara synlig utifrån (private). De båda
överlagringarna ska använda denna interna metod. Kalla metoden CTF().
Skapa en konverterare från Fahrenheit till Celsius med två överlagringar (int och float).
På samma sätt som med Celsius till Fahrenheit ska själva uträkningen ligga i en intern
metod (se punkten ovan). Skapa och anropa den interna metoden FTC().
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 25
ÖVNINGAR TILL KAPITEL 12 (VEKTORER OCH LISTOR)
I kapitel 12 lär vi oss att lagra listor i vektorer och i List‐klassen.
Övning 12.1 – Alla namn (del 1)
Skapa en string‐vektor med fem element. Användaren får mata in fem namn via en for‐loop.
Programmet skriver sedan ut dessa namn via en annan for‐loop.
Övning 12.2 – Alla namn (del 2)
Efter att alla namn har skrivits ut, ska användaren kunna skriva ett index och därefter ett annat
namn. Personen på detta index i vektorn byts då ut och alla namn skrivs ut igen. Om användaren
istället skriver ”Q” eller ”q” så avslutas programmet direkt.
Övning 12.3 – Väderstationen
Skapa en vektor som ska innehålla temperaturmätningar från en väderstation. I programmets
början ska användaren få ange hur många mätningar som har gjorts. Därefter får användaren
mata in olika temperaturer. Temperaturerna ska anges i decimaltal. Programmet ska sedan skriva
ut de olika temperaturerna och medeltemperaturen.
Bestäm själv om du använder for eller foreach. Motivera ditt val som en kommentar i koden!
Innan du kodar programmet i C#, skapa ett strukturdiagram av det.
Övning 12.4 – Väderstationen (version 2)
Denna övning påminner om den förra, men man skriver inte in i början hur många mätningar som
ska göras. Allt sköts istället via en meny:
[L] ägg till temperaturmätning [S]kriv ut alla temperaturer och medeltemperatur [T]ag bort temperaturmätning [A]vsluta
När man väljer att ta bort en temperaturmätning, så anger man viken mätning man vill ta bort
med hjälp av index.
Programmet ska vara kodat för att hantera undantag, så om användaren skriver in något oväntat
ska programmet hantera detta.
Bestäm själv om du använder for eller foreach. Motivera ditt val som en kommentar i koden! A
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 26
Övning 12.5 – Tvådimensionell vektor
Skapa ett litet gissa‐spel med en tvådimensionell vektor som är 4x4 stor. Slumpa ut en ruta i vilket
ett mål ligger. Användaren ska få mata in x‐ och y‐koordinater för att skjuta mot målet. Om
användaren missar målet ska denne se var den har skjutit. I exemplet nedan har användaren
skjutit två gånger (mot koordinaterna 1,1 och 4,3) och missat. Användaren försöker också skjuta
mot ett nytt mål:
|1|2|3|4| 1|* 2| 3| 4| * NYTT SKOTT Ange X‐koordinat: 3 Ange Y‐koordinat:
Efter att användaren har träffat målet skrivs antal försök ut och programmet avslutas.
Programmet ska vara kodat för att hantera undantag, så om användaren skriver in något oväntat
ska programmet hantera detta.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 27
ÖVNINGAR OCH FRÅGOR TILL KAPITEL 13 (OBJEKTORIENTERING)
I kapitel 13 lär vi oss om klasser och objekt i C#.
Fråga 13.1 – Objekt vs klasser
Beskriv skillnaden mellan ett objekt och en klass:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Fråga 13.2 – Objekt vs variabler
Beskriv vad skillnaden mellan objekt och variabler är i C#:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 28
Uppgift 13.3 – Djuret (del 1)
Skapa en klass för ditt favoritdjur. Skapa klassmedlemmar (både variabler och metoder) som du
finner lämpliga. T.ex. kan djuret hund innehålla de publika variablerna name, race och age samt
de publika metoderna Bark() och Fetch(). Skapa sedan ett testobjekt till klassen.
Uppgift 13.4 – Djuret (del 2)
Gör om så att variablerna i din djur‐klass (uppgift 13.3) är osynliga, private. De skall istället
göras om till egenskaper (med get‐ och set). Använd egenskaperna i ett testobjekt.
Uppgift 13.5 – Djuret (del 3)
Skapa en konstruktor till din djur‐klass som tar emot värden för namn, ålder, ras eller vad du nu
har skapat för medlemsvariabler. Använd konstruktorn i ett testobjekt.
Uppgift 13.6 – Temperatur i olika städer
Utveckla övning 7.3.4. Nu ska det inte vara bestämt i programmet vilka städer som finns – eller
hur många. Användaren ska själv via en meny kunna välja att lägga till en stad. När användaren
lägget till en stad, får han eller hon får ange namn och temperatur. Via menyn kan man sedan
kontrollera temperatur för alla städer, medeltemperatur samt var det är varmast och var det är
kallast.
Programmet ska vara kodat för att hantera undantag, så om användaren skriver in något oväntat
ska programmet hantera detta.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 29
ÖVNINGAR TILL KAPITEL 14 (SÖKNING, SORTERING OCH REKURSION)
Övning 14.1 – Binär sökning
Att implementera en sökmetod blir meningsfullt först då man har en lång lista att söka i. Långa
listor lagras oftast på fil eller i databaser. Att ladda in från fil och databaser ligger dock utanför
ramarna på kursen Programmering 1.
Skapa en klass som hanterar personer med namn och personnummer. Skapa sedan en lista med
hjälp av klassen List. Användaren ska i programmet kunna lägga till personer till listan, samt söka
på personnummer i listan. När användaren söker ska namnet och index (var i listan) för personen
skrivas ut. (För att göra det enkelt för dig, kan du i programkoden lägga till flera element i listan,
så att de finns där redan från början.)
Utökningar
Är du klar i god tid? Då kan du arbeta vidare på klassen genom att lägga till stöd för följande:
Gör så att man kan söka på namn, inte bara personnummer. Tips: sök på ”C# string
compare” för hjälp!
Fixa filsparning och filladdining för att läsa in listor från fil! Detta är inget som kommer
förrän i kursen Programmering 2, men det kan vara intressant att prova redan nu!
Övning 14.2 – Bubblesort
Implementera algoritmen bubblesort enligt läroboken. Gör följande:
Testa med olika listor.
Ändra så att algoritmen sorterar så att det hösta talet kommer först.
Förklara för din lärare hur bubbulesort fungerar.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 30
Övning 14.3 – Rekursion
Implementera Fibonacci() så som den beskrivs i läroboken. Prova med olika värden som
indata. Ju högre värden man provar, desto långsammare går det. Lägg till en möjlighet att mäta
hur lång tid algoritmen tar på sig.
Förklara vad det beror på att det går så långsamt vid höga värden som indata:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Övning 14.4 – Andra algoritmer
Det finns ett flertal andra sök‐, sorterings‐ och rekursiva algoritmer än de som tas upp i läroboken.
Använd webben för att söka reda på några och ange namnet på några du finner:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Kan du implementera någon av dem i C#? Försök förstå hur den algoritmen fungerar och förklara
för din lärare!
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 31
ÖVNINGAR TILL KAPITEL 15 (GRAFISKA ANVÄNDARGRÄNSSNITT)
Övning 15.1 – Kalkylatorn
Följ guiden i kapitel 15.8 för att skapa en kalkylator. Delar av guiden kan upplevas som krångliga
och inte helt självklara. Beskriv vilka delar du upplevde som svårare och förklara varför:
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
.........................................................................................................................................................
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 32
Övning 15.2 – Kalkylatorn (del 2 ‐ fixa buggar)
Kalkylatorn innehåller vissa buggar. Här är två:
Om man direkt efter att ha använt lika med‐knappen trycker på en siffra, så blir det lite
knasigt. Vad händer? Lös problemet!
Som det är, så kan man nu skriva saker i textrutan, det ska man inte kunna. Lös!
Finns det fler buggar?
Övning 15.3 – Kalkylatorn (del 3 – utökningar)
Som det är nu hanterar kalkylatorn bara plus. Lägg till funktionalitet för de övriga tre räknesätten
( ‐, * och / ) också.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 33
KOMPLEXA ÖVNINGAR
Här följer sex komplexa övningar. De är tänkta att träna dig i flera moment samtidigt. Inför varje
övning anges vilket kapitel i läroboken du förväntas ha läst. Att flera av uppgifterna kan lösas
redan efter att ha läst kapitel 7, betyder inte att det är lätt att lösa dem då. Det har helt enkelt
med att det som beskrivs i kapitel 7, är det som gör språket C# turingkomplett.
Övningarna i detta kapitel är sorterade i svårighetsordning. Hur svårt något är kan dock upplevas
olika av olika personer. Om övningarna här upplevs som svåra, gör tidigare övningar i
övningsboken. Kom överens med din lärare!
Komplex övning 1 – Gissa talet
Övningen kräver att du har läst fram till minst: kapitel 7 (för konsolläge) och kapitel 15 (för
grafiskt läge).
Denna uppgift går ut på att skapa ett klassiskt spel. Spelet går till så att datorn slumpvis hittar på
ett tal mellan 1 och 100. Användaren ska sedan gissa talet.
Gissar man fel svarar programmet ”Fel. Talet är mindre.” respektive ”Fel. Talet är större.”
I slutet skriver programmet ut antalet försök.
Här är två exempel på hur det kan se ut, dels i konsolläge och dels i grafiskt läge:
Gissa talet? 15 Fel! Talet är större! Gissa talet? 50 Fel! Talet är mindre! Gissa talet? 40 Fel! Talet är större! Gissa talet? 45 Fel! Talet är större! Gissa talet? 48 Rätt! Du gjorde 5 försök.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 34
Börja med att skriva programmet i pseudokod och gör ett aktivitetsdiagram till det. För att koda
denna uppgift måste du ta reda på hur man slumpar fram tal i C#. Kom överens med din lärare
om du ska koda det i konsolläge eller med grafiskt användargränssnitt. Om du gör programmet för
konsol, börja med att skriva programmet i pseudokod och gör ett aktivitetsdiagram till det. Koda
det därefter i C#.
Komplex övning 2 – Höja talet
Övningen kräver att du har läst fram till minst: kapitel 7 (för konsolläge) och kapitel 15 (för
grafiskt läge).
Du ska nu konstruera ett spel för två spelare. I tur och ordning får spelarna höja det aktuella
värdet med 1,2 eller 3. Den som skriver in 21 förlorar. Vinnaren får ett fint vinstmeddelande. Här
är två exempel på hur det kan se ut, dels i konsolläge och dels i grafiskt läge:
Spelare 1, välj 1,2 eller 3: 3 Spelare 2, välj 4,5 eller 6: 4 Spelare 1, välj 5,6 eller 7: 6 Spelare 2, välj 7,8 eller 9: 8 Spelare 1, välj 9,10 eller 11: 11 Spelare 2, välj 12,13 eller 14: 13 Spelare 1, välj 14,15 eller 16: 16 Spelare 2, välj 17,18 eller 19: 17 Spelare 1, välj 18,19 eller 20: 20 Spelare 2, välj 21 OCH FÖRLORA SEN!!!: 21 Spelare 1 vann! Grattis!
Börja med att skriva programmet i pseudokod och gör ett aktivitetsdiagram till det. Koda det
därefter i C#. Kom överens med din lärare om du ska koda det i konsolläge eller med grafiskt
användargränssnitt. Om du gör programmet för konsol, börja med att skriva programmet i
pseudokod och gör ett aktivitetsdiagram till det. Koda det därefter i C#.
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 35
Komplex övning 3 – Reaktionsspelet
Övningen kräver att du har läst fram till minst: kapitel 7 (för konsolläge) och kapitel 15 (för
grafiskt läge).
Skapa ett spel som testar användarens reaktionsförmåga och anger hur snabbt användaren
trycker på tangenter i millisekunder. Spelet kan se ut såhär:
Ok, Get ready... NOW! Det tog 343 millisekunder
Mellan “Ok, Get ready…” och “NOW!” ska spelet vänta slumpvis mellan 3 och 10 sekunder. Efter
att ”NOW!” har skrivits ut, ska en mätning starta som kontrollerar hur lång tid det tar för
användaren att trycka på en tangent. Tiden ska sedan skrivas ut i millisekunder. Om
användaren ”fuskar” och trycker innan ”NOW” skrivs ut, så ska ett meddelande om fusk skrivas
ut.
Börja med att skriva programmet i pseudokod och gör ett aktivitetsdiagram till det. Koda det
därefter i C#.
Tips att söka på via webben: ”C# sleep” och ”C# tickcount”.
Komplex övning 4 – FindPrim()
Övningen kräver att du har läst fram till minst: kapitel 7.
Skapa en metod som tar ett heltal som parameter. Metoden ska finna alla primtal mellan 1 och
talet som anges som parameter (t.ex. FindPrim(3400), ger alla primtal mellan 1 och 3400). Ett
primtal är ett positivt heltal som endast är jämnt delbart med sig själv och 1.
Om man vill avgöra om ett tal är ett primtal, delar man det med alla talet som ligger mellan talet
själv och 1.
Använd dig av for‐loopar.
Du kommer behöva operatorn %. Se:
http://msdn.microsoft.com/enus/library/0w4e0fzs(v=VS.80).aspx
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 36
Komplex Övning 5 – Godisautomaten
Övningen kräver att du har läst fram till minst: kapitel 13.
Skapa ett program för en godisautomat. I godisautomaten finns det ett antal godisar. Som
användare får man skriva in ett nummer på luckan ur vilken man vill köpa godis. Första godiset
ligger på lucka 1, andra godiset på lucka 2 osv. Varje gång man köper en godis minskar antalet av
just den godistypen. Användaren får fortsätta köpa godis så länge han eller hon vill (och även
fortsätta och stirra på automaten när den är tom). Det kan aldrig bli färre än 0 godisar i en lucka.
Blir det färre får användaren ett meddelande att det godiset är slut.
LUCKA NR: 1. Japp ANTAL: 3 LUCKA NR: 2. Dajm ANTAL: 5 LUCKA NR: 3. Kola ANTAL: 5 LUCKA NR: 4. Lakris ANTAL: 5 Vilken godis vi du ha ([q] för att avsluta): 1 Du får en Japp. Mums! Tryck valfri tangent för att fortsätta köpa godis! [‐‐‐‐‐‐‐‐‐‐SKÄRMEN TÖMS‐‐‐‐‐‐‐‐‐‐] LUCKA NR: 1. Japp ANTAL: 2 LUCKA NR: 2. Dajm ANTAL: 5 LUCKA NR: 3. Kola ANTAL: 5 LUCKA NR: 4. Lakris ANTAL: 5 Vilken godis vi du ha ([q] för att avsluta):
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 37
Komplex övning 6 – Klassen HighScore
Övningen kräver att du har läst fram till minst: kapitel 14.
Detta är den största övningen i denna övningsbok. Du kommer att få användning av flera saker du
lärt dig innan. Du ska skapa en klass som kan användas i alla tänkbara spel där man kan använda
sig av en highscore. Tanken är att vilken programmerare som helst ska kunna använda sig av din
klass, genom att importera din .cs‐fil i sitt projekt.
Klassen ska innehålla vissa metoder som jag är specificerade nedan. Det är upp till dig att
konstruera klassen och innehållet.
Det är mycket viktigt att du läser igenom allt nedan innan du börjar!
Två klasser
Egentligen behöver du konstruera två klasser:
1. En (mycket liten) klass som innehåller egenskaperna namn och poäng. Klasen ska också innehålla en konstruktor som tar emot indata för name och points. Klassen ska heta HSItem (som i High Score item). Börja med följande kodstycke:
class HSItem { string name; int points; }
Du ska konstruera egenskaper för name och points.
2. Själva klassen HighScore. Detta är en mycket stor klass som innehåller många metoder. Beskrivning för klassen finner du nedan.
Klassen HighScore
Klassen HighScore ska innehålla följande synliga (public) metoder:
HighScore()
Add() – ska överlagras Print() ‐ testfunktion
Klassen ska också innehålla följande osynliga (private) metod:
Sort()
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 38
Detaljerad beskrivning av de olika metoderna
Nedan följer en detaljerad beskrivning av de olika metoderna som ska ingå i klassen.
HighScore()(ej obligatorisk då konstruktorer ej är en tvungen del i Programmering 1.
Kom överens med din lärare!)
Beskrivning Konstruktor för klassen. Tar emot ett heltalsvärde för hur många som
får finnas i higscore‐listan åt gången.
Indata int maxInList
Utdata ‐
Add()
Beskrivning Lägger till element i listan. Tänk på att det aldrig ska finnas fler element
i listan, än vad maxInList anger. Dock ska en person med mer poäng,
peta ut en person med mindre poäng om listan är full.
Indata string name, int points
Utdata ‐
Print()
Beskrivning Detta är en testmetod för att testa om koden funkar. Denna skriver ut
hela listan, med nummer (1a, 2a osv), namn och poäng till konsolen.
I vanliga fall när man skapar en klass så ska den inte vara beroende av
konsolen. Oftast har vi ju grafiska spel. Tanken med denna metod är
dock att vi ska kunna klassen den i konsolen.
Indata ‐
Utdata ‐
Sort()
Beskrivning Detta är en osynlig (private) metod som sorterar listan.
Programmeraren som använder klassen i sitt spel ska själv aldrig
behöva kalla på sorteringsmetoden. Det gör du lämpligtvis när du
lägger till ett element.
I denna metod använder du dig av valfri sorteringsalgoritm. Tala med
din lärare!
Indata ‐
Utdata ‐ Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 39
Testkör
Din klass ska ju egentligen användas i något eller några spel. Vi kan dock redan nu testa om
klassen funka, med följande kodstycke:
class Program { static void Main(string[] args) { // Skapa highscoreklassen, max 5 i listan: HighScore hs = new HighScore(5); // Fyll på med element: hs.Add("JamesTKirk", 132); hs.Add("AgentMulder", 120); hs.Add("CaptainPicard", 40); hs.Add("BobbaFett", 180); hs.Add("RickDeckard", 110); // Gör testutskrift: hs.Print(); // Fyll på med fler element hs.Add("Hal9000", 403); hs.Add("DavidBowman", 445); // Ny testutskrift hs.Print(); } }
Ovanstående kodstycke ska vid exekvering ge följande utskrift:
******** HIGHSCORE ******** 1. BobbaFett 180p 2. JamesTKirk 132p 3. AgentMulder 120p 4. RickDeckard 110p 5. CaptainPicard 40p ******** HIGHSCORE ******** 1. DavidBowman 445p 2. Hal9000 403p 3. BobbaFett 180p 4. JamesTKirk 132p 5. AgentMulder 120p
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal
PROGRAMMERING 1 MED C# ARBETSBOK
© THELIN LÄROMEDEL & KRISTER TRANGIUS 2011‐2012 40
Implementering
Implementrera klassen så att den används i de olika spel du skapat.
Utökningar
Är du klar i god tid? Då kan du arbeta vidare på klassen genom att lägga till stöd för följande:
I vissa spel ska man ju få så mycket poäng som möjligt, i andra ska man göra något på så
kort tid som möjligt. Lägg till stöd så att programmeraren som använder din klass kan
ställa in detta via konstruktorn.
Bubblesort är den enklaste, men också den långsammaste sorteringsalgoritmen.
Implementera fler än en sorteringsalgoritm. Visa din lärare och diskutera för‐ och
nackdelar med de olika algoritmerna!
Fixa filsparning och filladdining! Detta är inget som kommer förrän i kursen
Programmering 2, men det kan vara intressant att prova redan nu!
Licensierad till eBooks användare Får endast användas inom ramen för gällande livcensavtal