Você está na página 1de 22

Programacin I

Unidad 01
Funciones
Unidad 01
Funciones
Objetivos

Definicin
Demostracin de uso de funciones
Funcin principal
Funciones comunes
Sintaxis de una funcin en C
Jerarqua de funciones
Valores de retorno
Parmetros de una funcin
Nombres de espacio (namespaces)
Programacin I - 2016-2 - Unidad 1 - Funciones

Definicin
Una funcin es un bloque de cdigo que realiza una tarea determinada.
Ej. Pintar() pinta la pantalla de color negro

Una funcin al realizar una tarea determinada puede ser llamada muchas
veces y siempre realizar la misma tarea.
Ej. Pintar()

Una funcin puede recibir parmetros (valores) que pueden ayudar a la


funcin a realizar una tarea de forma distinta.
Ej. Pintar(Azul), Pintar(Rojo)

Una funcin puede devolver un valor para que as pueda responder algo a la
persona que la llam.
Ej. AreaPintada = Pintar(Azul)

Cuando un conjunto de instrucciones se repiten ms de una vez en un


programa, entonces lo ideal es elaborar una funcin que contenga esas
instrucciones la cual ser utilizada varias veces.
Programacin I - 2016-2 - Unidad 1 - Funciones

Programa sin Funciones y con


