Use o botão abaixo para reportar erros ou dar sugestões.

Computação Científica - Um Livro Colaborativo

2.4 While


O while permite fazer um loop enquanto uma expressão for verdadeira (ou diferente de zero). Sua sintaxe é:

 while (expressão)  
 instrução

Essa estrutura só faz sentido se a expressão é recalculada a cada iteração e para quando chegar no valor zero. Vamos estudar o exemplo abaixo.

Exemplo 2.4.1. Escreva um código que imprime os números entre 0 e 10.

#include <stdio.h>  
 
main()  
{  
  int i=0;  
  while (i<=10)  
  {  
    printf("i=%d\n",i);  
    i=i+1;  
  }  
}

Vamos discutir o código do exemplo 2.4.1. A primeira instrução é uma atribuição de valor 0 para o inteiro i. O while testa a expressão (i<=10): 0 é menor ou igual a 10? Como o teste tem resposta 1 (VERDADE), o programa executa as instruções dentro do bloco while. A primeira instrução imprime o número 0 e a segunda atribui para i o valor de i+1, ou seja, agora i tem valor 0 + 1 = 1. O while repete a pergunta: 1 é menor ou igual a 10? A resposto é verdadeira, então o programa imprime o número 1 e incrementa i para 2. Quando o valor de i chegar em 11, o while faz a pergunta: 11 é menor ou igual a 10? A resposta é 0 (FALSO) e o programa encerra o loop.

No contexto de loops, um operador importante para incrementar o valor de uma variável é o operador incremento ++. Observe uma possibilidade de programa para o exemplo 2.4.1:

 #include <stdio.h>  
 
main()  
{  
  int i=0;  
  while (i<=10)  
    {  
    printf("i=%d\n",i);  
    i++;  
  }  
}

O operador ++i pode ser usado antes da variável (pré-fixado) ou depois i++ (pós-fixado), sedo que em ambos os casos a variável é incrementada em uma unidade. No entanto, quando o valor da variável é usado numa expressão, o efeito é diferente: i++ primeiro usa o valor antigo depois incrementa e; ++i primeiro incrementa e depois usa o valor atualizado. Observe os dois programas abaixo:

Programa 1:

#include <stdio.h>  
 
main()  
{  
  int x,i=0;  
  while (i<=10)  
  {  
    printf("i=%d\n",++i);  
  }  
}

Programa 2:

#include <stdio.h>  
 
main()  
{  
  int x,i=0;  
  while (i<=10)  
  {  
    printf("i=%d\n",i++);  
  }  
}

O programa 1 imprime os número entre 1 e 11 e o programa 2 imprime os números entre 0 e 10. O operador análogo que diminui em uma unidade o valor da variável é o operador decremento --.

Observe que o while primeiro testa, depois executa. Para inverter essa sequência, usamos o do-while. Sua sintaxe é:

 do  
 instrução  
 while (expressão)

Uma versão para o programa do exemplo 2.4.1 é:

 #include <stdio.h>  
 
main()  
{  
  int i=0;  
  do  
  {  
    printf("i=%d\n",i++);  
  }  
  while (i<=10);  
}

Exemplo 2.4.2. Escreva um programa que some os primeiros termos da série ∑ i=0∞ 1 2i.

#include <stdio.h>  
 
main()  
{  
  double enesimo=1,soma=0,epsilon=1e-10;  
  int controle=3;  
  soma=enesimo;  
  while (controle)  
  {  
    enesimo*=1.0/2.0;  
    soma+=enesimo;  
    if (enesimo<epsilon) controle--;  
    printf("controle=%d, enesimo=%e, soma=%f\n",controle,enesimo,soma);  
  }  
}

No exemplo 2.4.2 enesimo*=1.0/2.0 tem a mesma funcionalidade de enesimo=enesimo*1.0/2.0 assim como soma+=enesimo funciona como soma=soma+enesimo.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:33:16.

Informe erros ou edite você mesmo!