Mis pisadas hacia el examen 70-536 – Capítulo 1, Lección 1: Usando los tipos valor

image

.NET, tiene 2 formas de almacenar las variables, por valor y por referencia.

¿Qué quiere decir esto? Bien, pues las variables tipo valor, son almacenadas en algo que se llama STACK, o traducido al español, pila; y que meramente es almacenado su valor. Esto significa, que si declaras una variable del tipo entero con valor 2, el valor 2 será almacenado en la pila. Para que lo entiendas mejor, un dibujo que describe esto:

image

Como se ve en el dibujo, cada rectángulo es un espacio en memoria, donde se almacenan los valores.

Ahora bien, existen 3 diferentes tipos valor:

image

Tipos Valor Built-In:

Son los tipos de datos, que ya vienen predefinidos con el framework, entre ellos podemos encontrar los siguientes con su respectiva descripción, y su respectivo alias para el lenguaje C# o bien VB.NET:

 

tabla

– Imagen tomada del curso DCE 2005

y el tamaño de cada uno de ellos, lo podemos observar en la siguiente imagen:

image

– Imagen tomada

Ahora bien, es muy pero muy importante, que estas tablas te las aprendas si es que quieres certificarte, ya que en el examen, vienen preguntas que hace referencia a conversiones entre los distintos tipos de datos.

Además, es importante aclarar, que existen muchos mas tipos de datos built-in, pero los que hemos visto en estas tablas, son los mas importantes.

Ejemplo de pregunta de certificación:

Trabajas en la compañía “La fábrica de las sorpresas”, donde usan Visual Studio 2008 para el desarrollo de aplicaciones.

Estás en el proceso de almacenar valores numéricos de hasta 2,100,000,000 en una variable, pudiendo requerir el almacenamiento negativo de valores también. Si la optimización en el uso de la memoria es requerido, sobre qué tipo de valor debes almacenar dichos valores?

a) Int32

b) UInt16

c) UInt32

d) Int16

 

Tipos Valor Nulos

También, existe la posibilidad de definir variables nulas, o sea una variable que inicialmente no tenga ningún valor. Esto se hace a través de una estructura de la siguiente forma:

   1: Nullable<int> miVariable = null;

O bien, en C#, tenemos una “forma bonita” de declarar valores nulos, o sea para no tener que estar poniendo todo eso de Nullable<int>, basta con aplicar un signo de interrogación después del tipo de dato, para indicar que éste puede ser nulo:

   1: int? miVariable = null;

pero, ¿y para qué nos serviría algo así?, bueno, pues por poner un ejemplo, cuando se le asigna a una variable la estructura de Nullable, adquiere otras propiedades, como por ejemplo, una propiedad llamada HasValue, la cual nos podría servir para verificar que la variable ha obtenido algún valor:

   1: int? miVariable = null;

   2: 

   3:             if(miVariable.HasValue)

   4:                 Console.WriteLine("La variable tiene valor");

   5:             else

   6:                 Console.WriteLine("La variable no tiene valor");

 

Tipos Valor Definidos por el usuario

Estos tipos de datos, mejor conocidos como estructuras, de igual forma son almacenados sobre la pila. En muchos casos, su comportamiento es muy pero muy parecido al de las clases, al poder crearles constructores, métodos, atributos y mas.

Las estructuras, están compuestas de otros tipos de datos, los cuales hacen mas fácil trabajar con nuestros tipos definidos.

Las estructuras, se definen a través de la palabra clave struct (en C#); por ejemplo, podemos definir una estructura llamada Persona, con otro tipo de dato dentro de sí mismo, de tipo entero, para almacenar la edad:

   1: struct Persona

   2:     {

   3:         private int _edad;

   4:     }

Incluso, una estructura puede contener un tipo de valor definido por nosotros mismos. Supongamos que tenemos otra estructura del tipo Personal, sobre la cual queremos almacenar una variable definida por nosotros anteriormente, en este caso la estructura Persona:

   1: struct Personal

   2:     {

   3:         private Persona _persona1;

   4:     }

Ahora bien, cuál es la diferencia entre una clase y una estructura??

Bueno, pues esto es algo en lo que aquellos que están aprendiendo un lenguaje usualmente no se paran a pensar, sin embargo, existen varios criterios, entre los cuales, destacan los siguientes:

  • Representen un único valor lógicamente
  • Tengan un tamaño menor a los 16 bytes
  • No es frecuentemente cambiado después de ser creado
  • No es convertido (Cast) a un tipo referencia

Enumeraciones

Supongamos que tienes una variable, la cual puede tener diferentes valores, por ejemplo, una variable llamada Estados, la cual puede tener como valores: “Aguascalientes, Baja California … Zacatecas”, o sea, 32 posibles valores. Pues esto meramente hacen las enumeraciones, enumerar cada uno de los valores que puede tener dicha variable. Esto le sirve a los desarrolladores para limitar las opciones disponibles para un valor. El ejemplo de los estados quedaría así:

   1: enum Estados

   2: {

   3:     Aguacalientes,

   4:     BajaCalifornia,

   5:     Chiapas,

   6:     Sonora,

   7:     Zacatecas

   8: }

Bueno eso es todo, a continuación les dejo el video de la lección:

[youtube=http://www.youtube.com/watch?v=Us5szVjxcfc]

Espero que haya quedado bien claro este tema, y cualquier comentario o sugerencia, no duden en contactarme, asimismo, de antemano les pido su apoyo para el próximo concurso de BlogIt, que muy pronto empieza, no les pido dinero a cambio de esta base de conocimientos para el examen 70-536, sin embargo, si les pido su voto de antemano, pronto les pondré el link. Gracias 🙂

 

Héctor Uriel Pérez Rojas

5 comentarios en “Mis pisadas hacia el examen 70-536 – Capítulo 1, Lección 1: Usando los tipos valor”

  1. Gracias por este tipo de aportes haci es mas digerible el poder solventar los conocimientos despues de leer lo escrito por ti, solo que no puedo ver el video, ojala y este proyecto que traes en manos puedas terminarlo y llevarlo a cabo es algo muy rico… animo

  2. Bien por tu aporte.

    Estimado, sólo me asalta una duda, el ejemplo de pregunta que pusiste no me convence 100%.

    De las opciones propuestas a la pregunta, el tipo de datos Int32 es el único que podría almacenar el valor 2,100,000,000 y también valores negativos.

    Pero tomando en cuneta la restricción de que debe ser posible almacenar valores SOBRE 2,100,000,000, entonces INT32 permitirá almacenar SÓLO algunos valores sobre dicho número (hasta 2,147,483,648).

    Creo que la pregunta debería ser “De los tipos de datos listados.-……y el resto de la pregunta).

    Saludos

    Francisco.

  3. Correctísimo! gracias por la observación Francisco, de hecho, la pregunta debería ser:

    Estás en el proceso de almacenar valores numéricos de hasta 2,100,000,000 en una variable.

    Ahora mismo lo corrigo, gracias 🙂

    Salu2

Deja un comentario

Tu dirección de correo electrónico no será publicada.