Euforia - declaração enquanto

Um loop while é uma estrutura de controle que permite que você repita uma tarefa por um determinado número de vezes.

Sintaxe

A sintaxe de um loop while é a seguinte -

while expression do
   -- Statements executed if expression returns true
end while

Ao executar, se a expressão resultar em verdadeiro, as ações dentro do loop são executadas. Isso continua enquanto o resultado da expressão for verdadeiro.

O ponto-chave da enquanto laço é que, o loop não pode nunca ser executado. Quando a expressão é testada e o resultado é falso, o corpo do loop é ignorado e a primeira instrução após o loop while é executada.

Exemplo

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

while a < 20 do
   printf(1, "value of a : %d\n", a)
   a = a + 1
end while

Isso produz o seguinte resultado -

value of a : 10
value of a : 11
value of a : 12
value of a : 13
value of a : 14
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19

O while .... com declaração de entrada

Geralmente, a primeira iteração de um loop é de alguma forma especial. Algumas coisas precisam ser feitas antes do início do loop. Eles são feitos antes da instrução iniciar o loop.

o with entrydeclaração serve muito bem ao propósito. Você precisa usar esta instrução com loop while e apenas adicionar oentry palavra-chave no ponto em que deseja que a primeira iteração comece.

Sintaxe

A sintaxe de um loop while com entrada é a seguinte -

while expression with entry do
   -- Statements executed if expression returns true
entry
   -- Initialisation statements.
end while

Antes de executar a expressão, ele executa instruções de inicialização e, em seguida, começa como um loop normal while. Posteriormente, essas instruções de inicialização se tornam parte do corpo do loop.

Exemplo

#!/home/euphoria-4.0b2/bin/eui

integer a = 10

while a < 20 with entry do
   printf(1, "value of a : %d\n", a)
   a = a + 1
entry
   a = a + 2
end while

Isso produz o seguinte resultado -

value of a : 12
value of a : 15
value of a : 18

A instrução while .... label

UMA while loop pode ter um label cláusula antes da primeira dopalavra-chave. Você pode manter a cláusula de rótulo antes ou depoisenter cláusula.

Um rótulo de loop while é usado apenas para nomear o bloco de loop e os nomes dos rótulos devem ser strings constantes entre aspas duplas com palavras únicas ou múltiplas. A palavra-chave do rótulo diferencia maiúsculas de minúsculas e deve ser escrita comolabel.

Sintaxe

A sintaxe de um loop while com a cláusula label é a seguinte -

while expression label "Label Name" do
   -- Statements executed if expression returns true
end while

Os rótulos são muito úteis quando você usa loops while aninhados. Você pode usarcontinue ou exit instruções de controle de loop com nomes de rótulo para controlar o fluxo de loops.

Exemplo

#!/home/euphoria-4.0b2/bin/eui

integer a = 10
integer b = 20

while a < 20 label "OUTER" do
   printf(1, "value of a : %d\n", a)
   a = a + 1
   
   while b < 30 label "INNER" do
      printf(1, "value of b : %d\n", b)
      b = b + 1
      
      if b > 25 then
         continue "OUTER"  -- go to start of OUTER loop
      end if
   end while
end while

Isso produz o seguinte resultado -

value of a : 10
value of b : 20
value of b : 21
value of b : 22
value of b : 23
value of b : 24
value of b : 25
value of a : 11
value of b : 26
value of a : 12
value of b : 27
value of a : 13
value of b : 28
value of a : 14
value of b : 29
value of a : 15
value of a : 16
value of a : 17
value of a : 18
value of a : 19