miércoles, 7 de agosto de 2013

El Tipo de Dato Booleano y Operadores en C#

Tabla de Contenido

0. Introducción
1. El Tipo de Dato Booleano en C#
2. Conversiones Booleanas
3. Operadores de Igualdad
4. Operadores de Comparación
5. Conclusiones
6. Glosario
6. Referencias

Introducción

En este artículo vamos a detenernos en comprender el tipo de dato System.Boolean (alias bool). Este tipo de dato nos sirve para expresar y usar instrucciones lógicas en nuestros programas. Pensemos en este tipo de dato como los interruptor de apagado/encendido, los estados de verdad falso (en inglés, false) y verdadero (en inglés, true), en lógica binaria los números 0 y 1; que nos permite alternar entre un flujo de instrucciones u otro.

1. El Tipo de Dato Booleano en C#

El lenguaje de programación C# cuenta con este tipo de dato en su especificación, y es conocido con el alias bool (tipo en .NET: System.Boolean). Sólo existen dos valores literales para una variable o constante de este tipo: true y false.

De acuerdo a [1]: a pesar de que un valor booleano puede ser representando usando únicamente un bit, la CLR asignará un byte de almacenamiento en memoria principal, esto se debe a asuntos de eficiencia y al tamaño mínimo requerido por la CLR y el procesador adyacente, es decir, un byte (8 bits).

Framework .NET cuenta una clase idónea para deshacernos de problemas de ineficiencia del uso de espacio en memoria: BitArray (en System.Collections). Esta clase ha sido diseñada para que cada locación o elemento del arreglo ocupe solamente un bit por cada valor booleano.

Veamos un ejemplo sencillo del uso de este tipo de datos:

Archivo C# AgnioParOImpar.cs [enlace alternativo]:

2. Conversiones Booleanas

A diferencia de otros lenguajes (como C++), las conversiones entre tipos booleanos y tipos de datos numéricas no están permitadas en C#. En ninguna dirección (sentido), e inclusive.

Archivo C# ConversionBooleanos.cs [enlace alternativo]:

3. Operadores de Igualdad

C# posee los siguientes operadores para examinar la igualdad o diferencia de cualquier tipo de dato. Independiente del tipo de dato que se esté examinando, siempre la evaluación retornará un valor bool.

Para los tipos de datos predefinidos (byteshortintlongfloatdouble) el operador de igualdad (==) retorna verdadero (true) si los valores de los operandos son iguales, en caso contrario falso (false).

Archivo C# IgualdadTiposPrimitivos.cs [Enlace alternativo]:

Ahora para los tipos de datos por referencia distintos a string, el operador == retorna verdadero (true) si los operandos referencian el mismo objeto. Para el tipo string , == compara el valor de las cadenas [3].

class Persona
{
private string Nombre;

public Persona(string nombre)
{
Nombre = nombre;
}
}


class PersonaPrueba
{
static void Main()
{
Persona p1 = new Persona("John");
Persona p2 = new Persona("John");

Console.WriteLine(p1 == p2); // False

Persona p3 = p1;

Console.WriteLine(p1 == p3); // True

Console.ReadKey();
}
}

Más adelante veremos que es posible sobrecargar estos operadores de tal manera que no sólo retornen valores booleanos.

4. Operadores de Comparación

C# cuenta con los siguientes operadores de comparación:
  • == (Igualdad)
  • != (Diferente de)
  • < (Menor que)
  • > (Mayor que)
  • >= (Mayor o igual que)
  • <= (Menor o igual que)
Todos estos operadores aplican para los tipos de datos numéricos. Cuando hagamos comparaciones con tipos de datos numéricos reales (como vimos en la entrada anterior: Errores de Redondeo en Números Reales).

Los operadores de comparación también funcionan para miembros de tipo enum (esto se logra a través de la comparación de los valores enteros internos adyacentes del conjunto de constantes).

Pasemos a mirar el siguiente ejemplo:


Archivo C# OperadoresComparacion.cs [Enlace alternativo]:

5. Conclusiones

El tipo de dato bool en el lenguaje de programación C# nos permite hacer evaluaciones lógicas para alternar entre distintos caminos de ejecución (como ocurre con la construcción de control if). También pudimos comprender acerca de las conversiones booleanos permitidas en C#. Luego, vimos los operadores de igualdad y cómo se usan con tipos por referencia y tipos por valor. Finalmente, un ejemplo acerca de algunos de los operadores de comparación entre datos numéricos.

6. Glosario

- Booleano

7. Referencias

[1] C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[4] C# Comparison Operators - http://www.completecsharptutorial.com/basic/comparison-operators.php


O

3 comentarios:

  1. Buenos días.

    Comentarle que en el párrafo de la introducción dice:

    "los estados de verdad falso (en inglés, false) y verdadero (en inglés, false)"

    Lo último debería ser "true".

    Además, tampoco salen los códigos.

    Un saludo y gracias por su trabajo.

    ResponderEliminar
  2. Añadir que en el primer párrafo del punto 1 dice:

    "Sólo existen dos valores literales para una variable o constante de este tipo: true y true."

    ResponderEliminar
  3. Saludos David.

    Gracias por el reporte de erratas. :)

    En cuanto la visualización de códigos: esto se debe a un problema de compatibilidad entre Blogger y Gist. Esa fue la razón por la que a partir de mediados de 2014 decidí usar PasteBin.com para la presentación de código fuente. En otra razón, está la de especificar diferentes repositorios de código -PasteBin, GistHub, Ubuntu Paste Bin- para garantizar la disponibilidad de éste.

    ¡Saludos!

    ResponderEliminar

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.