Dela via


C# if-instruktioner och loopar – handledning om villkorsstyrd logik

I den här handledningen lär du dig att skriva C#-kod som går igenom variabler och ändrar programflödet baserat på dessa variabler. Du skriver C#-kod och ser resultatet av att kompilera och köra den. Handledningen innehåller en serie lektioner som utforskar förgrenings- och slingsatser i C#. De här lektionerna lär dig grunderna i C#-språket.

Tips

När ett kodfragmentblock innehåller knappen "Kör" öppnas det interaktiva fönstret eller ersätter den befintliga koden i det interaktiva fönstret. När kodfragmentet inte innehåller någon "Kör"-knapp kan du kopiera koden och lägga till den i det aktuella interaktiva fönstret.

Kör följande kod i det interaktiva fönstret. Välj Kör:

int a = 5;
int b = 6;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10.");

Ändra deklarationen för b så att summan är mindre än 10:

int b = 3;

Välj Kör-knappen igen. Eftersom svaret är mindre än 10 skrivs ingenting ut. Det villkoret du testar är falskt. Du har ingen kod att köra eftersom du bara skrev en av de möjliga grenarna för en if-instruktion: den sanna grenen.

Tips

När du utforskar C# (eller något programmeringsspråk) gör du misstag när du skriver kod. -kompilatorn hittar dessa fel och rapporterar dem till dig. När utdata innehåller felmeddelanden bör du titta närmare på exempelkoden och koden i det interaktiva fönstret för att se vad som ska åtgärdas. Den här övningen hjälper dig att lära dig strukturen för C#-kod.

Det första exemplet visar kraften hos if och booleska typer. En boolesk är en variabel som kan ha ett av två värden: true eller false. C# definierar en särskild typ, bool för booleska variabler. Instruktionen if kontrollerar värdet på bool. När värdet är truekörs instruktionen 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 ska vi utforska mer.

Få if- och else-satser att fungera tillsammans

Om du vill köra annan kod i både sanna och falska grenar skapar du en else gren som körs när villkoret är falskt. Prova följande kod:

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 som följer nyckelordet else körs endast när villkoret som testas är false. Genom att kombinera if och else med booleska villkor får du all kraft du behöver.

Viktig

Indraget under if- och else-satser är för mänskliga läsare. C#-språket behandlar inte indrag eller blanksteg som betydande. Instruktionen efter nyckelordet if eller else körs baserat på villkoret. Alla exempel i den här självstudien följer en vanlig metod för att indenta rader baserat på kontrollflödet i instruktionerna.

Eftersom indragning inte är signifikant måste du använda { och } för att ange när du vill att fler än en instruktion ska ingå i blocket som exekveras villkorligt. C#-programmerare använder vanligtvis dessa klammerparenteser på alla if- och else-satser. Följande exempel är detsamma som det du skapade. Prova.

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");
}

Tips

I resten av den här självstudien innehåller alla kodexempel klammerparenteser, enligt vedertagna metoder.

Du kan 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 för likhet. Om du använder == skiljer du 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 för att kunna utföra satsen i den sanna delen. De här exempel visar också att du kan ha flera instruktioner i varje villkorsgren, förutsatt att de inkapslas i { och }.

Du kan också använda || för att representera "eller":

if ((a + b + c > 10) || (a == b))

Ändra värdena för a, boch c och växla mellan && och || att utforska. Du får mer förståelse för hur operatorerna && och || fungerar.

Använda loopar för att upprepa åtgärder

Ett annat viktigt begrepp för att skapa större program är loopar. Du använder loopar för att upprepa instruktioner som du vill ska köras mer än en gång. Prova den här koden i det interaktiva fönstret:

int counter = 0;
while (counter < 10)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
}

while-instruktionen kontrollerar ett villkor och kör instruktionen som följer efter while. Den kontrollerar villkoret upprepade gånger och kör de här instruktionerna tills villkoret är falskt.

Det finns en ytterligare ny operator i det här exemplet. ++ efter variabeln counter är ökningsoperatören . Den lägger till 1 i värdet för räknaren och lagrar värdet i räknarvariabeln.

Viktig

Kontrollera att while-loopvillkoret växlar till false när du kör koden. Annars skapar du en oändlig loop där programmet aldrig slutar. Låt oss inte visa det, eftersom den motor som kör koden överskrider tidsgränsen och du inte ser några utdata från ditt program.

while-loopen testar villkoret innan koden körs efter while. Loopen do ... while kör koden först och kontrollerar sedan 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-loopen och den tidigare while-loopen fungerar på samma sätt.

Nu går vi vidare till en sista loop-instruktion.

Arbeta med for-loopen

En annan vanlig loop-instruktion som du ser i C#-kod är for-loopen. Prova 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 föregående for-loopen utför samma arbete som den while-loopen och den do-loop som du redan använde. Instruktionen for har tre delar som styr hur den fungerar:

  • Den första delen är för initieraren: int counter = 0; deklarerar att counter är loopvariabeln och anger dess ursprungliga värde till 0.
  • Den mellersta delen är för villkoret: counter < 10 deklarerar att den här for-loopen fortsätter att köras så länge värdet för räknaren är mindre än 10.
  • Den sista delen är för iteratorn: counter++ anger hur du ändrar loopvariabeln efter att ha kört blocket efter for-instruktionen. Här anger den att counter ökar med 1 varje gång blocket körs.

Experimentera med dessa villkor själv. Prova var och en av följande ändringar:

  • Ändra initieraren så att den börjar med ett annat värde.
  • Ändra villkoret så att det slutar med ett annat värde.

När du är klar går vi vidare och skriver lite kod själv för att använda det du har lärt dig.

Det finns en annan loop-sats som inte behandlas i den här självstudien: satsen foreach. Instruktionen foreach upprepar sin instruktion för varje objekt i en sekvens med objekt. Det används oftast med samlingar . Den tas upp i nästa självstudie.

Skapade kapslade loopar

En while, doeller 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 lägga en slinga inuti en annan för att skapa 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 inkrementeras en gång för varje fullständig körning av den inre loopen. Vänd på rad- och kolumnordningen och se ändringarna själv.

Kombinera grenar och loopar

Nu när du har sett if-instruktionen och loopkonstruktionerna på C#-språket kan du se om du kan skriva C#-kod för att hitta summan av alla heltal 1 till 20 som är delbara med 3. Här följer några tips:

  • Operatorn % ger dig resten av en divisionsåtgärd.
  • Med if-instruktionen får du reda på villkoret om ett tal ska vara en del av summan.
  • Den for-loopen kan hjälpa dig att upprepa en serie steg för alla tal 1 till och med 20.

Prova själv. Kontrollera sedan hur du gjorde. Som ett tips bör du få 63 som svar.

Kom du på något som liknar det här?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/BranchesAndLoops/Program.cs" id="Challenge":::

Du har slutfört den interaktiva kursen "grenar och loopar". Du kan välja -listsamlingen för att starta nästa interaktiva självstudie, eller så kan du gå till .NET-webbplats 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: