Sunteți pe pagina 1din 9

INGENIERIA DE SISTEMA e INFORMATICA UNMSM

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


FACULTAD DE INGENIERIA DE SISTEMAS e INFORMATICA
FUNCIONES
Curso: Programación y Fundamentos de Algorítmica Fecha: 14/07/20

CONCEPTO:
Una función realiza una tarea específica y tiene un nombre con el cual es invocado o llamado.
OBJETIVO:
Simplificar y reducir el cuerpo de cualquier función haciéndola más entendible y mejor organizada.
ESQUEMA:
Para incorporar funciones en un programa C++, debe considerarse el siguiente esquema general:
// librerias

 // prototipos de las funciones
tipo_de_dato nombre(lista de parámetros);
 
// variables globales
….
// funcion principal
void main(){
//Declaraciones locales
….
//llamadas

}
//-------------------------------
// desarrollo de los prototipos
tipo_de_dato nombre(lista de parámetros){
// declaraciones locales
// cuerpo de la función
}

PROTOTIPOS
Existen 4 formas de escribir un prototipo de alguna función:
1)       Cuando la función es SIN RETORNO y SIN PARAMETROS
void nombre();
2)       Cuando la función es SIN RETORNO y CON PARAMETROS
void nombre(lista de parámetros);
3)       Cuando la función es CON RETORNO y SIN PARAMETROS
tipo_de_dato nombre();
4)       Cuando lafunción es CON RETORNO y CON PARAMETROS
tipo_de_dato nombre(lista de parámetros);
LLAMADAS:
Según el prototipo de una función, las llamadas pueden realizarse de las siguientes formas:
1)       Para funciones SIN RETORNO:
nombre();
nombre(lista de valores separados por comas);
2)       Para funciones CON RETORNO:
variable = nombre();
variable = nombre(lista de valores separados por comas);
 
DESARROLLO DE LOS PROTOTIPOS:
Según el prototipo de una función, el desarrollo tiene el siguiente esquema:
  1)       Para funciones SIN RETORNO y SIN PARAMETROS
void nombre(){
// declaraciones locales
Cuerpo de la función
}

1
INGENIERIA DE SISTEMA e INFORMATICA UNMSM
 
2)       Para funciones SIN RETORNO: y CON PARAMETROS:
void nombre(lista de parámetros separados por comas){
// declaraciones locales
Cuerpo de la función
}
 
3)       Para funciones CON RETORNO y SIN PARAMETROS
tipo_de_dato nombre(){
// declaraciones locales
Cuerpo de la función
return valor;
}
 
4)       Para funciones CON RETORNO y CON PARAMETROS
tipo_de_dato nombre(lista de parámetros separados por comas){
// declaraciones locales
Cuerpo de la función
return valor;
}
 
La lista de parámetros no es otra cosa que una lista de variables que tienen tipo de dato y nombre.
 Los parámetros sirven para que la función reciba valores cuando sea llamada. También sirven para que la
función retorne valores. Sin embargo, para éste propósito el nombre de la variable debe estar precedido por el
símbolo &.
 
Ejemplo.
Escribir una función para calcular el área de un rectángulo:

Entrada: Salida:
Largo : a: v.real Área del rectángulo: ar: v.real
Ancho : b: v.real

1)       Cuando la función es SIN RETORNO y SIN PARAMETROS

#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
void area()
{ float largo,ancho,ar;
cout<<"Ingrese el largo : "<<endl;
cin>>largo;
cout<<"Ingrese el ancho : "<<endl;
cin>>ancho;
ar=largo * ancho;
cout<<"Area del rectangulo : "<<ar<<" Unidades cuadradas "<<endl;
}
void area();
int main()
{area();
system("pause");
return 0;
}

2
INGENIERIA DE SISTEMA e INFORMATICA UNMSM

2)       Cuando la función es SIN RETORNO y CON PARAMETROS

Por referencia: Por puntero:


include <iostream> #include <iostream>
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
using namespace std; using namespace std;
void area(float l,float a,float &ar) void area(float l,float a,float *ar);
{ar=l*a; int main()
} { float largo,ancho,ar;
void area(float l,float a,float &ar); cout<<"Ingrese el largo : "<<endl;
int main() cin>>largo;
{ float largo,ancho,ar; cout<<"Ingrese el ancho : "<<endl;
cout<<"Ingrese el largo : "<<endl; cin>>ancho;
cin>>largo; area(largo, ancho,&ar);
cout<<"Ingrese el ancho : "<<endl; cout<<"Area del rectangulo : "<<ar<<"
cin>>ancho; Unidades cuadradas "<<endl;
area(largo, ancho,ar); system("pause");
cout<<"Area del rectangulo : "<<ar<<" return 0;
Unidades cuadradas "<<endl; }
system("pause"); void area(float l,float a,float *ar)
return 0; {*ar=l*a;
} }

3)       Cuando la función es CON RETORNO y SIN PARAMETROS

