Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Laço For | Laços de Repetição
Fundamentos de C#

bookLaç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

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

Nota

i++ é o mesmo que i = i + 1. Incrementa o valor da variável em 1. Da mesma forma, i-- decrementa o valor em 1.

  • 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 chamada i é criada e inicializada com o valor 0.
  • 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 de i é incrementado após cada iteração, a condição i < 10 se torna falsa após 10 iterações e o loop é interrompido.

É importante entender que todos os três componentes do laço forinitialization, 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

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

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

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++; } } } }

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

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

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

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

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úmero 0, mas nestes exemplos lidaremos apenas com números pares acima de 0.

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

Nota

i += 2 é uma forma abreviada de escrever i = i + 2. Essa sintaxe também é válida para outros operadores, por exemplo: i -= 2, i *= 2, i /= 2, i %= 2 etc.

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

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

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

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

Qual será a saída do seguinte programa? O valor de sum aumenta a cada iteração por i, portanto, seu valor durante as quatro primeiras iterações será: 1, 3, 6, 10.

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain more about the different types of loops in C#?

What happens if I omit all three components in the for loop?

Can you show an example of a for loop that runs infinitely?

Awesome!

Completion rate improved to 1.59

bookLaç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

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

Nota

i++ é o mesmo que i = i + 1. Incrementa o valor da variável em 1. Da mesma forma, i-- decrementa o valor em 1.

  • 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 chamada i é criada e inicializada com o valor 0.
  • 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 de i é incrementado após cada iteração, a condição i < 10 se torna falsa após 10 iterações e o loop é interrompido.

É importante entender que todos os três componentes do laço forinitialization, 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

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

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

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++; } } } }

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

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

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

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

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úmero 0, mas nestes exemplos lidaremos apenas com números pares acima de 0.

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

Nota

i += 2 é uma forma abreviada de escrever i = i + 2. Essa sintaxe também é válida para outros operadores, por exemplo: i -= 2, i *= 2, i /= 2, i %= 2 etc.

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

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

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

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

Qual será a saída do seguinte programa? O valor de sum aumenta a cada iteração por i, portanto, seu valor durante as quatro primeiras iterações será: 1, 3, 6, 10.

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1
some-alt