Sunteți pe pagina 1din 32

21/10/2012

Mg. Edgar Ruiz Lizama

21/10/2012

FUNCIONES
Todo programa en C es una coleccin de funciones donde main es la funcin principal.

Las funciones pueden clasificarse como: 1) Funciones con valor devuelto: Function 2) Funciones que no devuelven valor : Procedure

Mg. Edgar Ruiz Lizama

21/10/2012

1.

Funciones con valor devuelto. Son aquellas funciones que devuelven un valor o resultado a la seccin donde se hizo la llamada. FORMATO: Tipo_dato Identificador lista_ argumentos de retorno { . . . . . . .// cdigo de la funcin return <valor devuelto> Mg. Edgar Ruiz Lizama }

21/10/2012

Ejemplo 1:
#include <iostream> #include <cmath> float RaizCuadrada(int p); using namespace std; int main() //funci2.cpp { float r=25; cout<<"La Raiz cuadrada de "<<r<<" es = "<<RaizCuadrada(r); cout<<endl; return 0; }

float RaizCuadrada (int p) { return sqrt(p); }


Mg. Edgar Ruiz Lizama

21/10/2012

2. Funciones que no devuelven valor

Las funciones que no devuelven valor (o procedimientos) se especifican como funciones de tipo void.
FORMATO:

void {
...

identificador

lista_ argumentos

. . . // cdigo de la funcin o procedimiento


...

}
Mg. Edgar Ruiz Lizama

Ejemplo 2:
##include <iostream> #include <cmath> void RaizCuadrada(float p); using namespace std; int main() //funci3.cpp { float r=25;

21/10/2012

RaizCuadrada(r); //llamada a la funcion return 0; } void RaizCuadrada (float p) { cout<<"La Raiz cuadrada de "<<p<<" es = "<<sqrt(p); cout<<endl; }
Mg. Edgar Ruiz Lizama

21/10/2012

SOBRECARGA DE FUNCIONES
Ejemplo 3:

Escribir un programa que solicite el radio y calcule el rea, longitud, y el volumen segn las siguientes formulas. Resuelva utilizando funciones.

Area del Crculo r

Longitud de Circunferencia 2 r 4 Volumen de Esfera r 3 3


Mg. Edgar Ruiz Lizama

21/10/2012

Solucin
//Ejemplo 3 #include <iostream> const float PI=3.141592; //declaracion de funciones prototipo float AreaCirculo (float r); float LongitudCircu(float r); float VolumenEsfera (float r); using namespace std; int main()//areas1.cpp { float radio; cout<<"ingrese valor del radio: "; cin>>radio; cout<<"el area del circulo es "<<AreaCirculo(radio)<<endl; cout<<Longitud de la circunf. es:"<<LongitudCircu(radio)<<endl; cout<<"el volumen de la esfera es "<<VolumenEsfera(radio)<<endl; return 0; }
Mg. Edgar Ruiz Lizama

21/10/2012

Continuacin
//definiciones de funciones

float AreaCirculo (float r) { return (PI*r*r); }


float LongitudCircu(float r) { return (2*PI*r); } float VolumenEsfera (float r) { return (4/3*PI*r*r*r); }

Mg. Edgar Ruiz Lizama

10

21/10/2012

Ejecucin del Programa

Mg. Edgar Ruiz Lizama

11

21/10/2012

UTILIZANDO LA SOBRECARGA DE FUNCIONES

Mg. Edgar Ruiz Lizama

12

21/10/2012

Segunda solucin, utilizando sobrecarga de funciones


//Ejemplo 4 #include <iostream> const double PI=3.14159265; //funciones overload float formulas(float r); double formulas(double r); long double formulas(long double r); using namespace std; int main() { //funcs6.cpp

float radio; float r1; double r2; long double r3; cout<<"ingrese valor del radio: cin>>radio; ";
Mg. Edgar Ruiz Lizama

13

21/10/2012

Continuacin
r3=r2=r1=radio; cout<<"el area del circulo es "<<formulas(r1)<<endl; cout<<"La longitud de la circunf. es:"<<formulas(r2)<<endl; cout<<"el volumen de la esfera es "<<formulas(r3)<<endl; return 0; }

