DEFINICION DE FUNCION
Enviado por kgregorio • 27 de Octubre de 2014 • Ensayo • 2.103 Palabras (9 Páginas) • 179 Visitas
DEFINICION DE FUNCION
En programación, una función es un grupo de instrucciones con un objetivo en particular y que se ejecuta al ser llamada desde otra función o procedimiento. Una función puede llamarse múltiples veces e incluso llamarse a sí misma (función recurrente).
Las funciones pueden recibir datos desde afuera al ser llamadas a través de los parámetros y deben entregar un resultado.
Se diferencian de los procedimientos porque estos no devuelven un resultado.
En general las funciones deben tener un nombre único en el ámbito para poder ser llamadas, un tipo de dato de resultado, una lista de parámetros de entrada y su código.
ESTRUCTURA DE FUNCION
Una función es, sencillamente un conjunto de sentencias que se puede llamar desde cualquier parte de un programa. Las funciones permiten al programador un grado de abstracción en la resolución de un problema.
Consideraciones acerca de las funciones
• Las funciones NO se pueden anidar: esto significa que una función no se puede declarar dentro de otra función.
• En C++ todas las funciones son externas o globales, es decir pueden ser llamadas desde cualquier punto del programa.
Sintaxis
tipo_de_retorno nombreFunción (listaDePárametros)
{
cuerpo de la función
return expresión
}
tipo_de_retorno Tipo de valor devuelto por la función ola palabra reservada void si la función no devuelve ningún valor
nombreFunción Indentificador o nombre de la función
listaDePárametros Lista de declaraciones de los prarametros de la función separaados por comas
Expresión Valor que devuelve a función
Funcion de parametro
Un parametro en C++ es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento.
Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algún proceso.
Estos valores que se pasan del cuerpo principal del programa o de un procedimiento a otros procedimientos se llaman parametros.
Funcion de ambito
En C++ hay siete categorías de ámbitos: De sentencia; de bloque (o local); de función; de prototipo de función; de fichero; de clase y de espacio de nombres. El ámbito depende de como y donde es declarado el identificador.
Clases de almacenamiento
Para especificar el tipo de almacenamiento automático se usa el especificador auto.
Sintaxis:
[auto] <tipo> <nombre_variable>;
Sirve para declarar variables automáticas o locales. Es el modificador por defecto cuando se declaran variables u objetos locales, es decir, si no se especifica ningún modificador, se creará una variable automática.
Estas variables se crean durante la ejecución, y se elige el tipo de memoria a utilizar en función del ámbito temporal de la variable. Una vez cumplido el ámbito, la variable es destruida. Es decir, una variable automática local de una función se creará cuando sea declarada, y se destruirá al terminar la función. Una variable local automática de un bucle será destruida cuando el bucle termine.
Debido a que estos objetos serán creados y destruidos cada vez que sea necesario, usándose, en general, diferentes posiciones de memoria, su valor se perderá cada vez que sean creadas, perdiéndose el valor previo en cada caso.
Por supuesto, no es posible crear variables automáticas globales, ya que son conceptos contradictorios.
Almacenamiento estático
^
Para especificar este tipo de almacenamiento se usa el especificador static.
Sintaxis:
static <tipo> <nombre_variable>;
static <tipo> <nombre_de_función>(<lista_parámetros>);
Cuando se usa en la declaración de objetos, este especificador hace que se asigne una dirección de memoria fija para el objeto mientras el programa se esté ejecutando. Es decir, su ámbito temporal es total. En cuanto al ámbito de acceso conserva el que le corresponde según el punto del código en que aparezca la declaración.
Debido a que el objeto tiene una posición de memoria fija, su valor permanece, aunque se trate de un objeto declarado de forma local, entre distintas reentradas en el ámbito del objeto. Por ejemplo si se trata de un objeto local a una función, el valor del objeto se mantiene entre distintas llamadas a la función.
Hay que tener en cuenta que los objetos estáticos no inicializados toman un valor nulo.
Por el contrario, si se le da un valor inicial a una variable estática, la asignación sólo afecta a la primera vez que es declarada.
#include <iostream>
using namespace std;
int funcion();
int main() {
for(int i = 0; i < 10; i++)
cout << "Llamada " << i+1 << ": " << funcion() << endl;
return 0;
}
int funcion() {
static int x=10;
x++;
return x;
}
La salida de este programa será:
Llamada 1: 11
Llamada 2: 12
Llamada 3: 13
Llamada 4: 14
Llamada 5: 15
Llamada 6: 16
Llamada 7: 17
Llamada 8: 18
Llamada 9: 19
Llamada 10: 20
Nota: en realidad, el compilador analiza el código fuente y crea el código ejecutable necesario para crear todas las variables estáticas antes de empezar la ejecución el programa, asignando sus valores iniciales, si se indican o cero en caso contrario. De modo que cuando se llama a la funcion no se crea el objeto x, sino que se usa directamente.
En este caso, desde el punto de vista del ámbito temporal, x se comporta como un objeto global, pero para el ámbito de acceso se trata de un objeto local de funcion.
Este tipo de almacenamiento se usa con el fin de que las variables locales de una función conserven su valor entre distintas llamadas sucesivas a la misma. Las variables estáticas tienen un ámbito local con respecto a su accesibilidad, pero temporalmente son como las variables externas.
Parecería lógico que, análogamente a lo que sucede con el especificador auto, no tenga sentido declarar objetos globales como estáticos, ya que lo son por defecto. Sin embargo, el especificador static tiene un significado distinto cuando se aplica a objetos globales. En ese caso indica que el objeto no es accesible desde otros ficheros fuente del programa.
En el caso de las funciones, el significado es el mismo, las funciones estáticas sólo son accesibles desde el fichero
...