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.