Exemplo
for
index range min_index to max_index do
sumValue +:= field[index];
end
for;
Semântica:
Quando o símbolo "to" é usado na instrução for, a definição é como se segue:
Primeiro o 'limite inferior' e o
'limite superior' que estão após "range" e "to" são avaliados.
Em seguida, a variável de
controle após o "for" é atribuída com o valor do 'limite inferior'.
O 'limite inferior' se encontra
antes de "to".
Se o valor da 'variável de
controle' for inferior ou igual ao 'limite superior' as instruções são executadas.
Depois a 'variável de controle'
é incrementada e comparada com o 'limite superior' novamente.
O ciclo comparar, executar e
incrementar é repetido até que a 'variável de controle' seja maior que o
'limite superior'.
Quando o símbolo "downto" é usado na instrução for, a definição é como se segue:
Primeiro o 'limite inferior' e o
'limite superior' que estão após "range" e "downto" são avaliados.
Em seguida, a variável de
controle após o "for" é atribuída com o valor do 'limite superior'.
Se o valor da 'variável de
controle' for superior ou igual ao 'limite inferior' as instruções são
executadas.
Depois a 'variável de controle'
é decrementada e comparada com o 'limite inferior' novamente.
O ciclo comparar, executar e
decrementar é repetido até que a 'variável de controle' seja menor que o
'limite inferior.
Sintaxe
for_statement
::=
'for'
identifier 'range' expression [ 'to' | 'downto' ] expression 'do'
statement
'end'
'for' .
Declaração
$
syntax expr: .for.().range.().to.().do.().end.for is -> 25;
$
syntax expr: .for.().range.().downto.().do.().end.for is -> 25;
const
proc: FOR_DECLS (in type: aType) is func
begin
const proc: for (inout aType: variable)
range
(in aType: lowerLimit) to (in aType:
upperLimit) do
(in proc: statements) end for is func
begin
variable := lowerLimit;
if variable <= upperLimit then
statements;
while variable < upperLimit do
incr(variable);
statements;
end while;
end if;
end func;
const proc: for (inout aType: variable)
range
(in aType: upperLimit) downto (in
aType: lowerLimit) do
(in proc: statements) end for is func
begin
variable := upperLimit;
if variable >= lowerLimit then
statements;
while variable > lowerLimit do
decr(variable);
statements;
end while;
end if;
end func;
end func;
FOR_DECLS(integer);
FOR_DECLS(char);
FOR_DECLS(boolean);
Nenhum comentário:
Postar um comentário