Kmom01
Detta seminarium tar upp följande områden: grundläggande C#
Förberedelser
Section titled “Förberedelser”Läs Om seminarier.
-
Vad är skillnaden mellan while och do…while?
-
Hur är en for-loop uppbyggd?
-
Vad är skillnaden mellan == och = i C#?
-
Vad händer om du försöker använda en oinitierad lokal variabel i C#?
-
Vad innebär att C# är ett statiskt typat språk?
-
Vad är skillnaden mellan en värdetyp och en referenstyp i C#?
-
Beskriv vad skillnaden mellan en array och en lista i C#.
-
Vad finns på varje index i arrayen
numbersefter följande deklarationint[] numbers = new int[3]? -
Vad finns på varje index i arrayen
namesefter följande deklarationstring[] names = new string[5]? -
Är det möjligt att utöka en befintlig array med några “platser”? Om ja - hur gör man? Om nej - varför?
Tolka kod
Section titled “ Tolka kod”- Vad gör följande kod och vad blir utskriften och varför?
int x = 5;int y = x++;Console.WriteLine(y);- Vad gör följande kod och vad blir utskriften och varför?
int x = 5;int y = ++x;Console.WriteLine(y);- Vad gör följande kod? Blir utskriften 2 eller 2.5. Förklara varför?
double x = 5 / 2;Console.WriteLine(x);- Är följande kod korrekt? Om ja - vad blir utskriften? Om nej - varför?
int x = 10;if (× < 2){ int x = 20; Console.WriteLine(x);}- Vad gör följande kod och vad blir utskriften och varför?
bool a = true;bool b = false;bool result = a && b || a;Console.WriteLine(result);- Vilken utskrift ger följande kod? Hur kan den omformuleras så att en for-loop används i stället för en while-loop?
string[] words = { "I", "am", "happy", "!" };int i =0;while (i < words.Length){ Console.WriteLine(words[i]); i++;}Praktisk uppgift
Section titled “ Praktisk uppgift”Börja med att planera er lösning, vilken kod behövs och vilka datatyper er data kommer ha i de olika stegen. Efter ni har en plan, skriv koden. Använd frågorna nedanför för att planera koden ni behöver för att lösa uppgiften.
- Går det att identifiera delproblem som kan lösas för att testa tidigt?
- Vilka delproblem i så fall?
- Hur kan du testa dessa?
- Ge förslag på lämpliga variabler och vilken datatyp de ska innehålla
- Vilken/Vilka språkkonstruktion/er behövs?
- Vad börjar du med?
- Formulera en lösning i pseudo-kod
- diskutera alternativa lösningar
Uppgifter
Section titled “Uppgifter”- Gör ett program som hanterar bedömning av olika sorters glassar.I detta fall är det maximala antalet olika glassar som kan bedömas 10. Metoder ska definieras och användas för att hantera olika delproblem.
Exempelkörning:
Användarinmatning visas med kursiv text.
Hur många glassar ska bedömas (max 10)? 6
Mata in namnen på de 6 glassarna:
Magnum mandel
Storstrut
Piggelin
88:an
Nogger
Cornetto jordgubb
Ge bedömning (1-5):
Magnum mandel : 5
Storstrut : 2
Piggelin : 2
88:an: 5
Nogger : 4
Cornetto jordgubb: 3
Fler bedömningar (J/N)? J
Ge bedömning (1-5):
Magnum mandel : 4
Storstrut : 1
Piggelin : 4
88:an: 5
Nogger : 3
Cornetto jordgubb: 2
Fler bedömningar (J/N)? N
Antalet genomförda bedömningar är 2
Medelvärdet för varje glass blev
Magnum mandel : 4.5
Storstrut : 1.5
Piggelin : 3
88:an: 5
Nogger : 3.5
Cornetto jordgubb: 2.5
Glassen som fick högst poäng är 88:an.
Glassen som fick lägst poäng är Storstrut.
Krav:
- En konstant ska användas för det maximala antalet glassar (10)
- Arrayer (inte listor) ska användas
- Både for och while-loop ska ingå i lösningen
- Metoder för att hantera delproblem ska ingå:
- mata in namnen på glassarna
- genomföra en bedömning av alla glassar
- presentera glassarna och deras genomsnittliga bedömningar
- bestämma index för den glass som har fått bäst/sämst poäng
Använd följande “stomme” och fyll på med kod i metoderna.
using System;
const int MAX = 10;static void InputIceCreams(string[] iceCreams, int nrOfIceCreams){
}
static void AddPoints(string[] iceCreams, int[] totalpoints, int nrOfIceCreams){
}
static void ShowResult(string[] iceCreams, int[] totalpoints, int nrOfIceCreams, int nrOfMadeGradings){
}
static int IndexBestIceCream(int[] totalPoints, int nrOfIceCreams){
}
static int IndexWorstIceCream(int[] totalPoints, int nrOfIceCreams){
}
static (int, int) IndexBestAndWorstIceCream(int[] totalPoints, int nrOfIceCreams){ // denna eller IndexBestIceCream och IndexWorstIceCream}
string[] iceCreams = new string[MAX];int[] totalPoints = new int[MAX];
int nrOfIceCreams;Console.WriteLine($"Hur många glassar ska bedömas (max {MAX})?");string? input = Console.ReadLine(); // samma sak som string input = Console.ReadLine() ?? "";while (string.IsNullOrEmpty(input) || !int.TryParse(input, out nrOfIceCreams)){ Console.WriteLine("Inte korrekt inmatning. Försök igen!"); input = Console.ReadLine();}
int nrOfGradings = 0;InputIceCreams(iceCreams, nrOfIceCreams);
bool done = false;while (!done){ AddPoints(iceCreams, totalPoints, nrOfIceCreams); nrOfGradings++; Console.WriteLine("Fler bedömningar (J/N)?"); input = Console.ReadLine(); if (input != "J") done = true;}
ShowResult(iceCreams, totalPoints, nrOfIceCreams, nrOfGradings);Console.WriteLine("Glassen som fick högst poäng är " + iceCreams[IndexBestIceCream(totalPoints, nrOfIceCreams)]);Console.WriteLine("Glassen som fick lägst poäng är " + iceCreams[IndexWorstIceCream(totalPoints, nrOfIceCreams)]);
// alternativt// (int, int) result = IndexBestAndWorstIceCream(totalPoints, nrOfIceCreams);// Console.WriteLine($"Glassen som fick högst poäng är {iceCreams[result.Item1]}");// Console.WriteLine($"Glassen som fick lägst poäng är {iceCreams[result.Item2]}");