Conditionals & Input
Præsenter som slidesLæringsmål
- Kan bruge if / else og else if til at styre programmets flow
- Kan anvende switch og ternary operator i passende situationer
- Kan tage input fra brugeren via Console.ReadLine
- Kan validere input med TryParse for at undgå runtime-fejl
- Kan forklare forskellen på lokalt og globalt scope
Betingelser og brugerinput
Programmer er sjældent lineære — de skal kunne tage beslutninger. Conditionals (betingelser) giver dig mulighed for at udføre forskellige handlinger baseret på en bestemt betingelse. Du kan bruge if, else, switch og ternary operator.
If
if er den mest grundlæggende form for betingelse. Kodeblokken kører kun, hvis betingelsen er sand — ellers springes den over.
if (condition)
{
// Kode, der kører hvis betingelsen er sand
}
Eksempel — er tallet større end 10?
Her udskrives "Tallet er større end 10", fordi number > 10 er true.
Betingelsen i parentes skal altid evaluere til bool. Brug { } omkring blokke med mere end én linje.
Videoer
Se det i praksis
Branching, Ifs, and Conditional Logic [Pt 9] | C# for Beginners
Else
else definerer en alternativ kodeblok, der kører når if-betingelsen er falsk:
if (condition)
{
// Kode hvis sand
}
else
{
// Kode hvis falsk
}
Else if
else if tester flere betingelser i træk uden at lave mange indlejrede if-sætninger:
if (condition1)
{
// Kode hvis condition1 er sand
}
else if (condition2)
{
// Kode hvis condition2 er sand
}
else if (condition3)
{
// Kode hvis condition3 er sand
}
else
{
// Kode hvis ingen af betingelserne er sande
}
Er tallet positivt, negativt eller nul?
Praktisk karakter-eksempel:
Switch
switch vælger mellem forskellige handlinger baseret på værdien af en variabel eller et udtryk — nyttigt når du har mange faste tilfælde:
switch (variable)
{
case value1:
// Kode når variable == value1
break;
case value2:
// Kode når variable == value2
break;
default:
// Kode når intet matcher
break;
}
Moderne C# understøtter også switch expressions — en kortere syntaks:
string message = day switch
{
"mandag" => "Uge start",
"fredag" => "Næsten weekend",
_ => "Hverdag"
};
_ er default-casen — den fanger alle værdier, der ikke matcher.
Ternary operator
Ternary operator (? :) er en kompakt if-else i én linje:
result = (condition) ? valueIfTrue : valueIfFalse;
string status = age >= 18 ? "Voksen" : "Barn";
Ternary er god til simple valg. Brug if/else til kompleks logik — læsbarhed slår korthed.
Brugerinput med Console.ReadLine
Console.ReadLine() læser en linje tekst fra brugeren og returnerer den som en string:
Console.Write skriver uden linjeskift. Console.ReadLine() returnerer string? — nullable, fordi brugeren kan trykke Enter uden at skrive noget.
Konvertering af input
Console.ReadLine() returnerer altid en string. Skal du arbejde med tal, skal du konvertere:
int.Parse() konverterer strengen til et heltal — men programmet crasher, hvis input er ugyldigt (fx "abc").
Fejlhåndtering med TryParse
Brug TryParse til sikker konvertering — metoden returnerer true/false i stedet for at kaste en fejl:
Samme mønster virker for andre typer — altid brug TryParse på brugerinput.
Input med forskellige datatyper
Dobbelt (decimaltal) — double.TryParse:
Dato — DateTime.TryParse:
Boolean — bool.TryParse:
Mønsteret læs → valider → beslut genbruger du i næsten alle konsolprogrammer. Det er kernen i interaktiv programmering.
Scope — lokalt og globalt
Variabler og metoder har et scope (synlighedsområde) — de er kun tilgængelige inden for bestemte dele af koden.
Lokalt scope
Variabler erklæret inde i en metode eller blok har lokalt scope. De forsvinner, når blokken slutter:
Globalt scope
Variabler erklæret uden for metoder (på klasseniveau eller filniveau) har globalt scope og kan tilgås fra flere steder:
Globale variabler kan være farlige — de er synlige overalt og sværere at spore:
- Utilsigtet ændring — flere metoder kan ændre samme variabel uden at du opdager det
- Navnekonflikter — en lokal variabel kan skygge for en global med samme navn
- Sværere at teste — logik spredt over hele programmet
int x = 10; // Global
<p>void MyMethod()
{
int x = 20; // Lokal — skygger for global x
Console.WriteLine(x); // Udskriver 20, ikke 10
}
Behold variabler lokale så langt det er muligt — det giver mere struktureret og vedligeholdelig kode.
Kombinere betingelser og input
Et komplet mini-program, der samler det du har lært:
Git-trin
- Branch:
main - Commit:
feat: betingelser og input
Opsummering
if,else ifogelsestyrer programflow baseret på betingelserswitchhåndterer mange faste værdier; ternary er en kort if-elseConsole.ReadLine()læser brugerinput som string- Brug
TryParsetil sikker konvertering — undgå crash ved ugyldigt input - Hold variabler lokale så langt det er muligt — undgå globale variabler
Test din viden
Spørgsmål 1
Hvilken type skal betingelsen i en if-sætning evaluere til?
Betingelsen i parentes efter if skal altid være boolsk — enten true eller false. Fx number > 10 eller score >= 60.
Spørgsmål 2
Hvad returnerer Console.ReadLine()?
Console.ReadLine() læser brugerens input som tekst og returnerer en string?. Skal du bruge tal, skal du konvertere — fx med TryParse.
Spørgsmål 3
Hvorfor er int.TryParse bedre end int.Parse på brugerinput?
int.Parse kaster en exception og crasher programmet, hvis brugeren skriver fx "abc". TryParse returnerer false i stedet — så du kan vise en fejlbesked og spørge igen.
Spørgsmål 4
Hvornår er switch særligt velegnet?
switch vælger handling baseret på værdien af en variabel — fx ugedage eller menuvalg. Til simple sand/falsk-beslutninger er if/else ofte bedre.
Spørgsmål 5
Hvad gør ternary-operatoren ? :?
(condition) ? valueIfTrue : valueIfFalse er en if-else i én linje. Fx age >= 18 ? "Voksen" : "Barn". Brug den kun til simple valg — kompleks logik hører i if/else.
Spørgsmål 6
Hvad er lokalt scope?
En variabel erklæret inde i en metode eller { }-blok har lokalt scope — den forsvinder, når blokken slutter. Det er den anbefalede tilgang frem for globale variabler.
Spørgsmål 7
Hvad sker der, hvis du erklærer int x = 20; inde i en metode, når der allerede findes en global int x = 10;?
Den lokale variabel skygger (shadowing) for den globale. Inde i metoden refererer x til den lokale værdi (20). Uden for metoden er det stadig den globale (10).