6.6. Forward
Curso: Programación en Pascal (v5), por Nacho Cabanes
6.6. La sentencia "forward"
En Pascal, cualquier función o procedimiento debe ser declarado antes de usarlo, o el programa no compilará. Esto no suele ser un problema, pero existe un caso puntual en el que no es posible: Cuando desde un procedimiento A se llame a otro B, pero a su vez, el procedimiento B pueda llamar a A.
En este (poco habitual) caso, cada uno de los procedimientos exigiría que el otro se hubiese detallado antes, la única solución es decirle que uno de los dos (por ejemplo "A") ya lo detallaremos más adelante, pero que existe. Así ya podemos escribir "B" y después dar los detalles sobre cómo es "A", así:
(* FORW.PAS, Ejemplo de "forward" *) (* Parte de CUPAS5, por Nacho Cabanes *) program forw; procedure A(n: byte); forward; { No detallamos cómo es "A", porque "A" necesita a "B", que el compilador aún no conoce; por eso sólo "declaramos" "A", e indicamos con "forward" que más adelante lo detallaremos } procedure B (n: byte); { "B" ya puede llamar a "A" } begin writeLn('Entrando a B, con parámetro ', n); if n>0 then A (n-1); end; procedure A; { Y aquí detallamos "A"; ya no hace falta } begin { volver a indicar los parámetros } writeLn('Entrando a A, con parámetro ', n); if n>0 then B (n-1); end; begin A(6); end. (* Ejemplo de ejecucion: Entrando a A, con parámetro 6 Entrando a B, con parámetro 5 Entrando a A, con parámetro 4 Entrando a B, con parámetro 3 Entrando a A, con parámetro 2 Entrando a B, con parámetro 1 Entrando a A, con parámetro 0 *)
En otros lenguajes se pueden detallar las funciones tras el cuerpo del programa, pero no es el caso en Pascal, ni siquiera empleando "forward": tras el punto final de la orden "end" que indica que acaba el cuerpo del programa no puede haber ninguna función ni procedimiento.
Actualizado el: 07-10-2014 01:11