SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente (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++
 

Destacado

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 FIJorge Iván Alba Hernández
 
Algorítmica para Programación
Algorítmica para ProgramaciónAlgorítmica para Programación
Algorítmica para ProgramaciónLoquenecesito,com
 
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 FIJorge Iván Alba Hernández
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoazuajesimon
 
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++AyrtonGza
 
Programacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosProgramacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosGustavo Tello Pais
 
Ejercicios raíces de funciones
Ejercicios raíces de funciones Ejercicios raíces de funciones
Ejercicios raíces de funciones Marco Jiménez
 
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'sRuderocker Billy
 
Manual analisis de algoritmos v1
Manual analisis de algoritmos v1Manual analisis de algoritmos v1
Manual analisis de algoritmos v1reny_so
 
EJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOSEJERCICIOS DE ALGORITMOS
EJERCICIOS DE ALGORITMOS1002pc3
 
Ejercicios resueltos pascal
Ejercicios resueltos pascalEjercicios resueltos pascal
Ejercicios resueltos pascalAdriana Jimenez
 

Destacado (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 a Guía funciones

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ónFacultad de Ciencias y Sistemas
 
A3 u1-16230227
A3 u1-16230227A3 u1-16230227
A3 u1-16230227erikalejo
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4flaquita_dany
 
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 mvEcler Mamani Vilca
 
Funciones C++
Funciones C++Funciones C++
Funciones C++Jarvis_15
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.comFresyMetal
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de bibliotecaSNPP
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).pptJOSECASHUUG
 
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-2jcbenitezp
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variablesjcbenitezp
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++GabrielFVilla15
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacioncharnisch
 

Similar a 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
 

Último

LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejormrcrmnrojasgarcia
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Carol Andrea Eraso Guerrero
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajeKattyMoran3
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdfEDNAMONICARUIZNIETO
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAJesus Gonzalez Losada
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.profandrearivero
 

Último (20)

LOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejorLOS AMBIENTALISTAS todo por un mundo mejor
LOS AMBIENTALISTAS todo por un mundo mejor
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
libro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguajelibro grafismo fonético guía de uso para el lenguaje
libro grafismo fonético guía de uso para el lenguaje
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICA
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
Acuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptxAcuerdo segundo periodo - Grado Noveno.pptx
Acuerdo segundo periodo - Grado Noveno.pptx
 
Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.
 

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