Sie sind auf Seite 1von 31

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERA INDUSTRIAL Y DE SISTEMAS


ESPECIALIDAD INGENIERA DE SISTEMAS

CURSO: LENGUAJE DE PROGRAMACIN I


PROFESOR: ING. FARFN AGUILAR JOS ANTONIO
LIMA-2015
Curso: Lenguaje de Programacin I Prof.
Ing. Farfn Aguilar Jos Antonio

FUNCIONES Y MDULOS
INTRODUCCIN
Las funciones contienen varias sentencias bajo un solo nombre, que un
programa puede utilizar una o ms veces para ejecutar dichas sentencias.
Ahorran espacio, reduciendo repeticiones y haciendo mas fcil la programacin,
proporcionando un medio de dividir un proyecto grande en mdulos pequeos
mas manejables.

CONCEPTO DE FUNCIN
Para escribir un programa en C++, se divide este en varios mdulos 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 funcin realiza
una determinada tarea y cuando se ejecuta la sentencia return termina el
cdigo de la funcin y se retorna al punto en que fue llamada por el programa o
funcin principal.
Las funciones son unas de las piedras angulares de la programacin en C++.
Una buena regla para determinar la longitud de una funcin (nmero de lneas
que contiene) es que no ocupe
mas
longitud
que el equivalente
a una pantalla
Curso:
Lenguaje
de Programacion
I
Prof. Ing. Farfn Aguilar Jos Antonio

PROTOTIPO DE FUNCIONES
C++ requiere que una funcin se declare o defina antes de uso. La
declaracin de una funcin se denomina prototipo. Especficamente
un prototipo consta de los siguientes elementos : nombre de la
funcin; lista de parmetros formales encerrados entre parntesis y
un punto y coma. Los prototipos se sitan normalmente al principio
de un programa, antes de la definicin de la funcin main(). La
definicin completa de la funcin debe existir en algn lugar del
programa; por ejemplo, antes o despus del main.
El compilador utiliza los prototipos para validar que el nmero y los
tipos de datos de los parmetros actuales de la llamada a la funcin
son los mismos que el nmero y tipo de parmetros formales. Si una
funcin no tiene argumentos se ha de utilizar la palabra reserva void
como lista de argumentos del prototipo (tambin se puede escribir
parntesis vacos)

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn 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;
}
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn Aguilar Jos Antonio

PROGRAMACION MODULAR
Divide el problema en mdulos independientes.
Cada programa contiene un mdulo 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. Farfn Aguilar Jos Antonio

PLANILLA EMPLEADOS

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

VENTAJAS
Es sencillo de escribir y depurar
Se puede cambiar un mdulo, sin afectar a
los otros.
Permite chequear solo donde hay
problemas.
Primero son chequeadas las interfaces
principales.

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

Funciones
Una funcin es una seccin de cdigo que realiza
una tarea especfica, y que puede ser llamada
desde otra funcin.

Todo programa en C/C++ se compone de una o


ms funciones, incluyendo la funcin main().
El lenguaje C/C++ incluye muchas funciones de
utilidad general, las cuales estn organizadas en
libreras.
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn Aguilar Jos Antonio

FUNCION
Conjunto de Instrucciones cuya ejecucin se lleva a
cabo cada vez que es Invocada
Cuando termina la ejecucin de la funcin, 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. Farfn Aguilar Jos Antonio

#include Directivas del procesador


void nombre_funcin(parmetros);
//funcin principal main
main()
{
declaraciones globales
sentencias
instancia a la funcin
}
void nombre_funcin (parmetros)
{
declaraciones locales
sentencias
}
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn Aguilar Jos Antonio

FUNCIN SIN PASE DE PARMETROS


#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. Farfn Aguilar Jos Antonio

Eje. Encontrar el nmero mayor de 3 nmeros ingresados por teclado

#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 nmeros: \n";cin>>a>>b>>c;
mayor=a;
if(b>mayor)
mayor=b;
if(c>mayor)
mayor=c;
}
void salida()
{
cout<<"El nmero mayor es: "<<mayor<<endl;
}

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

FUNCIN SIN PASE DE PARMETROS

EJEMPLO:01
el pago mensual del empleado de una empresa se efecta de la
siguiente manera: el sueldo bsico se calcula en base al monto
total de horas trabajadas basada en una tarifa horaria, al sueldo
bsico se le aplica una bonificacin del 20% obtenindose el sueldo

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


obtenindose el sueldo neto. Escribir un programa que calcule e
imprima el sueldo bsico, el sueldo bruto y el sueldo neto de un
trabajador.
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn 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 nmero 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. Farfn Aguilar Jos Antonio

CLASIFICACIN DE VARIABLES
LOCALES

GLOBALES

se declaran dentro de una

Mantienen su valor

funcin, al principio o en

durante toda la ejecucin

cualquier bloque del cdigo

del programa

Se crean cada vez que se


entra a la funcin

programa

se destruyen cada vez que se

sale de la funcin.

se declaran al inicio del

Tiene la desventaja que

usa mucha memoria.

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

