Introdução ao comando de repetição while
Nas seções sobre variáveis e sobre comando de seleção, pudemos perceber os conceitos básicos da computação que nos permite construir sistemas sofisticados. Com variáveis é possível armazenar e trocar valores e com a seleção (if) pode-se desviar o fluxo de execução de acordo com valores que as variáveis assumem.
Entretanto, falta um conceito essencial para permitir computação significativa, que é a repetição condicionada de comandos. Quer dizer, é possível repetir um bloco de comandos enquanto uma condição é verdadeira. Depois examinaremos outras formas, como repetir até determinanda condição se verificar ou repetir um número de vezes. com os dois conceitos
A figura 1 ilustra o fluxo de execução de um comando do tipo repita enquanto:
A estrutura básica do comando de repetição com condição de entrada é formado por 3 partes, uma marca indicando o comando (while), seguido de uma expressão lógica (EXPL) depois o bloco de comandos subordinados. Assim, se tiver apenas um comando subordinado a sintaxe C e Python são:
C | Python | |
---|---|---|
|
O significado (semântica) do código acima, durante sua execução, é:
1. | Verifica-se a condição EXPL, se o seu resultado for verdadeiro executa-se o passo 2, senao vai para passo 3 (final do comando) |
2. | Executa-se o comando "comando1", depois volta-se a executar o passo 1. |
3. | Final do bloco de repetição! |
Vários comandos subordinados ao mesmo comando de repetição while
Se houver necessidade de vários comandos subordinados ao comando de repetição, então em C deve-se usar as marcas '{' e '}' para anotar o início e o fim do bloco. Em Python não é necessário devido à indentação ser obrigatória e por ser capaz de identificar todos os comandos subordinados. Assim, vejamos um trecho de código que gerar e imprimir os naturais entre 1 e N:
C | Python | ||
---|---|---|---|
|
|
Exercitando a compreenção: simulando o código
É interessante usar simulações para melhor compreender o desenvolvimento dos algoritmos, mais ainda se você detectar algum erro em seu código, que portanto precisa ser corrigido. Adotaremos o seguinte esquema de simulação: usaremos uma tabela com as variáveis do código e registraremos cada alteração em uma linha, seguindo o fluxo de execução de cima para baixo, de modo que o último valor de uma variável (em qualquer ponto/linha) será o primeiro valor, na coluna da variável, encontrado "olhando" para "cima". Indicaremos as atribuições com ":=".
N | i impressoes ---+--- ---------- * leitura para inteiro N 3 | ? i := 0 | 0 * entra no laco "while" pois 0=i<N=3 | i := 1 (pois: i recebe i+1=0+1) | 1 * saida: i=1 | i=1 * final do laco "while" volta para condicao | * entra no laco "while" pois 1=i<N=3 | i := 2 (pois: i recebe i+1=1+1) | 2 * saida: i=2 | i=2 * final do laco "while" volta para condicao | * entra no laco "while" pois 2=i<N=3 | i := 3 (pois: i recebe i+1=2+1) | 3 * saida: i=3 | i=3 * final do laco "while" volta para condicao | * sai no laco "while" pois 3=i<N=3 = falso!!! | Final! |
Para estudar um pouco mais:
Leônidas de Oliveira Brandão
http://line.ime.usp.br
Alterações:
2020/08/20: acertos formato
2020/08/11: imagem diagrama de fluxo (e texto), novo formato, pequenas revisões
2019/03/31: verao 1.1
2017/04/14: verao 1.0