#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
float area()
{float largo,ancho,ar;
cout<<"Ingrese el largo : "<<endl;
cin>>largo;
cout<<"Ingrese el ancho : "<<endl;
cin>>ancho;
ar=largo*ancho;
return ar;
}
int main()
{ float r;
r=area();
cout<<"Area del rectangulo : "<<r<<" Unidades cuadradas "<<endl;
system("pause");
return 0;
}

3
INGENIERIA DE SISTEMA e INFORMATICA UNMSM

4) Para funciones CON RETORNO y CON PARAMETROS

#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
float area(float l,float a)
{float r;
r=l*a;
return r;
}
int main()
{ float largo,ancho,ar;
cout<<"Ingrese el largo : "<<endl;
cin>>largo;
cout<<"Ingrese el ancho : "<<endl;
cin>>ancho;
ar=area(largo, ancho);
cout<<"Area del rectangulo : "<<ar<<" Unidades cuadradas "<<endl;
system("pause");
return 0;
}

34.- Una empresa de carga brinda servicio a todo el continente americano, la tarifa que cobra por
cada tonelada se muestra en el siguiente cuadro:

Asimismo, si la carga que se transporta es perecible, se le incrementa el 7% del pago total de


acuerdo a las toneladas. Escribir un algoritmo para calcular el monto a pagar.

#include<iostream>
#include<conio.h>
#include<ctype.h>//toupper()
using namespace std;
void p34()
{//Declracion de variables
char medio,des,per;
float ton,mp;
//Datos
cout<<"Ingrese el medio de transporte <A, M T> : ";
cin>>medio;
medio=toupper(medio);
cout<<"Ingrese el destino <N,S,C> : ";
cin>>des;
des=toupper(des);
cout<<"La carga es perecible (S/N) : ";
cin>>per;
per=toupper(per);
cout<<"Ingrese cantidad de toneladas . ";

4
INGENIERIA DE SISTEMA e INFORMATICA UNMSM
cin>>ton;
//Proceso
switch(medio)
{case 'A':
switch(des)
{case 'N':mp=ton*30;break;
case 'S':mp=ton*25;break;
case 'C':mp=ton*20;break;
}
break;
case 'M':
switch(des)
{case 'N':mp=ton*25;break;
case 'S':mp=ton*20;break;
case 'C':mp=ton*15;break;
}
break;
case 'T':
switch(des)
{case 'N':mp=ton*20;break;
case 'S':mp=ton*15;break;
case 'C':mp=ton*10;break;
}
break;
}
if(per=='S')
mp=mp+mp*0.07;
//salida
cout<<"Medio de transporte : "<<medio<<endl;
cout<<"Destino : "<<des<<endl;
cout<<"Toneladas : "<<ton<<endl;
cout<<"Perecible : "<<per<<endl;
cout<<"Total a pagar : "<<mp<<endl;
cout<<"Ingremento por perecible : "<<mp*0.07<<endl;

}
int main()
{ p34();
getche();
return 0;
}

Diseño descendente

P34

INGRESO PRESENTAR MONTOAPAGAR

5
INGENIERIA DE SISTEMA e INFORMATICA UNMSM

#include<iostream>
#include <conio.h>
#include <ctype.h> // toupper()
using namespace std;

void ingreso(char &medio,char &destino,char &per,float &ton)