float formulas(float r) { //circulo return PI*r*r; }


Mg. Edgar Ruiz Lizama

14

21/10/2012

Continuacin

double formulas(double r) { //circunferencia

return 2*PI*r;
} long double formulas(long double r) { //esfera return (4/3)*PI*r*r*r; }

Mg. Edgar Ruiz Lizama

15

21/10/2012

Ejemplo5: Escribir un programa que halle la media de 2 y 3 nmeros. Resuelva sin sobrecarga
#include <iostream> //hallando la media //Declaracion de funciones prototipo float media2(float n1, float n2); float media3(float n1,float n2,float n3); using namespace std; int main() //funcs2.cpp { float media; media = media2(2.5,4.7); cout<<"La media de 2.5 y 4.7 es "<<media<<endl; media = media3(2.5,4.7,3.2); cout<<"La media de 2.5, 4.7 y 3.2 es "<<media<<endl; } float media2(float n1,float n2) { return (n1+n2)/2; } float media3(float n1,float n2,float n3) { return (n1+n2+n3)/3; } return 0;

Mg. Edgar Ruiz Lizama

16

21/10/2012

Ejecucin del programa

Mg. Edgar Ruiz Lizama

17

21/10/2012

Ejemplo: Escribir un programa que halle la media de dos y tres nmeros, utilizando el concepto de sobrecarga
#include <iostream> // Declaracion de funciones prototipo float media(float n1, float n2); float media(float n1,float n2,float n3); double media(double n1,double n2,double n3); using namespace std; int main() //funcs2.cpp { float med;

med = media(2.5,4.7); cout<<"Media de 2.5 y 4.7 es: "<<med<<endl; med=media(2.5,4.7,3.2); //tres flotantes cout<<"Media de 2.5, 4.7 y 3.2 es: "<<med<<endl; med=media(2.5655,4.7897,3.000568); //trea dobles cout<<"Media 2.5, 4.7 y 3.2 es: "<<med<<endl; return 0;
} //continua
Mg. Edgar Ruiz Lizama

18

21/10/2012

Continuacion:
float media(float n1,float n2) { return (n1+n2)/2; }
float media(float n1,float n2,float n3) { return (n1+n2+n3)/3; } double media(double n1,double n2,double n3) { return (n1+n2+n3)/3; }

Mg. Edgar Ruiz Lizama

19

21/10/2012

Ejecucin del programa:

Mg. Edgar Ruiz Lizama

21/10/2012

20

Mg. Edgar Ruiz Lizama

21

21/10/2012

MACROS
Una macro es una seccin de cdigo, generalmente una lnea que realiza una labor o clculo.
FORMATO:

<#define> <identificador de la macro> <cuerpo>


Ejemplos: #define PI 3.141592 #define CUBO(x) (x)*(x)*(x) #define VOLESFERA(r) ((4/3)*PI*CUBO(r))
Mg. Edgar Ruiz Lizama

22

21/10/2012

CODIGO EN C++ :
#include <iostream> #define PI 3.141592 #define CUBO(x) (x)*(x)*(x) #define VOLESFERA(r) ((4/3)*PI*CUBO(r))

using namespace std; int main() { int x,r; cout<<"Ingrese el lado del cubo: "<<endl; cin>>x; cout<<"El volumen del cubo es: "<<CUBO(x)<<endl; cout<<"Ingrese el radio de la esfera: "; cin>>r; cout<<"El volumen de la esfera es: <VOLESFERA(r)<<endl;
return 0;

}
Mg. Edgar Ruiz Lizama

23

21/10/2012

Ejecucin del programa:

Mg. Edgar Ruiz Lizama

24

21/10/2012

EJEMPLO
La seccin de cdigo if(a>b) mayor = a; else mayor = b; Usando una macro se puede escribir como: #define MAYOR(a,b)((a>b)?(a) : (b))
Mg. Edgar Ruiz Lizama

25

21/10/2012

Implementacin
#include<iostream> // macros #define MAYOR(x,y) ((x>y)? (x):(y)) #define MENOR(x,y) ((x<y)? (x):(y)) using namespace std; int main()// macro6.cpp { int a,b; cout<<"ingrese dos enteros diferentes: cin>>a>>b; cout<<"el mayor es "<<MAYOR(a,b)<<endl; cout<<"el menor es "<<MENOR(a,b)<<endl; return 0; }
Mg. Edgar Ruiz Lizama

";

26

21/10/2012

Ejecucin del Programa

Mg. Edgar Ruiz Lizama

27

21/10/2012

Archivos de Inclusin
Un archivo de inclusin es un archivo que fsicamente existe fuera del archivo fuente. Para ser utilizado debe ser llamado desde una directiva de inclusin en el archivo fuente, mediante la directiva include; tal como lo siguiente: #include miheader.h. Los Archivos de inclusin son definidos del siguiente modo:
Mg. Edgar Ruiz Lizama

28

21/10/2012

Formato para definir un archivo de inclusin


#define NOMBRE_H #ifndef NOMBRE_H ... ...//cdigo del archivo ...

#endif
donde NOMBRE_H es un identificadorMg. Edgar Ruiz Lizama

29

21/10/2012

Ejemplo: El programa siguiente llama a un archivo de inclusin definido por el usuario.


Archivo Fuente: pascal.cpp
//archivo: macro22.cpp #include "pascal.h" PROGRAM BEGIN WRITE<<SALUDO<<WRITELN; READLN; SALIR; END
Mg. Edgar Ruiz Lizama

30

21/10/2012

Definicin del archivo de inclusin


//archivo pascal.h // definiendo mi propia libreria #ifndef PASCAL_H #define PASCAL_H #include<iostream> using namespace std; #define #define #define #define #define #define #define #define SALUDO "Buenos dias C/C++" PROGRAM int main() BEGIN { END } WRITE cout READLN cin.get() SALIR return 0 WRITELN endl

#endif // fin de la libreria


Mg. Edgar Ruiz Lizama

31

21/10/2012

Ejecucin del programa:

Mg. Edgar Ruiz Lizama

32

21/10/2012

Referencias

Deitel H.M. y Deitel P.J., (2008). Como Programar en C++". Mxico, 6ta. ed. Prentice Hall: 927p. Kernighan Brian W. & Ritchie Dennis M. (1993) El Lenguaje de Programacin C. 2da. Edicin. Prentice-Hall Hispanoamericana, 294 p. Mxico. Parker Alan, (1993). "Algorithms and Data Structures in C++ ". USA CRC Press: 257p. Ruiz Lizama Edgar, (2009). Programacin con C++ Fondo editorial de la UNMSM, 432p. Ruiz Lizama Edgar, (1999). "Curso de Lenguaje C". Lima, Facultad de Ingeniera Industrial UNMSM, 234p. Stroustrup, Bjarne (2002) "El Lenguaje de Programacin C++ Edicin especial". Addison Wesley PEARSON EDUCACIN S.A. 1050 p. Espaa.
Mg. Edgar Ruiz Lizama