Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära For-loop | Loopar
C#-Grunder

bookFor-loop

En loop gör det möjligt för oss att köra en kodsnutt så många gånger vi vill. Det finns olika typer av loopar. I C# används for loop om vi vill köra en kodsnutt ett specifikt antal gånger.

Mallen (syntaxen) för en for-loop är följande:

for(initiation; condition; operation) { 
    // code to execute
}


Låt oss titta på ett exempel där vi använder denna syntax:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Obs

i++ är detsamma som i = i + 1. Det ökar variabelns värde med 1. På samma sätt minskar i-- värdet med 1.

  • int i = 0 är initialiseringsdelen. Initialiseringen sker när loopen startar. Vid loopens början skapas en ny temporär variabel som heter i och tilldelas värdet 0.
  • i < 10 är villkoret. Villkoret kontrolleras vid varje iteration (upprepning) av loopen. Loopen fortsätter att köra den inneslutna kodblocket så länge villkoret är sant.
  • i++ är operationen som utförs efter varje iteration. Operationen är vanligtvis en ökning eller minskning. Eftersom värdet på i ökas efter varje iteration blir villkoret i < 10 falskt efter 10 iterationer och loopen avslutas.

Det är viktigt att förstå att alla tre komponenter i for-loopen — initialization, condition och operation — är valfria. Du kan utelämna någon av dem, men detta kan förändra hur loopen beter sig.

Även om det inte rekommenderas kan du deklarera loopvariabeln utanför loopen och lämna initialization-delen tom. Detta innebär att loopen fortfarande fungerar, men du måste vara försiktig eftersom det kan leda till oväntade resultat om det inte hanteras korrekt.

main.cs

main.cs

copy
12345678910111213141516
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Vi kan också ta bort operation-delen och placera den i slutet av kodblocket för loopen. Loopen kommer att bete sig på samma sätt som tidigare, eftersom variabeln i fortfarande ökas efter varje iteration.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Observera att vi i koden ovan fortfarande placerade ett semikolon (;) i loop-syntaxen där int i = 0 förväntades. Detta semikolon måste alltid finnas där, oavsett om vi skapar en loopvariabel eller inte.

Det är också möjligt att ta bort loopvillkoret, men det gör att loopen körs oändligt om den inte avslutas manuellt (vilket vi kommer att lära oss mer om i senare kapitel).

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }

Observera

Vi har fortfarande inkluderat båda semikolonen i loop-syntaxen for(;;), dessa är nödvändiga, annars kommer kompilatorn att visa fel.

Eftersom värdet på i ändras vid varje iteration kan vi utnyttja detta. För att förstå detta, låt oss titta på ett enkelt program som skriver ut värdet på i vid varje iteration:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Observera att den slutar vid 9 eftersom den börjar med siffran 0. Det totala antalet iterationer var tio. Vi kan ändra initieringen, villkoret och operationen för att skriva ut de tio jämna talen från 2 till 20.

Observera

Jämna tal är tal som är delbara med 2. Till exempel 2, 4, 6, 8, 10, etc. Jämna tal inkluderar även talet 0, men vi kommer endast att arbeta med jämna tal över 0 i dessa exempel.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Obs

i += 2 är ett kortare sätt att skriva i = i + 2. Denna syntax är också giltig för andra operatorer, till exempel i -= 2, i *= 2, i /= 2, i %= 2 osv.

Loopen startar med 0 och ökar värdet på i med 2 vid varje iteration. Vi ändrade villkoret till i <= 20 så att loopen stannar vid 20.

Logiken ovan var för att förstå hur en for-loop fungerar. Vi kan använda en mycket enklare logik för att skriva ut de första tio jämna talen:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }

I det här fallet är villkoret mycket enklare. Om vi till exempel vill ha de första 27 jämna talen måste vi veta vilket som är det 27:e jämna talet för att kunna formulera villkoret för den tidigare metoden, men i det här fallet behöver vi bara ändra villkoret till i <= 27:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Vad kommer att skrivas ut av följande program? Värdet på sum ökar vid varje iteration med i, därför kommer dess värde under de fyra första iterationerna att vara: 1, 3, 6, 10.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain how to use a for loop to print odd numbers?

What happens if I remove all three components from the for loop?

Can you show an example of an infinite for loop and how to stop it?

