41
PROGRAMMERING 1 Programmering 1 C# ARBETSBOK www.skolportalen.se Thelin Läromedel ISBN: 978-91-7379-172-4 Läromedel för GY2011 Krister Trangius 2012

PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

  • Upload
    others

  • View
    176

  • Download
    27

Embed Size (px)

Citation preview

Page 1: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 2: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel 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å 

[email protected].  

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

Page 3: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 4: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 5: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 6: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 7: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 8: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 9: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 10: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 11: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 12: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 13: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 14: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 15: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 16: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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: 

 

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

Page 17: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 18: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 19: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 20: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 21: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 22: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 23: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 24: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 25: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 26: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 27: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 28: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 29: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 30: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 31: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 32: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 33: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 34: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 35: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 36: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 37: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 38: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 39: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 40: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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

Page 41: PROGRAMMERING 1 - Skolportalen · 2012. 6. 26. · PROGRAMMERING 1 Programmering 1 C# ARBETSBOK ISBN: 978-91-7379-172-4 Thelin Läromedel Läromedel för GY2011 Krister Trangius 2012

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