2 Funciones, Macros y Archivos de Inclusion C++

32
06/06/2022 Mg. Edgar Ruiz Lizama 1

TAGS:

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

Page 1: 2 Funciones, Macros y Archivos de Inclusion C++

1

07/04/2023

Mg. Edgar Ruiz Lizama

Page 2: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 3: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 4: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 5: 2 Funciones, Macros y Archivos de Inclusion C++

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

... }

Page 6: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 7: 2 Funciones, Macros y Archivos de Inclusion C++

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:

Page 8: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 9: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 10: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/2023

Mg. Edgar Ruiz Lizama

10

Ejecución del Programa

Page 11: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/202311

UTILIZANDO LA SOBRECARGA DEFUNCIONES

Mg. Edgar Ruiz Lizama

Page 12: 2 Funciones, Macros y Archivos de Inclusion C++

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;

Page 13: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 14: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 15: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 16: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/2023

Mg. Edgar Ruiz Lizama

16

Ejecución del programa

Page 17: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 18: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 19: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/2023

Mg. Edgar Ruiz Lizama

19

Ejecución del programa:

Page 20: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/2023

Mg. Edgar Ruiz Lizama20

Page 21: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 22: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 23: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/202323

Ejecución del programa:

Mg. Edgar Ruiz Lizama

Page 24: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 25: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 26: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/202326

Mg. Edgar Ruiz Lizama

Ejecución del Programa

Page 27: 2 Funciones, Macros y Archivos de Inclusion C++

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:

Page 28: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 29: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 30: 2 Funciones, Macros y Archivos de Inclusion C++

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

Page 31: 2 Funciones, Macros y Archivos de Inclusion C++

07/04/202331

Ejecución del programa:

Mg. Edgar Ruiz Lizama

Page 32: 2 Funciones, Macros y Archivos de Inclusion C++

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