LO
c#

Repetição For e Foreach

Por Lordfire, 28 de dez. de 2012 em C# e Visual Basic

2
1.7k
LordfireL
28 de dezembro de 2012 às 15:41

Repetição controlada por contagem

O C# nos dá 2 opções de estruturas para repetição controlada por contagem, isto é, a repetição ocorre de um ponto inicial até um ponto final definido antes de as iterações acontecerem, que são o for e o foreach.

 

A diferença entre as duas é bastante simples: o for executa iterações de acordo com um contador e, a cada iteração, altera este contador, enquanto o foreach executa iterações de acordo com a quantidade de objetos em uma coleção.

 

For

http://pastebin.com/XFKkh0nY

O for tem a seguinte sintaxe: "for (<tipo> <variável> = <valor inicial>; <condição para executar>; <ação para cada iteração>)". Assim, podemos concluir que foi usada uma variável inteira i, iniciada em 0, que aumenta em 1 a cada iteração (i++) e o for é executado enquanto i for menor ou igual a 10. Bastante semelhante ao while, neste caso o resultado são 11 linhas com os números de 0 a 10.

 

Foreach

http://pastebin.com/wjhb0A1S

O foreach utiliza uma coleção qualquer, que pode ser um array (como neste caso), uma list ou uma collection. Ele conta automaticamente quantos objetos existem e faz uma iteração por cada, segundo a sintaxe: "foreach (<tipo> <variável> in <coleção>)". Note que não é necessário usar um contador ou uma condição, e o tipo DEVE ser igual ao dos objetos na coleção. O resultado neste caso é semelhante ao exemplo do for acima.

 

Também é possível usar uma coleção com um for, mas é recomendável utilizar o foreach, que é mais seguro e simples:

http://pastebin.com/tKwd6tap

Porém, repare que, como o primeiro item de uma coleção é o de index 0, temos de executar o for enquanto o contador for menor ou igual o comprimento menos 1. Este for é exatamente igual ao exemplo do foreach.

 

É possível fazer usos criativos do for. Você pode, por exemplo, ler arquivos em uma lista e, caso haja um erro, repetir o mesmo arquivo novamente: é possível alterar o contador DURANTE a iteração, assim basta você usar uma estrutura try-catch, diminuir o contador (i--) quando houver um erro e ler a mesma posição da lista novamente! Isso elimina a necessidade de um novo bloco de repetição apenas para tentar ler o arquivo novamente, como no caso do Delphi, que necessitaria de um repeat dentro do for.

 

Há muitos tipos de coleções. Além do array básico, existem arrays multidimensionais (e sim, é possível usar um for dentro de outro!), há listas especializadas e coleções de objetos de diferentes tipos, basta explorar a IDE.

fredpaduaF
28 de dezembro de 2012 às 15:49

Muito bom LF

Sem rep, pois ja dei no while e do/while .

Continue postando sobre o C# :)