Sei sulla pagina 1di 14

OBJETIVO

El objetivo de la sesión es:

Identificar un parámetro por referencia


Declaración de parámetros por referencia
Retornar mas de un valor desde una función
Ejemplos de aplicación

ING. FELIX HUARI 1


PASO DE PARAMETROS POR REFERENCIA

Paso de parámetros por referencia implica que los


parámetros formales reciban la dirección de memoria de
los parámetros actuales.
Para indicar a los parámetros formales que van recibir la
dirección de memoria, estos deben estar precedido por el
operador de dirección (&).
Los parámetros formales que tenga como prefijo el
operador de dirección &, implica que estos están
pasándose por referencia o variable.

ING. FELIX HUARI 2


PASO DE PARAMETROS POR REFERENCIA

Es a través de estos parámetros la función retornará mas


de un valor a la función invocadora.
Por lo tanto cada vez que desea retornar desde una
función mas de un valor en los parámetros,
necesariamente hay que hacer paso de parámetros por
referencia.
Para concluir decimos entonces que los cambios que
ocurran a los parámetros formales dentro de la función, si
afectaran a los correspondientes parámetros actuales.
Esto sucede cuando finaliza el trabajo la función.

ING. FELIX HUARI 3


PASO DE PARAMETROS POR REFERENCIA
Si en una función existe como parámetros vectores o
matrices, estos siempre trabajara por referencia por
defecto.
Es decir estos parámetros no requieren el uso del
operador de dirección(&).
Ejemplo:
int Plan(int n, float &p, char &t);
bool Probar(float &k, int m, float z, int c);
void Search(float x[100], int n, int dat);
float Procesar(int p[50],a, bool &z);

ING. FELIX HUARI 4


PASO DE PARAMETROS POR REFERENCIA
//Elabore un programa que permita calcular el área y longitud del circulo
#include<iostream>
#define PI 3.141596
using namespace std;
//Definicion de funcion
float AreaCirculo(float x)
{ return PI*x*x;
}
void VerAreaCirculo(float a)
{cout<<"\nEl Area del circulo es:"<<a<<endl;
}

ING. FELIX HUARI 5


PASO DE PARAMETROS POR VALOR
void LongitudCirc(float x)
{ float Lng=2*PI*x;
cout<<"La longitud de la Circunferencia es:"<<Lng<<endl;
}

void LeeRadio(float &r)


{cout<<"\nIngrese el radio del circulo:";
cin>>r;
}

ING. FELIX HUARI 6


PASO DE PARAMETROS POR REFERENCIA
//Programa principal
int main()
{ float Area, R,Longitud;
LeeRadio(R);
Area=AreaCirculo(R);//Llamada a la funcion
VerAreaCirculo(Area);
LongitudCirc(R);
}

ING. FELIX HUARI 7


PASO DE PARAMETROS POR REFERENCIA
/*Programa que permite el ingreso de la fecha en formato dd/mm/aaaa y
lo muestra el mes en letras y ademas el numero de dias del mes */
#include <iostream>
using namespace std;
void VerFecha(int d,int m, int a)
{ int dias, A;
A=a;
cout<<"La fecha es:";
switch(m)
{ case 1:cout<<d<<" Enero ";dias=31;break;
case 3:cout<<d<<" Marzo ";dias=31;break;

ING. FELIX HUARI 8


PASO DE PARAMETROS POR REFERENCIA
case 5:cout<<d<<" Mayo ";dias=31;break;
case 7:cout<<d<<" Julio ";dias=31;break;
case 8:cout<<d<<" Agosto ";dias=31;break;
case 10:cout<<d<<" Octubre ";dias=31;break;
case 12:cout<<d<<" Diciembre "; dias=31;break;
case 4:cout<<d<<" Abril ";dias=30;break;
case 6:cout<<d<<" Junio ";dias=30;break;
case 9:cout<<d<<" Setiembre ";dias=30;break;
case 11:cout<<d<<" Noviembre ";dias=30;break;
case 2: if((A%400==0) && (A%4==0) || (A%100!=0))
dias=29;
else
ING. FELIX HUARI 9
PASO DE PARAMETROS POR REFERENCIA
dias=28;
cout<<d<<" Febrero ";break;
}
cout<<A<<endl;
cout<<"El mes "<<m<<" tiene "<<dias<<" dias"<<endl;
}

int LeerFecha(int &b, int &c)


{ int a;
cout<<"\nIngrese fecha (dd/mm/aaaa):";
cin>>a>>b>>c; return a;
}
ING. FELIX HUARI 10
PASO DE PARAMETROS POR REFERENCIA
//Funcion principal
int main()
{ int d,m,a;
d=LeerFecha(m,a);
VerFecha(d,m,a);
}

ING. FELIX HUARI 11


PASO DE PARAMETROS POR REFERENCIA
/* Escribir un programa que permita contar y sumar todos
los digitos primos de un numero entero n
*/
#include<iostream>
using namespace std;
//Definicion de las funciones
void Entrada(int &n)
{ cout<<endl;
do
{ cout<<"Cual es el numero:";
cin>>n;
}while(n<=10);
}

ING. FELIX HUARI 12


PASO DE PARAMETROS POR REFERENCIA
void Evaluar(int n, int &s, int &k)
{ int d;
s=0; k=0;
while(n>0)
{ d=n%10;
if((d==2) || (d==3) || (d==5) || (d==7))
{ s=s+d;
k++;
}
n=n/10;
}
}

ING. FELIX HUARI 13


PASO DE PARAMETROS POR REFERENCIA
void Print(int n, int s, int k)
{ cout<<endl;
cout<<"Numero="<<n<<endl;
cout<<"Suma de digitos primos = "<<s<<endl;
cout<<"Contador de digitos primos = "<<k<<endl;
cout<<endl;
}

//Funcion principal
int main()
{ int nu,suma, conta;
Entrada(nu);
Evaluar(nu,suma,conta);
Print(nu,suma,conta);
} ING. FELIX HUARI 14

Potrebbero piacerti anche