Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Laço For | Loops
Noções Básicas de C#

book
Laço For

Um loop nos permite executar um pedaço de código quantas vezes quisermos. Existem diferentes tipos de loops. Em C#, se quisermos executar um pedaço de código um número específico de vezes, usamos o for-loop.

O modelo (sintaxe) de um for loop é o seguinte:

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

Exemplo:

cs

main

copy
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");
}
}
}
}
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. Ele incrementa o valor da variável em 1. i– decrementa o valor em 1.

  • int i = 0 é a parte de iniciação. A iniciação é feita quando o loop começa. Assim, no início do loop, uma nova variável temporária chamada i é criada e iniciada com um valor de 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 é 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 para;

O diagrama a seguir explica o fluxo de um for-loop de maneira visual:

É importante notar que todos os três componentes initiation, condition e operation são opcionais e, portanto, qualquer um deles pode ser omitido, mas o loop pode se comportar de maneira diferente com base nas alterações.

Não é uma prática recomendada, mas podemos declarar a variável do loop fora do loop e deixar a parte de initiation vazia.

cs

main

copy
using System;

namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
int i = 0;
for(; i < 10; i++)
{
Console.WriteLine("Hello World");
}
}
}
}
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 podemos remover a parte de operation e colocá-la no final do bloco de código do loop. O loop se comportará da mesma forma que antes, pois a variável i ainda está sendo incrementada após cada iteração.

cs

main

copy
using System;

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

Note que no código acima ainda colocamos um ponto e vírgula (;) na sintaxe do loop onde o int i = 0 era esperado. Este ponto e vírgula deve sempre estar presente, quer criemos uma variável de loop ou não.

Remover a condição do loop também é possível, mas faz com que o loop seja executado infinitamente caso não seja encerrado manualmente (o que aprenderemos mais nos capítulos posteriores).

cs

main

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

Note que ainda incluímos ambos os pontos e vírgulas na sintaxe do loop for(;;), estes são essenciais, caso contrário, o compilador mostrará erros.

Como o valor de i muda a cada iteração, podemos usá-lo a nosso favor. Para entender isso, vamos olhar para um programa simples que exibe o valor de i a cada iteração:

cs

main

copy
using System;

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

Note que termina em 9 porque começa com o dígito 0. O número total de iterações foi dez. Podemos modificar a iniciação, condição e a operação para exibir os dez números pares de 2 a 20.

Nota

Números pares são os números que são divisíveis por 2. Por exemplo, 2, 4, 6, 8, 10, etc. Números pares também incluem o número 0, mas lidaremos apenas com números pares acima de 0 nestes exemplos.

cs

main

copy
using System;

namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
for(int i = 2; i <= 20; i += 2)
{
Console.WriteLine(i);
}
}
}
}
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 mais curta de escrever i = i + 2. Esta 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 para entender o funcionamento de um for-loop. Podemos usar uma lógica muito mais simples para exibir os primeiros dez números pares:

cs

main

copy
using System;

namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
for(int i = 1; i <= 10; i++) {
Console.WriteLine(i * 2);
}
}
}
}
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, no entanto, neste caso, simplesmente precisamos modificar a condição para i <= 27:

cs

main

copy
using System;

namespace ConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
for(int i = 1; i <= 27; i++) {
Console.WriteLine(i * 2);
}
}
}
}
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.

int sum = 0;
for(int i = 1; i <= 10; i++)
{
sum += i;
}
Console.WriteLine(sum);

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand
ChatGPT

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

We use cookies to make your experience better!
some-alt