As estruturas de repetição possibilitam executar o mesmo código diversas vezes sem que seja necessário repetir instruções. Assim, sempre que você precisar programar uma lógica que necessita ser processada mais de uma vez, considere o uso desse recurso. A linguagem C# nos fornece três estruturas de repetição: For, Foreach e While.

Neste documento apresentamos como utilizar o for e foreach.

For

O For é a estrutura de repetição que utilizamos quando sabemos a quantidade de repetições que um bloco de código deve ser executado.

Sintaxe da estrutura de repetição For:

for (inicializador; condição; iterador)
{
    // bloco de código
}

A sintaxe é composta por três expressões separadas por ponto e vírgula. Elas controlam o início do loop e as condições de como cada iteração irá executar.

Exemplo de uso:

for (int contador = 0; contador < 5; contador++)
{
    Console.WriteLine(contador);
}
Run

Ao executar o código acima, serão impressos no console os números de 0 a 4, ou seja, a linha Console.WriteLine(contador) será executada cinco vezes dentro do loop.

Ao utilizar a estrutura For, precisamos de uma variável para saber quantas repetições foram executadas. No exemplo essa variável é contador.


Inicializador
Na primeira expressão do For, que só é executada na antes da primeira iteração do loop, definimos a variável contador para utilizá la como o contador desse loop:

int contador = 0

Condição
A segunda expressão é uma expressão lógica que serve para controlar quantas vezes o loop será executado. No exemplo utilizamos a condição:

contador < 5

O loop irá executar enquanto nosso contador for menor que 5;


Iterador
E a terceira condição é executada ao final de cada iteração do loop:

contador++

Após cada iteração o nosso contador é incrementado.


Então, no nosso exemplo, a cada iteração do loop o valor do nosso contador é impresso no console. Os números de 0 a 4 serão exibidos no console.

Iteração Contador
1 0

A variável contador é inicializada com o valor 0;
int contador = 0

A condição retorna TRUE, então o loop é executado:
contador < 5

A variável contador é impressa no console;
Console.WriteLine(contador);

A variável contador é incrementada;
contador++

2 1

A condição retorna TRUE, então o loop é executado:
contador < 5

A variável contador é impressa no console;
Console.WriteLine(contador);

A variável contador é incrementada;
contador++

3 2

A condição retorna TRUE, então o loop é executado:
contador < 5

A variável contador é impressa no console;
Console.WriteLine(contador);

A variável contador é incrementada;
contador++

4 3

A condição retorna TRUE, então o loop é executado:
contador < 5

A variável contador é impressa no console;
Console.WriteLine(contador);

A variável contador é incrementada;
contador++

5 4

A condição retorna TRUE, então o loop é executado:
contador < 5

A variável contador é impressa no console;
Console.WriteLine(contador);

A variável contador é incrementada;
contador++

6 5

A condição retorna FALSE e o loop é interrompido:
contador < 5

Nota: O for pode ser declarado sem um bloco de código, colocando as ações dentro da terceira expressão, separando por vírgula.

Exemplo de uso:

for (int contador = 0; contador < 5; Console.WriteLine(contador), contador++){}

Foreach

O foreach é um recurso do C# que possibilita executar um conjunto de comandos para cada elemento presente em uma coleção (Array, List, Stack, Queue e outras). Portanto, diferentemente do while e do for, não precisamos definir uma condição de parada. Isso é definido de forma implícita, pelo tamanho da coleção.

Sintaxe da estrutura de repetição foreach:

foreach (tipo elemento in coleção)
{
    //bloco de código
}

Na declaração do foreach, entre parênteses criamos um elemento do tipo utilizado na coleção e, com o operador in, informamos a coleção a ser percorrida. Assim, a cada loop os dados presentes em uma posição da coleção são atribuídos ao elemento. Por fim, entre chaves, inserimos o código a ser executado no loop.

Exemplo prático

Considere que desejamos imprimir na tela todos os nomes presentes em um array. Para isso, em vez de criar um while e nos preocuparmos com a condição de parada, podemos fazer uso do foreach.

Exemplo de uso:

string[] nomes = { “André”, “Bruna”, “Carla”, “Daniel” };

foreach (string nome in nomes)
{
    Console.WriteLine(nome);
}
Run

Analisando o código:

Linha 01: Criamos um array, chamado nomes, do tipo string, onde armazenamos os nomes de algumas pessoas;

Linha 03: Declaramos a estrutura foreach, que traz entre parênteses o tipo (string) e o nome (nome) do elemento que irá receber os dados contidos na coleção a cada iteração. Ainda nessa linha, após o operador in informamos que a estrutura irá iterar pelo array de strings (nomes);

Linhas 04 a 06: Declaramos o bloco de código que será executado a cada loop - neste caso, a instrução Console.WriteLine(nome).

Saiu na DevMedia!

  • O que são formulários mestre detalhe?:
    Falhas de gravação é um dos piores cenários que podemos pensar durante o desenvolvimento de software e podemos minimizar esse problema com o padrão Mestre/Detalhe.
  • Construindo uma aplicação mestre detalhe em PHP:
    Ao longo deste curso veremos como implementar um formulário "mestre detalhe", nos concentrando nos aspectos principais desse relacionamento e como ele é representado no código, na interface do sistema e no banco de dados.
  • Eu sobrevivo sem UML?:
    Você planeja suas aplicações antes de começar a programar? Ou é daqueles que pensa enquanto escreve? Cuidado, você corre o risco de chegar no meio do projeto sem saber para onde ir. Para evitar isso descubra neste Guia a UML.

Saiba mais ;)

  • JavaScript redirect:
    Nesta documentação aprenderemos como redirecionar o usuário em JavaScript utilizando window.location.
  • JavaScript switch:
    Nesta documentação de JavaScript veremos como utilizar a estrutura condicional switch para criar scripts capazes de executar diferentes blocos de código de acordo com diferentes condições.
  • JavaScript if/else:
    Nesta documentação de JavaScript veremos como utilizar a estrutura condicional if/else para criar scripts com diferentes fluxos de execução.