O comando while em C

 

Por: Eduardo Casavella

Estrutura de repetição while

Executa a repetição de um bloco de instruções enquanto uma condição é verdadeira.

Pseudocódigo

A estrutura Enquanto … Faça equivale a estrutura while em linguagem C.

Sintaxe:

 Iniciar a variável de controle
 Enquanto (condição) faça
 Início
    Instruções;
    Atualizar a variável de controle;
 Fim;

Lembrando que chamamos de variável de controle a variável testada na condição.

Para que seja possível fazer o teste, a variável de controle deve ter sido inicializada previamente.

Observe que o teste da condição ocorre no início do laço.

Enquanto a condição permanecer verdadeira, são executadas as instruções.

Quando a condição se tornar falsa, o processamento será desviado para fora do laço.

Importante: Note bem, que caso a condição seja falsa logo no início, as instruções do laço são ignoradas.

Utilizando o comando while em linguagem C

Sintaxe:

while (condição)
{
Instrução ou bloco de instruções;
}

Exemplo

#include <stdio.h>

int main(void)
{
	int contador = 1; //declarando e inicializando a variável de controle
	
	while (contador <= 10) // Testando a condição
	{
		printf("%d ", contador); //Executando um comando dentro do laço
		
		contador++; //atualizando a variável de controle
	}	
	
	return 0;
}

 

 

Visualização da tela de execução do programa

Executando comando while

Executando comando while

 

Explicação do código:

Inicialmente, a variável de controle denominada contador foi declarada e inicializada com o valor 1.

O teste da condição while é realizado , e como o contador é menor que 10, então a condição é verdadeira.

Como a condição é verdadeira, o programa entra dentro do corpo do laço e executa o printf, exibindo o valor da variável contador.

Após executar o comando printf, o contador é incrementado.

Depois do incremento, a condição é testada novamente e enquanto for verdadeira, os comandos são executados de novo, até que a condição se torne falsa.

A condição falsa faz com que o laço seja encerrado.

Até o próximo post!

7 respostas a O comando while em C

  • Gabriela disse:

    Parabéns pela página, me ajudou muito!

  • Alef Adiglerdan Bezerra disse:

    Conteúdo excelente!

  • Josué disse:

    Boa tarde Eduardo,
    Sabe me dizer em qual situação pode ser usado este comando, um exemplo de atividade.

    • eduardo disse:

      Olá Josué!

      O comando while é usado em diversos tipos de situações onde precisamos de uma estrutura de repetição, pode ser uma repetição com contador como no exemplo do post, ou então um teste. Enquanto a condição é verdadeira ele fica repetindo. Ou pode ser usado também como loop infinito como no exemplo abaixo. No caso abaixo ele fica repetindo indefinidamente, só vai sair quando o usuário digitar 7 porque aí o break quebra o laço. while(1) signfica: enquanto for verdadeiro faça os comandos dentro das chaves.

      while (1)
      {
      printf(“Digite um numero inteiro: “);
      scanf(“%d”, &n);

      if (n == 7)
      {
      printf(“Saindo do loop…\n”);
      break; //força a saída imediata do loop
      }

      Veja mais em: http://linguagemc.com.br/loop-infinito-em-c/

  • Vandeir Diniz disse:

    Ótima explicação, consegui sanar minha dúvida.

  • Wesley Jacques disse:

    Prof. bom dia!

    Usando como exemplo um filme no cinema:

    #include

    int main()
    {
    int hora_atual = 20;
    int hora_filme1 = 20;
    int hora_filme2 = 24;
    /*
    hora_atual – Representa o horário que cheguei no cinema (20 horas)
    hora_filme1 – Representa o horário que começa a 1º sessão do filme (20 horas)
    hora_filme2 – Representa o horário que começa a 2º sessão do filme (24 horas)
    */
    while (hora_atual >= hora_filme1 && hora_atual = hora_filme1 + 2){
    printf (“Primeira sessão encerrada!\n”);
    }// Fim if1
    else if (hora_atual = hora_filme2 && hora_atual = hora_filme2 + 2){
    printf (“Segunda sessão encerrada, volte amanhã!\n”);
    } // Fim if2
    else if (hora_atual >= hora_filme2 + 2){
    printf (“Segunda sessão encerrada, volte amanhã!\n”);
    } // fim else2
    return 0;

    /*
    Enquanto meu horário atual for MAIOR ou IGUAL ao horário de início do FILME1 E meu horário atual for MENOR ou IGUAL ao horário do FILME1 + 2 (o filme tem duração de 2 horas) aparecer a mensagem: “1º sessão em exibição”.
    SE meu horário atual for MAIOR ou IGUAL ao horário do FILME1 + 2, aparecer a mensagem: “1º sessão já terminou”

    Enquanto meu horário atual for MAIOR ou IGUAL ao horário do FILME2 E meu horário atual for MENOR ou IGUAL ao hoário do FILME2 + 2, aparecer a mensagem: “2º sessão em exibição”.
    SE meu horário atual foi MAIOR ou IGUAL ao horário do FILME2 + 2, aparecer a mensagem: “2º sessão já terminou, voltar amanhã”.
    */

    } //Fim int main

    Eu não sei se é da forma correta, mas dessa forma está funcionando como eu quero.
    Porém, eu quero que quando compile apareça assim:


    Primeira sessão em exibição
    Primeira sessão em exibição
    Primeira sessão encerrada
    Segunda sessão em exibição
    Segunda sessão em exibição
    Segunda sessão encerrada, volte amanhã!

    Só que eu não sei como fazer pro código continuar lendo depois da primeira parte, ele termina na “Primeira sessão encerrada”..

    Eu não sei se consegui ser claro. Aguardo retorno.

    att;

    Wesley Jacques