\batchmode
\documentclass[12pt]{article}

%
\usepackage{psfig}
%


%
\usepackage[spanish]{babel}
%

%
\usepackage{t1enc}

%
\usepackage{latexsym}

%



\topmargin     -1.5 cm
\oddsidemargin  0   cm
\evensidemargin 0   cm
\textwidth     16.5 cm
\textheight    23   cm
%


\newcommand {\convocatoria}{95feb}

\makeatother
\newenvironment{tex2html_wrap}{}{}
\newwrite\lthtmlwrite
\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
\newbox\sizebox
\begin{document}
\pagestyle{empty}
{\newpage
\clearpage
\samepage \begin{tabular}{c}
{\bf\Large Examen de Programaci\'{o}n Concurrente}\\ 
\hline
{\sc Depto. LSIIS. Unidad de Programaci\'{o}n.}
\end{tabular}
}

\stepcounter{section}
{\newpage
\clearpage
\samepage \psfig{figure=barreras.idr,height=4cm,width=5in}
}

{\newpage
\clearpage
\samepage \psfig{figure=barreras_grafo.idr,height=4cm,width=5in}
}

{\newpage
\clearpage
\samepage \begin{tabular}{cc}
\begin{minipage}[t]{17.5em}
\begin{verbatim}TASK BarreraEntrada (i:Barreras);
BEGIN
  LOOP
    EsperarLlegada(i);
    PARKING.Entrar;
    DarPaso(i)
  END (* loop *)
END BarreraEntrada;
\end{verbatim}
\end{minipage}
&
\begin{minipage}[t]{17.5em}
\begin{verbatim}TASK BarreraSalida (i:Barreras);
BEGIN
  LOOP
    EsperarLlegada(i);
    PARKING.Salir;
    DarPaso(i)
  END (* loop *)
END BarreraEntrada;
\end{verbatim}
\end{minipage}
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{l|l|l}
Operaci\'{o}n & Precondici\'{o}n & Postcondici\'{o}n\\ 
\hline
Entrar      & {\tt parking} no lleno & {\tt parking} no vacio\\ 
Salir       & {\tt parking} no vacio & {\tt parking} no lleno\\ 
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{|l|l|l|}
\hline
\shortstack{Operaci\'{o}n \\ bloqueada} & \shortstack{Ccondici\'{o}n\\  de
bloqueo} & Condition\\ 
\hline
\hline
{\tt Entrar} & {\tt Lleno(parking)} & {\tt permisoEntrar}\\ 
\hline
{\tt Salir} & --- & ---\\ 
\hline
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{|l|l|l|l|}
\hline
\shortstack{Operaci\'{o}n \\ que desbloquea} & \shortstack{Operaci\'{o}n
\\ bloqueada} & \shortstack{Condici\'{o}n de \\  desbloqueo} & Condition\\ 
\hline
\hline
{\tt Salir} & {\tt Entrar} & TRUE & {\tt permisoEntrar}\\ 
\hline
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{cc}
\begin{minipage}[t]{17.5em}
\begin{verbatim}MONITOR PARKING;

PUBLIC Entrar, Salir;

VAR
  parking : Aparcamientos;

PROCEDURE Entrar;
BEGIN
  IF Lleno(parking) THEN
    Delay(permisoEntrar)
  END (* if Lleno(parking) *)

  (* PRE: NOT Lleno(parking) *)
  OcuparPlaza(parking);
  (* POST: NOT Vacio(parking) *)
END Entrar;
\end{verbatim}
\end{minipage}
&
\begin{minipage}[t]{17.5em}
\begin{verbatim}PROCEDURE Salir;
BEGIN
  (* PRE: NOT Vacio(parking)=TRUE *)
  LiberarPlaza(parking);
  (* POST: NOT Lleno(parking) *)

  Continue(permisoEntrar)
END Salir;

BEGIN (* PARKING *)
  CrearVacio(parking)
END MONITOR
\end{verbatim}
\end{minipage}
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{|l|l|l|}
\hline
\shortstack{Operaci\'{o}n \\ bloqueada} & \shortstack{Ccondici\'{o}n\\  de
bloqueo} & Condition\\ 
\hline
\hline
{\tt Entrar(i)} & {\tt Lleno(parking)} & {\tt permisoEntrar[i]}\\ 
\hline
{\tt Salir} & --- & ---\\ 
\hline
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{|l|l|l|l|}
\hline
\shortstack{Operaci\'{o}n \\ que desbloquea} & \shortstack{Operaci\'{o}n
\\ bloqueada} & \shortstack{Condici\'{o}n de \\  desbloqueo} & Condition\\ 
\hline
\hline
{\tt Salir} & {\tt Entrar(i)} & \shortstack{{\tt CasiLleno(parking)
\&}\\  {i=MejorOpci\'{o}n(...)}} TRUE & {\tt permisoEntrar[i]}\\ 
\hline
\end{tabular}
}

{\newpage
\clearpage
\samepage \begin{tabular}{cc}
\begin{minipage}[t]{17.5em}
\begin{verbatim}MONITOR PARKING;

PUBLIC Entrar, Salir;

VAR
  parking : Aparcamientos;

PROCEDURE Entrar(i:CARDINAL);
BEGIN
  IF Lleno(parking) THEN
    espera[i]:=TRUE;
    Delay(permisoEntrar[i]);
    espera[i]:=FALSE
  END (* if Lleno(parking) *)

  (* PRE: NOT Lleno(parking) *)
  OcuparPlaza(parking);
  (* POST: NOT Vacio(parking) *)
END Entrar;
\end{verbatim}
\end{minipage}
&
\begin{minipage}[t]{17.5em}
\begin{verbatim}PROCEDURE Salir;
BEGIN
  (* PRE: NOT Vacio(parking)=TRUE *)
  LiberarPlaza(parking);
  (* POST: NOT Lleno(parking) *)

  i:=MejorOpcion(espera);
  Continue(permisoEntrar[i])
END Salir;

BEGIN (* PARKING *)
  CrearVacio(parking);
  (* ABUSO DE NOTACION: *)
  espera := FALSE;
END MONITOR
\end{verbatim}
\end{minipage}
\end{tabular}
}

\stepcounter{section}

\end{document}
