viernes, 1 de agosto de 2014

Más acerca de booleanos

Como ya he comentado en uno de los primeros post Las Variables Booleanas sólo toman dos valores: cierto o falso y su definición depende del lenguaje del programación.

En este post veremos que podemos utilizar variables de tipo entero que cumplan la misma función, asumiendo que sólo podrán tomar dos valores (dos números). En C++ se utilizan con mayor frecuencia los enteros porque el mismo lenguaje asume que el valor 0 hace la función de falso y el valor distinto de 0 hace la función de cierto.

Por ejemplo, el siguiente programa utiliza la variable i para mostrar una cuenta regresiva desde 10 hasta 1 y también sirve como variable de condición de salida para el while:

int main()
{
   //variable i sirve para la impresión y como tope del while
   int i = 10;
   
   //poniendo simplemente la i como condición significa que          
    //iterará mientras la variable i sea diferente de cero
   while(i)
   {
      cout << "i = " << i << endl; 
      i--;//decrementa i hasta que llega a 0 y sale del bucle
   }
   return 0;

}

La salida del programa es esta:

i = 10
i = 9
i = 8
i = 7
i = 6
i = 5
i = 4
i = 3
i = 2
i = 1

Con esto podemos ver que es muy importante conocer las capacidades de cada lenguaje de programación para que se adapten mejor a una solución o a un estilo de programar.

Ahora mostraré otro ejemplo en C++ en el que utilizaré la lógica inversa. El siguiente programa muestra un bucle que itera siempre que la condición No sea igual a 0, para eso se utiliza el símbolo ! que invierte el valor de la variable evaluada:

int main()
{
    //variable i se inicializa con valor 0 (falso)
   int i = 0;
    //Itera mientras el resultado de la parte entera de la división sea igual a 0
   while(!(i/3))
   {
      cout << "i = " << i << endl; 
      i++;
   }
   return 0;
}

La salida del programa es esta:

i = 0
i = 1
i = 2


En conclusión, sabemos que para las instrucciones condicionales y los bucles tenemos la opción de utilizar booleanos, expresiones lógicas y dependiendo del lenguaje de programación también números enteros.