
  \input{format1.tex}
  \input{intro1.tex}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

% figures
\usepackage[dvips]{epsfig}

\begin{document}


\noindent \Large {\bf Université d'Orléans} \hfill {\bf Maîtrise d'Informatique}

\normalsize

\begin{center}
{\it Feuille de Travaux Dirigés 7}
\end{center}
\hrule

\bigskip



\ex
Pour le fragment de programme ci-apr\`es\,:
\begin{enumerate}
\item Indiquer l'arbre d'imbrication pour le programme p.
\item Donner deux arbres de r\'ecursion (ou arbres des appels) diff\'erents 
pour le programme p.
\item Donner les profondeurs d'imbrication de toutes les proc\'edures
du programme correspondant \`a leur d\'efinition et \`a leur utilisation.
\item Ecrire un algorithme qui construit l'arbre des pr\'ed\'ecesseurs
statiques \`a partir de l'arbre de r\'ecursion et de l'arbre d'imbrication.
Appliquer cet algorithme aux arbres donn\'es en 1. et 2. pour produire les 
arbres des pr\'ed\'ecesseurs statiques correspondants.
\end{enumerate}

%\hspace{2cm}\begin{table}[ht]
\begin{verbatim}
program p;
  procedure q;
    procedure t;
       procedure v; 
       begin 
       [      
       end; 
       procedure u;
       begin 
       [
       end;
    begin 
    u
    end;
  begin t;
        if b' then q fi;
  end;
  procedure r;
  begin if b then q else s fi;
  end;
  procedure s ;
  begin 
  [
  end;
begin s;
      q;
      r;
      s;
end.
\end{verbatim}
%\end{table}
\exe

\ex
Traduire en code SPARC virtuel le programme suivant\,:
\begin{verbatim}
program p;
  var a, b, i :integer;
  procedure perm(var i, j: integer);
    var temp : integer;
    begin temp := i;
          i := j;
          j := temp
    end;
  begin a:=2;
        i := 1;
        if i <> 3 then begin b := 3;
                             perm(a, b)
                       end;
  end.
\end{verbatim}
\exe

\ex
M\^eme question pour le programme suivant\,:
\begin{verbatim}
program main;
type t = record a : array[-5..+5, 1..9] of integer;
                b : ^t
         end;
var i, j : integer;
    box : t;
    pt : ^t;

function lier_copie(var t1: t) : ^t;
var i, j : integer;
begin new(t1.b);
      for i := -5 to 5 do
        for j := 1 to 9 do
           t1^.b^.a[i,j] := t1.a[0, 1];
      t1.b^.b := nil;
      lier_copie := t1.b
end;

begin i := 5;
      repeat j := 1;
             repeat box.a[i, j] := 0;
                    j := j+1
             until j > 9;
             i := i + 1
      until i > 5;
      box.b := nil;
      pt := lier_copie(box)
end.
\end{verbatim}
\exe 


\end{document}







