Fecha y hora actual: Jueves 17 Ene 2019 05:41
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.11 - Funciones

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.11 - Funciones

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Martes 25 Nov 2008 11:45

Título del mensaje: Curso VB .NET - Tema 1.11 - Funciones

Responder citando

Curso de programación .NET - Tema 1.11


1. Funciones.
1.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.

1.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.

1.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í:

Código:
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.

Código:
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.

1.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.

1.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.

1.6 Ámbito de las funciones.
El ámbito de una función va ligado al punto en el cual se utiliza y como se declara, igual que con los procedimientos.

Pueden ser públicas o privadas, y pueden declararse en el programa actual o en un módulo disponible para toda la aplicación, proyecto.

1.7 Paso de variables a las funciones.
El paso de variables a las funciones cumple los mismos requisitos que el de los procedimientos.
Para ellos hay que seguir unas normas, que son de lo más sencillas y absolutamente lógicas.



Si nosotros diseñamos un procedimiento, éste tendrá unas necesidades de datos.
Esos datos serán propios o externos, los propios no hay problema, pero los externos hemos de facilitárselos, para ello hay unas normas.

El envío y recepción han de realizarse en el mismo orden y con el mismo tipo de datos.
Si vemos el ejemplo, vemos que ambas coinciden en el color, digamos que sea el tipo, son del mismo tamaño, digamos que sea el dato que se envía.

El siguiente ejemplo vemos que no coinciden ni color, tipo, ni tamaño dato, ni el número de parámetros que se envían y reciben.



El nombre no tiene porque coincidir, pensemos que el mismo procedimiento puede utilizarse en varios programas, no tienen porque coincidir los nombres de las variables por eso, si no sería un problema bastante serio.



Actualmente hay lenguajes que permiten que haya variables de uso opcional en la línea de parámetros.



Pero eso es una excepción.

1.8 Formas de paso de datos a las funciones.
Hay dos formas de pasar los datos a los procedimientos y funciones, por valor y por referencia.

El paso de datos por referencia, es lo que nos permite que un procedimiento sea independiente del programa que lo llama.

De esa forma podemos conseguir que un procedimiento o una función, trabaje con los datos de otro procedimiento o programa sin necesidad de que las variables se llamen igual.

El paso de datos por referencia a una función, nos da la posibilidad de poder modificar el valor de una variable pasada en la función, y que éste sea devuelto al programa principal o al procedimiento que lo ha llamado.



Otro apartado, es que por la definición intrínseca de lo que debe ser una función, no sea correcto realizar ese tipo de actuaciones, paso por referencia en una función, ya que eso en realidad me permitiría devolver no un dato, si no varios en la misma, uno en la función y otros en la línea de parámetros en las variables recibidas, lo que contradice la filosofía de lo que debe ser una función.

Pero hemos de saberlo y comprobar que el lenguaje lo permite o no, y de esa forma si llega el momento “utilizarlo”.
Cuando se pasa un dato por valor el dato es recibido por el procedimiento o función, pero éste dato si se modifica en su interior no se recibe modificado en el lugar en el que se realiza la llamada a la función.

El paso de datos por valor a un procedimiento o función, nos da la posibilidad de poder enviar el dato de una variable y que la variable no pueda ser modificada en su contenido al finalizar la ejecución del procedimiento o función, y devolverse el control al programa principal o al procedimiento que lo ha llamado.



1.9 Estructura de una función.



Al igual que en un procedimiento, podemos utilizar todas las estructuras que conocemos.

Pero hemos de añadir algo que en un procedimiento quizás no es tan riguroso.

Hay que asegurarse que los datos que vamos a utilizar son válidos, por lo tanto debemos comprobar su validez antes de entrar en lo que es el cuerpo de la función.

Por otro lado en función del lenguaje utilizado, podremos utilizar o no el nombre de la función en la misma varias veces.

Así que lo más sencillo es declarar una variable temporal a la que le asignamos un valor por defecto y que después cuando finalice la ejecución de la función asignaremos al nombre de la misma.

Hay que pensar que tanto una función como un procedimiento son mini programas, pero en el caso de una función aún más.

Esta es una forma de plantear una función, pero el momento y el estilo de cada uno es personal e intransferible, por lo que a partir de ahí cada cual puede ir creando su estilo.

1.10 Ejercicios propuestos.
Los ejercicios los proponemos en el tema personalizado del lenguaje, Java o Visual Basic.



Autor del curso: Casiopea.


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Funciones con parámetros

barkalez C, C#, Visual C++ 2 Domingo 20 Mar 2016 00:07 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de Desarrollo en Inteligencia Artificial

JL Iglesias Feria Programación de juegos o videojuegos 7 Miércoles 02 Dic 2015 18:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

tengo problemas con algo en las funciones

rafag912 Python 4 Martes 26 May 2015 07:24 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,