Laço "do until" em Matlab

Nesta aula, vou abordar a utilização do laço "do until" no Octave, explicando seus fundamentos e aplicabilidade.

O que caracteriza o laço "do until"? Trata-se de uma estrutura de repetição que executa um conjunto de comandos várias vezes, até que uma condição específica seja atendida. Essa estrutura é semelhante ao laço "while", mas a verificação da condição ocorre ao final de cada ciclo.

Como ele opera?

No "do until", o bloco de código é executado, no mínimo, uma vez.

No ambiente Matlab, não há um comando específico para o "do until". Contudo, é possível emulá-lo de forma eficiente com o uso do comando "while".

Exemplificando na prática:

cond=true;
x=1;
while cond
disp(x);
x=x+1;
if (x>9)
cond=false;
end
end

Neste exemplo, inicializamos a variável 'cond' como verdadeira e atribuímos o valor 1 à variável 'x'.

O laço "while" entra em ação, imprimindo o valor atual de 'x' e, em seguida, incrementando-o. Ao final de cada ciclo, o script verifica se a condição x>9 foi alcançada.

  • Caso não, o laço continua sua execução.
  • Se sim, 'cond' torna-se falso, finalizando o laço.

O resultado deste script é a impressão sequencial dos números de 1 a 9. O laço se encerra quando 'x' atinge 10, pois a condição x > 9 é satisfeita.

Observação. É importante notar que, neste exemplo, utilizamos a estrutura "do until" para criar um laço determinístico, onde o número total de iterações já era conhecido de antemão. Esta estrutura também pode ser aplicada em laços indeterminados, porém, é essencial estar atento ao risco de entrar em laços infinitos.

O perigo de um laço infinito emerge quando o laço "do until" é empregado em situações indeterminadas.

Considere, por exemplo, este script que desafia o usuário a adivinhar um número aleatório:

cond=true
while (cond)
numero=randi(100);
x = input("Insira um número entre 1 e 100")
if not( x==numero)
disp("Não acertou")
end
if (x==numero)
disp("Acertou")
cond=false;
end
end

Nesta situação, o laço pode se prolongar indefinidamente se o usuário não conseguir adivinhar o número, criando um laço infinito.

Para prevenir essa situação, é aconselhável introduzir uma condição de saída forçada no laço.

 

c=0;
cond=true;
while (cond)
numero=randi(100);
x = input("Insira um número entre 1 e 100")
if not ( x==numero)
disp("Não acertou")
end
if (x==numero)
disp("Acertou")
cond=false;
end
c=c+1;
if (c==10)
disp("Realizou muitas tentativas");
break;
end
end

Neste script alterado, adicionamos um contador (c) que é incrementado a cada iteração. Quando o usuário alcança 10 tentativas sem acertar o número, o script interrompe o laço, evitando assim a ocorrência de um laço infinito.

Essa abordagem assegura um controle mais efetivo sobre o laço, mantendo a integridade e a eficiência do código.

 
 

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

FacebookTwitterLinkedinLinkedin

Loops no Matlab