Download - 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
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
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)
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;
}
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
PLANILLA EMPLEADOS
Curso: Lenguaje de Programacion I
Prof. Ing. Farfán Aguilar José Antonio
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
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.
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
#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
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
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
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
#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
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
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
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
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
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
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.
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
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
#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
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
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
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
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
/*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
/*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
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
#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