Funciones c++

31
Curso: Lenguaje de Programación I Prof. Ing. Farfán Aguilar José Antonio CURSO: LENGUAJE DE PROGRAMACIÓN I UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS ESPECIALIDAD INGENIERÍA DE SISTEMAS PROFESOR: ING. FARFÁN AGUILAR JOSÉ ANTONIO LIMA-2015

description

lp

Transcript of Funciones c++

Page 1: Funciones c++

Curso: Lenguaje de Programación I Prof. Ing. Farfán Aguilar José Antonio

CURSO: LENGUAJE DE PROGRAMACIÓN I

UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS

ESPECIALIDAD INGENIERÍA DE SISTEMAS

PROFESOR: ING. FARFÁN AGUILAR JOSÉ ANTONIO

LIMA-2015

Page 2: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

FUNCIONES Y MÓDULOS

INTRODUCCIÓN

Las funciones contienen varias sentencias bajo un solo nombre, que un

programa puede utilizar una o más veces para ejecutar dichas sentencias.

Ahorran espacio, reduciendo repeticiones y haciendo mas fácil la programación,

proporcionando un medio de dividir un proyecto grande en módulos pequeños

mas manejables.

CONCEPTO DE FUNCIÓN

Para escribir un programa en C++, se divide este en varios módulos o funciones.

Un programa en C++ se compone de varias funciones, cada una de las cuales

realiza una tarea principal. El mejor medio para escribir es escribir funciones

independientes para cada tarea que realice el programa. Cada función realiza

una determinada tarea y cuando se ejecuta la sentencia return termina el

código de la función y se retorna al punto en que fue llamada por el programa o

función principal.

Las funciones son unas de las piedras angulares de la programación en C++.

Una buena regla para determinar la longitud de una función (número de líneas

que contiene) es que no ocupe mas longitud que el equivalente a una pantalla

Page 3: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

PROTOTIPO DE FUNCIONES C++ requiere que una función se declare o defina antes de uso. La

declaración de una función se denomina prototipo. Específicamente

un prototipo consta de los siguientes elementos : nombre de la

función; lista de parámetros formales encerrados entre paréntesis y

un punto y coma. Los prototipos se sitúan normalmente al principio

de un programa, antes de la definición de la función main(). La

definición completa de la función debe existir en algún lugar del

programa; por ejemplo, antes o después del main.

El compilador utiliza los prototipos para validar que el número y los

tipos de datos de los parámetros actuales de la llamada a la función

son los mismos que el número y tipo de parámetros formales. Si una

función no tiene argumentos se ha de utilizar la palabra reserva void

como lista de argumentos del prototipo (también se puede escribir

paréntesis vacíos)

Page 4: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

#include <stdlib.h>

#include <iostream.h>

double media (double x1 , double x2); // prototipo

int main()

{

double med,numero1,numero2;

cout<<"Introduzca 2 numeros: ";cin>>numero1>>numero2;

med=media(numero1 , numero2);

cout<<"La media es: "<<med<<endl;

system("pause");

}

double media(double x1 , double x2)

{

return (x1 + x2)/2;

}

Page 5: Funciones c++

PROGRAMACION MODULAR

• Divide el problema en módulos independientes.

• Cada programa contiene un módulo Principal que

controla todo lo que sucede, este transfiere el

control a los submodulos para que puedan

ejecutar sus funciones.

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 6: Funciones c++

PLANILLA EMPLEADOS

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 7: Funciones c++

VENTAJAS

• Es sencillo de escribir y depurar

• Se puede cambiar un módulo, sin afectar a los otros.

• Permite chequear solo donde hay problemas.

• Primero son chequeadas las interfaces principales.

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 8: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Funciones

• Una función es una sección de código que realiza una tarea específica, y que puede ser llamada desde otra función.

• Todo programa en C/C++ se compone de una o más funciones, incluyendo la función main().

• El lenguaje C/C++ incluye muchas funciones de utilidad general, las cuales están organizadas en librerías.

Page 9: Funciones c++

FUNCION

Conjunto de Instrucciones cuya ejecución se lleva a

