Laços while no Octave

Nesta lição, temos como objetivo explorar a construção de um laço while no Octave. Vamos desvendar juntos?

Então, o que é de fato um laço while? Trata-se de uma estrutura de controle de fluxo que possibilita a execução repetida de um conjunto de instruções (ou seja, através de iterações) até que uma condição lógica específica seja satisfeita.

Antes de partir para a execução de um bloco de instruções, o laço while avalia uma condição lógica inicial.

Esse ciclo persiste até que a condição inicial deixe de ser atendida, ocasião na qual o laço é interrompido.

while condição
bloco de instruções
endwhile

Caso a condição inicial não seja satisfeita desde o começo, o laço while sequer concluirá uma única iteração.

Esse tipo de laço é denominado laço indefinido, pois pode ser que não saibamos quantas iterações serão necessárias de antemão.

Diferentemente de outras linguagens de programação, como Java ou C, você não precisa encapsular o código entre chaves em alguns idiomas. Contudo, é importante destacar que a indentação, tal como em Python, não é obrigatória. Para aprimorar a legibilidade do código, sugiro posicionar o bloco de instruções um pouco mais à direita em relação à instrução while.

A título de exemplo, vamos considerar um caso prático onde o laço é responsável por calcular o quadrado dos números de 1 a 9.

x=1;
while x<10
disp(x**2);
x=x+1;
endwhile

O resultado que obtemos é:

1
4
9
16
25
36
49
64
81

Nesse cenário, o laço while realiza um ciclo completo, pois sabemos quantas iterações serão necessárias de antemão.

Contudo, nem sempre é assim, e o laço while também pode ser responsável por um número indefinido de iterações.

O risco de um laço infinito

Quando programamos um laço, é essencial estarmos atentos à possibilidade de ocorrer um laço infinito.

Um laço infinito é caracterizado quando o número de iterações é incerto, e o laço continua sendo executado indefinidamente. Essa situação pode levar o programa a se tornar irresponsivo e ocasionar travamentos no sistema.

Para contornar essa situação, sempre recomendo a inclusão de uma condição de saída forçada após um número máximo de iterações.

Por exemplo, consideremos o script a seguir, que gera um número aleatório entre 1 e 100 e solicita que o usuário tente adivinhá-lo.

number=randi(100);
x=0;
while x!=number
x = input("Que número eu tirei? ")
if (x!=number)
disp("Errado")
else
disp("Acertou!")
break;
endif
endwhile

À primeira vista, parece um laço simples que é interrompido quando o usuário acerta o número.

No entanto, caso o usuário não consiga adivinhar o número, o laço seguirá em execução indefinidamente, resultando em um laço infinito.

Para prevenir tal ocorrência, é imprescindível estabelecermos um limite para o número de iterações do laço.

Isso pode ser feito através da adição de uma variável de contagem, t, que é incrementada a cada iteração.

Quando t atinge o limite de iterações, o laço é encerrado mesmo que o usuário não tenha acertado o número.

number=randi(100);
x=0;
t=0;
while x!=number
x = input("Que número eu tirei? ")
if (x!=number)
disp("Errado")
else
disp("Acertou!")
break;
endif
t=t+1
if (t==10)
disp("Você fez tentativas demais.")
break;
endif

endwhile

Ao incluir essa condição, asseguramos que o laço seja finalizado em um número razoável de iterações, evitando que o programa se torne irresponsivo e prevenindo potenciais travamentos do sistema.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Ciclos Octave