Awesome!

Completion rate improved to 1.59

bookFor-loop

Svep för att visa menyn

En loop gör det möjligt för oss att köra en kodsnutt så många gånger vi vill. Det finns olika typer av loopar. I C# används for loop om vi vill köra en kodsnutt ett specifikt antal gånger.

Mallen (syntaxen) för en for-loop är följande:

for(initiation; condition; operation) { 
    // code to execute
}


Låt oss titta på ett exempel där vi använder denna syntax:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Obs

i++ är detsamma som i = i + 1. Det ökar variabelns värde med 1. På samma sätt minskar i-- värdet med 1.

  • int i = 0 är initialiseringsdelen. Initialiseringen sker när loopen startar. Vid loopens början skapas en ny temporär variabel som heter i och tilldelas värdet 0.
  • i < 10 är villkoret. Villkoret kontrolleras vid varje iteration (upprepning) av loopen. Loopen fortsätter att köra den inneslutna kodblocket så länge villkoret är sant.
  • i++ är operationen som utförs efter varje iteration. Operationen är vanligtvis en ökning eller minskning. Eftersom värdet på i ökas efter varje iteration blir villkoret i < 10 falskt efter 10 iterationer och loopen avslutas.

Det är viktigt att förstå att alla tre komponenter i for-loopen — initialization, condition och operation — är valfria. Du kan utelämna någon av dem, men detta kan förändra hur loopen beter sig.

Även om det inte rekommenderas kan du deklarera loopvariabeln utanför loopen och lämna initialization-delen tom. Detta innebär att loopen fortfarande fungerar, men du måste vara försiktig eftersom det kan leda till oväntade resultat om det inte hanteras korrekt.

main.cs

main.cs

copy
12345678910111213141516
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }

Vi kan också ta bort operation-delen och placera den i slutet av kodblocket för loopen. Loopen kommer att bete sig på samma sätt som tidigare, eftersom variabeln i fortfarande ökas efter varje iteration.

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }

Observera att vi i koden ovan fortfarande placerade ett semikolon (;) i loop-syntaxen där int i = 0 förväntades. Detta semikolon måste alltid finnas där, oavsett om vi skapar en loopvariabel eller inte.

Det är också möjligt att ta bort loopvillkoret, men det gör att loopen körs oändligt om den inte avslutas manuellt (vilket vi kommer att lära oss mer om i senare kapitel).

main.cs

main.cs

copy
1234567891011121314151617
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }

Observera

Vi har fortfarande inkluderat båda semikolonen i loop-syntaxen for(;;), dessa är nödvändiga, annars kommer kompilatorn att visa fel.

Eftersom värdet på i ändras vid varje iteration kan vi utnyttja detta. För att förstå detta, låt oss titta på ett enkelt program som skriver ut värdet på i vid varje iteration:

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }

Observera att den slutar vid 9 eftersom den börjar med siffran 0. Det totala antalet iterationer var tio. Vi kan ändra initieringen, villkoret och operationen för att skriva ut de tio jämna talen från 2 till 20.

Observera

Jämna tal är tal som är delbara med 2. Till exempel 2, 4, 6, 8, 10, etc. Jämna tal inkluderar även talet 0, men vi kommer endast att arbeta med jämna tal över 0 i dessa exempel.

main.cs

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

Obs

i += 2 är ett kortare sätt att skriva i = i + 2. Denna syntax är också giltig för andra operatorer, till exempel i -= 2, i *= 2, i /= 2, i %= 2 osv.

Loopen startar med 0 och ökar värdet på i med 2 vid varje iteration. Vi ändrade villkoret till i <= 20 så att loopen stannar vid 20.

Logiken ovan var för att förstå hur en for-loop fungerar. Vi kan använda en mycket enklare logik för att skriva ut de första tio jämna talen:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }

I det här fallet är villkoret mycket enklare. Om vi till exempel vill ha de första 27 jämna talen måste vi veta vilket som är det 27:e jämna talet för att kunna formulera villkoret för den tidigare metoden, men i det här fallet behöver vi bara ändra villkoret till i <= 27:

main.cs

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

Vad kommer att skrivas ut av följande program? Värdet på sum ökar vid varje iteration med i, därför kommer dess värde under de fyra första iterationerna att vara: 1, 3, 6, 10.

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1
some-alt