SlideShare una empresa de Scribd logo
1 de 18
FUNCIONES 
Definición de función y su sintaxis 
Llamado y Retorno 
Funciones sin tipo. Uso de void 
Retornar el valor a la función principal 
Argumentos pasados por valor y referencia 
Consideraciones de eficiencia 
Funciones en linea 
Valores por defecto en parametros 
Declaración de funciones 
Recursividad 
Introducción a la Informática 
I Semestre de Ing. Automática 
Universidad del Cauca 
Docente: Felipe Cruz Eraso
FUNCION - DEFINICION 
Le permite al programador estructurar los programas 
en pequeños segmentos de código que realizan una 
tarea individual. 
En C++ es un grupo de sentencias o declaraciones 
Al cual se le asigna un nombre que puede ser llamado 
Desde cualquier punto del programa. 
Sintaxis 
Tipo nombre (parametro1, parametro2, …) 
{ Declaraciones}
FUNCION - SINTAXIS 
Tipo nombre (parametro1, parametro2, …) 
{ Declaraciones} 
Tipo, es el tipo de dato del valor retornado por la función 
Nombre, es el identificador con el cual se va a llamar la 
Función 
Parámetro, es un valor que tiene un tipo de dato y un 
Identificador nombre, se convierte en una variable que se 
Declara localmente en la función, y externamente sirve 
Para pasarle argumentos donde la función es llamada. 
Declaraciones: Bloque de instrucciones que implementan 
Lo que hará la función y van entre { }
FUNCION - SINTAXIS 
Ejemplo: 
// Ejemplo de función 
#include <iostream> 
using namespace std; 
int suma (int a, int b) 
{ 
int r; r=a+b; return r; 
} 
int main () 
{ 
int z; z = suma (5,3); 
cout << "El resultado es" << z; 
system("pause"); 
} 
Tipo de dato del valor retornado 
Nombre con el que se llamará la función 
Parámetros que actuan como variables 
Locales, pero externamente permiten 
Capturar los argumentos con los cuales 
Se realizará un computo o calculo. 
Sentencias o instrucciones 
Realizan la tarea de la función
FUNCION - SINTAXIS 
Funcion main () es la funcion principal 
Desde esta función se llaman las demás funciones 
No importa el orden como se escriban las funciones, el 
Programa siempre llamará primero a la función main 
automáticamente. 
El codigo de otra función solo se ejecuta si es llamada por 
La función main.
Llamado y retorno 
La función main llama 
a la funcion suma 
despues de la 
Declaración de la 
variable z y la función 
suma retorna un 
Valor entero que se 
asignará a z. 
Una función puede ser 
Llamada varias veces
Llamado y retorno 
// function example 
#include <iostream> 
using namespace std; 
int resta (int a, int b) 
{ 
int r; 
r=a-b; 
return r; 
} 
int main () 
{ 
int x=5, y=3, z; 
z = resta (7,2); 
cout << "El primer resultado es " << z << 'n'; 
cout << "El segundo resultado es " << resta (7,2) 
<< 'n'; 
cout << "El tercer resultado es " << resta (x,y) << 
'n'; 
z= 4 + resta (x,y); // lo mismo que decir z= 4 + 2 
cout << "El cuarto resultado es " << z << 'n'; 
system ("pause"); 
}
USO DE VOID 
La función podria no 
retornar valores en este 
caso es de tipo Void. 
Cuando se escribe con 
(void), se especifica que 
cuando se llame esta no 
tomará ningún valor de 
parametro 
// void function example 
#include <iostream> 
using namespace std; 
void mensaje () //podría ser también 
void mensaje (void) 
{ 
cout << "Hola estudiantes Ingeniería 
automatica!"; 
} 
int main () 
{ 
mensaje (); 
system ("pause"); 
}
Retorno de valor a main() 
Generalmente la función main es de tipo int. 
Se entiende que cuando todo el proceso está bien, 
manera implícita o explicita se retorna un cero 
El entorno entiende un cero como proceso exitoso. 
Las demás funciones con tipo, deberían especificar un 
valor de retorno aun si no se usa
Argumentos pasados por 
valor y por referencia 
En el siguiente ejemplo los argumentos se pasan por 
valor. 
Las variables a y b pueden ser modificadas 
internamente, y no tener ningún efecto en el exterior. 
Pero para acceder externamente, los valores de una 
variable que se encuentra dentro de una función se debe 
pasar por referencia. 
Veamos el siguiente ejemplo
Argumentos pasados por 
valor y por referencia 
// passing parameters by reference 
#include <iostream> 
using namespace std; 
void duplicar (int& a, int& b, int& c) 
{ 
a*=2; 
b*=2; 
c*=2; 
} 
int main () 
{ 
int x=1, y=3, z=7; 
duplicar (x, y, z); 
cout << "x=" << x << ", y=" << y << ", z=" << z; 
//return 0; 
system ("pause"); 
} 
En este caso se la función duplicar 
Define por referencia las variables 
a, b, y c 
Cualquier modificación de las variables 
A,b o c modificará las variables 
X, y o z. 
Si la función duplicar se definiera así: 
void duplicar (int a, int b, int c) 
No se pasaría por referencia ningun valor 
Y esto provocaria que salgan como 
Resultado los mismos valores dentro 
De main para x, y o z (1, 3 y 7).
Consideraciones de eficiencia 
y referencia a constantes 
El paso de argumentos por valor a parámetros definidos de tipo entero por 
ejemplo, puede causar una sobre carga de memoria, y esto afecta el 
desempeño de un programa, debido que pasar parámetros por valor genera 
una copia de los datos. 
string concatenar (string a, string b) 
{ 
return a+b; 
} 
En el ejemplo anterior se concatena dos cadenas a y b en una sola, cuando 
la función sea llamada desde otra ubicación del programa se creará una 
copia de la información y esto puede tomar varias celdas de memoria. 
Esto puede evitarse si se hace por referencia, con lo cual no se copian los 
datos 
string concatenar (string& a, string& b) 
{ return a+b; }
Consideraciones de eficiencia 
y referencia a constantes 
Sin embargo el uso de argumentos por referencia puede 
provocar que se cambie los valores de los parámetros, en 
cualquier momento 
Para evitar esto se declaran los argumentos como 
constantes. 
string concatenate (const string& a, const string& b) 
{ return a+b; }
Funciones en línea 
El proceso de llamar funciones puede provocar 
ineficiencia debido al apilamiento de parámetros y 
cambios o saltos dentro del programa. 
El escribir la palabra inline antes de la función obliga al 
compilador que copie el código en el sitio de ejecución. 
inline string concatenar (const string& a, const string& b) { 
return a+b; } 
Inline le da la posibilidad al compilador que realice una 
expansión en línea del código de la función en todos 
los sitios donde sea llamada.
Valores por defecto en 
los parámetros 
// default values in functions 
#include <iostream> 
using namespace std; 
int divide (int a, int b=2) 
{ 
int r; 
r=a/b; 
return (r); 
} 
int main () 
{ 
cout << divide (12) << 'n'; 
cout << divide (20,4) << 'n'; 
//return 0; 
system("pause"); 
} 
El parámetro b, asume un valor 
por defecto 
También se puede pasar un 
parámetro por valor y tiene 
precedencia este que el 
asignado por defecto.
Valores por defecto en 
los parámetros 
// default values in functions 
#include <iostream> 
using namespace std; 
int divide (int a, int b=2) 
{ 
int r; 
r=a/b; 
return (r); 
} 
int main () 
{ 
cout << divide (12) << 'n'; 
cout << divide (20,4) << 'n'; 
//return 0; 
system("pause"); 
} 
El parámetro b, asume un valor 
por defecto 
También se puede pasar un 
parámetro por valor y tiene 
precedencia este que el 
asignado por defecto.
Declarando funciones 
La declaración de una función 
debe realizarse antes de su 
llamado. 
Es posible declarar su tipo y 
los tipos de datos de los 
parámetros y definirla después. 
Sin embargo la función main 
siempre deberá ir después de 
la declaración de las funciones 
para que pueda ser llamada 
dentro de main. 
Ejemplo
Recursividad 
La recursividad es la propiedad mediante la cual las funciones 
tienen la capacidad de llamarse por si mismas. 
Esto es util en procesos de ordenamiento, cálculos de factorial, 
// factorial calculator 
#include <iostream> 
using namespace std; 
long factorial (long a) 
{ 
if (a > 1) 
return (a * factorial (a-1)); 
else 
return 1; 
} 
int main () 
{ 
long numero; 
cout << "Calculo de factorial, ingrese su numero:" << std::endl; 
cin >> numero; 
cout << numero << "! = " << factorial (numero); 
//return 0; 
system("pause"); Ejemplo

Más contenido relacionado

La actualidad más candente

Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Idalia Tristan
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Introducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CIntroducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CDiego Santimateo
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfDIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfJuanPatricioLemaChil
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do WhileJoshe Varillas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++Idalia Tristan
 

La actualidad más candente (20)

Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Librerias de C++
Librerias de C++Librerias de C++
Librerias de C++
 
Introducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CIntroducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje C
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfDIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do While
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Conceptos Basicos de POO
Conceptos Basicos de POOConceptos Basicos de POO
Conceptos Basicos de POO
 
16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++
 

Destacado

Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificadocompumet sac
 
Manual c++
Manual c++Manual c++
Manual c++slent
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesLenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Nilson Payares
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ Eli Diaz
 
Aprenda C++ Como Si Estuviera En Primero
Aprenda C++ Como Si Estuviera En PrimeroAprenda C++ Como Si Estuviera En Primero
Aprenda C++ Como Si Estuviera En Primerobenoffi7
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoEnAutomático
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientosRichard Robalino
 
Programación en c++
Programación en c++Programación en c++
Programación en c++andermijan
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)Miriam Ruiz
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en CAnesGy SD
 

