Laço For
Um loop permite executar um trecho de código quantas vezes quisermos. Existem diferentes tipos de loops. Em C#, se quisermos executar um trecho de código um número específico de vezes, usamos o for loop.
O modelo (sintaxe) de um for loop é o seguinte:
for(initiation; condition; operation) {
// code to execute
}
Vamos considerar um exemplo onde utilizamos essa sintaxe:
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"); } } } }
Nota
i++é o mesmo quei = i + 1. Incrementa o valor da variável em1. Da mesma forma,i--decrementa o valor em1.
int i = 0é a parte de inicialização. A inicialização ocorre quando o loop começa. No início do loop, uma nova variável temporária chamadaié criada e inicializada com o valor0.i < 10é a condição. A condição é verificada a cada iteração (repetição) do loop. O loop continua executando o bloco de código enquanto a condição for verdadeira.i++é a operação a ser realizada após cada iteração. A operação geralmente é um incremento ou decremento. Como o valor deié incrementado após cada iteração, a condiçãoi < 10se torna falsa após 10 iterações e o loop é interrompido.
É importante entender que todos os três componentes do laço for — initialization, condition e operation — são opcionais. Você pode omitir qualquer um deles, mas isso pode alterar o comportamento do laço.
Embora não seja recomendado, é possível declarar a variável do laço fora do laço e deixar a parte de initialization vazia. Isso significa que o laço ainda funcionará, mas é necessário ter cuidado, pois pode levar a resultados inesperados se não for tratado corretamente.
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"); } } } }
Também é possível remover a parte de operation e colocá-la ao final do bloco de código do laço. O laço se comportará da mesma forma que antes, pois a variável i ainda está sendo incrementada após cada iteração.
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++; } } } }
Observe que, no código acima, ainda colocamos um ponto e vírgula (;) na sintaxe do loop onde era esperado o int i = 0. Esse ponto e vírgula deve sempre estar presente, independentemente de criarmos ou não uma variável de loop.
Também é possível remover a condição do loop, mas isso faz com que o loop seja executado indefinidamente caso não seja finalizado manualmente (o que será abordado em capítulos posteriores).
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"); } } } }
Nota
Ainda incluímos ambos os pontos e vírgula na sintaxe do loop
for(;;), pois são essenciais, caso contrário o compilador apresentará erros.
Como o valor de i muda a cada iteração, podemos usar isso a nosso favor. Para entender melhor, vejamos um programa simples que exibe o valor de i a cada iteração:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Observe que termina em 9 porque começa com o dígito 0. O número total de iterações foi dez. Podemos modificar a inicialização, a condição e a operação para exibir os dez números pares de 2 a 20.
Nota
Números pares são aqueles divisíveis por
2. Por exemplo: 2, 4, 6, 8, 10, etc. Números pares também incluem o número0, mas nestes exemplos lidaremos apenas com números pares acima de0.
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); } } } }
Nota
i += 2é uma forma abreviada de escreveri = i + 2. Essa sintaxe também é válida para outros operadores, por exemplo:i -= 2,i *= 2,i /= 2,i %= 2etc.
O loop começa com 0 e aumenta o valor de i em 2 a cada iteração. Alteramos a condição para i <= 20 para que o loop pare em 20.
A lógica acima foi apresentada para facilitar o entendimento do funcionamento do for-loop. Podemos usar uma lógica muito mais simples para exibir os dez primeiros números pares:
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); } } } }
Neste caso, a condição é muito mais simples. Por exemplo, se quisermos os primeiros 27 números pares, teremos que saber qual é o 27º número par para poder formar a condição para o método anterior, porém, neste caso, simplesmente precisamos modificar a condição para 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); } } } }
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 1.59
Laço For
Deslize para mostrar o menu
Um loop permite executar um trecho de código quantas vezes quisermos. Existem diferentes tipos de loops. Em C#, se quisermos executar um trecho de código um número específico de vezes, usamos o for loop.
O modelo (sintaxe) de um for loop é o seguinte:
for(initiation; condition; operation) {
// code to execute
}
Vamos considerar um exemplo onde utilizamos essa sintaxe:
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"); } } } }
Nota
i++é o mesmo quei = i + 1. Incrementa o valor da variável em1. Da mesma forma,i--decrementa o valor em1.
int i = 0é a parte de inicialização. A inicialização ocorre quando o loop começa. No início do loop, uma nova variável temporária chamadaié criada e inicializada com o valor0.i < 10é a condição. A condição é verificada a cada iteração (repetição) do loop. O loop continua executando o bloco de código enquanto a condição for verdadeira.i++é a operação a ser realizada após cada iteração. A operação geralmente é um incremento ou decremento. Como o valor deié incrementado após cada iteração, a condiçãoi < 10se torna falsa após 10 iterações e o loop é interrompido.
É importante entender que todos os três componentes do laço for — initialization, condition e operation — são opcionais. Você pode omitir qualquer um deles, mas isso pode alterar o comportamento do laço.
Embora não seja recomendado, é possível declarar a variável do laço fora do laço e deixar a parte de initialization vazia. Isso significa que o laço ainda funcionará, mas é necessário ter cuidado, pois pode levar a resultados inesperados se não for tratado corretamente.
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"); } } } }
Também é possível remover a parte de operation e colocá-la ao final do bloco de código do laço. O laço se comportará da mesma forma que antes, pois a variável i ainda está sendo incrementada após cada iteração.
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++; } } } }
Observe que, no código acima, ainda colocamos um ponto e vírgula (;) na sintaxe do loop onde era esperado o int i = 0. Esse ponto e vírgula deve sempre estar presente, independentemente de criarmos ou não uma variável de loop.
Também é possível remover a condição do loop, mas isso faz com que o loop seja executado indefinidamente caso não seja finalizado manualmente (o que será abordado em capítulos posteriores).
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"); } } } }
Nota
Ainda incluímos ambos os pontos e vírgula na sintaxe do loop
for(;;), pois são essenciais, caso contrário o compilador apresentará erros.
Como o valor de i muda a cada iteração, podemos usar isso a nosso favor. Para entender melhor, vejamos um programa simples que exibe o valor de i a cada iteração:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Observe que termina em 9 porque começa com o dígito 0. O número total de iterações foi dez. Podemos modificar a inicialização, a condição e a operação para exibir os dez números pares de 2 a 20.
Nota
Números pares são aqueles divisíveis por
2. Por exemplo: 2, 4, 6, 8, 10, etc. Números pares também incluem o número0, mas nestes exemplos lidaremos apenas com números pares acima de0.
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); } } } }
Nota
i += 2é uma forma abreviada de escreveri = i + 2. Essa sintaxe também é válida para outros operadores, por exemplo:i -= 2,i *= 2,i /= 2,i %= 2etc.
O loop começa com 0 e aumenta o valor de i em 2 a cada iteração. Alteramos a condição para i <= 20 para que o loop pare em 20.
A lógica acima foi apresentada para facilitar o entendimento do funcionamento do for-loop. Podemos usar uma lógica muito mais simples para exibir os dez primeiros números pares:
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); } } } }
Neste caso, a condição é muito mais simples. Por exemplo, se quisermos os primeiros 27 números pares, teremos que saber qual é o 27º número par para poder formar a condição para o método anterior, porém, neste caso, simplesmente precisamos modificar a condição para 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); } } } }
Obrigado pelo seu feedback!