Os ciclos do until

De GNU Octave
Ir para: navegação, pesquisa

Os ciclos for permitem-nos executar um conjunto de instruções um certo número de vezes. Considere o seguinte exemplo:

# mostra a tabuada dos 7
for i = 1:10
  printf("7 x %2d = %2d\n", i, 7*i);
endfor

Sabemos à partida que o i irá variar de 1 até 10, executando 10 vezes as instruções dentro do ciclo (o printf).

Ciclos do until

Quando não sabemos à partida quantas vezes o ciclo precisa de ser executado, usamos um ciclo que repete ou termina de acordo com uma condição. Existem duas estruturas de controlo cíclicas que termina com uma condição: do until e while.

Vamos começar pelos ciclos do until.

Queremos descobrir o menos número primo maior do que 1000. Para tal, vamos começar a testar se um número é ou não primo, a partir de 1000.

# primeiro numero primo > 1000
i = 1000;
do
  i=i+1;
until (isprime(i));
disp(i);

O ciclo anterior é executado até que se verifique isprime(i). Quando a condição se verificar, isto é, quando isprime(i) for 1, o ciclo termina e avança para a instrução seguinte, que é disp(i).

Exercício

Ler um dado número, garantindo que o número é primo.

# garante que o numero dado e primo
do
  numero = input("Diga um numero primo: ");
until isprime(numero)

Como se pode ver pela solução, o ciclo será repetido sempre que for introduzido um número que não é primo. O ciclo só pára de se repetir quando é dado um número primo.

Exercício

Apresenta a tabuada para um dado número, garantindo que o mesmo está entre 1 e 10.

# mostra a tabuada de um dado numero
# ler um numero e ter a certeza que esta entre 1 e 10
do
  numero = input("Diga um numero (entre 1 e 10): ");
until (numero >= 1 & numero <= 10)
# quando chegar aqui, tenho a certeza que o numero esta entre 1 e 10
for i = 1:10
  printf("%d x %2d = %2d\n", numero, i, numero*i);
endfor

Exercício

Analise com calma o programa seguinte, para adivinhar um número pensado pelo computador.