Estruturas de Repetição

Last updated: September 10nd, 2018

Laço while

Vimos com o for o que é um laço de repetição contado, agora iremos ver o que é um laço de repetição condicional.

Laço de repetição condicional é uma estrutura que irá executar uma instrução que está dentro de seu escopo sempre que a condição de teste for verdadeira.

Essa condição pode ser feita no começo do laço ou no final do laço.

Se a condição é realizada no começo do laço, então temos um laço while

A repetição com teste no início apenas inicia o conjunto de instruções caso a condição teste seja verdadeira (testado antes de executar as instruções de dentro) e continua o laço enquanto ela for verdadeira.

Exemplo 1

Faça um algoritmo que leia a variável SEXO. Enquanto o valor fornecido não for correto (‘M’, ‘m’, ‘F’, ‘f’), exibir mensagem de erro e ler novamente. Quando for fornecido um valor correto, ler a variável ANO. Escrever ANO e SEXO na tela.

#include < stdio.h >

int main () {
    int ano;
    char sexo;
    printf("Informe o sexo (M/F):\n");
    scanf(" %c", &sexo);
    // A variável de controle deve ter um valor conhecido. Neste caso ela foi lida antes do laço.
    while ((sexo != 'M') && (sexo != 'm') && (sexo != 'F') && (sexo != 'f')) {
        printf("Erro! Valor invalido!\n");
        printf("Informe o sexo novamente (M/F):\n");
        //A variável de controle deve ter seu valor modificado dentro do laço.
        //Neste caso, ela foi lida novamente.
        scanf(" %c", &sexo);
    }
    printf("Informe o ano:\n");
    scanf("%d", &ano);
    printf("%d - %c\n", ano, sexo);
    return 0;
}

Exemplo 2

Dado um valor n, imprima na tela o valor de n! (1 * 2 * ... * (n-1) * n)

#include < stdio.h >

int main () {
    int n, i, fat;
    printf("Informe um número:\n");
    scanf("%d", &n);
    fat = 1;
    i = 2;
    while (i <= n) {
        fat *= i; /* fat = fat * i */
        i++;
    }
    printf("O fatorial de %d eh %d.\n", n, fat);
    
    return 0;
}
Execução

Laço do-while

Vimos com o for o que é um laço de repetição contado e com o while o que é um laço de repetição condicional com teste no início.

O próximo laço de repetição a ser estudado é com teste da condição no final do código.

Lembre-se: a repetição com teste no início testa a condição antes de executar o laço. A repetição com teste no final, por sua vez, testa a condição apenas depois de executar o laço, ou seja, ele é executado pelo menos uma vez. Em qualquer uma das duas, o laço só continua sendo executado enquanto a condição for verdadeira.

Exemplo

Elabore um algoritmo que solicite números inteiros enquanto os numeros digitados sejam diferentes de 0. O algoritmo deverá informar, ao final, qual a soma dos numeros informados.

int n, soma = 0;

do{
    printf("Digite um numero: ");
    scanf("%d", &n);
    soma += n;
}while(n != 0);

printf("Soma total = %d\n",soma);

Exemplo 1 no terminal

Digite um numero: 25
Digite um numero: 25
Digite um numero: 50
Digite um numero: 0
Soma total = 100

Exemplo 2 no terminal

Digite um numero: 0
Soma total = 0

Note que mesmo digitando 0 como primeiro número (segundo exemplo) as instruções do while ainda são executadas uma vez.

Exercícios Recomendados (1064 ~ 1165 URI)