Existem estruturas que, para obter a solução de um problema, é necessário fazer com que um grupo de instruções seja executado várias vezes.
Considerando que em alguns casos onde as instruções são as mesmas, é muito mais adequado que se escreva o grupo de instruções apenas uma vez, e o instrua para que o computador o repita. Para isso, existem os comandos For... do, While.... do... repeat... until.
Um contador é uma variável a ser incrementada a cada repetição, ou seja, à cada repetição acrescentamos 1 na variável, até o valor de sentinela, o que fará a saída da repetição.
Um contador é uma variável a ser incrementada a cada repetição, ou seja, à cada repetição acrescentamos 1 na variável, até o valor de sentinela, o que fará a saída da repetição.
While... do
Uma das formas de instruções seja executado várias vezes é o comando while...do. Assim como o comando IF apresenta uma expressão lógica, o comando while também. Ele faz com que o grupo de instruções colocadas em seu interior. Seja repetido enquanto o valor da expressão lógica for verdadeiro. Ao encontrar o “end;” do bloco de comandos, o fluxo de execussão retornará ao enqaunto e será novamente avsaliada a expressão lógica. Se estiver com valor verdadeiro, será executada novamente e assim sucessivamente até ter valor falso, então, o fluxo será transferido para a execussão da primeira instrução após o fim.
Neste algoritmo, o usuario "compra" um produto de R$2,50, até que seu dinheiro acabe. Ele informa a quantia que tem, e o algoritmo informa quantos é possivel comprar, e se a pessoa ficará devendo.
Program torrandoagrana ;
Var
dinheiro, quantidadedeprodutos : real;
Begin
quantidadedeprodutos := 0;
writeln ('Quanto dinheiro você tem?');
readln (dinheiro);
while (dinheiro > 0) do
begin
quantidadedeprodutos := quantidadedeprodutos + 1;
dinheiro := (dinheiro - 2.50);
end;
writeln ('comprou ', quantidadedeprodutos, ' produto(s) de R$ 2,50');
if (dinheiro = 0) then
writeln ('sobraram R$', dinheiro)
else
writeln ('Ficou devendo. Tsc, tsc...');
End.
Repeat
Outra forma de fazermos com que um grupo de instruções seja excutado mais uma vez, é usando o laço repeat. Pode ser colocado como
Repeat
<comandos>
Until (expressão lógica);
Quando o fluxo de execussão chega ao repeat. Automáticamente serão exeecutadps os comandos internos do repeat, e quando chegar no untill, será avaliado se a expressão é falsa, então o fluxo retornará ao repita. Quando a expressão lógica for verdadeira, o fluxo passará para a primeira isntrução após o until.
No exemplo, terá uma festa, e a faixa etaria é de 18 anos. se a pessoa for menor do que isso, e não for amigo do dono, não entrará... O algoritmo se repetirá até que a pessoa minta a idade, ou seja amiga do dono, ou seja, até que a idade seja 18 ou mais.
Program festa;
var
idade: integer;
resposta: string;
Begin
repeat
writeln ('festa. qual sua idade');
readln (idade);
if (idade < 18) then
begin
writeln ('não pode entrar na festa');
writeln ('você é amigo do dono?');
readln (resposta);
if (resposta = 'sim') and (idade <> 18) then
writeln ('pode entrar')
else
writeln ('faça 18 ou minta') ;
end
else
writeln ('Pode entrar.');
until (idade >= 18) or (resposta = 'sim');
End.
End.
Laço for... do
O comando for, diferentemente dos comandos de repetição repeat e while, permite que uma sequência de comandos seja executada um número definido de vezes A variável usada para contador já recebe um valor inicial e é incrementada pelo comando.
Neste exemplo, le-se um livro, página por página, e diz em que página está.
Program Lendolivro;
Var
passandopelapagina, paginas, contador : integer;
Begin
passandopelapagina := 0;
readln (paginas);
for contador := 1 to paginas do
begin
passandopelapagina := passandopelapagina +1;
writeln ('lendo pagina numero: ', passandopelapagina);
end;
End.
Nenhum comentário:
Postar um comentário