For-loop
En loop gör det möjligt att köra en kodsnutt så många gånger vi vill. Det finns olika typer av loopar. I C# används for loop när vi vill köra en kodsnutt ett specifikt antal gånger.
Mallen (syntaxen) för en for-loop är följande:
main.cs
123for(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 värdet på variabeln med1. På liknande sätt minskari--värdet med1.
int i = 0är initialiseringsdelen. Initialisering sker när loopen startar. Vid start av loopen skapas en ny temporär variabel kalladioch initialiseras med 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 ä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"); } } } }
Det är också möjligt att ta bort delen operation och placera den i slutet av loopens kodblock. Loopen kommer att fungera 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 ovanstående kod 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 inkluderade fortfarande 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 dra nytta av 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.
Notera
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 i dessa exempel kommer vi endast att arbeta med jämna tal över0.
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 en kortare form av att skrivai = i + 2. Denna syntax är även 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.
Ovanstående logik användes för att förklara hur en for-loop fungerar. Vi kan använda en mycket enklare logik för att skriva ut de tio första 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 detta fall är villkoret mycket enklare. Om vi till exempel vill ha de första 27 jämna talen måste vi veta vilket tal som är det 27:e jämna talet för att kunna formulera villkoret enligt den tidigare metoden, men i detta fall 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
Fantastiskt!
Completion betyg förbättrat till 1.67
For-loop
Svep för att visa menyn
En loop gör det möjligt att köra en kodsnutt så många gånger vi vill. Det finns olika typer av loopar. I C# används for loop när vi vill köra en kodsnutt ett specifikt antal gånger.
Mallen (syntaxen) för en for-loop är följande:
main.cs
123for(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 värdet på variabeln med1. På liknande sätt minskari--värdet med1.
int i = 0är initialiseringsdelen. Initialisering sker när loopen startar. Vid start av loopen skapas en ny temporär variabel kalladioch initialiseras med 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 ä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"); } } } }
Det är också möjligt att ta bort delen operation och placera den i slutet av loopens kodblock. Loopen kommer att fungera 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 ovanstående kod 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 inkluderade fortfarande 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 dra nytta av 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.
Notera
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 i dessa exempel kommer vi endast att arbeta med jämna tal över0.
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 en kortare form av att skrivai = i + 2. Denna syntax är även 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.
Ovanstående logik användes för att förklara hur en for-loop fungerar. Vi kan använda en mycket enklare logik för att skriva ut de tio första 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 detta fall är villkoret mycket enklare. Om vi till exempel vill ha de första 27 jämna talen måste vi veta vilket tal som är det 27:e jämna talet för att kunna formulera villkoret enligt den tidigare metoden, men i detta fall 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!