Función (programación)

Revisión del 14:24 22 oct 2012 de Majibacoa2 jc (discusión | contribuciones) (Página creada con '<div align="justify">{{Definición|Nombre=Función (Programación)|imagen= |concepto= Es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Función (programación)
Información sobre la plantilla
Concepto:Es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ejecución) desde otras partes tantas veces como se desee. Un bloque de código que puede ser ejecutado como una unidad funcional

Función (Programación). En computación, una subrutina o subprograma (también llamada procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor. Desde un punto de vista práctico, podemos decir que una función es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ejecución) desde otras partes tantas veces como se desee. Un bloque de código que puede ser ejecutado como una unidad funcional. Opcionalmente puede recibir valores; se ejecuta y puede devolver un valor. Desde el punto de vista de la organización, podemos decir que una función es algo que permite un cierto orden en una maraña de algoritmos. Las funciones son la parte central de la programación. Algunos lenguajes, como Pascal, distinguen entre procedimientos ("Procedures") y funciones. En C++ las funciones desempeñan ambos papeles, aunque en cierto modo, los ficheros C++ desempeñan algunas funcionalidades de lo que, en otros lenguajes como Modula-2, se denominan módulos. Otra diferencia substancial es que C++ no permite el anidamiento de funciones, es decir, definir funciones dentro de otras. En C++ todas las funciones se definen a nivel de fichero, con lo que tienen ámbito global al fichero. Existe una excepción a esta regla; se refiere a las funciones miembro de las clases, que pueden ser declaradas y definidas dentro de las propias clases. Aunque las clases no son por supuesto funciones en el sentido estricto, si representan cierta compartimentación de datos y procedimientos (un tipo de "módulos"). Por ejemplo, en C++ es válido el siguiente código:

int i;
class C {                  // definición de la clase
  public:
  char* func1(void) {      // declaración-definición de func
    return p;
  }
  char* func2(void);       // declaración de func2
  char * p;
};                         // termina definición de la clase
...
C::char* func2(void) {     // definición de func2
  ...
}

Elementos de la declaración de una Función

Las declaraciones de funciones generalmente son especificadas por: Un nombre único en el ámbito: nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución. Una lista de parámetros: especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea. El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la función.

Funciones dentro de clases

En la jerga de la programación orientada a objetos, las funciones dentro de las clases se denominan funciones-miembro o métodos, y las variables dentro de clases, variables-miembro o propiedades. El sentido es el mismo que en la programación tradicional (la nomenclatura es más una cuestión de gustos), si bien referirnos a "propiedades" y "métodos" supone estar utilizando la programación orientada a objetos y que nos referimos a miembros de una clase. En C++ esta aclaración puede ser importante, porque es un lenguaje que podríamos llamar "híbrido"; en ciertas partes puede utilizarse con técnicas de programación tradicional, y en otras con técnicas de POO.

Una función de inicio

Cada programa debe tener una sola función externa denominada main(), principal, que desde la óptica del programador define el punto de entrada al programa. Las funciones se declaran en cabeceras (estándar o específicas de usuario) o dentro de los ficheros fuente. Estas declaraciones son denominadas prototipos. En ocasiones la declaración y definición se realiza en el mismo punto (como ocurre con las variables), aunque es normal colocar al principio del fuente los "prototipos" de las funciones que serán utilizadas en su interior, y las definiciones en cualquier otro sitio (generalmente al final). En el caso del ejemplo anterior, la declaración y definición de func1 se ha realizado en el mismo punto, mientras que la declaración de func2 se realiza dentro del cuerpo de la clase y la definición en el exterior de esta. La forma general del prototipo de una función es: valor-devuelto nombre-función (lista-de-argumentos); La forma general de la definición es:

valor-devuelto nombre-función (lista-de-argumentos) {
  sentencias;         // "cuerpo" de la función
}

Ejemplo:

float cuadrado (float x);                // prototipo
float cuadrado (float x) { return x*x; } // definición

La comunicación entre el programa y las funciones que lo componen se realiza mediante los argumentos de llamada, los valores devueltos y las variables globales y externas.

El operador de invocación a función

En ocasiones, en especial al tratar la sobrecarga de operadores, es conveniente considerar una invocación del tipo func(lista-de-argumentos); como un operador binario; el denominado operador de invocación a función ( ) que se aplica entre el primer argumento func y el segundo, lista-de-argumentos. En este sentido la invocación anterior sería equivalente a: func()lista-de-argumentos.

Parámetros

Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como constantes literales o como variables, aunque se pueden definir funciones que no reciban parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia o por valor. El hecho es que si en una declaración de función se declaran parámetros por referencia, a los mismos no se les podrá pasar valores literales ya que las referencias apuntan a objetos (variables o funciones) residentes en la memoria; por otro lado, si un parámetro es declarado para ser pasado por valor, el mismo puede pasarse como una constante literal o como una variable. Los parámetros pasados por referencia pueden ser alterados por la función que los reciba, mientras que los parametros pasados por valor o copía no pueden ser alterados por la función que los recibe, es decir, la función puede manipular a su antojo al parámetro, pero ningún cambio hecho sobre este se reflejará en el parámetro original.

Parámetros constantes

Los parámetros usados por una función pueden declararse como constantes ( const ) al momento de la declaración de la función. Un parámetro que ha sido declarado como constante significa que la función no podrá cambiar el valor del mismo ( sin importar si dicho parámetro se recibe por valor o por referencia ).

Parámetros con valor por defecto

Los parámetros usados por una función pueden declararse con un valor por defecto. Un parámetro que ha sido declarado con valor por defecto es opcional a la hora de hacer la llamada a la función

Funciones anidadas

A diferencia de Pascal, el lenguaje C, C++ no permite anidar funciones, sin embargo, dentro de una funcíon puede existir la llamada a una o más funciones declaradas previamente.

Funciones sobrecargadas

C++, a diferencia del C estándar, permite declarar funciones con el mismo nombre y a esto se conoce como sobrecarga de funciones. Las funciones sobrecargadas pueden coincidir en tipo, pero al menos uno de sus parámetros tiene que ser diferente. En todo caso, si usted trata de declarar funciones sobrecargadas que coincidan en tipo y número de parámetros el compilador no se lo permitirá.

Puede Contactar

Fuente