Funciones Propias (funciones definidas por el usuario)

Anuncio
Funciones Propias con C++
(funciones definidas por el usuario)
Jorge A. Martel Torres
Programación para ingeniería
Jorge A. Martel Torres
1
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
Jorge A. Martel Torres
2
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
private void fncPresenta()
{
int agno = 2010;
cout << “Presentando” << agno;
cout << “Jorge Martel \n”;
cout << “Recordando” << endl;
}
public float fncCalcularArea (x, y, z)
x {
float A;
y
A = 2*((x * y) + (x* z) + (y* z));
z
return A;
}
Jorge A. Martel Torres
A
4
Formas de declaración y definición
#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;
}
Programación para ingeniería
#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;
}
Jorge A. Martel Torres
5
Tipos de funciones propias
Jorge A. Martel Torres
Programación para ingeniería
Jorge A. Martel Torres
6
Tipos de funciones propias
Sin Parametro(s)
• 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
void fncPresenta ( )
{
int agno = 2010;
cout << “Presentando” << agno;
cout << “Jorge Martel \n”;
cout << “Recordando” << endl;
}
Jorge A. Martel Torres
Con Parametro(s)
void fncSumarVariables (int X, int Y)
{
int S = 0;
x
S = X + Y;
y
cout << S << endl;
}
7
Tipos de funciones propias
float x = 1; y = 2; z =3;
• 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
float fncCalcularVolumen ( )
{
float v;
v = x * y * z;
return v;
}
v
float fncCalcularArea (int x, int y, int z)
{
x
float A;
y
A = 2*((x * y) + (x* z) + (y* z));
return A;
z
}
Jorge A. Martel Torres
A
8
• Los
(input(s))
parámetros
– Si la función tiene
parámetros, entonces
las funciones tienen la
capacidad de recoger
valores a través de
ellos(los parámetros).
void fncCalcularVolumen (int x, int y, int z)
{
y
float v;
v = x * y * z;
z
}
x
• Return (output)
– Por medio de return la
función devuelve UN
resultado a quien lo
invocó.
Programación para ingeniería
float fncCalcularArea (int x, int y, int z)
x {
float A;
y
A = 2*((x * y) + (x* z) + (y* z));
return A;
z
}
Jorge A. Martel Torres
A
9
Tipos de funciones propias-síntesis
Tipo dato
Void
Sin parámetros
Con parámetros
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;
}
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 ;
}
}
Programación para ingeniería
Jorge A. Martel Torres
10
Tipos de funciones propias - ejemplos
Tipo dato
Void
Sin parámetros
Con parámetros
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;
}
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;
}
Programación para ingeniería
Jorge A. Martel Torres
11
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:
float fncCalcularArea ( int x, int y, int z )
{
float A;
A = 2*((x * y) + (x* z) + (y* z));
return A;
}
x
y
A
z
main()
{
float mv;
mv = fncCalcularArea (2, 3, 4);
cout << mv;
}
Programación para ingeniería
Jorge A. Martel Torres
12
– 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
Descargar