SlideShare a Scribd company logo
1 of 15
Download to read offline
Universidad Nacional Experimental
“Francisco de Miranda”
Área Ciencias de la Educación
Departamento de Informática y Tecnología Educativa
Unidad Curricular: Computación II
UNIDAD II: FUNCIONES EN C++
Licda. Inés N. Andara Q. (2013)
Computación II. Unidad II: Funciones en C++
Página 2
La Programación Modular consta de varias secciones divididas de tal
forma que interactúan a través de llamadas a procedimientos, que integran el
programa en su totalidad. El programa principal (main) coordina las llamadas a
los módulos secundarios y pasa los datos necesarios en forma de parámetros. A
su vez cada módulo puede contener sus propios datos y llamar a otros módulos
o funciones.
Una función es un conjunto de líneas de código que realizan una tarea
específica y puede retornar un valor. Las funciones pueden tomar parámetros
que modifiquen su funcionamiento. Son utilizadas para descomponer grandes
problemas en tareas simples y para implementar operaciones que son
comúnmente utilizadas durante un programa y de esta manera reducir la
cantidad de código.
Las funciones son un conjunto de instrucciones que realizan una tarea
específica. En general toman unos valores de entrada, llamados parámetros y
proporcionan un valor de salida o valor de retorno; aunque tanto unos como el
otro pueden no existir.
Para utilizarlas es necesario declararlas previamente, definirlas e
invocarlas o llamarlas cuando se desee ejecutar la definición.
PROTOTIPO DE UNA FUNCIÓN
C ++ requiere que una función se declare o defina antes de su uso. La
declaración de una función se denomina prototipo. Específicamente consta
de los siguientes elementos:
 Tipo de dato del valor que retorna la función
 Nombre de la función
 Lista de parámetros formales encerrados entre paréntesis
 Punto y coma (;)
Los prototipos se sitúan normalmente al principio de un programa, antes
de la definición de la función main().
Sirve para indicar al compilador los tipos de retorno y parámetros de una
función, de modo que compruebe si son del tipo correcto cada vez que se use
esta función dentro del programa, o para hacer las conversiones de tipo
cuando sea necesario. Los nombres de los parámetros son opcionales, y se
tipo_retorno nombre-función (lista parámetros);
formales);
Computación II. Unidad II: Funciones en C++
Página 3
incluyen como documentación y ayuda en la interpretación y comprensión del
programa.
DEFINICIÓN DE UNA FUNCIÓN
En la definición, es dónde se realizan los procesos que se requieren, para
ello, se necesita la siguiente estructura:
Dónde:
 Tipo_retorno: Es el tipo de dato que devuelve la función en C++. El tipo
debe ser de los tipos simples de C++, tales como int, float, char, bool,
entre otros. Si la función no devuelve ningún valor se utiliza la palabra
reservada void.
 Nombre: Es el identificador de la función, que puede comenzar con una
letra o un subrayado (_) y puede contener tantas letras, números o
subrayados desee.
 Lista de parámetros: Es una lista de parámetros con tipos que utiliza el
formato siguiente: tipo_parámetro nombre_parámetro.
 Cuerpo de la función: Es el conjunto de instrucciones que debe estar
encerradas entre llaves de apertura ({) y cierre (}).
 Declaración local: Las constantes, tipos de datos y variables declaradas
dentro de la función son locales a la misma y no perduran fuera de ellas.
 Valor devuelto por una función: Una función puede devolver un único
