Information Technology Reference
In-Depth Information
begin
A:
5;
B: = A/2;
for (i
=
=
1 to 5)
loop
tab(i) :
=
B
+
i;
end loop;
end;
L'analyseur sémantique signale dans ce programme deux erreurs sémantiques dues
à des incohérences de type :
- le résultat de l'opération A/2 donne un résultat qui est de type réel alors que la
variable B est déclarée de type entier;
- la variable i qui permet de parcourir l'ensemble des cases du tableau tab dans la
boucle est de type réel.
procedure prog_ada is
float B; -- variable B de type réel
integer A, i; -- variables A et i de type entier
tab : array(1.5) of float; -- tableau de 5 réels
begin
A: = 5;
B: = A/2;
for (i = 1 to 5)
loop
tab(i) : = B + i;
end loop;
end;
Dans le programme corrigé comme ci-dessus, la phrase tab(i) :
i; pose
encore problème car elle amène à additionner entre elles une variable de type entier (i)
avec une variable de type réel (B). Dans ce dernier cas, le compilateur peut insérer de
lui-même un ordre de conversion de la variable i du type entier vers réel, comme l'expli-
cite l'exemple suivant.
procedure prog_ada is
float B; -- variable i de type réel
integer A, i; -- variables A et B de type entier
tab : array(1.5) of float; -- tableau de 5 réels
begin
A: = 5;
B: = A / 2;
for (i = 1 to 5)
loop
=
B
+
tab(i) : = B + (entierversreel)i;
end loop;
end;
Search WWH ::




Custom Search