ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Funciones En C++

Sebasgb18 de Junio de 2014

4.310 Palabras (18 Páginas)337 Visitas

Página 1 de 18

MODULO DE FUNCIONES

1. GENERALIDADES.

La utilización de funciones creadas por el programador permite dividir un programa grande en un cierto número de componentes más pequeñas (llamados en ocasiones subprogramas), cada una de las cuales posee un propósito único que lo diferencian de los demás. Por tanto, un programa en C se puede modularizar mediante el uso de las funciones. (C no incluye otras formas de desarrollo modular de programas, como los procedimientos en Pascal.

Hay varias ventajas de desarrollar en forma modular los programas. Por ejemplo, muchos programas requieren acceder repetidamente a un grupo determinado de instrucciones desde varias partes distintas del programa. Las instrucciones repetidas se pueden incluir dentro de una sola función, a la que se puede acceder cuando sea necesario. Además, se puede transferir un conjunto de datos diferente a la función cada vez que se accede a ella. Por tanto, el uso de funciones evita la necesidad de repetir las mismas instrucciones de forma redundante (como ocurre en los lenguajes de programación lineal).

De igual forma es importante la claridad lógica resultante de la descomposición de un programa en varias funciones concisas, representando de cada función una parte bien definida del problema global. Estos programas son más fáciles de escribir y de depurar, y su estructura lógica es más fácil de entender que la de aquellos programas que carecen de este tipo de estructuras. Esto es especialmente cierto en programas grandes y complicados. La mayoría de los programas en C se modularizan de esta manera, aún cuando no impliquen la ejecución repetida de las mismas tareas. De hecho, la descomposición de un programa en módulos individuales se considera generalmente parte de la buena práctica de la programación.

Cada subprograma se puede separar como una función individual y almacenar en un archivo de librería especial. Si un programa requiere de una determina rutina, se puede añadir la correspondiente función de librería al programa durante el proceso de compilación. Por tanto, muchos programas distintos pueden utilizar una misma función. Esto evita la reescritura del código de las funciones (una ventaja de la programación modular, es la REUTILIZACÓN DE CÓDIGO cuando se generan funciones que pueden ser implementadas en diferentes programas). Además favorece la portabilidad, ya que se pueden escribir programas sin prestar atención a las características dependientes del sistema.

En este módulo veremos cómo se definen las funciones y cómo se puede acceder a ellas desde diferentes partes de un programa en C. Veremos también cómo se puede pasar información a una función, trataremos la utilización de prototipos de funciones recomendada por el estándar ANSI (Instituto Nacional Americano de Estándares), actual. Y finalmente, discutiremos una importante e interesante técnica de programación conocida como recursividad, en la que una función puede acceder a sí misma de forma repetida.

Una función es un segmento de programa que realiza determinadas tareas bien definidas. Todo programa en C consta de una o más funciones. Una de estas funciones se debe llamar main. La ejecución del programa siempre comenzará por las instrucciones contenidas en main. Se puede subordinar funciones adicionales a main, y posiblemente unas a otras. Se debe tener en cuenta que los archivos de cabecera (*.h) no poseen la función main; dado que sus funciones se construyen para ser implementadas en otros programas.

Cuando se accede a una función desde alguna determinada parte del programa (llamado a una función), se ejecutan las instrucciones de que consta. Se puede acceder a una misma función desde varios lugares distintos del programa. Una vez que se ha completado la ejecución de una función, se devuelve el control al punto desde el que se accedió a ella.

Generalmente, una función procesa la información que le es pasada desde el punto del programa en donde se accede a ella y devolverá un sólo valor. La información se le pasa a la función mediante unos identificadores especiales llamados argumentos (también denominados parámetros) y es devuelta por medio de la instrucción return (retornar). Sin embargo, algunas funciones aceptan información pero no devuelven nada (por ejemplo, la función de librería printf), mientas que otras funciones (la función de biblioteca scanf) devuelven varios valores.

2. DEFINICIÓN DE UNA FUNCIÓN

La definición de una función tiene dos componentes principales: La primera línea (incluyendo las declaraciones de los argumentos) y el cuerpo de la función.

La primera línea de la definición de una función contiene la especificación del tipo de valor devuelto por la función, seguido del nombre de la función y (opcionalmente) un conjunto de argumentos, separados por comas y encerrados entre paréntesis. Cada argumento viene precedido por su declaración de tipo. Deben seguir al nombre de la función un par de paréntesis vacíos sí la definición de la función no incluye ningún argumento.

En términos generales, la primera línea se puede escribir así:

tipo_de_dato nombre_de_función(tipo1 arg1, tipo2 arg2, ....., tipon argn)

en donde tipo_de_dato presenta el tipo de dato del valor que devuelve la función y nombre_de_función es el nombre de la función, y tipo1, tipo2, ... , tipon representa los tipos de datos de los argumentos arg1, arg2, ..... , argn. Es de aclarar que los tipos de datos de los argumentos pueden ser iguales o diferentes. Los tipos de datos se suponen enteros cuando no se indican explícitamente. Sin embargo, la omisión de los tipos de datos se considera una práctica de programación pobre, aún cuando estos sean enteros.

Los argumentos se denominan argumentos formales, ya que representan los nombres de los elementos que se transfieren a la función desde la parte del programa que hace la llamada, también se llaman parámetros o parámetros formales. (Los argumentos correspondientes en referencia a la función se denominan argumentos reales, ya que definen la información que realmente se transfiere. Algunos autores llaman argumentos simplemente a los argumentos reales.) Los identificadores utilizados como argumentos formales son "locales" en el sentido de que no son reconocidos fuera de la función. Por tanto, los nombres de los argumentos formales no tienen por qué coincidir con los nombres de los argumentos reales en la parte del programa que hace la llamada. Sin embargo, cada argumento formal debe ser del mismo tipo de datos que el dato que recibe desde el punto de llamada.

El resto de la definición de la función es una instrucción que define las acciones que debe realizar ésta. Se suele llamar a esta instrucción implementación de la función. Como cualquier otra instrucción, puede contener instrucciones de expresión, instrucciones de control, etc. Debe incluir una o más instrucciones return para retornar un valor al punto de llamada.

Una función puede acceder a otras funciones. De hecho, puede accederse así misma (ver recursividad).

Ejemplo 1. Consideremos la función Elevar que recibe dos parámetros, el primero es un número entero que representa la base de la expresión y segundo es un número entero que representa el exponente de la misma. Esta función retorna el resultado de elevar la base (parámetro 1) al exponente (parámetro 2).

Pseudocódigo de la función Elevar.

Elevar (Base, Exponente)

Inicio_Elevar

Resultado=1

Si (Exponente=0 Y Base=0) Entonces

Mostrar(Error. Resultado Indeterminado)

Retorne 0

Fin_Si

SiNo

Para(Contador=0;Hasta Contador=Exponente;Contador=Contador+1)

Resultado=Resultado*Base

Fin_Para

Retorne Resultado

Fin_SiNo

Fin_Elevar

/* función que elevar un número entero positivo a una potencia entera positiva */

(1) int Elevar(int Base, int Exponente){

(2) int Resultado=1, Contador;

(3) if(Exponente==0 && Base==0){

(4) cout<<”\n Error. Resultado indeterminado”;

(5) return 0;

(6) }

(7) else{

(8) for(Contador=0;Contador<=Exponente;Contador++)

(9) Resultado=Resultado*Base;

(10) return Resultado;

(11) }

(12) }

La primera línea contiene el nombre de la función Elevar, seguido de los argumentos formales Base y Exponente que se encuentra entre paréntesis. El nombre de la función viene precedido por el tipo de dato int, que describe el elemento devuelto por la función. Además, los argumentos formales Base y Exponente vienen precedidos por el tipo de dato int. Este último tipo de dato, que se incluye dentro del par de paréntesis, se refiere a los argumentos formales. Los argumentos formales Base y Exponente son transferidos a la función desde el punto de llamada.

El cuerpo de la función comienza en la segunda línea, con la declaración de las variables locales de tipo int Resultado y Contador; donde Resultado es inicializado con el valor 0. (Nótese la diferencia entre los argumentos formales y las variable locales). A continuación de la declaración de Resultado y Contador se encuentra una condición que comprueba si Base y Exponente son iguales a 0; de cumplirse esta condición se visualiza el mensaje de error e

...

Descargar como (para miembros actualizados) txt (27 Kb)
Leer 17 páginas más »
Disponible sólo en Clubensayos.com