Capítulo 5

Estruturas de repetição

5.1 - Repetindo um bloco de código

De volta ao exemplo da aula anterior, suponha agora que o cliente desse mesmo banco queira saber quanto ele ganhará, ao final de 1 ano, caso ele invista um valor. O investimento paga 1% do valor investido ao mês.

Por exemplo, se o cliente investir R$ 1000,00, ao final de 12 meses, terá por volta de R$ 1126,82: no primeiro mês, R$ 1000,00 + R$1000,00 * 1% = R$ 1010,00; no segundo mês, R$ 1010,00 + R$1010,00 * 1% = R$ 1020,10; e assim por diante. Ou seja, para calcular o quanto ele terá ao final de um ano, podemos multiplicar o valor investido 12 vezes por 1%.

Para resolvermos esse problema, precisamos fazer uso de uma estrutura de controle que repete um determinado bloco de código até que uma condição seja satisfeita. Essa estrutura recebe o nome de loop.

Para fazer um loop no C#, utilizaremos, inicialmente, a instrução for. O for é uma instrução que possui três partes:

Cada uma das partes do for é separada por um ;.

for (inicialização; condição; atualização)
{
    // Esse código será executado enquanto a condição for verdadeira
}

Veja o código a seguir, por exemplo, em que usamos um for que repetirá o cálculo 12 vezes:

double valorInvestido = 1000.0;
for (int i = 1; i <= 12; i += 1)
{
    valorInvestido = valorInvestido * 1.01;
}
MessageBox.Show("Valor investido agora é " + valorInvestido);

Veja que nosso for começa inicializando a variável i com 1 e repete o código de dentro dele enquanto o valor de i for menor ou igual a 12, ou seja, ele só para no momento em que i for maior do que 12. E veja que, a cada iteração desse loop, o valor de i cresce (i += 1). No fim, o código de dentro do for será repetido 12 vezes, como precisávamos.

O mesmo programa poderia ser escrito utilizando-se um while, em vez de um for:

double valorInvestido = 1000.0;
int i = 1;
while (i <= 12)
{
    valorInvestido = valorInvestido * 1.01;
    i += 1;
}
MessageBox.Show("Valor investido agora é " + valorInvestido);

5.2 - Para saber mais do while

No C# quando utilizamos o while, a condição do loop é checada antes de todas as voltas (iterações) do laço, mas e se quiséssemos garantir que o corpo do laço seja executado pelo menos uma vez? Nesse caso, podemos utilizar um outro tipo de laço do V# que é o do while:

do
{
    // corpo do loop
}
while(condição);

Com o do while a condição do loop só é checada no fim da volta, ou seja, o corpo do loop é executado e depois a condição é checada, então o corpo do do...while sempre é executado pelo menos uma vez.

Seus livros de tecnologia parecem do século passado?

Conheça a Casa do Código, uma nova editora, com autores de destaque no mercado, foco em ebooks (PDF, epub, mobi), preços imbatíveis e assuntos atuais.
Com a curadoria da Caelum e excelentes autores, é uma abordagem diferente para livros de tecnologia no Brasil. Conheça os títulos e a nova proposta, você vai gostar.

Casa do Código, livros para o programador.

5.3 - Para saber mais incremento e decremento

Quando queremos incrementar o valor de uma variável inteira em uma unidade, vimos que temos 2 opções:

int valor = 1;

valor = valor + 1;
// ou
valor += 1;

Porém, como incrementar o valor de uma variável é uma atividade comum na programação, o C# nos oferece o operador ++ para realizar esse trabalho:

int valor = 1;
valor++;

Temos ainda o operador -- que realiza o decremento de uma variável.

5.4 - Exercícios

  1. Qual é o valor exibido no seguinte código:

    int total = 2;
    for (int i = 0; i < 5; i += 1)
    {
        total = total * 2;
    }
    MessageBox.Show("O total é: " + total);
    
    • 256
    • 64
    • 128
    • 512
  2. Faça um programa em C# que imprima a soma dos números de 1 até 1000.

  3. Faça um programa em C# que imprima todos os múltiplos de 3, entre 1 e 100.

    Para saber se um número é múltiplo de 3, você pode fazer if(numero % 3 == 0).

  4. (Opcional) Escreva um programa em C# que some todos os números de 1 a 100, pulando os múltiplos de 3. O programa deve imprimir o resultado final em um MessageBox.

    Qual o resultado?

  5. (Opcional) Escreva um programa em C# que imprime todos os números que são divisíveis por 3 ou por 4 entre 0 e 30.

  6. (Opcional) Faça um programa em C# que imprima os fatoriais de 1 a 10.

    O fatorial de um número n é n * n-1 * n-2 ... até n = 1.

    O fatorial de 0 é 1

    O fatorial de 1 é (0!) * 1 = 1

    O fatorial de 2 é (1!) * 2 = 2

    O fatorial de 3 é (2!) * 3 = 6

    O fatorial de 4 é (3!) * 4 = 24

    Faça um for que inicie uma variável n (número) como 1 e fatorial (resultado) como 1 e varia n de 1 até 10:

    int fatorial = 1;
    for (int n = 1; n <= 10; n++)
    {
      
    }
    
  7. (Opcional) Faça um programa em C# que imprima os primeiros números da série de Fibonacci até passar de 100. A série de Fibonacci é a seguinte: 0, 1, 1, 2, 3, 5, 8, 13, 21 etc... Para calculá-la, o primeiro elemento vale 0, o segundo vale 1, daí por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento (ex: 8 = 5 + 3).

  8. (Opcional) Faça um programa que imprima a seguinte tabela, usando fors encadeados:

    1
    2 4
    3 6 9
    4 8 12 16
    n n*2 n*3 .... n*n