valor mediante la palabra reservada return. Tan pronto como el
programa encuentra cualquiera de las sentencias return, se retorna la
sentencia llamadora.
Por ejemplo, una definición de una función que retorne el producto de
dos números enteros sería:
tipo_retorno nombre-función (lista de parámetros formales){
cuerpo de la función
return expresión;
}
Computación II. Unidad II: Funciones en C++
Página 4
LLAMADO DE UNA FUNCIÓN
Cuando una función es invocada o llamada se le pasa el control a la
misma, una vez que esta finalizó con su tarea el control es devuelto al punto
desde el cual la función fue llamada.
Una llamada a una función redirigirá el control del programa a la función
nombrada. Debe ser una sentencia o una expresión de otra función que realiza
la llamada. Esta sentencia debe ser tal que debe haber coincidencia en
número, orden y tipo entre la lista de parámetros formales y actuales de la
función.
Su sintaxis es:
Si la función retorna un valor, se puede almacenar en una variable:
V = nombre_función ( arg1, arg2, … );
o también imprimirse directamente:
cout<<“El valor es:”<< nombre_función ( arg1, arg2, … );
Estudiemos los siguientes ejemplos:
Ejemplo 1. : cree un programa que lea los catetos de un triángulo rectángulo y
utilice una función para calcular la hipotenusa e imprimir el resultado.
#include <iostream>
#include <math.h>
using namespace std;
void hip(float ca, float co);
int main()
{
float a, b;
cout << "Introduzca valor del cateto opuesto: ";
cin >> a;
cout << "Introduzca valor del cateto adyacente: ";
cin >> b;
hip(a,b);
return 0;
}
Nombre_función (lista parámetros actuales);
Computación II. Unidad II: Funciones en C++
Página 5
void hip(float ca, float co)
{
float hipo;
hipo=pow(ca,2)+pow(co,2));
hip0=sqrt(hip);
cout << "El valor de la hipotenusa es: " << hip << "n";
}
Ejemplo 2. Obtenga los factores primos de un número dado.
#include<iostream.h>
using namespace std;
void factores(int x);
int main()
{
int x;
cout<<"ttFACTORES PRIMOS"<<endl;
do {
cout<<"Ingrese el valor de x: ";
cin>>x;
if(x<1 || x>32767)
cout<<"Error!! debe ingresar No. entre 1 y 32677."<<endl;
}while(x<1 ||x>32767);
cout<<"Los factores primos de "<<x<<" son : n";
factores(x);
return 0;
}
void factores(int x)
{
int V[25],i=2,j=0;
do{
if(x % i==0){
x=x/i;
V[j]=i;
j++;
}
else
i++;
}while(x!=1);
for(i=0;i<j;i++)
cout<<V[i]<<"n";
}
Computación II. Unidad II: Funciones en C++
Página 6
Variables Locales y Globales:
Se pueden declarar variables en cualquier parte del programa y además
de pasar variables como parte del argumento de una función, también es
posible declarar variables dentro del cuerpo de una función, a este tipo de
variables se les llama locales ya que son útiles sólo dentro del cuerpo de la
función. Los parámetros utilizados en una función se consideran como variables
de tipo local y se utilizan exactamente de la misma manera, como se muestra a
continuación:
A las variables que declaramos fuera del cuerpo de cualquier función se
dice que tienen un alcance global y por lo tanto están disponibles para
cualquier función del programa, incluyendo a la función main( ).
#include<iostream>
using namespace std;
int s;//variable global
void suma(int, int);
int main(){
int a,b; //variables locales
cout<<"Suma de dos numerosn";
cout<<"Valor 1: ";
cin>>a;
cout<<"Valor 2: ";
cin>>b;
suma(a,b);
cout<<"la suma es "<<s<<endl;
return 0;
}
void suma(int a, int b){
s=a+b;
}
int suma(int a, int b){
int s;
s=a+b;
return s;
}
Computación II. Unidad II: Funciones en C++
Página 7
Parámetros de una función
C++ proporciona dos métodos para pasar variables (parámetros) entre
funciones. Una función puede utilizar parámetros por valor y parámetros por
referencia, o puede no tener parámetros.
Paso por valor: también llamado pase por copia, significa que cuando se
compila la función y el código que llama a la misma, la función recibe una
copia de los valores de los parámetros actuales. La función receptora no puede
modificar la variable de la función (parámetro pasado). Ejemplo:
#include<iostream>
using namespace std;
void paso_valor(int x);
int main(){
int x=20;
cout<<"Antes de la llamada a la funcion x= "<<x<<endl;
paso_valor(x);
cout<<"Despues de la llamada a la funcion x= "<<x<<endl;
return 0;
}
void paso_valor(int x)
{
x=x+6;
cout<<"Dentro de la funcion x= "<<x<<endl;
}
Paso por referencia: cuando una función debe modificar el valor del
parámetro pasado y devolver este valor modificado a la función llamadora, se
ha de utilizar el método de paso de parámetro por referencia o dirección.
Para declarar una variable que es parámetro formal, como paso por
referencia, el símbolo & debe preceder al nombre de la variable en la
cabecera de la función, y en la llamada el parámetro actual correspondiente
debe ser el nombre de una variable.
Cuando se modifica el valor del parámetro formal de un parámetro por
referencia (la variable local), este valor queda almacenado en la misma
dirección de memoria, por lo que al retornar a la función llamadora la dirección
de la memoria donde se almacenó el parámetro contendrá el valor
modificado.
Computación II. Unidad II: Funciones en C++
Página 8
Ejemplo:
#include<iostream>
using namespace std;
void paso_valor(int &x);
int main(){
int x=20;
cout<<"Antes de la llamada a la funcion x= "<<x<<endl;
paso_valor(x);
cout<<"Despues de la llamada a la funcion x= "<<x<<endl;
return 0;
}
void paso_valor(int &x)
{
x=x+6;
cout<<"Dentro de la funcion x= "<<x<<endl;
}
RECURSIVIDAD
Es la propiedad de algunos lenguajes de programación de permitir que
un programa solicite su propia llamada repetidas veces hasta que se satisface
una condición específica. La llamada a sí mismo se conoce como llamada
recursiva.
Dicho de otra manera, una función recursiva se resuelve con una llamada
a sí misma, cambiando el valor de un parámetro en la llamada a la función. A
través de las sucesivas llamadas recursivas a la función se van obteniendo
valores que, computados, sirven para obtener el valor de la función llamada
originalmente. El proceso de llamadas recursivas siempre tiene que acabar en
una llamada a la función que se resuelve de manera directa, sin necesidad de
invocar de nuevo la función. Esto será siempre necesario, para que llegue un
momento que se corten las llamadas reiterativas a la función y no se entre en
un bucle infinito de invocaciones.
Sintaxis de la estructura de una función recursiva:
tipo_devuelto nombre_funcion(tipo(s)_argumento(s) nombre(s))
{
(declaración de datos y cuerpo de la función)
//condición de parada
//condición recursiva
Computación II. Unidad II: Funciones en C++
Página 9
return nombre_funcion(valor); /*Se coloca el nombre de la función,
donde se llama a ella misma, a esto se le conoce como
recursividad*/
}
Cuando se llama a una función, se crea un nuevo juego de variables
locales, de este modo, si la función hace una llamada a sí misma, se guardan
sus variables y parámetros en la pila, y la nueva instancia de la función
trabajará con su propia copia de las variables locales, cuando esta segunda
instancia de la función retorna, recupera las variables y los parámetros de la pila
y continua la ejecución en el punto en que había sido llamada.
Las funciones recursivas deben tener una forma para poder salir y así
evitar que éstas se estén llamando de manera infinita, ya que esto ocasionaría
un error conocido como desbordamiento de pila.
La recursividad y la iteración (ejecución en bucle) están muy
relacionadas, cualquier acción que pueda realizarse con iteración se puede
realizar con recursividad pero no viceversa.
Ejemplo 3.: Dado n par, encontrar la suma de los enteros pares hasta N:
2+4+6+...+(N-2)+N
#include<iostream>
using namespace std;
int suma(int n);
int main()
{
int n, s;
cout<<"Calculo de la suma de los enteros pares hasta Nnn";
do{
cout<<"Ingrese el valor de n: ";
cin>>n;
if(n % 2 == 1)
cout<<"Error, el numero debe ser par!n";
if(n<2)
cout<<"Error, el numero debe ser igual o mayor a 2n";
}while(n%2==1 || n<2);
s=suma(n);
cout<<”La suma de los numeros pares hasta "<<n<<" es: "<<s<<"n";
return 0;
}
Computación II. Unidad II: Funciones en C++
Página 10
int suma(int n)
{
if(n==2)
return 2;
else
return (n + suma(n-2) );
}
Ejemplo 4.: Cree un programa que calcule, usando una función recursiva, el
factorial de un número dado:
#include<iostream>
using namespace std;
double factorial(int);
int validar(int);
int main()
{
int n;
cout << "Obtener el Factorial de:n";
cin >> n;
n=validar(n);
cout << "El Factorial de "<< n <<" es..."<<factorial(n);
cout << "n";
return 0;
}
int validar(int n){
if(n<0){
cout<<”Error, ingrese el número nuevamente:”;
cin>>n;
return validar(n);
}
else
return n;
}
double factorial(int num)
{
if(num<=1)
return 1;
else
return(num*factorial(num-1)); //llamado interno de la función
}
Computación II. Unidad II: Funciones en C++
Página 11
TIPOS DE RECURSIVIDAD
 Recursividad Simple: Aquella en cuya definición sólo aparece una
