Está en la página 1de 4

Prctica 08:

Ejercicio01
Programacin concurrente donde se crea dos procedimientos, que
compara el
mayor de dos nmeros, y donde se define relacin de precedencia de
cuatro Instrucciones.
(*Programa secuencial que muestra el orden de ejecucin de 4 Instrucciones *)
program maxmincon;
process type min(var min,n1,n2:real);
begin
if n1<n2 then min:=n1 else min:=n2;
end;
process type max(var max,n1,n2:real);
begin
if n1>n2 then max:=n1 else max:=n2;
end;
var
n1,n2,nmax,nmin:real;
pMax:max; pMin:min;
begin
n1:=17; n2:=8; (*I0*)
cobegin
pMin(nmin,n1,n2); (*I1*)
pMax(nmax,n1,n2); (*I2*)
coend;
writeln(nmax,nmin) (*I3*)
end.

Se Pide:
a) Edita, Compila y Ejecuta el Programa
b) Analiza y comenta los resultados
c) Modifique el programa secuencial de modo que se ingrese los dos
nmeros desde el teclado.
Luego compile y ejecute el programa.
Respuesta:
Una vez ejecutado el cdigo presentado, podemos concluir que este
programa sirve para escribir el nmero mayor y menor, cada uno est
definido en procesos que se ejecutan de forma concurrente.

El programa escribe primero el nmero 17 y despus el 8, primero el


mayor y luego el menor.
Codigo Modificado:
program maxmincon;
process type min(var min,n1,n2:real);
begin
if n1<n2 then min:=n1 else min:=n2;
end;
process type max(var max,n1,n2:real);
begin
if n1>n2 then max:=n1 else max:=n2;
end;
var
n1,n2,nmax,nmin:real;
pMax:max; pMin:min;
begin
writeln('Ingrese el primer numero : ');
readln(n1);
writeln('Ingrese el segundo numero : ');
readln(n2);
cobegin
pMin(nmin,n1,n2); (*I1*)
pMax(nmax,n1,n2); (*I2*)
coend;
writeln(nmax,nmin) (*I3*)
end.

Este cdigo modificado permite ingresar los nmeros desde el teclado


usando el comando readln().

Ejercicio 02:
Programacin concurrente en Pascal-FC. Implementacin de
programas de sincronizacin condicional con espera activa.
Implementar un programa concurrente en PascalFC que tenga los
siguientes requisitos:
El programa consta de 2 procesos.
Cada proceso escribe por pantalla varias letras y termina.
El proceso 1 debe escribir la letra PA1 y la letra PA2.
El proceso 2 debe escribir la letra PB1 y la letra PB2.
Los procesos deben sincronizarse para que se cumplan las
siguientes relaciones de
precedencia:

La

sincronizacin condicional se deber implementar con espera


activa.
Algunas de las posibles salidas de este programa son:
PA1 PA2 PB1 PB2
PA1 PB1 PA2 PB2
PB1 PA1 PA2 PB2
PB1 PA1 PB2 PA2
Algunas de las posibles salidas invlidas de este programa son:
PB1 PB2 PA1 PA2
Solucin:
(*Programa secuencial que muestra el orden de ejecucin de 4 Instrucciones *)

program sinccond;

process type tPA(var continuar:boolean);


begin
write('PA1 ');
continuar := true;
write('PA2 ');
end;
process type tPB(var continuar:boolean);
begin
write('PB1 ');
while not continuar do ;
write('PB2 ');

end;

var
continuar: boolean;
procA:tPA; procB:tPB;
begin
continuar := false;
cobegin
procA(continuar);
procB(continuar);
coend;
end.

También podría gustarte