Mostrando entradas con la etiqueta MS. Mostrar todas las entradas
Mostrando entradas con la etiqueta MS. Mostrar todas las entradas

domingo, 21 de diciembre de 2008

Variables al Paso

Hola a tod@s:

Bueno como muchos sabréis, en casi todos los lenguajes de programación hay dos formas de pasar las variables a funciones o procedimientos, por valor y por referencia:

  • Por valor significa que la función  recibe una copia del valor que tiene la variable.
  • Por referencia significa que se pasa la posición de memoria donde esta guardada la variable, por lo que la función puede saber cuánto vale, pero además puede modificarla de cualquier manera el valor de la variable original.

Bien en VB.NET no iba a ser menos, cuando definimos una función e indicamos sus parámetros lo hacemos mediante "ByVal" para indicarle que es un paso por valor, y con "ByRef" para indicar que es un paso por referencia.

Por ejemplo si definimos:

Private Function Duplica(ByRef a As Integer) As Integer


       a *= 2 'igual que poner a = a * 2


       Return a


End Function




El parámetro "a" se está recibiendo por referencia, lo que hace la función es duplicar el valor del parámetro y devolver el valor resultante, evidentemente este último paso sería innecesario pues al tratarse de un paso por referencia el contenido de la variable original queda modificado tras ejecutarse la llamada a la función.



Sin embargo, no hace mucho, he descubierto algo curioso en este lenguaje, y es que si cuando hacemos la llamada a una función una función que está definida para recibir los parámetro por referencia, podemos forzar a que se envíe una copia del parámetro original, esto se consigue metiendo la variable original entre paréntesis. Mejor lo vemos en un ejemplo:





   1: Module Module1


   2:  


   3:     Sub Main()


   4:         Dim a, b, c As Integer


   5:         a = 2


   6:         b = 2


   7:         c = Duplica(a) 'llamamos a la función pasando él parámetro por referencia


   8:         Console.WriteLine("a = " + a.ToString + " c = " + c.ToString)


   9:  


  10:         c = Duplica((b)) 'llamada a la función pasando el parámetro por valor


  11:         Console.WriteLine("b = " + b.ToString + " c = " + c.ToString)


  12:  


  13:         Console.ReadLine()


  14:     End Sub


  15:  


  16:     Private Function Duplica(ByRef a As Integer) As Integer


  17:         a *= 2 'igual que poner a = a * 2


  18:         Return a


  19:     End Function


  20:  


  21: End Module




En el ejemplo definimos 3 variables, a y b que tendrán un valor inicial de 2 y usaremos como parámetro para probar la función definida anteriormente, c nos servirá para almacenar el valor devuelto por la función.



Si ejecutamos el código veremos como en la llamada de la línea 7 se modifica el valor de "a" y que coincide con el valor devuelto por la función, es decir se está ejecutando el paso por referencia correctamente. Sin embargo en la llamada a la función de la línea 10, podemos comprobar por medio de este ejemplo, que el valor de b no es alterado, pero la función retorna el valor correspondiente tras su ejecución.



Es una curiosidad que quería compartir, y que si os paráis a pensarlo, tiene sentido, al encerrar la variables entre paréntesis, estamos priorizando la  evaluación de dicha variable, y lo que enviamos a la función es el resultado de dicha evaluación. Puede ser interesante si trabajamos con librerías y/o clases no desarrolladas por nosotros, o en las que no podemos modificar el código, y queremos pasarle parámetros por valor.



Espero que os sirva de algo, xD.



PD: No estoy seguro de si en C# también funciona así, aún no lo he probado.



 



Saludos.

domingo, 30 de noviembre de 2008

Cursos Tecnologías Microsoft

Hola a tod@s, es domingo, y hoy no me apetece escribir mucho, hoy es día de Ctrl+C, Ctrl+V jeje! Os dejo unos links que me ha envíado un amiguete.

http://www.krasis.com/CampusMVP/files/certificaciones-microsoft.pdf

http://www.microsoft.com/spain/certificaciones/certificaciones.aspx#

http://shop.campusmvp.com/Catalog-Certificaciones-de-Desarrollo_48.aspx


La verdad es que estas certificaciones, no son gratis y bueno, como algunos son estudiantes, hay crisis, etc... aquí también os dejo los links de unos cursos de capacitación oficiales de Ms y gratuitos.

Desarrollador 5 estrellas:
http://www.mslatam.com/latam/msdn/comunidad/dce2005/

Dedicado para los que tienen ganas de aprender un poco como funciona .NET, está bastante bien, para los que ya saben algo, los primeros exámenes se pasan con cierta facilidad, yo me he quedado atascado en el examen de CardSpace de la 4 estrella, que cuando lo suspendo, pienso que “mañana lo hago y fijo que apruebo”, pero resulta que ese mañana es después de 2 meses, y claro, vuelvo a cargar, así creo que llevo 2 o 3 intentos sin aprobar…. L

Para los que van por la rama de sistemas, o para quien tenga interés en aprender, existen unos cursos parecidos sobre sistemas de servicio de MS: Windows Server, SQL Server (Supongo que a nivel de administración), BizTalk, etc…

Profesional 5 estrellas:
http://www.mslatam.com/latam/technet/PCE2/


PD: Veo que en “Desarrollador 5 estrellas” han incluido unos cursos opcionales sobre “Entity Framework”, “SQL 2008”, “MOSS 2007”,”LINQ”,”WM6” y “Silverlight 2.0”, no sé el tiempo que llevan ahí, ya que hacía mucho que no entraba.


Espero que a alguien le sea de utilidad

Saludos a
tod@s