llamada recursiva.
double factorial(int num)
{
if(num<=1)
return 1;
else
return(num*factorial(num-1));
}
Corrida en frio de una Función Recursiva Simple
num (num<=1) Num*factorial(num-1) factorial(num-1) Retorna
3 No 3*factorial(2) 2 6
2 No 2*factorial(1) 1 2
1 Si - - 1
 Recursividad Múltiple: cuando hay más de una llamada a si misma dentro
del cuerpo de la función.
int fibo (int n)
{
if(n<=1)
return 1;
else
return (fibo(n-1)+fibo(n-2));
}
Corrida en frio de una Función Recursiva Múltiple
n (n<=1) fibo(n-1)+fibo(n-2) fibo(n-1) fibo(n-2) Retorna
4 No fibo(3)+fibo(2) 3 2 5
3 No fibo(2)+fibo(1) 2 1 3
2 No fibo(1)+fibo(0) 1 1 2
1 Si - - - 1
Computación II. Unidad II: Funciones en C++
Página 12
 Recursividad Anidada: En algunos de los argumentos de la llamada
recursiva hay una nueva llamada a sí misma.
int Ack( int n, int m )
{
if(n==0 )
return(m+1);
else{
if(m==0)
return(Ack(n-1,1));
else
return(Ack(n-1, Ack(n,m-1)));
}
}
Corrida (parcial) de una Función Recursiva Anidada
n m (n==0) (m==0) Ack(n-1,1) Ack(n-1, Ack(n,m-1)) Ack(n,m-1)) Retorna
1 1 No No - Ack(0, Ack(1,0)) Ack(1,0) -
1 0 No Si Ack(0,1) - - -
0 1 Si - - - - 2
Ack(0, 2)
0 2 Si - - - - 3
 Recursividad Cruzada o Indirecta: son algoritmos donde una función
