Module: Instrução de loop com condição - while


Problem

1/21

A construção de uma instrução de loop com uma condição (while)

Theory Click to read/hide

Ao estudar o loop for, dissemos que, se o número de repetições de qualquer ação for conhecido, você poderá encurtar o programa usando o operador de loop for. Mas e se o número de repetições não for conhecido? E isso acontece com bastante frequência.
Por exemplo, vamos lembrar da conversão de um número de um sistema de numeração decimal para qualquer outro: precisamos dividir o número (e depois o resultado da divisão) pela base do sistema de numeração até obtermos zero na resposta. Quantas vezes vamos compartilhar é desconhecido. E existem muitos programas que implementam esse algoritmo. 
Como isso é implementado?
Para tais casos na programação, existe um operador de loop com uma condição. 
Na linguagem de programação Pascal, uma instrução de loop condicional começa com a palavra while e tem a seguinte estrutura. enquanto <condição> comece corpo de loop fim Como já sabemos:
- uma condição é uma expressão, cujo resultado pode ser verdadeiro ou falso (como em uma declaração condicional)
- o corpo do loop são os comandos que precisam ser repetidos
- begin e end podem ser omitidos se o corpo do loop consistir em apenas um operador

Como funciona o operador:
1. Primeiro, o programa avalia a condição após a palavra while. Se a condição for atendida (true), então o programa executa a(s) instrução(ões) contida(s) no corpo do loop.
2. Como no loop for, se o corpo do loop contiver apenas uma instrução, as palavras begin e end que destacam o corpo do loop podem ser omitidas.
3. Após a conclusão da execução do corpo do loop, o programa retorna para verificar a condição e verifica novamente.
4. Essas ações (verificar a condição - executar o corpo do loop) são repetidas até que a condição se torne falsa.
5. Se na primeira execução deste operador a condição não for imediatamente satisfeita (false), então o programa nunca executará o corpo do loop.

Analisando o trabalho desse operador, deve ficar claro que o corpo do loop deve conter um operador que afete a condição.
Por exemplo, um loop pode incrementar o valor de uma variável usada em uma condição.

Um exemplo de programa que chamaremos de "Contagem silenciosa"
Vamos fazer o programa contar em vez de nós, por exemplo, até 10.
O programa deve exibir a frase "Iniciar" e "Concluir", e entre essas ações exibir os números que estão sendo calculados.
Assim, 
Iniciar
1 2 3 4 5 6 7 8 9 10
Concluir
Um programa usando um loop while ficaria assim. var i: inteiro; começar     writeln('Iniciar');     i := 1;     enquanto i <= 10 começar         escreva(i, ' ');         i += 1; //Operador que afeta a mudança da variável na condição         fim;     escrevaln();     writeln('Concluir'); fim. Neste programa, atribuímos um valor à variável i := 1 - a origem
Além disso, desde que tenhamos o valor da variável i não maior que (ou seja, menor ou igual a) o valor que precisamos, nós 
 1 - exibe o valor da variável i 
 2 - aumenta o valor da variável i em 1 - este operador afeta o valor da condição entre colchetes. A variável i é incrementada, ou seja, em algum momento a condição i<=10 se tornará falsa. Isso acontecerá quando i for igual a 11. Nesse caso, o corpo do loop não será mais executado e o programa executará a próxima instrução após o loop, ou seja, writeln();
writeln('Concluir');

Problem

Execute o programa, veja o resultado de seu trabalho