funciones propias (funciones definidas por el...
TRANSCRIPT
Funciones Propias con C++ (funciones definidas por el usuario)
Jorge A. Martel Torres
Programación para ingeniería 1 Jorge A. Martel Torres
Introducción
• Nace del principio divide y vencerás, que consiste en dividir el problema en pequeños problemas a fin de que se simplifique la complejidad de problema.
• La función es un algoritmo que realiza una determinada tarea.
• Cualquier tipo de función prototipo en C/C++ se podría considerar un algoritmo (programa) interdependiente.
Programación para ingeniería 2 Jorge A. Martel Torres
Declaración y definición de las funciones propias
• Las funciones se declaran en la cabecera del programa(debajo de los include).
Programación para ingeniería Jorge A. Martel Torres 3
Declaración y definición de las funciones propias
• Las funciones pueden ser de alcance private (modular) o public (pública).
• Existe dos formas de declarar y definir la función:
Programación para ingeniería Jorge A. Martel Torres 4
public float fncCalcularArea (x, y, z) { float A; A = 2*((x * y) + (x* z) + (y* z)); return A; }
x
y
z A
private void fncPresenta()
{
int agno = 2010;
cout << “Presentando” << agno;
cout << “Jorge Martel \n”;
cout << “Recordando” << endl;
}
Formas de declaración y definición
Programación para ingeniería Jorge A. Martel Torres 5
#include <librería.h>
void fncPresenta() ;
void fncSumarVariables(int X, int Y);
float fncHipo01();
float fncHipo02(float fa, float fb);
main() {
instrucciones;
}
void fncPresenta() {
instrucciones de la funcion;
}
void fncSumarVariables(int X, int Y) {
instrucciones de la funcion;
}
float fncHipo01() {
instrucciones de la funcion;
}
float fncHipo02(float fa, float fb) {
instrucciones de la funcion;
}
#include <librería.h>
void fncPresenta() {
instrucciones de la funcion;
}
void fncSumarVariables(int X, int Y) {
instrucciones de la funcion;
}
float fncHipo01() {
instrucciones de la funcion;
}
float fncHipo02(float fa, float fb) {
instrucciones de la funcion;
}
main() {
instrucciones;
}
Tipos de funciones propias
Jorge A. Martel Torres
Programación para ingeniería Jorge A. Martel Torres 6
Tipos de funciones propias
• Sin retorno o tipo Void: – También conocidos como
sub programas. – Si la función es de tipo void,
estas solo ejecutan un conjunto de instrucciones.
– Las funciones de tipo void pueden tener paràmetros.
– Por medio de sus parámetros podrán recoger valores
– los parámetros serán las entradas (inputs) de la función.
Programación para ingeniería Jorge A. Martel Torres 7
void fncPresenta ( )
{
int agno = 2010;
cout << “Presentando” << agno;
cout << “Jorge Martel \n”;
cout << “Recordando” << endl;
}
void fncSumarVariables (int X, int Y)
{
int S = 0;
S = X + Y;
cout << S << endl;
}
x
y
Con Parametro(s)
Sin Parametro(s)
Tipos de funciones propias • Con retorno o tipo Tipo dato
– También ejecutan un conjunto de instrucciones.
– Las TD devuelven UN resultado a quien lo invoque.
– Si la función es de TIPO DATO [tipo fundamental (int, float, bool, etc.) o tipo_definido por el usuario], quiere decir que estas si devuelven UN RESULTADO al cumplir su tarea.
– Para que la función devuelva el resultado, usa la palabra reservada return.
– return permite que la función genere o produzca UNA salida ( output ).
Programación para ingeniería Jorge A. Martel Torres 8
float fncCalcularVolumen ( ) { float v; v = x * y * z; return v; }
float x = 1; y = 2; z =3;
float fncCalcularArea (int x, int y, int z) { float A; A = 2*((x * y) + (x* z) + (y* z)); return A; }
x
y
z
A
v
void fncCalcularVolumen (int x, int y, int z) { float v; v = x * y * z; }
• Los parámetros (input(s)) – Si la función tiene
parámetros, entonces las funciones tienen la capacidad de recoger valores a través de ellos(los parámetros).
• Return (output) – Por medio de return la
función devuelve UN resultado a quien lo invocó.
Programación para ingeniería 9 Jorge A. Martel Torres
x
y
z
float fncCalcularArea (int x, int y, int z) { float A; A = 2*((x * y) + (x* z) + (y* z)); return A; }
x
y
z
A
Tipos de funciones propias-síntesis
Programación para ingeniería Jorge A. Martel Torres 10
Sin parámetros Con parámetros
Vo
id
void fncNombreFuncionA ( )
{
Declaración de variables locales de A
instruccion1;
...
instruccion2;
}
void NombreFuncionB ( TD1 v1, TD2 v2 )
{
Declaración de variables locales de B
instruccion1;
...
instruccion2;
}
Tip
o d
ato
TipoDato fncNombreFuncionC ( )
{
Declaración de variables locales de C
instruccion1;
...
instruccion2;
return NombreVariable ;
}
TipoDato fncNombreFuncionD ( TD1 v3, TD2 v2 )
{
Declaración de variables locales de D
instruccion1;
...
instruccion2;
return NombreVariable ;
}
Tipos de funciones propias - ejemplos
Programación para ingeniería Jorge A. Martel Torres 11
Sin parámetros Con parámetros
Vo
id
void fncPresenta ( ) {
int agno = 2010;
cout << “Presentando” << agno;
cout << “Jorge Martel \n”;
cout << “Recordando” << endl;
}
void fncSumarVariables (int X, int Y) {
int S = 0;
S = X + Y;
cout << S << endl;
}
Tip
o d
ato
float fncHipo01 ( ) {
float H;
H = sqrt ((a*a) + (b*b));
return H;
}
double fncHipo02 (float fa, float fb) {
double HH;
HH = sqrt ((fa*fa) + (fb*fb));
return HH;
}
Invocación a las funciones propias
• Las funciones se invocan: – por su nombre y desde
cualquier otra función propia o desde la función main().
• Para invocar a las funciones propias, estas previamente deben existir (quiero decir que deben haber estado declarado y construido).
• Se invocan considerando el tipo de función propia ya descrita:
Programación para ingeniería Jorge A. Martel Torres 12
{ float A; A = 2*((x * y) + (x* z) + (y* z)); return A; }
float fncCalcularArea ( int x, int y, int z )
x y z
A
{ float mv; mv = fncCalcularArea (2, 3, 4); cout << mv; }
main()
– void: es suficiente con invocarlos por el nombre de la función para pasar el control.
• Ejemplos: – fncPresenta ( ); // invoca void sin parámetros
– fncSumarVariables (7, 3); // invoca void con parámetros
Programación para ingeniería Jorge A. Martel Torres 13
– Tipo dato: se hace necesario que se use un recipiente. El recipiente puede ser una variable o instrucción: • Una variable: El tipo de dato de la variable debe coincidir con
el tipo de dato que devuelva la función. – Ejemplo:
» double MS1, MS2; » MS1 = fncHipo01(); » MS1 = fncHipo02(3, 12); » cout << “Resultado de MS1 = ” << MS1 << endl; » cout << “Resultado de MS2 = ” << MS2 << endl;
• Una instrucción: puede ser cout, printf, … – Ejemplo:
» cout << “Otro Resultado es “ » << (fncHipo01()/3) + (2* fncHipo02(3, 12)) << endl;
Programación para ingeniería Jorge A. Martel Torres 14
Ejemplos de invocaciones
• main() • { • //invoca funciones de tipo void • fncPresenta (); // invoca void sin parámetros • fncSumarVariables(7, 3); // invoca void con parámetros • cout << “El valor de S = ” << S << endl; • //invocando funciones tipo dato • MS1 = fncHipo01(); • MS1 = fncHipo02(3, 12); • cout << “Resultado de MS1 = ” << MS1 << endl; • cout << “Resultado de MS2 = ” << MS2 << endl; • cout << “Otro Resultado es “ • << (fncHipo01()/3) + (2* fncHipo02(3, 12)) << endl; • getch(); • }
Programación para ingeniería Jorge A. Martel Torres 15