funciones propias (funciones definidas por el...

15
Funciones Propias con C++ (funciones definidas por el usuario) Jorge A. Martel Torres Programación para ingeniería 1 Jorge A. Martel Torres

Upload: trandieu

Post on 20-Sep-2018

235 views

Category:

Documents


1 download

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