Logo Studenta

AÑO DEL DIALOGO Y LA RECONCILIACION NACIONAL

¡Estudia con miles de materiales!

Vista previa del material en texto

“AÑO DEL DIALOGO Y LA RECONCILIACION NACIONAL” 
Alumnos: 
· Dara Huamán Díaz.
· Hillary Reátegui Hernández.
· Julio 
Tema: Parámetros por Valor y Referencia
Curso: Lenguaje y Programación 1
Facultad: Ing. De Sistemas e informáticas.
Profesor: Jimmy Max Ramírez Villacorta.
Institución: Universidad Nacional de la Amazonia Peruana
Ciclo: 4	
Nivel. II
Iquitos-Perú
Índice
Presentación	1
Índice	2
Introducción	3
Distinciones	3 
Ejemplos	4
 Por Valor................................................................................4
 Por Referencia........................................................................5
Introducción.
En Visual Studio, puede transferir un argumento a un procedimiento por valor o por referencia. Esto se conoce como mecanismo para pasar argumentos, y determina si el procedimiento puede modificar el elemento de programación subyacente al argumento en el código de llamada. La declaración del procedimiento determina el mecanismo para pasar argumentos de cada parámetro mediante la palabra clave Val o Ref.
Distinciones
Al pasar un argumento a un procedimiento, tenga en cuenta las distintas condiciones que interactúan entre sí:
· Si el elemento de programación subyacente es modificable o no modificable
· Si el propio argumento es modificable o no modificable
· Si el argumento se transfiere por valor o por referencia
· Si el tipo de datos del argumento es un tipo de valor o un tipo de referencia
•Cuando es por valor, las informaciones de la variable se almacenan en una dirección de memoria diferente al recibirla en la función, por lo tanto, si el valor de esa variable cambia no afecta la variable original, solo se modifica dentro del contexto de la función.
•Cuando es por referencia, la variable que se recibe como parámetro en la función apunta exactamente a la misma dirección de memoria que la variable original por lo que si dentro de la función se modifica su valor también se modifica la variable original.
La esencia de la diferencia corresponde a la libertad (o restricción) que existe sobre el parámetro de la función o método. Debe elegir minuciosamente el mecanismo para pasar argumentos de cada argumento.
•Protección. A la hora de elegir uno de los dos mecanismos que existen para pasar argumentos, el criterio más importante que hay que tener en cuenta es la exposición al cambio de las variables de llamada. La ventaja de pasar un argumento con Ref es que el procedimiento puede devolver un valor al código de llamada por medio del argumento. La ventaja de pasarlo con Val es que protege a la variable de los cambios que sobre ella pueda efectuar el procedimiento.
•Rendimiento. Aunque el mecanismo que se utilice para pasar argumentos también puede afectar al rendimiento del código, la diferencia suele ser insignificante. Existe una excepción: cuando se pasa un tipo de valor con Val. En este caso, Visual Basic copia todo el contenido de los datos del argumento. Por lo tanto, para un tipo de valor grande, como una estructura, lo más eficiente es transferirlo Ref.
Cuándo se debe pasar un argumento por valor
· Si el elemento del código de llamada subyacente al argumento es un elemento no modificable, declare el parámetro correspondiente Val. Ningún código puede cambiar el valor de un elemento no modificable.
· Si el elemento subyacente es modificable, pero no desea que el procedimiento pueda modificar su valor, declare el parámetro Val. Sólo el código de llamada puede cambiar el valor de un elemento modificable transferido por valor.
· Cuándo se debe pasar un argumento por referencia
· Si el procedimiento necesita realmente modificar el valor subyacente en el código de llamada, declare el parámetro correspondiente Ref.
· Si la ejecución correcta del código depende del procedimiento que cambia el elemento subyacente en el código de llamada, declare el parámetro Ref. Si lo transfiere por valor o si el código de llamada en lugar de utilizar el mecanismo para pasar argumentos Ref incluye el argumento entre paréntesis, la llamada al procedimiento podría producir resultados inesperados.
Ejemplos:
Por Valor:
1. En nuestro segundo ejemplo, vamos a implementar un procedimiento que sea capaz de realizar una suma y una resta.
 static void Main(string[] args)
 {
 suma(); // llamando al procedimiento llamado suma 
 Console.ReadKey();
 Console.Clear();
 resta(); // llamando al procedimiento llamado resta 
 Console.ReadKey();
 }
 static void suma() 
 {
 Double r, n1, n2;
 Console.WriteLine("Digitar primera cantidad");
 n1 = Double.Parse(Console.ReadLine()); 
 Console.WriteLine("Digitar segunda cantidad");
 n2 = Double.Parse(Console.ReadLine());
 r = n1 + n2;
 Console.WriteLine("El resultado de la suma es: " + r);
 }
 static void resta() 
 {
 Double r, n1, n2;
 Console.WriteLine("Digitar primera cantidad");
 n1 = Double.Parse(Console.ReadLine());
 Console.WriteLine("Digitar segunda cantidad");
 n2 = Double.Parse(Console.ReadLine());
 r = n1 - n2;
 Console.WriteLine("El resultado de la resta es: " + r);
 }
 }
 }
2. Programa que permite hacer conversión de monedas digitando una cantidad en soles, utilizando funciones.
 static void Main(string[] args)
 {
 Double x, p, r;
 Console.WriteLine("Digitar la cantidad en soles:");
 x = Double.Parse(Console.ReadLine());
 p = euros(x);
 Console.WriteLine("Los {0} soles son {1} euros ", x, p);
 r = dolar(x);
 Console.WriteLine("Los {0} soles son {1} dolar ", x, r);
 Console.WriteLine("------>Fin del programa<-------");
 Console.ReadKey();
 }
 static Double euros(Double a)
 {
 Double g;
 g = a * 3.930;
 return g;
 }
 static Double dolar(Double a)
 {
 Double v;
 v = a * 3.217;
 return v;
 }
 }
} 
Por referencia:
3. Programa que permita cambiar el valor después de darle un valor
static void Main(string[] args)
{
 int valor = 1;
 Console.WriteLine("Valor de mi variable antes de cambiarlo: " + valor);
 nuevoValor(ref valor);
 Console.WriteLine("Valor de mi variable despues de cambiarlo: " + valor);
Console.WriteLine("Valor de mi variable sin refenrencia: " + nuevoValor2(valor));
 Console.ReadKey();
}
 // Funcion que recibe un parametro por refencia
 public static void nuevoValor (ref int valor)
 {
 valor = 10 + 5;
 }
 public static int nuevoValor2 ( int valor)
 {
 return valor * 50;
 } 
 }
}
4. Programa que permita ver el valor antes, después y dentro de un método.
namespace ConsoleApplication1
{
 class Program
 {
 static void Main(string[] args)
 {
 int num = 0;
 Console.WriteLine("Antes del metodo: {0}", num);
 Class1 clase = new Class1();
 clase.metodo(ref num);
 Console.WriteLine("Despues del metodo: {0}", num);
 string a = Console.ReadLine();
 }
 }
}
namespace ConsoleApplication1
{
 class Class1
 {
 public void metodo(ref int num)
 {
 num = num + 5;
 Console.WriteLine("Dentro del metodo: {0}", num);
 }
 }
}
1

Continuar navegando