Declaração While

<< Clique para Mostrar o Sumário >>

 

Declaração While

A declaração while é utilizada para avaliar uma sequência de instruções repetidamente enquanto uma dada condição seja verdadeira ou se depare com a declaração break.

Além da declaração break, outra declaração útil que pode ser utilizada em conjunto com while para controlar o fluxo de avaliação das sequências de instruções é a declaração continue, que promove a interrupção da avaliação da sequência de instruções no ponto onde foi declarada, retornando ao início do laço onde novamente é verificada a condição de execução da sequência de instruções.

Suponha que se queira gerar uma lista com valores que seguem a lógica descrita na figura a seguir.

Função para geração de lista de valores

Função para geração de lista de valores

O gráfico da função anterior é apresentado na figura a seguir.

Gráfico da função

Gráfico da função

O código utilizado para implementar a lógica anterior é o seguinte:

In [1]: x = range(-10, 11)
In [2]: y = []
 
In [3]: i = -1
In [4]: while True:
  ....:  i += 1
  ....:  if i > len(x) - 1:
  ....:    break
  ....:  if x[i] > 0:
  ....:    y.append(x[i])
  ....:    continue
  ....:    y.append(x[i] ** 2)
  ....:
In [5]: j = -1
In [6]: while j < len(x) - 1:
  ....:  j += 1
  ....:  print('x: {0}  -  y: {1}'.format(x[j], y[j]))
  ....:
x: -10  -  y: 100
x: -9  -  y: 81
x: -8  -  y: 64
x: -7  -  y: 49
x: -6  -  y: 36
x: -5  -  y: 25
x: -4  -  y: 16
x: -3  -  y: 9
x: -2  -  y: 4
x: -1  -  y: 1
x: 0  -  y: 0
x: 1  -  y: 1
x: 2  -  y: 2
x: 3  -  y: 3
x: 4  -  y: 4
x: 5  -  y: 5
x: 6  -  y: 6
x: 7  -  y: 7
x: 8  -  y: 8
x: 9  -  y: 9
x: 10  -  y: 10

 

A primeira linha cria uma lista de números inteiros de -10 a 10, através do comando range, e atribui o resultado à variável x. As duas linhas seguintes criam uma lista vazia para y e atribuem o valor -1 (menos um) para a variável i, que é utilizada para referenciar os elementos de x.

A quarta linha inicia o bloco de comando while e, como a sua cláusula é sempre verdadeira (True), é preciso utilizar outro mecanismo de interrupção do laço, que neste caso é realizado pela declaração break quando a variável i, que é incrementada a cada iteração, é maior que o número de elementos da lista x (obtido pela função len) menos uma unidade.

Para demonstrar o funcionamento da declaração continue, adicionou-se uma verificação do valor do elemento da lista x que está sendo avaliado naquele momento. Caso seja maior que zero, este valor é adicionado à lista y e retorna ao início do laço por conta da declaração continue, permitindo que a linha seguinte, que adiciona o valor do elemento de x elevado ao quadrado à lista y, não seja avaliada.

Após o bloco do primeiro while que cria a lista y segundo a regra previamente definida, realiza-se um novo laço while, agora com a condição de saída presente na própria cláusula. O objetivo deste while é iterar elemento a elemento das listas x e y e apresentá-los na saída padrão através da função print utilizando o recurso de formatação de Strings e substituição de índices (chaves) pelos respectivos valores, como pode ser deduzido do próprio código.

Vale ressaltar que existem maneiras mais eficientes e elegantes de resolver o problema deste exemplo, porém o objetivo aqui é apenas ilustrar o funcionamento da declaração while e das demais declarações.

Esta página foi útil?