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.

164 Capítulo 8. Procedimi<strong>en</strong>tos y funciones<br />

En <strong>Pascal</strong>, es obligatorio indicar el tipo de los parámetros que pasan como<br />

argum<strong>en</strong>tos a los subprogramas. En el caso de una función, se debe indicar<br />

además el tipo del resultado que se devuelve al programa principal o subprograma<br />

que efectuó la llamada. 4<br />

Hemos visto que la función TanGrados, que es una aplicación de IR <strong>en</strong> IR,<br />

recibe un argum<strong>en</strong>to real y devuelve un resultado también real.<br />

Veamos otro ejemplo de una función para calcular el factorial de un número<br />

<strong>en</strong>tero positivo:<br />

function Fac(n: integer): integer;<br />

{Dev. n!}<br />

var<br />

i, prodAcum: integer;<br />

begin<br />

prodAcum:= 1;<br />

for i:= 2 to n do<br />

prodAcum:= prodAcum * i;<br />

Fac:= prodAcum<br />

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

Como podemos ver, la función Fac ti<strong>en</strong>e un argum<strong>en</strong>to <strong>en</strong>tero y devuelve un<br />

resultado también <strong>en</strong>tero. Los sucesivos productos 2 ∗ 3 ∗ ... ∗ n se van almac<strong>en</strong>ando<br />

<strong>en</strong> la variable prodAcum tantas veces como indica el bucle for. Una vez<br />

terminado, el valor del factorial pres<strong>en</strong>te <strong>en</strong> prodAcum se asigna al nombre de la<br />

función reemplazando su llamada. Por ejemplo, la instrucción<br />

WriteLn(Fac(4))<br />

escribe el valor 24.<br />

No es obligado que el(los) argum<strong>en</strong>to(s) de una función sea(n) del mismo tipo<br />

que su resultado. El sigui<strong>en</strong>te ejemplo de función que determina si un número es<br />

o no es primo recibe un argum<strong>en</strong>to <strong>en</strong>tero positivo y devuelve un valor booleano:<br />

True si el número es primo y False <strong>en</strong> caso contrario.<br />

function EsPrimo(n: integer): boolean;<br />

{Dev. True si n es primo y False <strong>en</strong> caso contrario}<br />

var<br />

divisor: integer;<br />

conDivisores: boolean;<br />

4 En <strong>Pascal</strong>, el resultado de una función sólo puede ser un objeto simple. Sin embargo, esta<br />

limitación se supera fácilm<strong>en</strong>te (véase el apartado 8.6.3).

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

Saved successfully!

Ooh no, something went wrong!