Lär dig villkorslogik med gren- och loopinstruktioner
I den här självstudien lär du dig hur du skriver kod som undersöker variabler och ändrar körningssökvägen baserat på dessa variabler. Du använder webbläsaren till att skriva C#-kod interaktivt, och du ser resultatet av att kompilera och köra koden direkt. Den här självstudien innehåller en serie lektioner som utforskar förgrenings- och loopkonstruktioner i C#. Under serien får du lära dig grunderna i språket C#.
Dricks
Om du vill klistra in ett kodfragment i fokusläget bör du använda kortkommandot (Ctrl + v eller cmd + v).
Fatta beslut med hjälp av instruktionen if
Kör följande kod i det interaktiva fönstret. Välj knappen Ange fokusläge. Skriv sedan följande kodblock i det interaktiva fönstret och välj Kör:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Om du kör detta i din miljö bör du följa anvisningarna för den lokala versionen i stället.
Ändra deklarationen av b
så att summan är mindre än 10:
int b = 3;
Välj knappen Kör igen. Eftersom svaret är mindre än 10 skrivs ingenting ut. Villkoret du testar är falskt. Du har ingen kod att köra eftersom du bara har skrivit en av de möjliga grenarna för en if
-instruktion: grenen om villkoret är sant.
Dricks
När du utforskar C# (eller något annat språk) och skriver kod kommer du att göra misstag. Kompilatorn kommer att hitta de här felen och rapportera dem till dig. När du får felmeddelanden i utdata ska du granska exempelkoden och koden i det interaktiva fönstret noga, så att du ser vad du behöver rätta till. Sådana övningar hjälper dig att lära dig C#-strukturen.
I det här första exemplet ser du hur effektiv instruktionen if
och booleska typer kan vara. En boolesk variabel är en variabel som kan ha ett av två möjliga värden: true
eller false
. I C# definieras en särskild typ, bool
, för booleska variabler. Instruktionen if
kontrollerar värdet hos en bool
. När värdet är true
körs instruktionen som följer efter if
. Annars hoppas den över.
Den här processen med att kontrollera villkor och köra instruktioner baserat på dessa villkor är kraftfull. Nu går vi vidare.
Få if och else att fungera tillsammans
Om du vill köra olika kod i true- och false-grenarna skapar du en else
-gren som körs när villkoret du testar är falskt. Försök med följande:
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
Instruktionen efter nyckelordet else
körs bara när villkoret som testas har värdet false
. Genom att kombinera if
och else
med booleska villkor får du alla verktyg du behöver.
Viktigt!
Indraget under instruktionerna if
och else
gör koden enklare att läsa för människor.
C#-språket behandlar inte indrag eller blanksteg som betydande.
Instruktionen efter nyckelorden if
och else
körs baserat på villkoret. Alla exempel i den här självstudien följer en vanlig metod för att dra in rader baserat på kontrollflödet för -instruktioner.
Eftersom indrag inte är betydande måste du använda {
och }
ange när du vill att fler än en instruktion ska ingå i blocket som körs villkorsstyrt. C#-programmerare använder normalt sådana klamrar för alla if
- och else
-satser. Följande exempel är detsamma som det du skapade. Prova den.
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
Dricks
I resten av den här självstudien innehåller kodexemplen alla klammerparenteser, enligt godkända metoder.
Nu kan du testa mer komplicerade villkor:
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
Symbolen ==
testar likhet. Genom att använda ==
skiljer sig testet för likhet från tilldelningen, som du såg i a = 5
.
&&
representerar ”och”. Det innebär att båda villkoren måste vara sanna om instruktionen i true-grenen ska köras. I de här exemplen ser du även att du kan ha flera instruktioner i varje villkorad gren, förutsatt att du sätter dem inom {
och }
.
Du kan också använda ||
för att representera "eller":
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}
Ändra värdena a
för , b
och c
och växla mellan &&
och ||
för att utforska. Du får mer förståelse för hur operatorerna &&
och ||
fungerar.
Använda slingor till att upprepa åtgärder
Ett annat viktigt begrepp när du ska skriva större program är slingor. Du använder slingor till att upprepa instruktioner som du vill ska köras mer än en gång. Testa den här koden i det interaktiva fönstret:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
Instruktionen while
kontrollerar ett villkor och kör instruktionen efter while
. Villkoret fortsätter att kontrolleras, och instruktionen körs tills villkoret har värdet false.
En annan ny operator används i det här exemplet. ++
efter variabeln counter
är en ökande operator. Den lägger till 1 till värdet för räknaren och lagrar det nya värdet i räknarvariabeln.
Viktigt!
Se till att villkoret för while
-slingan faktiskt kommer att få värdet false någon gång när du kör koden. Annars skapar du en oändlig slinga där körningen av programmet aldrig slutar. Vi kommer inte att visa det här eftersom motorn som kör koden skulle nå sin tidsgräns, och du skulle ändå inte se några utdata från programmet.
I slingan while
utvärderas villkoret innan koden efter while
körs. I slingan do
... while
körs koden först, och därefter utvärderas villkoret. Det ser ut så här:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
Den här do
-slingan och den tidigare while
-slingan fungerar på samma sätt.
Vi går vidare till en sista typ av slinga.
Arbeta med slingan for
En annan vanlig slinga du kommer att se i C#-kod är for
-slingan. Testa den här koden i det interaktiva fönstret:
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
Den här slingan fungerar på samma sätt som de while
- och do
-slingor du redan använt. Instruktionen for
har tre delar som styr funktionen.
Den första delen är for-initieraren: int counter = 0;
deklarerar att counter
är slingvariabeln och sätter startvärdet till 0
.
Mellandelen är for-villkoret: counter < 10
deklarerar att den här for
-slingan körs så länge värdet för counter är mindre än 10.
Den sista delen är for-iteratorn: counter++
anger hur slingvariabeln ska ändras när blocket efter instruktionen for
har körts. Här anges att counter
ska ökas med 1 varje gång blocket körs.
Experimentera med den här slingan på egen hand. Testa följande:
- Ändra initieraren till något annat värde.
- Ändra villkoret så att körningen stoppas vid ett annat värde.
När du är färdig går vi vidare så att du får skriva egen kod och använda det du lärt dig.
Det finns en annan looping-instruktion som inte beskrivs i den här självstudien: instruktionen foreach
. Instruktionen foreach
upprepar sin instruktion för varje objekt i en sekvens med objekt. Det används oftast med samlingar, så det beskrivs i nästa självstudie.
Skapade kapslade loopar
En while
, do
, eller for
-loop kan kapslas i en annan loop för att skapa en matris med hjälp av kombinationen av varje objekt i den yttre loopen med varje objekt i den inre loopen. Nu ska vi göra det för att skapa en uppsättning alfanumeriska par som representerar rader och kolumner.
En for
loop kan generera raderna:
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
En annan loop kan generera kolumnerna:
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
Du kan kapsla en loop i den andra för att bilda par:
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
Du kan se att den yttre loopen ökar en gång för varje fullständig körning av den inre loopen. Ångra rad- och kolumnkapslingen och se ändringarna själv.
Kombinera grenar och slingor
Nu när du har sett instruktionen if
och olika slingor i språket C# ska vi se om du kan skriva C#-kod som hittar summan av alla heltal mellan 1 och 20 som är delbara med 3. Här är några tips:
- Operatorn
%
ger dig resten vid en division. - Du kan använda instruktionen
if
till att se om ett tal ska ingå i summan. - Du kan använda slingan
for
till att upprepa en serie steg för alla tal mellan 1 och 20.
Testa själv. Kontrollera sedan resultatet. En ledtråd är att svaret ska vara 63.
Utmaningen
Skrev du något som liknar det här?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
Grattis!
Du har slutfört den interaktiva självstudien "grenar och loopar". Du kan välja länken för listsamlingen nedan för att starta nästa interaktiva självstudie, eller så kan du gå till .NET-webbplatsen för att ladda ned .NET SDK, skapa ett projekt på datorn och fortsätta koda. Avsnittet "Nästa steg" tar dig tillbaka till de här självstudierna.
Du kan lära dig mer om dessa begrepp i dessa artiklar:
Har du ett problem med det här avsnittet? Ge oss då feedback så att vi kan förbättra avsnittet.