Ejecutar en una tarea una función implementada en otra tarea
Publicado por Sergio (1 intervención) el 06/11/2011 13:56:30
Hola señores,
Necesito ayuda, soy completamente nuevo en esto de ADA. He leído algunos manuales pero no logro aclararme. El tema es el siguiente, necesito hacer un programa (el que sea) pero con la siguiente especificación:
"Implementar en ADA dos task (tareas): Task A y Task B. Task A deberá ejecutar una función implementada en Task B.
Tengo algo así, pero no funciona, podeis ayudarme:
//////////////////////////////////////////////////////////////////////////////////////////////////////
with gnat.io; use gnat.io;
procedure hello is
task Tarea1;
task Tarea2;
task body Tarea1 is
X : Tarea2;
begin
Factorial(X);
end Tarea1;
task body Tarea2 is
begin
function Factorial (N : Positive) return Positive is
begin
if N = 1 then
return 1;
else
return (N * Factorial (N - 1));
end if;
end Factorial;
end Tarea2;
N:Integer;
begin
-- En este momento comienzan a ejecutarse ambas tareas.
Put("Introduce un numero: "); Get(N); New_Line;
Factorial(N); Put("El factorial es": &N);
end hello;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Gracias
Necesito ayuda, soy completamente nuevo en esto de ADA. He leído algunos manuales pero no logro aclararme. El tema es el siguiente, necesito hacer un programa (el que sea) pero con la siguiente especificación:
"Implementar en ADA dos task (tareas): Task A y Task B. Task A deberá ejecutar una función implementada en Task B.
Tengo algo así, pero no funciona, podeis ayudarme:
//////////////////////////////////////////////////////////////////////////////////////////////////////
with gnat.io; use gnat.io;
procedure hello is
task Tarea1;
task Tarea2;
task body Tarea1 is
X : Tarea2;
begin
Factorial(X);
end Tarea1;
task body Tarea2 is
begin
function Factorial (N : Positive) return Positive is
begin
if N = 1 then
return 1;
else
return (N * Factorial (N - 1));
end if;
end Factorial;
end Tarea2;
N:Integer;
begin
-- En este momento comienzan a ejecutarse ambas tareas.
Put("Introduce un numero: "); Get(N); New_Line;
Factorial(N); Put("El factorial es": &N);
end hello;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Gracias
Valora esta pregunta


0