CLASIFICACION DE VARIABLES
LOCALES
GLOBALES
Se
pueden
usar Se declaran antes del
diferentes
variables
programa principal.
locales, con el mismo
nombre

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

PASO DE PARAMMETROS
Muchas veces las funciones requieren que les enven una lista
de valores llamados parmetros(argumentos), para usarlos en
la solucin de la tarea encomendada.
Los parmetros son variables muchas veces de entrada(reciben
valores) y de salida (devuelven resultados) o ambos de e/s.
Estos parmetros tambin toman el nombre de parmetros por
valor (entrada) y parmetros por referencia(salida).

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn 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 rectngulo es: r
}

/* funcin rea */
real area(real x, real y)
{
return (x*y);
}
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn 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. Farfn Aguilar Jos Antonio

Parmetros por valor y por referencia


Los parmetros de una funcin se pueden definir de dos maneras: Por valor o
por referencia.

Paso por valor


Este mtodo copia el valor de los argumentos sobre los parmetros formales, de
manera que los cambios de valor de los parmetros 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 expresin.

Paso por referencia en C++.


A diferencia del paso por valor, en el paso por referencia los parmetros no
copian el valor del argumento, sino que comparten su valor. Por lo que cuando
cambia el valor del parmetro tambin cambia el valor de la variable utilizada
como argumento en la llamada. La forma de indicar un parmetro por referencia
es anexar el smbolo & al final del nombre de la variable de tipo en la lista de
parmetros formales, tanto en el prototipo de la funcin como en el encabezado
de su definicin.
Curso: Lenguaje de Programacion I
Prof. Ing. Farfn Aguilar Jos Antonio

PASE DE PARMETROS POR VALOR


Cuando los argumentos de llamada se pasan por valor, se efecta una
copia del valor del argumento y esta se pasa a la funcin llamada. Es decir
el parmetro toma solo una copia del argumento.
Las modificaciones a la copia no afectan el valor original de la variable
llamador.
Se reconoce un parmetro por valor en que no lleva ampersand & entre
el tipo y el nombre del parmetro.
Nota: El mtodo por defecto de pasar parmetros es por valor, a menos que
se pasen arreglos. Los arreglos se pasan siempre por direccin

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

Ej.:

Disear un programa que permita ingresar tres nmeros


enteros y permita obtener el menor. Utilizar una funcin
con nombre menor y que reciba tres parmetros de tipo
entero

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
//funcin calcula menor de tres nmeros
int menor(int x, int y, int z);
int main()
{
int a,b,c;

/*La funcin 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 nmero una vez realizado el
calculo */
return min;
}

cout<<"Ingrese primer nmero: ";


cin>>a;
cout<<"Ingrese segundo nmero: ";
cin>>b;
cout<<"Ingrese tercer nmero: ";
cin>>c;
/*llama a la funcin menor y le pasa tres nmeros ingresados */
cout<<"\n\nEl nmero menor es: "<<menor(a,b,c)<<endl;
system("pause");
return 0;
}

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

Hacer una funcin que ingrese 3 nmeros, encuentre el nmero


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 nmero: ";cin>>a;
cout<<"Ingrese segundo nmero: ";cin>>b;
cout<<"Ingrese tercer nmero: ";cin>>c;
numcub=mayor(a,b,c);
cout<<"El nmero 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. Farfn Aguilar Jos Antonio
}

Disear una funcin que calcule la media de 3 nmeros ledos 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 nmero: ";cin>>a;
cout<<"Ingrese segundo nmero: ";cin>>b;
cout<<"Ingrese tercer nmero: ";cin>>c;
func=promedio(a,b,c);
cout<<"El promedio de nmeros es
"<<func<<endl;
system("pause");
}
float promedio(float a, float b, float c)
{
float prom;
prom=(a+b+c)/3;
Curso: Lenguaje de Programacion I
return prom;
Prof. Ing. Farfn Aguilar Jos Antonio
}

Disee un programa que calcule el rea y el permetro de un rectngulo.

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

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

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");
Curso: Lenguaje de Programacion I
Prof.
Ing. Farfn Aguilar Jos Antonio
}

PASE DE PARAMETROS POR REFERENCIA


Se copian las direcciones de memoria que
ocupan las variables
Cualquier cambio hecho a los parmetros,
afecta el argumento
Se transfiere las direcciones de memoria de
los argumentos, no el valor.

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn 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. Farfn 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. Farfn Aguilar Jos Antonio

EJEMPLO 1:

Disear un programa que permita ingresar dos


nmeros enteros, luego intercambiar los valores e
imprimir en pantalla.
Utilizar la funcin intercambiar que reciba dos
argumentos por referencia

Curso: Lenguaje de Programacion I


Prof. Ing. Farfn Aguilar Jos Antonio

#include <iostream.h>
#include <conio.h>
void intercambiar(int &num1, int &num2);
int main()
{
int a,b;
cout<<"Ingresar primer nmero: ";cin>>a;
cout<<"Ingresar segundo nmero: ";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. Farfn Aguilar Jos Antonio

Das könnte Ihnen auch gefallen