2 Funciones, Macros y Archivos de Inclusion C++

Post on 28-Oct-2014

115 views 0 download

Tags:

Transcript of 2 Funciones, Macros y Archivos de Inclusion C++

1

07/04/2023

Mg. Edgar Ruiz Lizama

07/04/20232

FUNCIONES

Mg. Edgar Ruiz Lizama

Todo programa en C es una colección de funciones donde main es la función principal.

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

07/04/20233

Mg. Edgar Ruiz Lizama

1. Funciones con valor devuelto.

Son aquellas funciones que devuelven un valor o resultado a la sección donde se hizo la llamada.

FORMATO:

Tipo_dato Identificador lista_ argumentos de retorno{ . . . . . . .// código de la función return <valor devuelto>}

07/04/20234

Ejemplo 1:

Mg. Edgar Ruiz Lizama

#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);}

07/04/20235

Mg. Edgar Ruiz Lizama

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 {

... . . . // código de la función o procedimiento

... }

07/04/20236

Ejemplo 2:

Mg. Edgar Ruiz Lizama

##include <iostream>#include <cmath>

void RaizCuadrada(float p);using namespace std;int main() //funci3.cpp{ float r=25; RaizCuadrada(r); //llamada a la funcion return 0;}

void RaizCuadrada (float p){ cout<<"La Raiz cuadrada de "<<p<<" es = "<<sqrt(p); cout<<endl;}

07/04/20237

SOBRECARGA DE FUNCIONES

Mg. Edgar Ruiz Lizama

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

3

2

34

2

rEsferadeVolumen

rnciaCircunferedeLongitud

rCírculodelArea

Ejemplo 3:

07/04/20238

Mg. Edgar Ruiz Lizama

Solución//Ejemplo 3#include <iostream>const float PI=3.141592;//declaracion de funciones prototipofloat 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;}

07/04/20239

Mg. Edgar Ruiz Lizama

Continuación

//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);}

07/04/2023

Mg. Edgar Ruiz Lizama

10

Ejecución del Programa

07/04/202311

UTILIZANDO LA SOBRECARGA DEFUNCIONES

Mg. Edgar Ruiz Lizama

07/04/202312

Mg. Edgar Ruiz Lizama

Segunda solución, 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;

07/04/202313

Mg. Edgar Ruiz Lizama

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;

}

Continuación

07/04/202314

Mg. Edgar Ruiz Lizama

double formulas(double r)

{ //circunferencia

return 2*PI*r;

}

long double formulas(long double r)

{ //esfera

return (4/3)*PI*r*r*r;

}

Continuación

07/04/202315

Ejemplo5: Escribir un programa que halle la media de 2 y 3 números. Resuelva sin sobrecarga

#include <iostream>//hallando la media//Declaracion de funciones prototipofloat 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; return 0;}float media2(float n1,float n2){ return (n1+n2)/2;}float media3(float n1,float n2,float n3){ return (n1+n2+n3)/3;}

Mg. Edgar Ruiz Lizama

07/04/2023

Mg. Edgar Ruiz Lizama

16

Ejecución del programa

07/04/202317Ejemplo: Escribir un programa que halle la media de dos y tres números, utilizando el concepto de sobrecarga

#include <iostream>// Declaracion de funciones prototipofloat 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;}

//continuaMg. Edgar Ruiz Lizama

07/04/202318

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

07/04/2023

Mg. Edgar Ruiz Lizama

19

Ejecución del programa:

07/04/2023

Mg. Edgar Ruiz Lizama20

07/04/202321

MACROS

Mg. Edgar Ruiz Lizama

Una macro es una sección de código, generalmente una línea que realiza una labor o cálculo.

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))

07/04/202322

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

07/04/202323

Ejecución del programa:

Mg. Edgar Ruiz Lizama

07/04/202324

EJEMPLO

Mg. Edgar Ruiz Lizama

La sección de código 

if(a>b) mayor = a; else mayor = b; Usando una macro se puede escribir como:

#define MAYOR(a,b)((a>b)?(a) : (b))

07/04/202325

Mg. Edgar Ruiz Lizama

Implementación

#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;}

07/04/202326

Mg. Edgar Ruiz Lizama

Ejecución del Programa

07/04/202327

Archivos de Inclusión

Mg. Edgar Ruiz Lizama

Un archivo de inclusión es un archivo que físicamente existe fuera del archivo fuente. Para ser utilizado debe ser llamado desde una directiva de inclusión en el archivo fuente, mediante la directiva include; tal como lo siguiente:

#include “miheader.h”.

Los Archivos de inclusión son definidos del siguiente modo:

07/04/202328

Formato para definir un archivo de inclusión

Mg. Edgar Ruiz Lizama

#define NOMBRE_H

#ifndef NOMBRE_H

...

...//código del archivo

...

#endif

donde NOMBRE_H es un identificador

07/04/202329

Ejemplo: El programa siguiente llama a un archivo de inclusión definido por el usuario.

Archivo Fuente: pascal.cpp

Mg. Edgar Ruiz Lizama

//archivo: macro22.cpp#include "pascal.h"

PROGRAMBEGIN

WRITE<<SALUDO<<WRITELN;READLN;

SALIR;END

07/04/202330

Definición del archivo de inclusión//archivo pascal.h// definiendo mi propia libreria#ifndef PASCAL_H#define PASCAL_H

#include<iostream>using namespace std;

#define SALUDO "Buenos dias C/C++"#define PROGRAM int main()#define BEGIN {#define END }#define WRITE cout#define READLN cin.get()#define SALIR return 0#define WRITELN endl

#endif // fin de la libreriaMg. Edgar Ruiz Lizama

07/04/202331

Ejecución del programa:

Mg. Edgar Ruiz Lizama

07/04/202332

Referencias Deitel H.M. y Deitel P.J., (2008). “Como Programar en

C++". México, 6ta. ed. Prentice Hall: 927p. Kernighan Brian W. & Ritchie Dennis M. (1993) “El

Lenguaje de Programación C”. 2da. Edición. Prentice-Hall Hispanoamericana, 294 p. México.

Parker Alan, (1993). "Algorithms and Data Structures in C++ ". USA CRC Press: 257p.

Ruiz Lizama Edgar, (2009). “Programación con C++” Fondo editorial de la UNMSM, 432p.

Ruiz Lizama Edgar, (1999). "Curso de Lenguaje C". Lima, Facultad de Ingeniería Industrial UNMSM, 234p.

Stroustrup, Bjarne (2002) "El Lenguaje de Programación C++ Edición especial". Addison Wesley – PEARSON EDUCACIÓN S.A. 1050 p. España. 

Mg. Edgar Ruiz Lizama