Unidad 11. Funciones (I)





11.1. Objetivos del tema.

Visto y nombrado los elementos de un programa y sus estructuras, así como la forma de representar las soluciones y el uso de procedimientos, ahora hemos de profundizar sobre el uso de las funciones, el paso de parámetros y sus características.

Las veremos desde el punto de vista genérico, sin entrar en lenguajes en concreto.

11.2. Introducción.

Un programa es una estructura más o menos compleja, en función del tamaño del mismo.

Pero el código que lo compone no puede estar todo en el Main del mismo, sería difícil de entender y de modificar, además de muy largo, por lo tanto conviene trocear.

Si recordamos el ejercicio del primer tema, ese es el camino, pequeños “trozos” de programa, fáciles de escribir y de modificar.

Y la solución era el dividir el programa y crear procedimientos.

Ahora vamos a ver las funciones, pero las funciones a pesar de que en su interior pueden albergar el mismo tipo de estructuras que un procedimiento, tienen un fin distinto dentro de un programa.

11.3. Creación.

Hay una máxima que sí podría servir, y es que en el momento en que en el programa aparece código repetido, ya podemos empezar a pensar en la creación de una función o un procedimiento, según corresponda.

También hay que tener en cuenta que la llamada a una función o un procedimiento consume recursos y tiempo de ejecución, pero en la actualidad se piensa poco en esos parámetros.

Resolver de forma recursiva el factorial de un número es “bonito”, pero ¿y si el número es algo grande?

Con un procedimiento resuelvo el programa y voy creando la estructura del mismo.

Una función es un “trozo” de código especializado en hacer algo en concreto, por ejemplo, el ejercicio del área de un triangulo o de una circunferencia, se resolvió mediante un procedimiento, pero su solución correcta es la de una función, ¿por qué?, pues normalmente el área del triangulo es un dato que voy a calcular y que puede aparecer hasta en una expresión habitualmente.

 

Si utilizo procedimientos, la solución puede ser algo así:

 

Altura = 5

Base = 10

AreaTriangulo(Base,Altura,Area)

 

Escribe “El área del triangulo es “, Area

 

Esta es la solución con un procedimiento, ejecutamos el procedimiento y nos devuelve un dato llamado Area, que lo usamos en el texto de informe al usuario.

 

Escribe “El área del triangulo es “, AreaTriangulo(Base,Altura)

 

Como podemos ver con una función es mucho más “elegante” el código resultante.

 

¿Cuando escribir una función o un procedimiento?, en el ejemplo podemos ver un criterio.

Un procedimiento es una línea de mi programa, lo llamo y se ejecuta, resuelvo el problema estructural del programa con ellos.

Una función forma parte de una instrucción, una función siempre devuelve un dato, un procedimiento no tiene porque hacerlo.

 

En el caso de una función no nos sirve el criterio de que un procedimiento crezca en demasía, para crear una función, hay una diferencia de base entre un procedimiento y una función, y es que un procedimiento puede formar, o forma parte, de la resolución lógica de un programa, parte de su estructura, pero una función es una parte de nuestro programa que está especializado en algo muy concreto y que solo sabe resolver ese tema, y no formará parte de la estructura del programa, colabora en su solución.

 

Evidentemente que sí convierte en más legible un programa, el uso de una función, pero no es la forma de resolver un programa, por supuesto que su uso es necesario en programación, pero hay que ver ese matiz entre ambas herramientas de programación.

 

Un procedimiento, un método, cuando crece se puede dividir en varios procedimientos, pero no en varias funciones.

 

En el diseño de una función, hay que mantener el criterio, de que solo se utilice las variables que se definan en la misma, y las que se reciban en la línea de entrada, pero de forma todavía mucho más taxativa, una función, por naturaleza, es una parte de código mucho más reutilizable, normalmente, que un procedimiento, por lo tanto debe ser todavía mucho más aislado, autónomo.

 

De todos modos, será la experiencia la que nos ira marcando cuando usar el procedimiento y cuando la función.

11.4. ¿Funciones o Procedimientos.?

En el peor de los casos, todo lo que se puede escribir en un procedimiento se puede resolver también con una función, o al revés, ¡técnicamente!, en la realidad no debe abordarse así, porque en algunas ocasiones para hacerlo, hay que cometer alguna incorrección.

Una función devuelve siempre un único dato, un procedimiento puede devolver uno o varios, o ninguno, pero es que si se usan adecuadamente las funciones, con un único dato es suficiente.

11.5. Tipos de la función.

Hemos dicho que una función devuelve un dato, por lo tanto si devuelve un dato, ese dato debe de ser de un tipo, de ahí que la función cuando se crea hay que declarar de que tipo es, y ese tipo es el del dato devuelto.

Otra forma de clasificar las funciones es dividirlas por las propias del lenguaje y las que diseñemos nosotros, todos los lenguajes de programación disponen de funciones preescritas en el mismo.

 

En el ejemplo vemos una función escrita por nosotros, y vemos como en su interior utilizamos funciones del lenguaje en el que se escribe esa función.

 

La función del ejemplo es del tipo alfanumérico porque lo que devuelve es un dato alfanumérico.

 

Por lo tanto tendremos tantos tipos de funciones como tipos de datos disponga el lenguaje que estamos utilizando.

 

Octubre-2010
Pág. 11.1

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies