Nem
só de comparações vive um programa. Usamos com frequência
uma estrutura que nos permite executar operações repetidas.
A sua forma é
for... do...
Ou
seja for (para alguma operação
específica) do (faça
o que se segue). Isso é o que chamamos de looping
de programação (ela fica "girando" dentro daquele
trecho até que sejam cumpridas todas as exigências) Digamos
que seja necessário acrescentar espaços (uns 10), no final
de uma string. Msg é a string e Tm uma variável
numérica (obrigatoriamente local) usada para controle do looping.
A programação seria:
for Tm:= 1 to 10 do Msg:= Msg + ' ';
Note
que esta linha de programação será executada 10 vezes
e Msg terá, no final, 10 espaços. A variável
Tm é automaticamente acrescida de 1 em cada "volta"
do looping. Aqui também podemos transformar a operação
em um bloco (begin... end;)
de instruções.
for Tm:= 1 to 10 do begin
Msg:= Msg + ' ';
Valor:= Valor + 4;
end;
Uma alternativa
ao for... do...
é a estrutura while... do...,
ou seja, while (enquanto alguma coisa
for verdadeira) do (faça o que
se segue). Neste caso, a variável que controla o o looping não
é automática e pode ser usado qualquer tipo, inclusive a
que estiver sendo manipulada. Veja o exemplo:
while length(Msg) < 10 do Msg:= Msg + ' ';
Ou seja, enquanto
o tamanho (length) da string Msg for menor do que 10 caracteres,
será acrescentado um espaço no final dela.
Existe uma terceira
estrutura de repetição, que já embute um bloco e cuja
condição de execução é verificada no
final da operação, garantindo que pelo menos uma vez o bloco
será executado. É ela:
repeat... until...
Ou seja, repeat
(repita as operações a seguir) until
(até que a condição seja satisfeita). Vamos montar
a mesma estrutura que acrescenta espaços no final da variável
Msg:
repeat
Msg:= Msg + ' ';
until length(Msg) = 10;
Os laços
podem ser interrompidos (quebrados) mesmo que as condições
não tenham sido ainda plenamente satisfeitas. Por exemplo: digamos
que será feita uma contagem de 1 a 10, porém
ela deve ser interrompida quando atingir o valor 5:
for Tm:= 1 to 10 do begin
if Tm = 5 then break;
end;
|