Funciones
Se le pide escribir un programa que calcule la suma de los
dgitos de dos nmeros enteros positivos de 3 dgitos.
Programa sin Funciones #include
Programa<iostream>
con Funciones
#include <iostream>
#include <conio.h>
#include <conio.h>
using namespace std;
using namespace std;
int SumaDigitos(int num)
int main()
{ int s=0, c, d, u;
{ int c1, d1, u1, c2, d2, u2;
c = num / 100;
int n1 = 0, n2 = 0, s1=0, s2=0;
d = (num / 10) % 10;
cout<<"Ingrese el numero1 y el
u = num % 10;
numero2:";
s = c + d + u;
cin>>n1 >> n2;
return s;
}
c1 = n1 / 100;
d1 = (n1 / 10) % 10;
int main()
u1 = n1 % 10;
{ int n1 = 0, n2 = 0, suma;
s1 = c1 + d1 + u1;
cout<<"Ingrese el numero1 y el
numero2:";
c2 = n2 / 100;
cin>>n1 >> n2;
d2 = (n2 / 10) % 10;
u2 = n2 % 10;
suma = SumaDigitos(n1) +
s2 = c2 + d2 + u2;
SumaDigitos(n2);
cout<<"La suma de digitos es:
cout<<"La suma de digitos es: "<<
"<<s1+s2;
suma;
_getch();
_getch();
return 0;
return 0;
}
Programacin I - 2016-2 - Unidad 1 - Funciones

Funcin principal (main)


Todos los programas comienzan Main sin parmetros
#include <iostream>
siempre por la funcin main.
int main()
La funcin main es el bloque {
principal y devuelve un tipo de // Esta es la primera linea del
programa
dato entero. Este valor return 0;
representa si el programa }
acab con o sin errores. El valor
0 significa que no hubieron Main con parmetros
errores y el valor 1 significa que #include <iostream>
hubieron errores.
int main(int argc, char* argv[])
{
La funcin main puede o no // Esta es la primera linea del
recibir parmetros. Si recibe programa
return 0;
parmetros, argc y argv tienen }
significados especiales.
Programacin I - 2016-2 - Unidad 1 - Funciones

Funciones comnes
Funcin Ejemplo de uso Descripcin

getchar char c = getchar(); Espera a que el usuario presione una tecla


y devuelve la tecla presionada. Para usarlo
correctamente la memoria del teclado debe
estar limpia fflush(stdin)
fflush fflush(stdin); // limpio el teclado Dependiendo del parmetro que se le pase,
limpiar la memoria asociada un archivo o
dispositivo.
srand y srand(time(0)); Funciones para crear numero aleatorios:
rand int n1 = rand() % 10 + 1; srand inicia el generador de nmeros
aleatorios y rand devuelve un nmero
aleatorio entre 0 y RAND_MAX, si tratamos
el resultado podemos obtener nmeros
entre el rango que nosotros deseemos. Por
ejemplo: n1 toma cualquier valor aleatoria
entre 1 a 10.
sqrt double raiz = sqrt((double)4.0); Devuelve la raz cuadrada del nmero.
Programacin I - 2016-2 - Unidad 1 - Funciones

Sintaxis de una funcin en C


<tipo de dato retorno> <nombre funcin> ( <parmetros> )
{ [instrucciones;]
return valorDeRetorno;
}

<tipo de dato int, float, double, long, char, bool, etc.


retorno> void
<nombre funcin> El nombre que se le desee dar a la funcin siempre y
cuando respete las reglas establecidas para nombrar
variables.
<parmetros> 0, 1 o ms parmetros. Cada parmetro debe
especificar el tipo de dato y el nombre. Los parmetros
se deben separar con cmas.
return Devuelve el valor esperado. Si la funcin tiene como
tipo de dato retorno un int entonces el valorDeRetorno
deber ser un int.
En el caso de que el tipo de dato retorno sea void
bastar con poner return;
Programacin I - 2016-2 - Unidad 1 - Funciones

Ejemplos de funciones
void int DameSuma(int a, void ImprimeNumero(int
ImprimeAlgo() int b) num)
{ { {
int suma = a + b; coutEl numero es: <<
cout<<Algo; return suma; num;
return; } return;
}
double Promedio(double a, double }
void Suma_e_Imprime(int a, int b)
b, int c) {
{ int suma = a + b;
double suma = a + b + cout<<La suma es: << suma;
(double)c; return;
double prom = suma / 3.0; }
return prom;
}
bool Aprobaste(double void Combina(int a, int b)
{
nota) int suma = DameSuma(a, b);
{ double prom = Promedio(suma, 15.0, 10);
if (nota >= 12.5) if (Aprobaste(prom))
cout<<Felicitaciones;
return true; else
else cout<<Lo siento;
return false; }
}
Programacin I - 2016-2 - Unidad 1 - Funciones

Jerarqua de funciones
La funcin main, es la nica que se ejecuta
de forma automtica.

El resto de funciones se ejecutan a medida


que se les vaya llamando.

As como en la funcin main se puede llamar


a otras funciones como el sqrt, pow, _getch,
etc. En las funciones que nosotros
implementemos tambin se puede invocar a
otras funciones.
Programacin I - 2016-2 - Unidad 1 - Funciones

#include <iostream>
#include <conio.h>
using namespace std;

int elevaAlCuadrado(int NumeroAElevar)


{
return NumeroAElevar * NumeroAElevar;
Las funciones }
van antes de la
funcin main void imprimeLinea()
{
cout<<--------------------------------\n;
}
Se utilizan
int main()
{
Las funciones
int N, cuadrado; creadas
cout<<Ingrese el valor de N:;
cin>>N;
cuadrado = elevaAlCuadrado (N);
cout<<El cuadrado de N es << cuadrado;
La funcin main
es la que se imprimeLinea();
ejecuta al inicio imprimeLinea();
del programa. cuadrado = elevaAlCuadrado(cuadrado);
cout<<El cuadrado de N2 es << cuadrado;

_getch(); // espero un caracter, ejemplo:enter

return 0;
}
Programacin I - 2016-2 - Unidad 1 - Funciones

#include <iostream>
#include <conio.h>
using namespace std;

Tambin se pueden declarar int elevaAlCuadrado(int NumeroAElevar);


las cabeceras de las void imprimeLinea();
funciones antes del main
void main()
{
int N, cuadrado;
cout<<Ingrese el valor de N:;
cin>>N;
cuadrado = elevaAlCuadrado (N);
cout<<El cuadrado de N es << cuadrado;

imprimeLinea();
imprimeLinea();

cuadrado = elevaAlCuadrado(cuadrado);
cout<<El cuadrado de N es << cuadrado;
_getch();
}

int elevaAlCuadrado(int NumeroAElevar)


{
return NumeroAElevar * NumeroAElevar;
}
Y la implementacin de las
funciones despus del main void imprimeLinea()
{
cout<<--------------------------------\n;
}
Programacin I - 2016-2 - Unidad 1 - Funciones

Valores de retorno
Una funcin puede devolver cualquier tipo de dato
conocido pero hay que tener en cuenta lo siguiente:

Una funcin que devuelve un tipo de dato void no


necesita tener un comando return.

Una funcin que no devuelve void, siempre debe tener un


comando return que devuelva el tipo de dato especificado.

El return marca el fin de ejecucin de la funcin. Una


vez que se ejecuta el comando return, la funcin acaba sin
importar que lneas de cdigo faltan ejecutar, es por ello
que por lo general se pone al final de la funcin.
Programacin I - 2016-2 - Unidad 1 - Funciones

Parmetros de una funcin Se crean


resulta copias de n1 y
n1 n2 do n2 en a y b
20 30 50

int main()
{ a b
int n1 = 20; 20 30
int n2 = 30;
int DameSuma(int a, int
int resultado= DameSuma(n1, b)
n2); {
int suma = a + b;
cout<<La suma es << return suma;
resultado; }
sum
a
_getch(); 50
return 0;
}
NOTA: Las variables en el main y los parmetros en DameSuma pueden llamarse
igual, pero son diferentes.
Programacin I - 2016-2 - Unidad 1 - Funciones

Consideraciones
No pueden existir 2 funciones con el mismo
nombre y mismos parmetros.

Las funciones o sus cabeceras se deben


declarar antes de la funcin main.

Si la funcin A utiliza a la funcin B, la funcin


B debe estar declarada antes que la funcin A.

No puede declarar variables con el mismo


nombre que las funciones.
Ejemplos
Ejemplo 1
Realizar un programa para calcular las races reales de una ecuacin
cuadrtica:
ax 2 bx c 0

Utilice una funcin para calcular la raz.

#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
float raiz(float a, float b, float d)
{
float res = (-b + d) / (2 * a);
return res;
}

int main()
{
Ejemplo 2
Realice un programa que permita leer 2 valores enteros
y devuelva la suma y resta de estos nmeros.

Utilice una funcin para la suma y una para la resta.

#include <iostream>
#include <conio.h>
using namespace std;
int sumar(int a, int b)
{
return a + b;
}

int restar(int a, int b)


{
int res = a - b;
return res;
}

int main()
Namespaces
Programacin I - 2016-2 - Unidad 1 - Funciones

Nombres de espacio
(namespaces)
Los namespaces se utilizan para agrupar funciones.

No son una caracterstica de C, sino de C++.

Al agrupar funciones podemos tener dos o ms funciones con el mismo


nombre siempre y cuando estn en diferentes namespaces.

Para agrupar a las funciones solo basta colocar a todas las funciones
dentro de un bloque como el que sigue:
namespace <nombre>
{
}

Donde <nombre> es el nombre de la agrupacin de funciones.

Para acceder a las funciones dentro del namespace basta con colocar
<nombre>::<nombre funcion>()
Programacin I - 2016-2 - Unidad 1 - Funciones

Ejemplo de namespace
#include <iostream>
#include <conio.h>
using namespace std;
void ImprimeLinea()
{
cout<<Linea\n";
}

namespace guiones
{
void ImprimeLinea()
{
cout<<"------------------------\n";
}
}
Funciones matemticas
Programacin I - 2016-2 - Unidad 1 - Funciones

Biblioteca math.h
Contiene funciones para clculos matemticos. Algunas de las
ms tiles son:
Prototipo Tipo de Descripcin
retorno
fabs(double); double Valor absoluto.
sqrt(double); double Raz cuadrada.
pow(double, double Devuelve el primer argumento elevado a la
double); potencia del segundo argumento.
exp(double); double Devuelve e (base de los logaritmos naturales)
elevado a la potencia de su argumento).
log(double); double Logaritmo natural (ln).
log10 (double); double Logaritmo base 10.
ceil (double); double Devuelve el entero ms pequeo, mayor o igual
que su argumento.
floor (double); double Devuelve el entero ms grande, menor o igual
que su argumento.
acos(double); double Arco coseno.
asin(double); double Arco seno.
atan(double); double Arco tangente.
cos(double); double Coseno.
sin(double); double Seno.
tan(double); double Tangente.

Você também pode gostar