{
do
{cout<<"Ingrese medio A/M/T : ";
cin>>medio;
medio=toupper(medio);
}while(medio!='A'&&medio!='M'&&medio!='T');
do
{cout<<"Ingrese destino N/S/C : ";
cin>>destino;
destino=toupper(destino);
}while(destino!='N'&&destino!='S'&&destino!='C');
do
{cout<<"La carga es perecible : Si S No N ";
cin>>per;
per=toupper(per);
}while(per!='S'&&per!='N');
do
{
cout<< " Cantidad de toneladas : ";
cin>> ton;

}while(ton<=0);

float montoapagar(char medio,char des,char per,float mon)


{float monto,tar;
switch(medio)
{case 'A':
switch(des)
{case 'N': tar=30;break;
case 'S': tar=25;break;
case 'C': tar=20;break;
}
break;
case 'M':
switch(des)
{case 'N': tar=25;break;
case 'S': tar=10;break;
case 'C': tar=15;break;

6
INGENIERIA DE SISTEMA e INFORMATICA UNMSM
}
break;
case 'T':
switch(des)
{case 'N': tar=20;break;
case 'S': tar=15;break;
case 'C': tar=10;break;
}
break;
}
monto=tar*mon;

if(per=='S')
monto= monto+monto*0.07;

return monto;
}

void presentar (char medio,char des,char per,float ton,float mp)


{
cout<<"Medio de transporte : "<<medio<<endl;
cout<<"Destino : "<<des<<endl;
cout<<"Perecible : "<<per<<endl;
cout<<"Toneladas : "<<ton<<endl;
cout<<"Monto a pagar : "<<mp<<endl;
}

int main()
{char med,destino,perecible;
float tonelada,mp;
ingreso(med,destino,perecible,tonelada);
mp=montoapagar(med,destino,perecible,tonelada);
system("cls");
cout<<"\t\t "<<"EMPRESA DE TRANSPORTES SAN MARCOS "<<endl;
cout<<"\t\t "<<"================================= "<<endl;

presentar(med,destino,perecible,tonelada,mp);
getche();
return 0;
}

14.- Una librería tiene dos tipos de clientes. Estudiantes (E) y Publico en general (P), las
editoriales A, B y C ofrecen los siguientes descuentos:

Tipo Editorial Estudiante E Publico general (P)


A 10% 5%
B 25% 10%
C 50% 20%

7
INGENIERIA DE SISTEMA e INFORMATICA UNMSM
El programa debe pedir los siguientes datos: El nombre del comprador, el tipo de cliente, el
monto de compra y el tipo de editorial. Escribir una función para calcular el descuento y
mostrar Nombre del comprador, tipo de cliente, tipo editorial, monto compra, descuento y
total a pagar.

#include<iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h> // toupper()
#define p10 0.1
#define p20 0.20
#define p25 0.25
#define p50 0.5
#define p5 0.05
using namespace std;
void ingreso(char nom[20],char &tipo,char &tedit,float &monto)
{
cout<<"Ingrese nombre del cliente :"<<endl;
fflush(stdin);
gets(nom);
do
{cout<<"Ingrese T.Cliente E/P : ";
cin>>tipo;
tipo=toupper(tipo);
}while(tipo!='E'&&tipo!='P');
do
{cout<<"Ingrese T:editorial A/B/C : ";
cin>>tedit;
tedit=toupper(tedit);
}while(tedit!='A'&&tedit!='B'&&tedit!='C');

do
{
cout<< " Monto de la Comprs : ";
cin>>monto;

}while(monto<=0);

}
void presentar(char nombre[20],char tipo,char tedit,float monto,float descuento,float mon)
{ cout<<"Nombres : "<<nombre<<endl;
cout<<"Tipo Cliente : "<<tipo<<endl;
cout<<"Tipo Editorial : "<<tedit<<endl;
cout<<"Monto de Compra : "<<monto<<endl;
cout<<"Total Descuento : "<<descuento<<endl;
cout<<"Monto Total a Pagar : "<<mon<<endl;
}
float descuento(char tipo,char tedit,float monto)

8
INGENIERIA DE SISTEMA e INFORMATICA UNMSM
{float desc;
switch(tedit)
{case 'A':
switch (tipo)
{case 'E':desc=monto*p10;break;
case 'P':desc=monto*p5;break;
}
break;
case 'B':
switch (tipo)
{case 'E':desc=monto*p25;break;
case 'P':desc=monto*p10;break;
}
break;
case 'C':
switch (tipo)
{case 'E':desc=monto*p50;break;
case 'P':desc=monto*p20;break;
}
break;
}
return desc;
}
float montoapagar(float monto,float d)
{float mp;
mp=monto-d;
return mp;
}
int main()

{char nombre[20],tc,te;
float pago,d,mp;

ingreso(nombre,tc,te,pago);
d=descuento(tc,te,pago);
mp=montoapagar(pago,d);
system("cls");
cout<<"\t\t "<<"LIBRERIA DE SAN MARCOS "<<endl;
cout<<"\t\t "<<"================================= "<<endl;
presentar(nombre,tc,te,pago,d,mp);

getche();
return 0;
}

S-ar putea să vă placă și