Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Instruçao repeat
1. 6.2 Repetição ou Ciclos
Em programação, uma sequência de instruções executada repetitivamente é chamada
de ciclo. Um ciclo é constituído por uma sequência de instruções, o corpo do
ciclo, e por uma estrutura que controla a execução dessas instruções,
especificando quantas vezes o ciclo deve ser executado.
Cada vez que as instruções que constituem o corpo do ciclo são executadas,
dizemos que se efectuou uma passagem pelo ciclo. As instruções que constituem o
corpo do ciclo podem ser executadas qualquer número de vezes (eventualmente
nenhuma), mas este número tem de ser finito. Há erros de semântica que podem
levar a execução interminável do corpo do ciclo, criando um ciclo infinito.
Neste webfolio, apresentaremos três instruções: "while", "repeat" e "for".
"WHILE"
A instrução "while" permite especificar a execução repetitiva de uma instrução
enquanto uma determinada expressão do tipo lógico tiver o valor verdadeiro.
Na definição sintáctica da instrução "while", instrução representa qualquer
instrução de Pascal e expressão representa uma expressão do tipo lógico.
A semântica da instrução "while" é a seguinte:
Ao encontrar a instrução "while <cond> do <inst>", o computador calcula o valor
de cond. Se o seu valor for "true", o computador efectua uma passagem pelo
ciclo, executando a instrução inst. Em seguida volta a calcular o valor de cond
e o processo repete-se enquanto o valor da cond for "true". Quando o valor de
cond for "false", a execução do ciclo termina.
A instrução que constitui o corpo do ciclo deve modificar o valor da expressão
que controla a execução do ciclo, caso contrário, o ciclo pode nunca terminar.
Exemplo de um programa que soma uma sequência de números inteiros. O fim da
sequência é determinado por um número negativo:
Program SomadeInteiros ;
var Soma, Numero : integer;
procedure Pergunte;
begin
writeln ('Escreva um número inteiro');
writeln ('Um número negativo termina a execução')
end; {pergunte}
Begin
Soma := 0;
Pergunte;
readln (Numero);
While Numero >= 0 do
begin
Soma := Soma + Numero;
Pergunte;
readln (Numero)
end;
writeln ('A soma é ' , Soma:3)
End.
"REPEAT"
2. A instrução "repeat" permite especificar a execução repetitiva de uma sequência
de instruções até que certa expressão do tipo lógico tenha o valor verdadeiro.
Na definição sintáctica da instrução "repeat", instrução representa qualquer
instrução em Pascal e expressão representa uma expressão do tipo lógico. Em
oposição à definição sintáctica de "while", a instrução "repeat" permite a
especificação de uma sequência de instruções a executar e não apenas de uma
instrução. Por esta razão, ao utilizarmos uma instrução "repeat" não
necessitamos de recorrer a uma instrução composta, quando o corpo do ciclo tem
mais de uma instrução. A razão desta decisão provém do facto de o corpo de ciclo
numa instrução "repeat" estar delimitado pelas palavras "repeat" e "until",
evitando assim qualquer tipo de ambiguidade quanto à determinação das instruções
que pertencem ao corpo do ciclo.
A semântica da instrução "repeat" é a seguinte:
Ao encontrar a instrução "repeat <instr> until <cond>", o computador começa por
executar as instruções que constituem o corpo do ciclo (instr), avaliando depois
a expressão cond. Se o seu valor for "false", o corpo do ciclo é executado de
novo e o processo repete-se. A execução do ciclo termina quando a cond produzir
um valor "true". Importa salientar que a execução do ciclo só termina após uma
passagem completa pelo ciclo.
Tal como acontece com a instrução "while", de um modo geral, o número de vezes
que o corpo de uma instrução "repeat" é executado não pode ser calculado de
antemão. Contudo, em oposição à instrução "while", o corpo do ciclo de uma
instrução "repeat" é sempre executado pelo menos uma vez, porque a expressão que
controla a execução do ciclo só é avaliada no fim do mesmo.
Exemplo de um programa com um ciclo "repeat".
Program Repeat ;
VAR
Num:INTEGER ;
Begin
Num:=100;
REPEAT
WRITE (Num,' ');
Num:=Num-2;
UNTIL (Num<1);
End.
"FOR"
Quando se pretende que um conjunto de instruções se repita um número de vezes
bem determinado, recorremos à instrução FOR.
A sintaxe desta instrução é a seguinte : FOR <variável> := <início> TO <fim> DO
A variável de ciclo mantém o número de repetições a efectuar, servindo de
contador. Esta variável pode ser qualquer tipo escalar, excepto REAL. De notar
que a variável de controlo do FOR nunca deve ser alterada dentro do ciclo, sob
pena de se perder por completo o número de execuções e chegarmos a resultados
bem diferentes dos pretendidos.
3. Exemplo correcto de utilização de um FOR :
Program ForExemplo;
VAR
valor : integer;
Begin
For valor := 1 to 10 do
Begin
Write ('Quadrado de ',valor,'=');
Writeln (valor * valor);
End;
Readln
End.
Exemplo incorrecto de utilização de um FOR :
Program ForExemplo;
VAR
valor : integer;
Begin
For valor := 1 to 10 do
Begin
Write ('Quadrado de ',valor,'=');
Writeln (valor * valor);
valor := valor + 1;
End;
Readln
End.
Saliente-se que o ciclo FOR pode assumir duas formas distintas de aplicação,
isto é, a variável de controlo pode ser incrementada a cada execução, como nos
exemplos anteriores, ou pode ser decrementada, sendo que neste caso a sintaxe
assume a forma :
FOR <variável> := <início> DOWNTO <fim> D