Kmom01: Gör ett menyprogram
Du ska göra ett menyprogram och strukturera koden i funktioner. Du skapar din app i kmom01 och kallar den Menu.
OBS Alla utskrifter görs i menyalternativen. Skriv ut det metoderna returnerar.
Förkunskaper
Section titled “Förkunskaper”Du har jobbat igenom allt material i “kmom01”.
Inledning
Section titled “Inledning”Börja med att göra ett flödesschema och/eller pseudokod. Läs igenom kraven och tänk igenom din kod innan du börjar skriva kod. Sen skapar du ett nytt projekt/app som du kallar Menu.
Metoder - sammanfattning
Section titled “Metoder - sammanfattning”| Menyval | Metodnamn | Returvärde |
|---|---|---|
| 1 | PrintInfoAboutCsharp() | void |
| 2 | ConvertCelsiusToFahrenheit(double tempCelsius) | double |
| 3 | RepeatLetters() | string |
| 4 | CreateAcronym() | string |
| 5 | CountSumAndAverage() | string |
| 6 | ValidateSsn() | bool |
Gör en meny
Section titled “Gör en meny”Uppdatera “Program.cs” med en meny. Utskriften av menyn lägger du i en metod som du själv bestämmer namnet på. Verifiera att menyn fungerar innan du fortsätter. Det kan du göra genom att lägga en utskrift i varje case-sats, det vill säga för varje meny-alternativ.
Menyval 1: Information om C#
Section titled “Menyval 1: Information om C#”(Metodnamn: void PrintInfoAboutCsharp())
Syftet med denna uppgiften är att du ska hitta information om C# och .NET och välja ut 3 meningar (minst 200 tecken) med den informationen du tycker är viktigast att veta.
Minst 3 meningar efterfrågas. Skriv något om C#, till exempel vilka som utvecklade det, vad det är för språk och plattformen .NET (dotnet). PrintInfoAboutCsharp har ingen retur.
Menyval 2: Celsius till Fahrenheit
Section titled “Menyval 2: Celsius till Fahrenheit”(Metodnamn: double ConvertCelsiusToFahrenheit(double tempCelsius))
Fråga efter en temperatur i Celsius (ska kunna vara ett tal med decimaler) och returnera motsvarande temperatur i Farenheit avrundat till 2 decimaler. Inmatningen av temperaturen i Celcius ska ske innan anrop av metoden ConvertCelsiusToFahrenheit. Inmatning sker innan metoden anropas. Utskriften sker efter anropet. Exempel:
input: 11.344 output: "52.42"Menyval 3: Upprepa tecken
Section titled “Menyval 3: Upprepa tecken”(Metodnamn: string RepeatLetters())
Fråga efter en sträng och skriva ut en ny sträng där varje tecken har ökat med +1 och är separerat med ”-”. Inmatning sker i metoden. Utskriften sker efter anropet. Exempel:
input: "apa" output: "a-pp-aaa"input: "kassler" output: "k-aa-sss-ssss-lllll-eeeeee-rrrrrrr"Menyval 4: Skapa akronym
Section titled “Menyval 4: Skapa akronym”(Metodnamn: string CreateAcronym())
Fråga efter en sträng och skapa en akronym genom att plocka ut alla stora bokstäver i namnet du skriver in. Inmatning sker i metoden. Utskriften sker efter anropet. Exempel:
input: "BRöderna Ivarsson Osby" output: "BRIO"input: "Ingvar Kamprad Elmtaryd Agunnaryd" output: "IKEA"Menyval 5: Summa och medelvärde
Section titled “Menyval 5: Summa och medelvärde”(Metodnamn: string CountSumAndAverage())
Låt användaren mata in tal tills texten “klar” matas in. Då skriv summan av talen och medelvärdet av talen ut. Metoden returnerar en sträng med summan och medelvärdet enligt output nedan. Avrunda medelvärdet till 2 decimaler. Inmatning sker i metoden. Utskriften sker efter anropet. Exempel:
input: 1input: 2input: 3input: "klar" output: "Summan=6 och medelvärdet=2"Menyval 6: Validera personnummer med hjälp av Luhnalgoritmen
Section titled “Menyval 6: Validera personnummer med hjälp av Luhnalgoritmen”(Metodnamn: bool ValidateSsn())
Luhnalgoritmen används för att verifiera giltigheten hos nummer, särskilt kreditkortsnummer och personnummer.
Algoritmen funkar på så sätt att varannan siffra multipliceras med 2 och varannan med 1, med start på första siffran i personnumret. Om något tal vid multiplikationen blir större än 9 ersätts det talet med dess siffersumma. Därefter summeras alla tal och om summan är jämt delbar med 10 så är kontrollsiffran korrekt. Om personnumret validerar ska metoden returnera true annars false. Koden ska klara av personnummer med och utan - innan de fyra sista siffrorna. Om för får eller för många siffror skickas med ska det bli false. Inmatning sker i metoden. Efter anropet av metoden skrivs texten “Valid” ut om personnumret var korrekt och annars skrivs texten “Not valid” ut beroende på om metoden returnerar true eller false.
8 1 1 2 1 8 9 8 7 6* 2 1 2 1 2 1 2 1 2 1------------------------- ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 16 1 2 2 2 8 18 8 14 6Vilket blir 1 + 6 + 1 + 2 + 2 + 2 + 8 + 1 + 8 + 8 + 1 + 4 + 6 = 50 som är delbart med 10.
Exempel:
input: "811218-9876" output: "Valid"input: "231218-9874" output: "Not valid"input: "8181818181" output: "Valid"Så här kan det se ut när du är klar med uppgiften. Videon visar hur menyprogrammet ser ut när marie testkör de olika alternativen.
Tester
Section titled “Tester”Du testar din kod manuellt genom att köra alla menyalternativ och verifiera input och output under varje deluppgift.
Du testar din kod med enhetstester som du hämtar så här:
task download-tests -- kmom01Då ser det ut så här:
pwd // stå i kmom01tree -L 2.├── Menu│ ├── Menu.csproj│ ├── Program.cs├── Menu.Tests│ ├── Menu.Tests.csproj│ ├── Option1to3Test.cs│ ├── Option4to6Test.csFör att testerna ska kunna köras behöver du lägga dessa två rader överst i din Program.cs.
// Överst i kmom01/Menu/Program.csusing System.Runtime.CompilerServices;[assembly: InternalsVisibleTo("Menu.Tests")]Kör testerna i terminalen, så här:
pwd // stå i kmom01/Menu.Testsdotnet testdotnet test --logger "console;verbosity=normal" // mer informationDå får vi hoppas att alla tester går igenom! Lycka till!
Tips från coachen
Section titled “Tips från coachen”Felsök med hjälp av utskrifter med Console.WriteLine(). Använd gärna debuggern i VS Code.
Glöm inte att använda ‘dotnet format’ för att formatera din kod. Se i slutet av Mer C# för mer information om ‘dotnet format’.
Arbeta i main -branchen och gör många och små commits i ditt lokala Git-repo, du kan ha ungefär 6-10 commits för en sådan här uppgift. Och pusha varje commit till ditt GitHub repo.
Lycka till och hojta till i forumet om du behöver hjälp!