Conteúdo do Curso
Noções Básicas de C#
Noções Básicas de C#
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:
Exemplo:
main
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 quei = i + 1
. Ele incrementa o valor da variável em1
.i–
decrementa o valor em1
.
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 chamadai
é criada e iniciada com um valor de0
;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 dei
é incrementado após cada iteração, a condiçãoi < 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.
main
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.
main
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).
main
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:
main
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úmero0
, mas lidaremos apenas com números pares acima de0
nestes exemplos.
main
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 escreveri = 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:
main
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
:
main
using 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!