El documento habla sobre las funciones en C++. Define una función como un grupo de sentencias o declaraciones con un nombre asignado que puede ser llamado desde cualquier parte del programa. Explica la sintaxis de las funciones, cómo pasar argumentos por valor y referencia, el uso de void, valores por defecto, recursividad y otras consideraciones de eficiencia.
Evaluación del riesgo tecnologías informáticas.pdf
Funciones en C++
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