Você está visualizando atualmente Instrução de repetição do{}while (faça{}enquanto)

Instrução de repetição do{}while (faça{}enquanto)

Como vimos nos posts anteriores, a problemática instrução “goto” foi substituída por blocos de repetição. No primeiro post, que pode ser lido aqui, vimos a instrução de repetição do tipo for (para), utilizada quando sabemos exatamente quantas vezes aquele trecho de código deve ser repetido.

Contudo, nem sempre esse valor é conhecido. Imagine que seu programa peça ao usuário para digitar um valor inteiro e maior que zero. O valor deve ser solicitado ao usuário até que ele digite um valor válido. Logo, não sabemos quantas vezes o usuário irá insistir em digitar um valor negativo ou igual a zero. Nesta situação, podemos recorrer ao bloco de repetição while (enquanto), apresentada aqui, que repetirá até que uma determinada condição seja satisfeita.

Por fim, existe ainda um terceiro bloco de repetição que é, na verdade, uma variação do bloco while já visto. Como visto no post anterior, o bloco de código dentro da instrução while apenas será executado se a condição verificada for satisfeita (verdadeira). Assim, é possível que as instruções dentro de um while nunca sejam executadas se o teste for falso já no primeiro teste.

A instrução do{}while (faça{}enquanto) é uma variação que garante a execução do bloco de código interno ao menos uma vez, para depois testar uma condição. Observe o trecho de código a seguir:

#include <stdio.h>
int main(){
    int valor;
    do{
        printf("Digite um valor inteiro e maior que zero: ");
        scanf("%d", &valor);
    }while(valor <= 0);
    printf("Valor digitado: %d\n", valor);
    return 0;
}
Programa em execução.

Entendendo seu programa C linha a linha

Na linha 1 estamos incluindo em nosso programa uma biblioteca da linguagem C. Neste caso a biblioteca stdio.h. Praticamente todos os programas em C precisam desta biblioteca pois, todas as funções e procedimentos de entrada e saída estão definidos nesta biblioteca. Por isso o nome “stdio”, i de entrada (input) e o de saída (output).

Na linha 3 temos a função principal de nosso pequeno programa (main). Todo programa em C precisa desta função. É por onde o nosso programa começa a ser executado. Qualquer outra função ou procedimento que precisamos deve ser chamado dentro da função main().

Na linha 5 criamos uma variável do tipo int (inteiro) para salvar o valor que será digitado pelo usuário.

Na linha 7 temos a nossa instrução de repetição. Tudo que está entre as chaves, ou seja, as linhas 8 e 9, serão executadas ao menos uma vez. Como é possível perceber, o teste condicional está no final de nossa instrução de repetição (while(valor <= 0);). Assim, primeiro o valor será solicitado ao usuário para então testar se é válido.

Por fim, a linha 12, que imprime o valor digitado na tela, apenas será executado quando o bloco de repetição finalizar, ou seja, quando o valor digitado pelo usuário for válido.

Instrução do{}while com mais de uma comparação

As vezes pode ser necessário realizar mais de um teste para então decidir se um trecho de código deve ou não ser repetido. A instrução do{}while, assim como a instrução while, suporta múltiplas comparações desde que os operadores relacionais e lógicos sejam utilizados adequadamente.

No exemplo a seguir, é solicitado ao usuário um valor maior que 0 e menor que 1000, ou seja, são válidos apenas valores entre 1 e 999.

#include <stdio.h>
int main(){
    int valor;
    do{
        printf("Digite um valor inteiro entre 1 e 999: ");
        scanf("%d", &valor);
    }while(valor <= 0 || valor > 999);
    printf("Valor digitado: %d\n", valor);
    return 0;
}
Programa em execução.

Imagine que haja uma terceira condição, que além de excluir os números menores que 1 e maiores que 999, também desejamos excluir todos os números pares. Basta incluir esta terceira condição, como apresentado a seguir.

#include <stdio.h>
int main(){
    int valor;
    do{
        printf("Digite um valor inteiro entre 1 e 999 ímpar: ");
        scanf("%d", &valor);
    }while(valor <= 0 || valor > 999 || valor % 2 == 0);
    printf("Valor digitado: %d\n", valor);
    return 0;
}
Programa em execução.

Se ficou alguma dúvida, compartilhe nos comentários que faremos o possível para esclarecer. Um grande abraço, bons estudos e até o próximo.

Deixe um comentário

dois × 3 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.