Essa condição pode ser feita no começo do laço ou no final do laço.
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.
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;
}
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
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.
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.