provoca llamada a si misma de forma indirecta a través de otras
funciones.
//Función 1
int par(int nump)
{
if(nump==0)
return 1;
else
return (impar(nump-1));
}
//Función 2
int impar (int numi)
{
if(numi==0)
return 0;
Computación II. Unidad II: Funciones en C++
Página 13
else
return(par(numi-1));
}
Corrida de una Función Recursiva Cruzada (valor Par)
nump numi (nump==0) (numi==0) impar(nump-1) par(numi-1) Retorna
4 - No - impar(3) - 1
- 3 - No - par(2) 1
2 - No - impar(1) - 1
- 1 - No - par(0) 1
0 - Si - - -
1
(verdadero)
Corrida de una Función Recursiva Cruzada (valor Impar)
nump numi (nump==0) (numi==0) impar(nump-1) par(numi-1) Retorna
3 - No - impar(2) -
- 2 - No - par(1)
1 - No - impar(0) -
- 0 - Si - -
0
(Falso)
Computación II. Unidad II: Funciones en C++
Página 14
EJERCICIOS PROPUESTOS
1. Escriba una función que tenga un argumento de tipo entero y que
devuelva un valor lógico (de tipo bool), true si el número es primo y false si
es compuesto.
2. Un número entero n se dice que es perfecto si la suma de sus divisores
incluyendo 1 y excluyéndose él coincide consigo mismo. Realizar un
programa con una función que determine si un número dado es
perfecto. Por ejemplo 6 es un número perfecto 1 + 2 + 3 = 6.
3. Un estudiante de geometría ha medido los lados de un prisma
rectangular y obtenido valores A, B, C. Hay que calcular la distancia D
que representa la longitud de una diagonal, de acuerdo con la fórmula:
D = A2 + B2 + C2 en una función.
4. Realice un programa que lea dos números complejos (a,b) y (c,d) y
emplee una función para calcular e imprimir el producto de los mismos.
(a,b)*(c,d)=(ac-bd,ad+bc)
5. Un vendedor desea calcular su comisión total sobre la venta de varios
artículos. Al vendedor le corresponde el 5% de la comisión sobre artículos
cuyo precio es menor a Bs.F. 50 y el 8% de comisión sobre aquellos
artículos cuyo precio es Bs.F. 50 o más.
6. Determinar y visualizar el número más grande de tres números dados,
mediante una función, suponiendo que los 3 son distintos.
7. Elaborar un programa que emplee varias funciones para efectuar el
cálculo del área de varias figuras geométricas (cilindro, cuadrado,
triángulo rectángulo, rombo), y muestre las distintas opciones a través de
un menú para que el usuario seleccione la figura geométrica de la que
desea saber el área.
8. Haga un programa utilizando funciones que lea el código de un
empleado, el salario básico por hora, el número de horas trabajadas
durante una semana. Calcular el salario neto, teniendo en cuenta que si
el número de horas trabajadas durante la semana es mayor de 36, esas
horas de más se consideran horas extras tienen un 30% de recarga.
Además se debe calcular la retención de 4% que se debe descontar del
salario neto. Imprima el código del empleado y el salario neto a cobrar.
9. Se define el número combinatorio ( )de la siguiente forma:
( )
( )
Escribir un programa que lea los valores de m y n y calcule el valor de la
combinación.
10.Realice un programa que lea una vector de n elementos enteros:
a) Sumar los números positivos.
b) Contar los negativos.
c) Contar los múltiplos de 5.
Computación II. Unidad II: Funciones en C++
Página 15
d) Imprimir todos los resultados.
11. Elabore un programa que lea una matriz cuadrada A y calcule el
producto de los valores ubicados en la primera columna. Luego sume
todos los elementos de la diagonal principal y secundaria. Muestre el
resultado en pantalla.
12. Cree un programa que calcule el cociente de dos números, validando
previamente el divisor con una función recursiva.
13. Obtenga el resultado de la siguiente fórmula:
n!
x
)(++
!
x
+
!
x
!
x
+xy
n
n
1...
432
1
432

14. Existen números que leídos de izquierda a derecha y de derecha a
izquierda tienen el mismo valor. Ejemplo: 404, 111, 55, 323, 1045401; esta
clase de números se les denomina CAPICÚA, determine a través de una
función recursiva si un número dado es capicúa.
15. Escribir un programa que lea dos números x y n y calcule la suma de la
progresión aritmética:
16. Obtener el promedio de n elementos de un vector de enteros mediante
una función recursiva.
17. Calcular la suma de n números naturales, de la siguiente forma:
S=1+2+3+…+(n-1)+n

More Related Content

What's hot

Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Carlos
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
RafaeloRivas
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
eulo10
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
Julian Bohorquez
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
karlalopezbello
 

What's hot (20)

11 Funciones
11 Funciones11 Funciones
11 Funciones
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Operaciones Basicas C++
Operaciones Basicas C++Operaciones Basicas C++
Operaciones Basicas C++
 
Utilidad de las funciones en c
Utilidad de las funciones en cUtilidad de las funciones en c
Utilidad de las funciones en c
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++INSTRUCCIONES BÁSICAS PARA C++
INSTRUCCIONES BÁSICAS PARA C++
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
 
Conceptos de c
Conceptos de cConceptos de c
Conceptos de c
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
De algoritmo a programa en c++
De algoritmo a programa en c++De algoritmo a programa en c++
De algoritmo a programa en c++
 
Estructura de Programa en C++
Estructura de Programa en C++Estructura de Programa en C++
Estructura de Programa en C++
 

Viewers also liked

Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
azuajesimon
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Ruderocker Billy
 
Manual analisis de algoritmos v1
Manual analisis de algoritmos v1Manual analisis de algoritmos v1
Manual analisis de algoritmos v1
reny_so
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS
1002pc3
 

Viewers also liked (15)

Practica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FIPractica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FI
 
Algorítmica para Programación
Algorítmica para ProgramaciónAlgorítmica para Programación
Algorítmica para Programación
 
Practica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FIPractica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FI
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Manual básico de programación en c++
Manual básico de programación en c++Manual básico de programación en c++
Manual básico de programación en c++
 
C
C C
C
 
Programacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosProgramacion Estructurada en C - Antonakos
Programacion Estructurada en C - Antonakos
 
Ejercicios resueltos el jueves 12 04-2012
Ejercicios resueltos el jueves 12 04-2012Ejercicios resueltos el jueves 12 04-2012
Ejercicios resueltos el jueves 12 04-2012
 
Ejercicios raíces de funciones
Ejercicios raíces de funciones Ejercicios raíces de funciones
Ejercicios raíces de funciones
 
Introduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led'sIntroduccion a los microcontroladores pic y programacion de una matriz de led's
Introduccion a los microcontroladores pic y programacion de una matriz de led's
 
Manual analisis de algoritmos v1
Manual analisis de algoritmos v1Manual analisis de algoritmos v1
Manual analisis de algoritmos v1
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS
 
Ejercicios resueltos pascal
Ejercicios resueltos pascalEjercicios resueltos pascal
Ejercicios resueltos pascal
 
Programación en c y c++
Programación en c y c++Programación en c y c++
Programación en c y c++
 
Apuntes De Algoritmos
Apuntes De AlgoritmosApuntes De Algoritmos
Apuntes De Algoritmos
 

Similar to Guía funciones

Funciones C++
Funciones C++Funciones C++
Funciones C++
Jarvis_15
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de biblioteca
SNPP
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
Ysaac Ruiz
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2
jcbenitezp
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variables
jcbenitezp
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
charnisch
 

Similar to Guía funciones (20)

Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 
Funciones
FuncionesFunciones
Funciones
 
A3 u1-16230227
A3 u1-16230227A3 u1-16230227
A3 u1-16230227
 
8448148681
84481486818448148681
8448148681
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
07 funciones
07 funciones07 funciones
07 funciones
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
Unidad educativa
Unidad educativaUnidad educativa
Unidad educativa
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de biblioteca
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
Utp lpi_s6y7_funciones y variables 2012-2
 Utp lpi_s6y7_funciones y variables 2012-2 Utp lpi_s6y7_funciones y variables 2012-2
Utp lpi_s6y7_funciones y variables 2012-2
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variables
 
Acciones funciones
Acciones funcionesAcciones funciones
Acciones funciones
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 

Recently uploaded

TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 

Recently uploaded (20)

La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
Diapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundariaDiapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundaria
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptxEL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 

Guía funciones

  • 1. Universidad Nacional Experimental “Francisco de Miranda” Área Ciencias de la Educación Departamento de Informática y Tecnología Educativa Unidad Curricular: Computación II UNIDAD II: FUNCIONES EN C++ Licda. Inés N. Andara Q. (2013)
  • 2. Computación II. Unidad II: Funciones en C++ Página 2 La Programación Modular consta de varias secciones divididas de tal forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad. El programa principal (main) coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros. A su vez cada módulo puede contener sus propios datos y llamar a otros módulos o funciones. Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque tanto unos como el otro pueden no existir. Para utilizarlas es necesario declararlas previamente, definirlas e invocarlas o llamarlas cuando se desee ejecutar la definición. PROTOTIPO DE UNA FUNCIÓN C ++ requiere que una función se declare o defina antes de su uso. La declaración de una función se denomina prototipo. Específicamente consta de los siguientes elementos:  Tipo de dato del valor que retorna la función  Nombre de la función  Lista de parámetros formales encerrados entre paréntesis  Punto y coma (;) Los prototipos se sitúan normalmente al principio de un programa, antes de la definición de la función main(). Sirve para indicar al compilador los tipos de retorno y parámetros de una función, de modo que compruebe si son del tipo correcto cada vez que se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea necesario. Los nombres de los parámetros son opcionales, y se tipo_retorno nombre-función (lista parámetros); formales);
  • 3. Computación II. Unidad II: Funciones en C++ Página 3 incluyen como documentación y ayuda en la interpretación y comprensión del programa. DEFINICIÓN DE UNA FUNCIÓN En la definición, es dónde se realizan los procesos que se requieren, para ello, se necesita la siguiente estructura: Dónde:  Tipo_retorno: Es el tipo de dato que devuelve la función en C++. El tipo debe ser de los tipos simples de C++, tales como int, float, char, bool, entre otros. Si la función no devuelve ningún valor se utiliza la palabra reservada void.  Nombre: Es el identificador de la función, que puede comenzar con una letra o un subrayado (_) y puede contener tantas letras, números o subrayados desee.  Lista de parámetros: Es una lista de parámetros con tipos que utiliza el formato siguiente: tipo_parámetro nombre_parámetro.  Cuerpo de la función: Es el conjunto de instrucciones que debe estar encerradas entre llaves de apertura ({) y cierre (}).  Declaración local: Las constantes, tipos de datos y variables declaradas dentro de la función son locales a la misma y no perduran fuera de ellas.  Valor devuelto por una función: Una función puede devolver un único valor mediante la palabra reservada return. Tan pronto como el programa encuentra cualquiera de las sentencias return, se retorna la sentencia llamadora. Por ejemplo, una definición de una función que retorne el producto de dos números enteros sería: tipo_retorno nombre-función (lista de parámetros formales){ cuerpo de la función return expresión; }
  • 4. Computación II. Unidad II: Funciones en C++ Página 4 LLAMADO DE UNA FUNCIÓN Cuando una función es invocada o llamada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada. Una llamada a una función redirigirá el control del programa a la función nombrada. Debe ser una sentencia o una expresión de otra función que realiza la llamada. Esta sentencia debe ser tal que debe haber coincidencia en número, orden y tipo entre la lista de parámetros formales y actuales de la función. Su sintaxis es: Si la función retorna un valor, se puede almacenar en una variable: V = nombre_función ( arg1, arg2, … ); o también imprimirse directamente: cout<<“El valor es:”<< nombre_función ( arg1, arg2, … ); Estudiemos los siguientes ejemplos: Ejemplo 1. : cree un programa que lea los catetos de un triángulo rectángulo y utilice una función para calcular la hipotenusa e imprimir el resultado. #include <iostream> #include <math.h> using namespace std; void hip(float ca, float co); int main() { float a, b; cout << "Introduzca valor del cateto opuesto: "; cin >> a; cout << "Introduzca valor del cateto adyacente: "; cin >> b; hip(a,b); return 0; } Nombre_función (lista parámetros actuales);
  • 5. Computación II. Unidad II: Funciones en C++ Página 5 void hip(float ca, float co) { float hipo; hipo=pow(ca,2)+pow(co,2)); hip0=sqrt(hip); cout << "El valor de la hipotenusa es: " << hip << "n"; } Ejemplo 2. Obtenga los factores primos de un número dado. #include<iostream.h> using namespace std; void factores(int x); int main() { int x; cout<<"ttFACTORES PRIMOS"<<endl; do { cout<<"Ingrese el valor de x: "; cin>>x; if(x<1 || x>32767) cout<<"Error!! debe ingresar No. entre 1 y 32677."<<endl; }while(x<1 ||x>32767); cout<<"Los factores primos de "<<x<<" son : n"; factores(x); return 0; } void factores(int x) { int V[25],i=2,j=0; do{ if(x % i==0){ x=x/i; V[j]=i; j++; } else i++; }while(x!=1); for(i=0;i<j;i++) cout<<V[i]<<"n"; }
  • 6. Computación II. Unidad II: Funciones en C++ Página 6 Variables Locales y Globales: Se pueden declarar variables en cualquier parte del programa y además de pasar variables como parte del argumento de una función, también es posible declarar variables dentro del cuerpo de una función, a este tipo de variables se les llama locales ya que son útiles sólo dentro del cuerpo de la función. Los parámetros utilizados en una función se consideran como variables de tipo local y se utilizan exactamente de la misma manera, como se muestra a continuación: A las variables que declaramos fuera del cuerpo de cualquier función se dice que tienen un alcance global y por lo tanto están disponibles para cualquier función del programa, incluyendo a la función main( ). #include<iostream> using namespace std; int s;//variable global void suma(int, int); int main(){ int a,b; //variables locales cout<<"Suma de dos numerosn"; cout<<"Valor 1: "; cin>>a; cout<<"Valor 2: "; cin>>b; suma(a,b); cout<<"la suma es "<<s<<endl; return 0; } void suma(int a, int b){ s=a+b; } int suma(int a, int b){ int s; s=a+b; return s; }
  • 7. Computación II. Unidad II: Funciones en C++ Página 7 Parámetros de una función C++ proporciona dos métodos para pasar variables (parámetros) entre funciones. Una función puede utilizar parámetros por valor y parámetros por referencia, o puede no tener parámetros. Paso por valor: también llamado pase por copia, significa que cuando se compila la función y el código que llama a la misma, la función recibe una copia de los valores de los parámetros actuales. La función receptora no puede modificar la variable de la función (parámetro pasado). Ejemplo: #include<iostream> using namespace std; void paso_valor(int x); int main(){ int x=20; cout<<"Antes de la llamada a la funcion x= "<<x<<endl; paso_valor(x); cout<<"Despues de la llamada a la funcion x= "<<x<<endl; return 0; } void paso_valor(int x) { x=x+6; cout<<"Dentro de la funcion x= "<<x<<endl; } Paso por referencia: cuando una función debe modificar el valor del parámetro pasado y devolver este valor modificado a la función llamadora, se ha de utilizar el método de paso de parámetro por referencia o dirección. Para declarar una variable que es parámetro formal, como paso por referencia, el símbolo & debe preceder al nombre de la variable en la cabecera de la función, y en la llamada el parámetro actual correspondiente debe ser el nombre de una variable. Cuando se modifica el valor del parámetro formal de un parámetro por referencia (la variable local), este valor queda almacenado en la misma dirección de memoria, por lo que al retornar a la función llamadora la dirección de la memoria donde se almacenó el parámetro contendrá el valor modificado.
  • 8. Computación II. Unidad II: Funciones en C++ Página 8 Ejemplo: #include<iostream> using namespace std; void paso_valor(int &x); int main(){ int x=20; cout<<"Antes de la llamada a la funcion x= "<<x<<endl; paso_valor(x); cout<<"Despues de la llamada a la funcion x= "<<x<<endl; return 0; } void paso_valor(int &x) { x=x+6; cout<<"Dentro de la funcion x= "<<x<<endl; } RECURSIVIDAD Es la propiedad de algunos lenguajes de programación de permitir que un programa solicite su propia llamada repetidas veces hasta que se satisface una condición específica. La llamada a sí mismo se conoce como llamada recursiva. Dicho de otra manera, una función recursiva se resuelve con una llamada a sí misma, cambiando el valor de un parámetro en la llamada a la función. A través de las sucesivas llamadas recursivas a la función se van obteniendo valores que, computados, sirven para obtener el valor de la función llamada originalmente. El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la función que se resuelve de manera directa, sin necesidad de invocar de nuevo la función. Esto será siempre necesario, para que llegue un momento que se corten las llamadas reiterativas a la función y no se entre en un bucle infinito de invocaciones. Sintaxis de la estructura de una función recursiva: tipo_devuelto nombre_funcion(tipo(s)_argumento(s) nombre(s)) { (declaración de datos y cuerpo de la función) //condición de parada //condición recursiva
  • 9. Computación II. Unidad II: Funciones en C++ Página 9 return nombre_funcion(valor); /*Se coloca el nombre de la función, donde se llama a ella misma, a esto se le conoce como recursividad*/ } Cuando se llama a una función, se crea un nuevo juego de variables locales, de este modo, si la función hace una llamada a sí misma, se guardan sus variables y parámetros en la pila, y la nueva instancia de la función trabajará con su propia copia de las variables locales, cuando esta segunda instancia de la función retorna, recupera las variables y los parámetros de la pila y continua la ejecución en el punto en que había sido llamada. Las funciones recursivas deben tener una forma para poder salir y así evitar que éstas se estén llamando de manera infinita, ya que esto ocasionaría un error conocido como desbordamiento de pila. La recursividad y la iteración (ejecución en bucle) están muy relacionadas, cualquier acción que pueda realizarse con iteración se puede realizar con recursividad pero no viceversa. Ejemplo 3.: Dado n par, encontrar la suma de los enteros pares hasta N: 2+4+6+...+(N-2)+N #include<iostream> using namespace std; int suma(int n); int main() { int n, s; cout<<"Calculo de la suma de los enteros pares hasta Nnn"; do{ cout<<"Ingrese el valor de n: "; cin>>n; if(n % 2 == 1) cout<<"Error, el numero debe ser par!n"; if(n<2) cout<<"Error, el numero debe ser igual o mayor a 2n"; }while(n%2==1 || n<2); s=suma(n); cout<<”La suma de los numeros pares hasta "<<n<<" es: "<<s<<"n"; return 0; }
  • 10. Computación II. Unidad II: Funciones en C++ Página 10 int suma(int n) { if(n==2) return 2; else return (n + suma(n-2) ); } Ejemplo 4.: Cree un programa que calcule, usando una función recursiva, el factorial de un número dado: #include<iostream> using namespace std; double factorial(int); int validar(int); int main() { int n; cout << "Obtener el Factorial de:n"; cin >> n; n=validar(n); cout << "El Factorial de "<< n <<" es..."<<factorial(n); cout << "n"; return 0; } int validar(int n){ if(n<0){ cout<<”Error, ingrese el número nuevamente:”; cin>>n; return validar(n); } else return n; } double factorial(int num) { if(num<=1) return 1; else return(num*factorial(num-1)); //llamado interno de la función }
  • 11. Computación II. Unidad II: Funciones en C++ Página 11 TIPOS DE RECURSIVIDAD  Recursividad Simple: Aquella en cuya definición sólo aparece una llamada recursiva. double factorial(int num) { if(num<=1) return 1; else return(num*factorial(num-1)); } Corrida en frio de una Función Recursiva Simple num (num<=1) Num*factorial(num-1) factorial(num-1) Retorna 3 No 3*factorial(2) 2 6 2 No 2*factorial(1) 1 2 1 Si - - 1  Recursividad Múltiple: cuando hay más de una llamada a si misma dentro del cuerpo de la función. int fibo (int n) { if(n<=1) return 1; else return (fibo(n-1)+fibo(n-2)); } Corrida en frio de una Función Recursiva Múltiple n (n<=1) fibo(n-1)+fibo(n-2) fibo(n-1) fibo(n-2) Retorna 4 No fibo(3)+fibo(2) 3 2 5 3 No fibo(2)+fibo(1) 2 1 3 2 No fibo(1)+fibo(0) 1 1 2 1 Si - - - 1
  • 12. Computación II. Unidad II: Funciones en C++ Página 12  Recursividad Anidada: En algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí misma. int Ack( int n, int m ) { if(n==0 ) return(m+1); else{ if(m==0) return(Ack(n-1,1)); else return(Ack(n-1, Ack(n,m-1))); } } Corrida (parcial) de una Función Recursiva Anidada n m (n==0) (m==0) Ack(n-1,1) Ack(n-1, Ack(n,m-1)) Ack(n,m-1)) Retorna 1 1 No No - Ack(0, Ack(1,0)) Ack(1,0) - 1 0 No Si Ack(0,1) - - - 0 1 Si - - - - 2 Ack(0, 2) 0 2 Si - - - - 3  Recursividad Cruzada o Indirecta: son algoritmos donde una función provoca llamada a si misma de forma indirecta a través de otras funciones. //Función 1 int par(int nump) { if(nump==0) return 1; else return (impar(nump-1)); } //Función 2 int impar (int numi) { if(numi==0) return 0;
  • 13. Computación II. Unidad II: Funciones en C++ Página 13 else return(par(numi-1)); } Corrida de una Función Recursiva Cruzada (valor Par) nump numi (nump==0) (numi==0) impar(nump-1) par(numi-1) Retorna 4 - No - impar(3) - 1 - 3 - No - par(2) 1 2 - No - impar(1) - 1 - 1 - No - par(0) 1 0 - Si - - - 1 (verdadero) Corrida de una Función Recursiva Cruzada (valor Impar) nump numi (nump==0) (numi==0) impar(nump-1) par(numi-1) Retorna 3 - No - impar(2) - - 2 - No - par(1) 1 - No - impar(0) - - 0 - Si - - 0 (Falso)
  • 14. Computación II. Unidad II: Funciones en C++ Página 14 EJERCICIOS PROPUESTOS 1. Escriba una función que tenga un argumento de tipo entero y que devuelva un valor lógico (de tipo bool), true si el número es primo y false si es compuesto. 2. Un número entero n se dice que es perfecto si la suma de sus divisores incluyendo 1 y excluyéndose él coincide consigo mismo. Realizar un programa con una función que determine si un número dado es perfecto. Por ejemplo 6 es un número perfecto 1 + 2 + 3 = 6. 3. Un estudiante de geometría ha medido los lados de un prisma rectangular y obtenido valores A, B, C. Hay que calcular la distancia D que representa la longitud de una diagonal, de acuerdo con la fórmula: D = A2 + B2 + C2 en una función. 4. Realice un programa que lea dos números complejos (a,b) y (c,d) y emplee una función para calcular e imprimir el producto de los mismos. (a,b)*(c,d)=(ac-bd,ad+bc) 5. Un vendedor desea calcular su comisión total sobre la venta de varios artículos. Al vendedor le corresponde el 5% de la comisión sobre artículos cuyo precio es menor a Bs.F. 50 y el 8% de comisión sobre aquellos artículos cuyo precio es Bs.F. 50 o más. 6. Determinar y visualizar el número más grande de tres números dados, mediante una función, suponiendo que los 3 son distintos. 7. Elaborar un programa que emplee varias funciones para efectuar el cálculo del área de varias figuras geométricas (cilindro, cuadrado, triángulo rectángulo, rombo), y muestre las distintas opciones a través de un menú para que el usuario seleccione la figura geométrica de la que desea saber el área. 8. Haga un programa utilizando funciones que lea el código de un empleado, el salario básico por hora, el número de horas trabajadas durante una semana. Calcular el salario neto, teniendo en cuenta que si el número de horas trabajadas durante la semana es mayor de 36, esas horas de más se consideran horas extras tienen un 30% de recarga. Además se debe calcular la retención de 4% que se debe descontar del salario neto. Imprima el código del empleado y el salario neto a cobrar. 9. Se define el número combinatorio ( )de la siguiente forma: ( ) ( ) Escribir un programa que lea los valores de m y n y calcule el valor de la combinación. 10.Realice un programa que lea una vector de n elementos enteros: a) Sumar los números positivos. b) Contar los negativos. c) Contar los múltiplos de 5.
  • 15. Computación II. Unidad II: Funciones en C++ Página 15 d) Imprimir todos los resultados. 11. Elabore un programa que lea una matriz cuadrada A y calcule el producto de los valores ubicados en la primera columna. Luego sume todos los elementos de la diagonal principal y secundaria. Muestre el resultado en pantalla. 12. Cree un programa que calcule el cociente de dos números, validando previamente el divisor con una función recursiva. 13. Obtenga el resultado de la siguiente fórmula: n! x )(++ ! x + ! x ! x +xy n n 1... 432 1 432  14. Existen números que leídos de izquierda a derecha y de derecha a izquierda tienen el mismo valor. Ejemplo: 404, 111, 55, 323, 1045401; esta clase de números se les denomina CAPICÚA, determine a través de una función recursiva si un número dado es capicúa. 15. Escribir un programa que lea dos números x y n y calcule la suma de la progresión aritmética: 16. Obtener el promedio de n elementos de un vector de enteros mediante una función recursiva. 17. Calcular la suma de n números naturales, de la siguiente forma: S=1+2+3+…+(n-1)+n