Saltar la navegación

2. Operadores aritméticos y booleanos

Entre las operaciones más usuales que se pueden realizar en una escena se encuentran las matemáticas o aritméticas y las booleanas o condicionales.  En la programación de una escena se usan habitualmente estos operadores.

Operadores aritméticos: Son aquellos que nos permiten operar matemáticamente con variables, funciones, valores, etc. Es decir, son aquellos que nos permiten hacer operaciones matemáticas que pueden ser utilizadas en nuestras escenas.

Los operadores más sencillos son +, -, *, / que se utilizan para la suma, resta multiplicación y división. Junto a ellos se utiliza mucho el operador ^ que representa la potenciación: así x elevado el cubo se escribe como x^3 (NOTA: al oprimir la tecla ^ esta no aparece en la pantalla hasta que pulsamos la siguiente tecla).

Otro operador que puede resultar interesante es %, resto de la división entera; así 5%3=2.

Los últimos operadores aritméticos de interés son los paréntesis ( ). Su uso es similar al de las Matemáticas, pero las limitaciones de escribir en una sola línea los hacen más imprescindibles que cuando escribimos a mano. Así, si queremos escribir que C es 1 partido por la suma de A+B, debemos teclear: C=1/(A+B) y no C=1/A+B (en este caso dividiríamos 1 por A y al resultado sumaríamos B).

Los operadores y otros símbolos que el analizador de expresiones de Descartes reconoce son:

( paréntesis izquierdo
) paréntesis derecho
== igualdad, operador binario que da un resultado booleano.
!= desigualdad, operador binario que da un resultado booleano.
# desigualdad, operador binario que da un resultado booleano.
| operador binario de disyunción equivalente a OR ( O )
& operador binario de conjunción equivalente a AND ( y )
> mayor queoperador binario que da un resultado booleano
< menor queoperador binario que da un resultado booleano
>= mayor o igual queoperador binario que da un resultado booleano
<= menor o igual queoperador binario que da un resultado booleano
+ signo más, operador binario de suma
- signo menos: binario de resta o unario de cambio de signo 
* por, operador binario de multiplicación
/  entre, operador binario de división
^ operador binario de exponenciación (a^b=ab)
% módulo, operador binario, residuo de una división 
~ operador unario booleano de negación
? pregunta, sólo para asignaciones condicionales (P)?a:b
: separador, sólo para asignaciones condicionales (P)?a:b

Operadores booleanos o condicionales: Son aquellos que nos permiten definir condiciones. Vamos a poner algunos ejemplos de su uso.

  • Poner la condición para que un elemento se dibuje. Ej. Queremos que un texto sólo aparezca se la variable a vale menos que 100, indicamos en el campo dibujar-si la condición (a<100).
  • Queremos que una animación o algoritmo se ejecute mientras se cumpla una condición. Ej. En el campo mientras de una animación ponemos (t>=10). Esto hará que la animación estará activa o funcionando mientras el valor de la variable t sea igual o superior que 10.
  • Condición para que un evento se ejecute (los eventos se verán más adelante en esta práctica). Ej. En el campo Condición de un evento ponemos (b=5), por lo que cuando el valor de b sea igual a 5, se realizará la acción indicada en el evento.

En muchas ocasiones el desarrollo de una escena dependiendo de las condiciones que en ella se establezcan. Los operadores que se encargan de examinar estas condiciones, operadores booleanos, o condicionales examinan si se cumple una determinada condición, en cuyo caso el resultado es uno. Si la condición no se cumple su resultado es cero. Por ejemplo, si se pone en una fórmula de un texto (A>B) en la pantalla aparecerá 1 si la condición se cumple y 0 si no se cumple. Se recomienda poner las condiciones entre paréntesis.

