09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

B.8. Paso de subprogramas como parámetros 499<br />

B.8 Paso de subprogramas como parámetros<br />

Turbo <strong>Pascal</strong> difiere de <strong>Pascal</strong> estándar <strong>en</strong> la forma de realizar la declaración<br />

y paso de subprogramas como parámetros. En Turbo <strong>Pascal</strong> los subprogramas<br />

deb<strong>en</strong> ser obligatoriam<strong>en</strong>te de un tipo con nombre para poder ser pasados como<br />

parámetros.<br />

Por ejemplo, <strong>en</strong> la definición de la función Derivada (véase el apartado A.1.1)<br />

se utilizaba como parámetro una función de argum<strong>en</strong>to real y resultado también<br />

real. El tipo de esta función se define <strong>en</strong> Turbo <strong>Pascal</strong> como se muestra a<br />

continuación:<br />

type<br />

tMatFun = function (x: real): real;<br />

Para un procedimi<strong>en</strong>to con dos parámetros <strong>en</strong>teros se escribiría:<br />

type<br />

tProcInt = procedure (a, b: integer);<br />

Los id<strong>en</strong>tificadores utilizados <strong>en</strong> estos <strong>en</strong>cabezami<strong>en</strong>tos se utilizan a efectos<br />

de la definición del tipo sin que t<strong>en</strong>gan ninguna repercusión sobre el resto del<br />

programa.<br />

Para declarar la función como parámetro formal, la declaramos del tipo<br />

tMatFun d<strong>en</strong>tro del <strong>en</strong>cabezami<strong>en</strong>to de la función ejemplo. De esta forma:<br />

function Derivada (Fun: tMatFun; x: real): real;<br />

const<br />

DeltaX = 10E-6;<br />

begin<br />

Derivada:= (Fun(x + DeltaX) - Fun(x))/DeltaX<br />

<strong>en</strong>d; {Derivada}<br />

D<strong>en</strong>tro del programa principal efectuamos la llamada a la función Derivada<br />

pasándole cualquier función definida por el usuario que <strong>en</strong>caje con el tipo tMatFun.<br />

Suponi<strong>en</strong>do definida una función Pot<strong>en</strong>cia, una posible llamada sería:<br />

WriteLn(’La derivada es: ’, Derivada(Pot<strong>en</strong>cia, x))<br />

La utilización de subprogramas como parámetros requiere, d<strong>en</strong>tro del esquema<br />

de gestión de memoria de Turbo <strong>Pascal</strong>, la realización de llamadas fuera<br />

del segm<strong>en</strong>to de memoria donde reside el programa. Estas llamadas lejanas se<br />

activan marcando la opción

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!