Palabras clave: Variables booleanas
, Estructuras de control
, Estructuras condicionales
, Condiciones booleanas
, tipo enumerado
.
1. Introducción
En la programación estructurada hay 3 tipos de estructuras (secuencial, condicional e iterativa). En las estructuras condicional e iterativa, las estructuras se ejecutan siempre y cuando se cumpla una condición boolena. En esta lectura trataremos este asunto de las condiciones.
2. Variables booleanas
Una variable es booleana si sus valores son de tipo booleano.
Un tipo booleano es aquel que solo puede adoptar los valores true
o false
.
El siguiente código muestra como declarar, asignar e imprimir una variable booleana.
1
2
3 boolean superasNotaCorte;
superasNotaCorte = true; // Asigna false, si prefieres.
println("¿Superas nota de corte? "+superasNotaCorte);
Las variables booleanas se utilizan para indicar si se comple o no una condición, con lo que resulta ideales para trabajar con estructuras condicionales. Pero lo normal es que las condiciones que deban cumplirse para realizar (o no) ciertas instrucciones involucren a variables booleanas (constituyan una expresión booleana).
3. Expresiones booleanas
El valor de la condición que determina si se ha de ejecutar o no un conjunto de instrucciones viene dado por un valor booleano que es el resultado de una expresión booleana.
Pero ¿qué es una expresión booleana? En lecturas anteriores se han mostrado distintas expresiones numéricas. Recuerda que son expresiones matemáticas y, como tales, en ellas intervienen operadores y funciones matemáticas sobre tipos de datos numéricos. Ahora, de forma análoga, una expresión booleana es aquella en la que intervienen los operadores propios para los tipos de datos booleanos. Existen dos tipos de operadores: los operadores condicionales y los operadores booleanos.
3.1. Operadores condicionales
Los operadores condicionales, que se enumeran más abajo, son aquellos que están vinculados con las relaciones matemáticas de orden y la relación de identidad. Con las primeras podemos saber qué objeto son menores que otros; por ejemplo, gracias a una relación de orden establecemos qué personas son más viejas o altas que otras. Con la segunda podemos constatar si dos objetos que se escriben de forma diferente son de hecho el mismo objeto; por ejemplo, la relación de identidad establece que da lo mismo calcular 4/2 que 20/10.
Ejecuta el siguiente código para ver en acción a estos operadores.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* Autor: Luis Daniel Hernández (Grupo ISCyP)
Fecha: 08/08/2014
Operadores condicionales en Processing */
int a=2;
int b=5;
print(a); print ("=="); print(b); print(" es "); println(a==b);
print(a); print ("!="); print(b); print(" es "); println(a!=b);
print(a); print ("< "); print(b); print(" es "); println(a<b);
print(a); print ("<="); print(b); print(" es "); println(a<=b);
print(a); print ("> "); print(b); print(" es "); println(a>b);
print(a); print (">="); print(b); print(" es "); println(a>=b);
3.2. Operadores booleanos
En el contexto de las lógicas clásicas (en particular la matemática), los operadores booleanos son aquellos que establecen el valor de verdad de una proposición compuesta, entendiendo como tal a la composición de oraciones enunciativas que solo pueden ser o verdaderas o falsas. En el contexto de la programación, los operadores booleanos son aquellos que establecen el valor de verdad de la composición de varios operadores condicionales o booleanos.
Ejecuta el siguiente código para ver en acción a estos operadores.
1
2
3
4
5
6
7
8
9
10
11 /* Autor: Luis Daniel Hernández (Grupo ISCyP)
Fecha: 08/08/2014
Operadores lógicos en Processing */
boolean a=true;
boolean b=false;
print("! "); print(a); print(" es "); println(!a);
print(a); print (" && "); print(b); print(" es "); println(a && b);
print(a); print (" || "); print(b); print(" es "); println(a || b);
Una expresión booleana es una expresión en la que intervienen operadores lógicos y operadores condicionales. |
4. Precedencia de operadores
Teniendo en cuenta que en una expresión booleana pueden aparecer operadores lógicos, de comparación y expresiones numéricas, p.e. (exp(x)<3.5 ) && (2==y)
), la cuestión es ¿qué operadores se hacen antes? ¿los lógicos? ¿los numéricos? ¿o los de comparación? Este es el orden que tiene establecido Processing.
Es decir, en general, primero se calculan las expresiones numéricas (de acuerdo a la prioridad de sus operadores), después las expresiones booleanas de compración (de acuerdo a la prioridad de sus operadores) y por último se aplican los operadores lógicos (de acuerdo a la prioridad de sus operadores).
Si tienes duda de qué operador va antes o después usa los paréntesis ( ,) de forma adecuada y sé tú quien controle el orden del cálculo.
|
Al igual que el resultado de una expresión aritmética puede guardarse en una variable numérica, el resultado de una expresión booleana puede guardarse en una variable booleana para ser recuperado en cualquier otro momento.
5. Variables enumeradas
El tipo booleano, booelean
, es un tipo de dato que se corresponde con la posibilidad de adoptar solo uno de entre dos valores (true
y false
). Este tipo de dato y sus dos valores vienen impuestos por el lenguaje de programación.
Existe una extensión del tipo boolean
que es el tipo enum
o tipo enumerado.
Es un tipo de dato definido por el usuario que solo puede tomar como valores los definidos (y constantes) en una lista.
Los tipos enumerados se utilizan para restringir los valores de una variable de entre un conjunto de valores previamente definidos.
La manera de usar este tipo de dato es el siguiente:
enum TipoNuevo {VALOR1, VALOR2, ...., VALORN}; TipoNuevo miVariable = TipoNuevo.VALORJ
No es necesario que las constantes dentro del enum
estén en mayúsculas pero
en las convenciones de código para Processing, Java y otros lenguajes se pide hacerlo de esta manera.
Si se quisiera trabajar con una variables que represente a marcas de coches pero solo se deseara trabajar entre las marcas Ford, Seat y Toyota un posible código sería:
1
2
3 enum MarcasCoche {FORD, SEAT, TOYOTA};
MarcasCoche miCoche = MarcasCoche.TOYOTA;
println(miCoche);
Observa que:
-
la asignación de valor no es
miCoche = TOYOTA
sino que hemos de utilizar la notación punto:miCoche = MarcasCoche.TOYOTA
, -
el valor impreso no es
MarcasCoche.TOYOTA
(la expresión usada en la asignación) sinoTOYOTA
(que es uno de los valores deMarcasCoche
).
En Processing, para crear el tipo enumerador MarcasCoche tendrás que crear una pestaña nueva con el nombre MarcasCoche.java (tendrás que añadir .java ) y escribir en dicho fichero el tipo de dato: para el ejemplo,
enum MarcasCoche {FORD, SEAT, TOYOTA} . No escribas nada más en este fichero.
|
6. Repaso
-
Una expresión booleana es aquella cuyo valor final es o
true
ofalse
. -
En una expresión booleana intervienen operadores de comparación u operadores lógicos (o los dos).
-
Una variable de tipo booleano es aquella cuyo valor es uno de otros los valores
true
ofalse
. -
Una variable de tipo enumerado es aquella cuyo valor es uno de entre los definidos por el programador (extiende a las variables booleanas).