Destacado (20)

Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Introducción c++
Introducción c++Introducción c++
Introducción c++
 
Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
 
Manual c++
Manual c++Manual c++
Manual c++
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesLenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
(Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++ (Meta 5.1)función sin parámetros que no retorna valor dev c++
(Meta 5.1)función sin parámetros que no retorna valor dev c++
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
Aprenda C++ Como Si Estuviera En Primero
Aprenda C++ Como Si Estuviera En PrimeroAprenda C++ Como Si Estuviera En Primero
Aprenda C++ Como Si Estuviera En Primero
 
Clase 5
Clase 5Clase 5
Clase 5
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Revista digital
Revista digitalRevista digital
Revista digital
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 

Similar a Funciones en C++: Definición, sintaxis, tipos, parámetros, recursividad

Similar a Funciones en C++: Definición, sintaxis, tipos, parámetros, recursividad (20)

Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Funciones
FuncionesFunciones
Funciones
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
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
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Unidad educativa
Unidad educativaUnidad educativa
Unidad educativa
 
sentenciareturnymetodos
sentenciareturnymetodossentenciareturnymetodos
sentenciareturnymetodos
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
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
 
Clase 19
Clase 19Clase 19
Clase 19
 
Utp pti_s6y7_funciones y variables
 Utp pti_s6y7_funciones y variables Utp pti_s6y7_funciones y variables
Utp pti_s6y7_funciones y variables
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 

Funciones en C++: Definición, sintaxis, tipos, parámetros, recursividad

  • 1. FUNCIONES Definición de función y su sintaxis Llamado y Retorno Funciones sin tipo. Uso de void Retornar el valor a la función principal Argumentos pasados por valor y referencia Consideraciones de eficiencia Funciones en linea Valores por defecto en parametros Declaración de funciones Recursividad Introducción a la Informática I Semestre de Ing. Automática Universidad del Cauca Docente: Felipe Cruz Eraso
  • 2. FUNCION - DEFINICION Le permite al programador estructurar los programas en pequeños segmentos de código que realizan una tarea individual. En C++ es un grupo de sentencias o declaraciones Al cual se le asigna un nombre que puede ser llamado Desde cualquier punto del programa. Sintaxis Tipo nombre (parametro1, parametro2, …) { Declaraciones}
  • 3. FUNCION - SINTAXIS Tipo nombre (parametro1, parametro2, …) { Declaraciones} Tipo, es el tipo de dato del valor retornado por la función Nombre, es el identificador con el cual se va a llamar la Función Parámetro, es un valor que tiene un tipo de dato y un Identificador nombre, se convierte en una variable que se Declara localmente en la función, y externamente sirve Para pasarle argumentos donde la función es llamada. Declaraciones: Bloque de instrucciones que implementan Lo que hará la función y van entre { }
  • 4. FUNCION - SINTAXIS Ejemplo: // Ejemplo de función #include <iostream> using namespace std; int suma (int a, int b) { int r; r=a+b; return r; } int main () { int z; z = suma (5,3); cout << "El resultado es" << z; system("pause"); } Tipo de dato del valor retornado Nombre con el que se llamará la función Parámetros que actuan como variables Locales, pero externamente permiten Capturar los argumentos con los cuales Se realizará un computo o calculo. Sentencias o instrucciones Realizan la tarea de la función
  • 5. FUNCION - SINTAXIS Funcion main () es la funcion principal Desde esta función se llaman las demás funciones No importa el orden como se escriban las funciones, el Programa siempre llamará primero a la función main automáticamente. El codigo de otra función solo se ejecuta si es llamada por La función main.
  • 6. Llamado y retorno La función main llama a la funcion suma despues de la Declaración de la variable z y la función suma retorna un Valor entero que se asignará a z. Una función puede ser Llamada varias veces
  • 7. Llamado y retorno // function example #include <iostream> using namespace std; int resta (int a, int b) { int r; r=a-b; return r; } int main () { int x=5, y=3, z; z = resta (7,2); cout << "El primer resultado es " << z << 'n'; cout << "El segundo resultado es " << resta (7,2) << 'n'; cout << "El tercer resultado es " << resta (x,y) << 'n'; z= 4 + resta (x,y); // lo mismo que decir z= 4 + 2 cout << "El cuarto resultado es " << z << 'n'; system ("pause"); }
  • 8. USO DE VOID La función podria no retornar valores en este caso es de tipo Void. Cuando se escribe con (void), se especifica que cuando se llame esta no tomará ningún valor de parametro // void function example #include <iostream> using namespace std; void mensaje () //podría ser también void mensaje (void) { cout << "Hola estudiantes Ingeniería automatica!"; } int main () { mensaje (); system ("pause"); }
  • 9. Retorno de valor a main() Generalmente la función main es de tipo int. Se entiende que cuando todo el proceso está bien, manera implícita o explicita se retorna un cero El entorno entiende un cero como proceso exitoso. Las demás funciones con tipo, deberían especificar un valor de retorno aun si no se usa
  • 10. Argumentos pasados por valor y por referencia En el siguiente ejemplo los argumentos se pasan por valor. Las variables a y b pueden ser modificadas internamente, y no tener ningún efecto en el exterior. Pero para acceder externamente, los valores de una variable que se encuentra dentro de una función se debe pasar por referencia. Veamos el siguiente ejemplo
  • 11. Argumentos pasados por valor y por referencia // passing parameters by reference #include <iostream> using namespace std; void duplicar (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=1, y=3, z=7; duplicar (x, y, z); cout << "x=" << x << ", y=" << y << ", z=" << z; //return 0; system ("pause"); } En este caso se la función duplicar Define por referencia las variables a, b, y c Cualquier modificación de las variables A,b o c modificará las variables X, y o z. Si la función duplicar se definiera así: void duplicar (int a, int b, int c) No se pasaría por referencia ningun valor Y esto provocaria que salgan como Resultado los mismos valores dentro De main para x, y o z (1, 3 y 7).
  • 12. Consideraciones de eficiencia y referencia a constantes El paso de argumentos por valor a parámetros definidos de tipo entero por ejemplo, puede causar una sobre carga de memoria, y esto afecta el desempeño de un programa, debido que pasar parámetros por valor genera una copia de los datos. string concatenar (string a, string b) { return a+b; } En el ejemplo anterior se concatena dos cadenas a y b en una sola, cuando la función sea llamada desde otra ubicación del programa se creará una copia de la información y esto puede tomar varias celdas de memoria. Esto puede evitarse si se hace por referencia, con lo cual no se copian los datos string concatenar (string& a, string& b) { return a+b; }
  • 13. Consideraciones de eficiencia y referencia a constantes Sin embargo el uso de argumentos por referencia puede provocar que se cambie los valores de los parámetros, en cualquier momento Para evitar esto se declaran los argumentos como constantes. string concatenate (const string& a, const string& b) { return a+b; }
  • 14. Funciones en línea El proceso de llamar funciones puede provocar ineficiencia debido al apilamiento de parámetros y cambios o saltos dentro del programa. El escribir la palabra inline antes de la función obliga al compilador que copie el código en el sitio de ejecución. inline string concatenar (const string& a, const string& b) { return a+b; } Inline le da la posibilidad al compilador que realice una expansión en línea del código de la función en todos los sitios donde sea llamada.
  • 15. Valores por defecto en los parámetros // default values in functions #include <iostream> using namespace std; int divide (int a, int b=2) { int r; r=a/b; return (r); } int main () { cout << divide (12) << 'n'; cout << divide (20,4) << 'n'; //return 0; system("pause"); } El parámetro b, asume un valor por defecto También se puede pasar un parámetro por valor y tiene precedencia este que el asignado por defecto.
  • 16. Valores por defecto en los parámetros // default values in functions #include <iostream> using namespace std; int divide (int a, int b=2) { int r; r=a/b; return (r); } int main () { cout << divide (12) << 'n'; cout << divide (20,4) << 'n'; //return 0; system("pause"); } El parámetro b, asume un valor por defecto También se puede pasar un parámetro por valor y tiene precedencia este que el asignado por defecto.
  • 17. Declarando funciones La declaración de una función debe realizarse antes de su llamado. Es posible declarar su tipo y los tipos de datos de los parámetros y definirla después. Sin embargo la función main siempre deberá ir después de la declaración de las funciones para que pueda ser llamada dentro de main. Ejemplo
  • 18. Recursividad La recursividad es la propiedad mediante la cual las funciones tienen la capacidad de llamarse por si mismas. Esto es util en procesos de ordenamiento, cálculos de factorial, // factorial calculator #include <iostream> using namespace std; long factorial (long a) { if (a > 1) return (a * factorial (a-1)); else return 1; } int main () { long numero; cout << "Calculo de factorial, ingrese su numero:" << std::endl; cin >> numero; cout << numero << "! = " << factorial (numero); //return 0; system("pause"); Ejemplo