Para realizar estas comparaciones usamos los operadores matemáticos > < = # (mayor, menor, igual, distinto) y los operadores lógicos & | ~ (Y, O, NO). Vamos a por algunos ejemplos de operadores condicionales o booleanos.

  • Condición de que a sea mayor que 3. Se escribiría como (a>3)
  • Condición de que b sea mayor o igual que -3. Se escribiría como (b>=-3)
  • Condición de que a sea menor o igual que 3. Se escribiría como (a<=3)
  • Condición de que a sea igual que b. Se escribiría como (a=b) o (a==b)
  • Condición de que a sea menor que 3. Se escribiría como (a<3)
  • Condición de que b sea menor o igual que -3. Se escribiría como (b<=-3)
  • Condición de que c sea distinto de 5. Se escribiría como (c#5) ó (c!=5)
  • Condición de que a sea mayor que 3 y que a sea menor que 10. Se escribiría como (a>3)&(a<10)
  • Condición de que a sea mayor o igual que 3 y que b sea distinto de 3. Se escribiría como (a>=3)&(b#3)
  • Condición de que a sea igual que 3 o que a sea igual que 10. Se escribiría como (a=3)|(a=10)
  • Condición de que a no sea menor o igual que 8. Se escribiría como ~(a<=8)
  • Condición de que a no sea 5 ni tampoco 8. Se escribiría como (a#5)&(a#8)

La forma de utilizar las comparaciones que se han descrito es, a veces, muy sencilla. Por ejemplo, para la mayoría de los elementos (espacios, controles, elementos 2D y 3D) se pueden establecer condiciones en un apartado llamado dibujar si con los operadores booleanos, de forma que si se cumple la condición se dibujarán. Los controles también traen una opción que se establece mediante condicionales llamada activo-si, que define cuando el control está activo y cuando no lo está.

En los controles se pueden introducir tomas de decisión en su menú acción que están sujetas a condicionales. Los eventos, que veremos en esta práctica también se activan mediante operadores booleanos o condicionales.

Los operadores condicionales también se usan para definir el dominio de una función, el número de ciclos que se repite un algoritmo, para definir variables de forma condicionada, etc.

Un operador importante a la hora de tomar decisiones condicionadas es el operador tipo pregunta, cuya estructura es del tipo P=(condición)?a:b, donde P valdrá a si se cumple la condición y b si no se cumple. a y b pueden ser constantes o variables, numéricas o alfanuméricas (texto). 

Ejemplo 1: P=(nota>=5)?'Aprobado':'Suspenso'. Esto significa que si la variable nota es mayor o igual que 5, el valor de P será 'Aprobado' y en caso contrario 'Suspenso'

Ejemplo 2: L=(a<100)?10:8. Esto significa que, si la variable a es menor que 100, el valor de L será igual 10 y en caso contrario L tomará el valor de 8.

Los operadores tipo pregunta pueden anidarse uno dentro de otros según la estructura: 

P=(condición1)?a:((condición2)?b((condición3)?c:d))

donde P valdrá a si se cumple la condición 1, b si se cumple la condición 2, c si se cumple la condición 3 y d si no se cumple ninguna condición. a, b, c y d pueden ser constantes o variables, numéricas o alfanuméricas (texto). Se pueden anidar tantas condiciones como se deseen y se debe tener en cuenta que hay que cerrar tantos paréntesis como se abran.

Ejemplo de operador tipo pregunta anidado:

P=(nota<5)?'Suspenso':(((nota>=5)&(nota<7))?'Aprobado':(((nota>=7)&(nota<9))?'Notable':((nota>=9)?'Sobresaliente':'No calificado')))

Esto significa que si la variable nota es menor que 5 el valor de P será 'Suspenso', si es mayor o igual que 5 y menor que 7, el valor de P será 'Aprobado', si es mayor o igual que 7 y menor que 9, el valor de P será 'Notable', si es mayor o igual que 9, 'Sobresaliente' y si la variable nota no cumple ninguna condición, el valor de P será 'No calificado'.

Detallaremos este ejemplo de operador tipo pregunta paso a paso. Definimos el control numérico nota, tipo pulsador, en la zona norte, sin decimales, cuyo valor mínimo será 0, valor máximo 10 y con un incremento de 1.

Incluimos una variable en un texto cuyo valor será [(nota<5)?'Suspenso':(((nota>=5)&(nota<7))?'Aprobado':(((nota>=7)&(nota<9))?'Notable':((nota>=9)?'Sobresaliente':'No calificado')))], el valor se escribe entre corchetes, ya que este es el formato en el que se escriben las variables en los textos.

Si cambiamos el valor del control nota, cambiará el valor del texto:

Actividad

Realizar una escena utilizado operadores aritméticos y booleanos.