Saltar al contenido
Portada » Artículos » Variables

Variables

En toda programación o programa informático de misma índole se manipula el concepto de las variables, en si, son contenedores los cuales contienen datos, elementos que podrán ser modificados en un momento determinado y usados en una lógica.

Tipos de datos

C# es un lenguaje fuertemente tipado, eso significa que hay que especificar que tipo de datos estamos por declarar y posteriormente asignar, por ello debemos tener en cuenta la variedad que existe y para que se utilizan, existen dos tipos con sus subcategorías, entre ellos tenemos:

De valor

Son valores más primitivos, simples y que contienen directamente sus datos, cuando se crea una variable de este tipo de dato se obtiene su propia copia de los datos y por ello no hay probabilidad que otra variable modifique el valor de otra. Se dividen en:

  • Tipos simples
    • Enteros con signo: sbyte, short, int, long
    • Enteros sin signo: byte, ushort, uint, ulong
    • Punto flotante binario (decimal): float, double
    • Punto flotante de alta precisión (decimal): decimal
    • Booleano: bool estos se definen con dos valores verdadero true y falso false
    • Caracteres Unicode: char son caracteres basados en la unidad UTF-16, cada letra, numero o símbolo. Solo acepta un carácter y debe ser representado con comillas simples. Ejemplos: '%', '2' o 'a'
  • Tipos de enumeración: son un tipo de dato que contiene valores constantes con nombres y su orden se especifica en numero de valores enteros, en resumen es definir una especie de lista enumerada con nombres descriptivos, el formato a utilizar en enum Name { ... } donde Name es el nombre que le asignaras.
  • Tipos de estructura: logra encapsular datos y realizar tareas lógicas sencillas dentro de ella, el formato que utiliza es struct Name { ... }
  • Tipos que aceptan el valor nulo (Nullables): datos primitivos que aceptan el valor nulo como una posibilidad, para ellos se le indica el signo ? delante del tipo de dato. Ejemplo int?, bool?, float?
  • Tipos de valor tupla: da la posibilidad de agrupar diferentes tipos de datos en un contenedor que contiene una estructura de datos ligera, se definen los datos dentro de unos paréntesis especificando que datos contendrá dicha tupla. Ejemplo (char, decimal)

De referencia

Tienen la posibilidad de que dos variables hagan referencia al mismo objeto y que, por lo tanto, las operaciones en una variable afecten al objeto al que hace referencia la otra, cosa que no sucedería con los tipos de valor. Las referencias están diseñadas para almacenar datos e instanciarlos como nuevos contenedores que proveen características de una especie de plantilla (referencia) y son volátiles a modificaciones de sus datos. Se clasifican en:

  • Tipo de clase, es una estructura de datos que contiene campos, funciones, otras clases, entre otros. Admiten herencia y polimorfismo, bases de la programación orientada a objetos.
    • Clase base que define todos los objetos: object
    • Cadenas de caracteres Unicode: es la unión de múltiples caracteres char en secuencia para generar palabras, oraciones, texto en general, se define con la palabra clave string y se usan comillas dobles para asignarlo. Ejemplo "Hoy es un buen día para programar"
    • Tipos de clases definidas por el usuario: son las clases creadas por el usuario (programador) las cuales funcionan como una plantilla o plano de instrucciones, se definen con el formato class Name { ... }
  • Tipo matriz: son contenedores los cuales pueden poseer diferentes dimensiones de datos del mismo tipo, C# soporta matrices unidimensionales float[], multidimensionales float[,] y escalonadas float[][].
  • Tipos de interfaz: suministran comunicación entre objetos de manera de suscripción en el cual un consumidor puede recibir y trabajar con las características que provee, se conforman con interface IName { ... } por reglas de convención se le coloca una letra «I» en mayúscula antes del nombre de dicha interfaz.
  • Tipos de delegados: su función es encapsular un método con nombre o de forma anónima, se derivan de los punteros de C++ pero son más seguros, los delegados son en si la estructura base de los eventos, se formulan así delegate int Name( ... ), donde int puede ser cualquier tipo de dato no necesariamente un entero.
  • 🆕 Tipo record: es un elemento nuevo proveniente de C# 9, en el cual nos permite crear variables de referencia inmutables, se formulan con record Name { ... }.

Aplicando las variables

En la programación orientada a objetos, las variables pueden estar en un contexto «más global» a la cual se le denomina estados o campos de una clase los cuales pueden jugar el rol de características o información de dicho objeto.

public class Human
{
		// Estados
		public string Name;
		public int Age;
		public float Weight;
		public float Height;
}

Cada variable necesita ser atribuida a un tipo de dato, como en el ejemplo de arriba Name es de tipo string es decir una cadena de texto, al igual que Age es un int, y los otros dos que corresponderían a su peso Weight y altura Height son datos de tipo float que aceptan números decimales.

💡 A este proceso también se le denomina declarar variables. Para una explicación más profunda sobre el tema existe la documentación de Microsoft.

Es por ello que estos contenedores de datos se utilizarán de forma global dentro de todo el contexto de esa clase y servirán como apoyo a la lógica del programa.

Pero volviendo al hilo, una variable en un contexto más lógico se utiliza para contener, asignar y modificar valores, en un caso practico digamos que nos encontramos con una tienda y queremos comprar un artículo.

public class Client
{
		public string Name;
		public float Money;
}

public class Item
{
		public string Name;
		public float Cost;
}

public class Store
{
		private Item[] items;

		public int BuyAItem(int itemID, Client client)
		{
				float cost = items[itemID].Cost; // Esto es una variable local

				if(cost <= client.Money) // Si el costo es menor al dinero que posee el cliente
				{
						client.Money -= cost; // Le restamos el costo del producto al dinero del cliente
				}
				else
				{
						// Aviso de que no posee dinero, o que no es posible comprarlo.
				}
		}
}

¿Complejo no? Pero maravilloso, así funcionaria varias clases en conjunto ofreciendo datos, referenciándolos y modificando, cada clase posee sus variables de estado y proveen esa información para realizar tareas de comprobación y en este caso de vender un objeto de una tienda localizándolo por un ID y gestionando si el cliente posee dicho dinero.

Ahora, esto no está totalmente claro, y lo veremos en un concepto más detallado en próximos artículos.

💡 Para saber más sobre la capitalización de las variables, existe un artículo en la documentación de Microsoft sobre ello.
Etiquetas:

Deja una respuesta