universidad nacional abierta ya distancia

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
Llamados de Función
Una vez que en su programa se ha definido una función, esta puede ser llamada
las veces que sean necesarias. Para llamar a una función basta con hacer
referencia a su nombre y si la misma requiere de parámetros estos deberán
indicarse dentro de paréntesis.
Para llamar a una función que no requiera de parámetros se deberá indicar el
nombre de la misma seguida de paréntesis vacios. Por ejemplo, para llamar
una función llamada “cuadrado”, se escribiría:
cuadrado();
Si la función cuadrado utiliza un parámetro de tipo int, se escribiría:
cout << cuadrado(25); ó
cout << cuadrado(X);
Si la función cuadrado utiliza un parámetro y además devuelve un valor, su
llamada sería:
R = cuadrado(X); // guardar en R el cuadrado de X
Prototipos: para utilizar una función en un programa, se requiere en primer lugar
declararla y después definirla. La declaración de la función le indica al compilador
el nombre, el tipo de dato devuelto por la función y los parámetros pasados a la
función. A la declaración de una función se le llama también el prototipo
Un prototipo es una declaración de una función. Consiste simplemente en el
encabezado de la función, terminado con punto y coma (;) lo que hace es avisar
al compilador, como se va a llamar la función y si recibe y devuelve información
La estructura de un prototipo es:
<tipo> func(<lista de declaración de parámetros>);
Ejemplo:
int Mayor(int a, int b); // es un prototipo de función que devuelve un entero y
recibe dos parámetros enteros.
Aunque C permite realizar el prototipo de la siguiente manera:
int Mayor(int,int);
Ejemplo de Función definida por el usuario
Codificación en lenguaje C++ (IDE FALCON)
/*Autor: Mirian Benavides - UNAD
U2
Página 4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
Programa: Función 1 */
//DIRECTIVAS DEL PRE-PROCESADOR
#include <iostream>
#include <stdlib.h>
using namespace std;
float mi_funcion(int i, double j); /* DECLARACION observe que termina en ";" */
int main() //Función principal
{
float resultado;
int a = 5;
double b = 2.5;
resultado = mi_funcion(a,b); /* LLAMADA a la función */
cout<<"El resultado de mi_funcion es : " <<resultado;
cout<<endl<<endl;
system("pause");
return 0;
}
float mi_funcion(int i, double j) /* DEFINICION observe que NO lleva ";" */
{
float x;
x = i * j;
return (x); /* RETORNO devolviendo un valor float */
}
Entonces la estructura general de un programa en C++ quedaría así:
[directivas del pre-procesador: include y define]
[declaración de variables y constantes globales]
[prototipos de funciones]
función main ()
[definiciones de funciones] //definidas en los prototipos
Se debe aclarar que hay programas en que no se utilizan las variables y
constantes de tipo global y las funciones diseñadas por el usuario se definen
antes de la función principal main() (en este caso no hay necesidad de incluir el
prototipo de la función.
Observe a continuación el ejemplo de la función 1, estructurado de una forma
diferente que también es válido:
/*Autor: Mirian Benavides - UNAD
Programa: Función 1A
U2
Página 5
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
IDE FALCON */
//DIRECTIVAS DEL PRE-PROCESADOR
#include <iostream>
#include <stdlib.h>
using namespace std;
float mi_funcion(int i, double j) /* DEFINICION. No se incluye el prototipo
porque la definición se realiza antes de la función principal main()*/
{
float x;
x = i * j;
return (x); /* RETORNO devolviendo un valor float */
}
int main() //Función principal
{
float resultado;
int a = 5;
double b = 2.5;
resultado = mi_funcion(a,b); /* LLAMADA a la función */
cout<<"El resultado de mi_funcion es : " <<resultado;
cout<<endl<<endl;
system("pause");
return 0;
}
Recursividad
Esta es la propiedad que tienen las funciones en C++ de poder llamarse a sí
mismas. Se dice que una función es recursiva cuando se autollama. No todas
las funciones pueden llamarse a sí mismas (ser recursivas), deben
estar diseñadas especialmente para que tengan un final y no se conviertan en
ciclos o bucles infinitos.
Es importante notar que cuando una función se llama a sí misma, una nueva
copia de esta función es la que se ejecuta. Las variables locales de la segunda
función no interfieren con las variables locales de la primera, así mismo, las
variables locales no se pueden afectar mutuamente.
Se tomará como ejemplo un programa que calcule el factorial de un número
entero introducido por el usuario. El factorial está definido como el producto del
número en cuestión por todos los números enteros menores que él, de tal
manera que el factorial de 5=5*4*3*2*1 = 120. El código puede quedar así:
#include <iostream>
U2
Página 6
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
#include <stdlib.h>
using namespace std;
int K=1; // variable global, para un contador general
double factorial(int valor)
{
double R;
if(valor<=1) return 1;
else
{
R= (valor*factorial(valor-1)); K = K+1;
}
return R;
}
int main() //Función principal
{
int num;
cout << "Introduzca un numero" << endl;
cin >> num;
cout << endl;
cout << "El factorial del número es " << factorial(num) << endl;
cout << "La funcion se llamo en forma recursiva " << K << " veces" << endl;
system("pause");
return 0;
}
1. La función se declara de tipo doble, puesto que los valores que retorna la
función pueden ser demasiado grandes.
2. También se utiliza una variable global (K), que sirve de contador, para
determinar el número de iteraciones que la función se repite
3. El programa empieza solicitándole un número entero y después llama por
primera vez a la función factorial ( ). La recursividad necesita una condición
para terminar el proceso en el momento especifico, por ésta razón, la función
factorial () determina en primer lugar si el valor pasado como parámetro de la
función es igual a 1, en cuyo caso la función retorna 1. Si el valor del
parámetro es mayor que 1, entonces la función factorial ( ) se llama a sí
misma tomando como parámetro el valor original menos uno, multiplicando
éste valor por el valor del parámetro original y almacenando el
resultado en la variable llamada resultado. (se recomienda realizar una
prueba de escritorio para entender un poco más el movimiento de la
función y sus iteraciones).
U2
Página 7
Descargar