Pesquisar este blog

quarta-feira, 11 de setembro de 2013

Estrutura de Repetição For no C#

Estrutura de repetição C#

A primeira estrutura de repetição que veremos aqui será o for, no for podemos executar uma parte do código repetidas vezes, de uma forma controlada, abaixo temos a estrutura do for:
 for(Inicialização;condição;passo){
   <codigo_a_ser_repetido>;
}
Nada melhor que um exemplo de código para começarmos a entender como funciona um for:

for(int contador=0;condador<10;contador++){
<código_a_ser_repetido>
}
Explicando o que acontece na definição do loop for, primeiro usamos a palavra chave for que define o loop, dentro do parênteses temos 3 definições de código, na primeira parte, que no exemplo é:
int contador=0;
Estamos definindo uma variável, e isso é o que geralmente fazemos em um for, porém devemos nos atentar que aqui podemos definir qualquer código e ele será executado apenas uma vez antes de qualquer passo do loop. Lembre-se que se uma variável for definida aqui, como fizemos com o contador, ela só poderá ser usada no contexto do for, ou seja, entre o início { e o fim } do for, após ele ela não será válida.
Na próxima definição, que no exemplo foi definido por:
contador < 10;
Temos uma condição booleana, esta parte do código será executada antes da execução de cada passo do loop, e ele o passo só será executado enquanto esta condição for verdadeira, quando ela for falsa o loop irá encerrar a execução.
Na última parte definida dentro do for, que foi definida por:
contador ++;
Temos uma parte do código que será executada ao final de cada passo do loop.
Neste exemplo do for, definimos uma variável inteira que começará com o valor de 0, este loop será válido para todos os valores de contador menores que 0, e a cada passo vamos acrescentar 1 ao valor de contador. Com isso, neste exemplo quando executado o contador terá os valores:
0
1
2
3
4
5
6
7
8
9
Lembre-se:
  1. Tanto a primeira, quanto a terceira parte do código dentro dos parênteses do for é opcional.
  2. A parte do código onde definimos a condicional é obrigatória.
  3. Não necessariamente devemos definir uma variável para o for, podemos usar uma que já existe.
  4. Podemos alterar a variável usando qualquer operação matemática, *, /, -, etc, e não necessariamente apenas o ++.
A primeira pergunta que nos vem a cabeça, quando pensamos em for é:
Ah, mas o for não é igual ao while?
Ainda não vimos o while, mas tudo o que fazemos no for, conseguimos fazer no while, porém no for é muito mais fácil e compacto.
Uma outra pergunta recorrente é:
Quem é mais eficiente o for ou o while?
Na verdade a eficiência dos dois é bem parecida, cabe ao programador escolher quando usar um ou outro.

Exercícios:

  1. Faça um programa  que receba um inteiro e imprima o quadrado de cada número entre 1 e o número passado pelo usuário.
  2. Faça um programa que receba um inteiro e imprima todos os números pares entre 0 e ele.
  3. Faça um programa que receba um inteiro e calcule o Fatorial daquele inteiro. (O fatorial de um número é determinado pela multiplicação do número n e seus inferiores, por exemplo o fatorial de 5 é 5 * 4 * 3 * 2 * 1 = 120).

Apresentação

Exemplo de código de um do while para o programa de médias:

  static void Main(string[] args)
        {
            double p1,p2,exame,media;
            string continua="N";
            Console.WriteLine("Olá, bem vindo ao program que calcula a média das matérias");
            do
            {
                Console.WriteLine("Digite a sua nota da P1:");
                p1 = Convert.ToDouble(Console.ReadLine());

                Console.WriteLine("Digite a sua nota da P2:");
                p2 = Convert.ToDouble(Console.ReadLine());

                media = (p1 + p2) / 2;
                if (media > 7)
                {
                    Console.WriteLine("Parabéns, você foi aprovado com uma média {0}, deseja continuar (S/N)",media);
                }
                else if (media > 3)
                {

                    Console.WriteLine("Digite a sua nota do Exame:");
                    exame = Convert.ToDouble(Console.ReadLine());
                    media = (media + exame) / 2;
                    if (media > 7)
                    {
                        Console.WriteLine("Parabéns, você foi aprovado com uma média {0}, deseja continuar (S/N)", media);
                    }
                    else
                    {
                        Console.WriteLine("Você foi reprovado com uma media {0}, deseja continuar (S/N)",media);
                    }
                }
                else
                {
                    Console.WriteLine("Você foi reprovado com uma media {0}, deseja continuar (S/N)",media);
                }
                continua = Console.ReadLine();
                Console.Clear();
            } while (continua.ToUpper().Equals("S"));