program cachant;
var
i, j, k: integer;
procedure p (i: integer);
procedure q (var j: integer);
begin
for k := 1 to 3 do {
k renvoie à la variable globale declare dans cachant
}
j := j + i;
{ j renvoie au paramètre de la procedure q et i est
la variable globale declare dans cachant }
end; {
Fin de 'q' }
begin
j := i; { i
renvoie au parametre de la procedure p et j a la variable
globale declare dans cachant }
q(i); {
les modifications de i n'affecteront pas la valeur du i
globale de cachant }
end; {
Fin de 'p' }
begin { Corps du
programme }
writeln('Exercice 2
http://www.Software-DS.com');
k := 0;
j := 1;
i := 2;
p(k);
writeln(' i= ', i : 0, ' j= ', j : 0, ' k= ', k : 0);
{ En toute
logique, on obtient: i=2 (non modifier) j=0 (modifier) et
k=4 (modifier) }
{ Attention, certains prof vous diront que k=3 !Mais en
theorie cela est FAUX }
{ En effet en Pascal (le vrai:) k est incremente a 4 puis on
compare si k est superieur a 3 }
{ Donc a la sortie d'une boucle For k vaut toujours max+1
}
{ Mais vous utilisez des compilateurs soit disant Pascal qui
ne tienne pas compte de cette norme }
{ Et donc pour eux k vaut toujours max a la sortie d'une
boucle for. THINK DIFFERENT ! }
writeln;
writeln('©2001 All Rights Reserved to
www.Software-DS.com');
{ ©2001 All
Rights Reserved to http://www.Software-DS.com
30/10/01
}
end.
|