cabo cada vez que es Invocada

Cuando termina la ejecución de la función, se

retorna al punto de llamada, para continuar con las

siguientes instrucciones.

Todas las funciones, menos las de tipo void,

devuelven un valor

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 10: Funciones c++

#include Directivas del procesador

void nombre_función(parámetros);

//función principal main

main()

{

declaraciones globales

sentencias

instancia a la función

}

void nombre_función (parámetros)

{

declaraciones locales

sentencias

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 11: Funciones c++

FUNCIÓN SIN PASE DE PARÁMETROS

#include <iostream.h>

#include <stdlib.h>

#include <mat.h>

float a;

void ingreso();

void salida();

void main()

{

ingreso();

salida();

system("pause");

}

ingreso()

{

float r;

cout<<"Ingresar radio: «,cin>>r;

//a=4*pi*r^2

a=4*3,14*pow(r;2);

}

void salida()

{

cout<<"el area de la esfera es: "<<a<<endl;

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 12: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

#include <iostream.h>

#include <stdlib.h>

int mayor;

void ingreso();

void salida();

void main()

{

ingreso();

salida();

system("pause");

}

void ingreso()

{

int a,b,c;

cout<<"Ingreses números: \n";cin>>a>>b>>c;

mayor=a;

if(b>mayor)

mayor=b;

if(c>mayor)

mayor=c;

}

void salida()

{

cout<<"El número mayor es: "<<mayor<<endl;

}

Eje. Encontrar el número mayor de 3 números ingresados por teclado

Page 13: Funciones c++

FUNCIÓN SIN PASE DE PARÁMETROS

el pago mensual del empleado de una empresa se efectúa de la

siguiente manera: el sueldo básico se calcula en base al monto

total de horas trabajadas basada en una tarifa horaria, al sueldo

básico se le aplica una bonificación del 20% obteniéndose el sueldo

bruto, al sueldo bruto se le aplica un descuento del 10%

obteniéndose el sueldo neto. Escribir un programa que calcule e

imprima el sueldo básico, el sueldo bruto y el sueldo neto de un

trabajador.

EJEMPLO:01

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 14: Funciones c++

#include <iostream.h>

#include <stdlib.h>

float s_basico,s_bruto,s_neto;

void ingreso();

void salida();

void main(){

ingreso();

salida();

system ("pause");

}

void ingreso(){

float ph,ht;

cout<<"\n Ingrese el número de horas trabajadas: "; cin>>ht;

cout<<"\n Ingresar el pago por hora: "; cin>>ph;

s_basico=ph*ht;

s_bruto=1.2*s_basico;

s_neto=0.9*s_bruto;

}

void salida(){

cout<<"\n El sueldo basico es: "<<s_basico;

cout<<"\n El sueldo bruto es: "<<s_bruto;

cout<<"\n El sueldo neto es: "<<s_neto<<endl;

} Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 15: Funciones c++

CLASIFICACIÓN DE VARIABLES LOCALES

• se declaran dentro de una

función, al principio o en

cualquier bloque del código

• Se crean cada vez que se

entra a la función

• se destruyen cada vez que se

sale de la función.

GLOBALES

• Mantienen su valor

durante toda la ejecución

del programa

• se declaran al inicio del

programa

• Tiene la desventaja que

usa mucha memoria.

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 16: Funciones c++

CLASIFICACION DE VARIABLES

LOCALES

Se pueden usar diferentes variables locales, con el mismo nombre

GLOBALES

Se declaran antes del programa principal.

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 17: Funciones c++

PASO DE PARAMMETROS

Muchas veces las funciones requieren que les envíen una lista

de valores llamados parámetros(argumentos), para usarlos en

la solución de la tarea encomendada.

Los parámetros son variables muchas veces de entrada(reciben

valores) y de salida (devuelven resultados) o ambos de e/s.

Estos parámetros también toman el nombre de parámetros por

valor (entrada) y parámetros por referencia(salida).

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 18: Funciones c++

FUNCION CON PASE DE PARAMETROS

real area (real x, real y)

principal

{

real base,altura

Leer base y altura

r=area(base,altura);

Imprimir “el área del rectángulo es:” r

}

/* función área */

real area(real x, real y)

{

return (x*y);

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 19: Funciones c++

FUNCION CON PASE DE PARAMETROS

#include <iostream.h>

#include <iomanip.h>

#include <stdlib.h>

float area (float x, float y);

void main()

{

float A,base,altura;

cout<<"\nIngrese base: ";cin>>base;

cout<<"\nIngrese altura: ";cin>>altura;

A=area(base,altura);

cout<<"el area del rectangulo es: "<<setprecision(2)<<A<<endl;

system("pause");

}

float area(float x, float y)

{

return(x*y);

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 20: Funciones c++

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Parámetros por valor y por referencia

Los parámetros de una función se pueden definir de dos maneras: Por valor o

por referencia.

Paso por valor

Este método copia el valor de los argumentos sobre los parámetros formales, de

manera que los cambios de valor de los parámetros no afectan a las variables

utilizadas como argumentos en la llamada. Lo importante en el paso por valor es

el valor del argumento, por eso es indiferente si este argumento es una variable,

una constante o una expresión.

Paso por referencia en C++.

A diferencia del paso por valor, en el paso por referencia los parámetros no

copian el valor del argumento, sino que comparten su valor. Por lo que cuando

cambia el valor del parámetro también cambia el valor de la variable utilizada

como argumento en la llamada. La forma de indicar un parámetro por referencia

es anexar el símbolo & al final del nombre de la variable de tipo en la lista de

parámetros formales, tanto en el prototipo de la función como en el encabezado

de su definición.

Page 21: Funciones c++

PASE DE PARÁMETROS POR VALOR

Cuando los argumentos de llamada se pasan por valor, se efectúa una

copia del valor del argumento y esta se pasa a la función llamada. Es decir

el parámetro toma solo una copia del argumento.

Las modificaciones a la copia no afectan el valor original de la variable

llamador.

Se reconoce un parámetro por valor en que no lleva ampersand & entre

el tipo y el nombre del parámetro.

Nota: El método por defecto de pasar parámetros es por valor, a menos que

se pasen arreglos. Los arreglos se pasan siempre por dirección

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 22: Funciones c++

Ej.:

Diseñar un programa que permita ingresar tres números enteros y permita obtener el menor. Utilizar una función con nombre menor y que reciba tres parámetros de tipo entero

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 23: Funciones c++

#include <iostream.h>

#include <iomanip.h>

#include <stdlib.h>

//función calcula menor de tres números

int menor(int x, int y, int z);

int main()

{

int a,b,c;

cout<<"Ingrese primer número: ";

cin>>a;

cout<<"Ingrese segundo número: ";

cin>>b;

cout<<"Ingrese tercer número: ";

cin>>c;

/*llama a la función menor y le pasa tres números ingresados */

cout<<"\n\nEl número menor es: "<<menor(a,b,c)<<endl;

system("pause");

return 0;

}

/*La función recibe tres argumentos de tipo

entero */

int menor(int a, int b, int c)

{

int min;

min=a;

if(b<min)

min=b;

if(c<min)

min=c;

/*retorna el menor número una vez realizado el

calculo */

return min;

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 24: Funciones c++

Hacer una función que ingrese 3 números, encuentre el número

mayor y lo eleve al cubo.

#include <iostream.h>

#include <stdlib.h>

#include <math.h>

int mayor(int a, int b, int c);

int main(){

int a,b,c,numcub;

cout<<"Ingrese primer número: ";cin>>a;

cout<<"Ingrese segundo número: ";cin>>b;

cout<<"Ingrese tercer número: ";cin>>c;

numcub=mayor(a,b,c);

cout<<"El número mayor al cubo es "<<numcub<<endl;

system("pause");

}

int mayor(int a, int b, int c){

int mayor,R;

mayor=a;

if(b>mayor)

mayor=b;

if(c>mayor)

mayor=c;

R=pow(mayor,3);

return R;

} Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 25: Funciones c++

Diseñar una función que calcule la media de 3 números leídos por

teclado. #include <iostream.h>

#include <stdlib.h>

float promedio(float a, float b, float c);

int main()

{

float a,b,c,func;

cout<<"Ingrese primer número: ";cin>>a;

cout<<"Ingrese segundo número: ";cin>>b;

cout<<"Ingrese tercer número: ";cin>>c;

func=promedio(a,b,c);

cout<<"El promedio de números es

"<<func<<endl;

system("pause");

}

float promedio(float a, float b, float c)

{

float prom;

prom=(a+b+c)/3;

return prom;

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 26: Funciones c++

Diseñe un programa que calcule el área y el perímetro de un rectángulo.

#include <iostream.h>

#include <stdlib.h>

float area(float b, float h);

float perimetro(float b, float h);

int main()

{

float b,h,func1,func2;

cout<<"Ingrese base: ";cin>>b;

cout<<"Ingrese altura: ";cin>>h;

func1=area(b,h);

func2=perimetro(b,h);

cout<<"\nEl area del rectangulo es "<<func1;

cout<<"\nEl perimetro del rectangulo es

"<<func2<<endl;

system("pause");

}

float area(float b, float h)

{

float area;

area=(b*h)/2;

return area;

}

float perimetro(float b, float h)

{

float perimetro;

perimetro=2*(b+h);

return perimetro;

}

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 27: Funciones c++

PASE DE PARAMETROS POR REFERENCIA

Se copian las direcciones de memoria que ocupan las variables

Cualquier cambio hecho a los parámetros, afecta el argumento

Se transfiere las direcciones de memoria de los argumentos, no el valor.

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 28: Funciones c++

/*Llamada por referencia*/

void rectangulo(real &ancho, real &alto, real &area, real &perim);

Principal

{

real Area, perimetro, Ancho, Alto;

Escribir “area y perimetro de un rectangulo”;

Leer Ancho;

Leer Alto;

rectangulo(Ancho, Alto, Area, perimetro);

Escribir “El area es:” Area “ y perimetro es:” perimetro;

}

/*el retorno es void porque no vamos a retornar nada*/

void rectangulo(real &ancho,real &alto, real &area, real &perim);

{area=ancho*alto

perim= 2*(ancho + alto);} Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 29: Funciones c++

/*Llamada por referencia*/

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

void rectangulo(float &ancho,float &alto, float &area, float &perim);

void main()

{ float Area, perim, Ancho, Alto;

clrscr();

cout<<"area y perimetro de un rectangulo\n";

cout<<"\nIngrese el ancho:";cin>>Ancho;

cout<<"\nIngrese la altura:";cin>>Alto;

rectangulo(Ancho, Alto, Area, perim);

cout<<"\nEl area es:"<<Area<<" y perimetro es:"<<perim<<endl;

system ("pause");

}

/*el retorno es void porque no vamos a retornar nada*/

void rectangulo(float &ancho, float &alto, float &area, float &perim)

{

area=ancho*alto;

perim= 2*(ancho + alto);

} Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 30: Funciones c++

EJEMPLO 1:

Diseñar un programa que permita ingresar dos números enteros, luego intercambiar los valores e imprimir en pantalla. Utilizar la función intercambiar que reciba dos argumentos por referencia

Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio

Page 31: Funciones c++

#include <iostream.h>

#include <conio.h>

void intercambiar(int &num1, int &num2);

int main()

{

int a,b;

cout<<"Ingresar primer número: ";cin>>a;

cout<<"Ingresar segundo número: ";cin>>b;

cout<<"\nEl valor de a es: "<<a;

cout<<"\nEl valor de b es: "<<b;

intercambiar(a,b);

cout<<"\nEl numevo valor de a es: "<<a;

cout<<"\nEl numevo valor de b es: "<<b;

getch();

return 0;

}

void intercambiar (int &num1, int &num2)

{

int aux;

aux=num1;

num1=num2;

num2=aux;

} Curso: Lenguaje de Programacion I

Prof. Ing. Farfán Aguilar José Antonio