For-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
123456789101112131415using 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 somi = i + 1. Det ökar variabelns värde med1. På samma sätt minskari--värdet med1.
int i = 0är initialiseringsdelen. Initialiseringen sker när loopen startar. Vid loopens början skapas en ny temporär variabel som heterioch tilldelas värdet0.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 villkoreti < 10falskt 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
12345678910111213141516using 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
1234567891011121314151617using 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
1234567891011121314151617using 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
123456789101112131415using 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 talet0, men vi kommer endast att arbeta med jämna tal över0i dessa exempel.
main.cs
123456789101112131415using 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 skrivai = i + 2. Denna syntax är också giltig för andra operatorer, till exempeli -= 2,i *= 2,i /= 2,i %= 2osv.
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
1234567891011121314using 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
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
For-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
123456789101112131415using 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 somi = i + 1. Det ökar variabelns värde med1. På samma sätt minskari--värdet med1.
int i = 0är initialiseringsdelen. Initialiseringen sker när loopen startar. Vid loopens början skapas en ny temporär variabel som heterioch tilldelas värdet0.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 villkoreti < 10falskt 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
12345678910111213141516using 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
1234567891011121314151617using 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
1234567891011121314151617using 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
123456789101112131415using 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 talet0, men vi kommer endast att arbeta med jämna tal över0i dessa exempel.
main.cs
123456789101112131415using 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 skrivai = i + 2. Denna syntax är också giltig för andra operatorer, till exempeli -= 2,i *= 2,i /= 2,i %= 2osv.
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
1234567891011121314using 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
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Tack för dina kommentarer!