¡Esta es una revisión vieja del documento!
Patrón de expresiones lógicas
En este caso, tanto el patrón como las respuestas del alumno representan una expresión lógica en la que interviene un número finito (y limitado) de variables y un conjunto de operadores booleanos. Se considera que la respuesta encaja con el patron cuando el valor de verdad de la expresión es exactamente el mismo para todas las posibles interpretaciones. Por ejemplo, el patrón $p \to q$ reconoce como correcta la expresión lógica $\lnot p \lor q$ y la expresión $\lnot (p \land \lnot q)$, ya que las tres son equivalentes, es decir, dan el mismo resultado para cualquier posible interpretación, entendiendo como tal cualquier combinación de valores de las variables que intervienen en la expresión. En este caso, las cuatro interpretaciones posibles son $\{p=true, q=true\}$; $\{p=true, q=false\}$; $\{p=false, q=true\}$; y $\{p=false, q=false\}$
Evidentemente, el número de variables $n$, incrementa el número de interpretaciones, ya que la complejidad del cálculo es claramente del orden de $2^n$, pero para los casos que normalmente se plantean no hay problema incluso con 12 o más variables. Como se verá mas adelante, al describir el uso de variables numéricas, la interpretación en estos casos puede asignar valores numéricos a las variables.
A coniuación se presentan algunos ejemplos de uso de este patrón. El siguiente epígrafe se hace una descripción completa del lenguaje.
Ejemplo 1
Enunciado |
---|
p: aumentan los impuestos sobre los carburantes <br> q: sube la inflación <br> r: disminuye el consumo </html> |
Patrón. | <html>p -> (q & r) </html> | |
---|---|---|
Respuestas reconocidas | <html>p -> (r & q)$ </html> | |
<html>(p --> r) && (p --> q) </html> | ||
Respuestas no reconocidas | <html><font color='red'>p --> r && p --> q</font> </html> | La prioridad de operación del operador && es mas fuerte que la del operador → |
Descripción del lenguaje
Las variables se escriben siempre como un solo caracter. En todo el lenguaje no se distingue nunca entre mayusculas minúsculas. La sintaxis del para escribir tanto los patrones como la respuesta puede considerarse como una sintesis de diversos lenguajes de programación (como java o C) y lenguajes que incluyen símbolos contenidos en las expresiones lógicas (como Unicode, LaTeX, Html), con algunas extensiones propias para intentar reconocer la mayor parte de las posibles representaciones de las expresiones lógicas
Operadores lógicos
Operador lógico | Estilo | Expresiones válidas |
---|---|---|
Verdadero | Texto, C, Java | true |
Falso | Texto, C, Java | false |
Negación | Texto | not |
- | ||
~ | ||
C, Java | ! | |
Unicode | \u00AC | |
\u02DC | ||
LaTeX | \lnot | |
\bar | ||
Html | ¬ | |
˜ | ||
˜ | ||
! | ||
! | ||
¬ | ||
Disyunción | Texto | or |
| | ||
+ | ||
C, Java | || | |
Unicode | \u2228 | |
LaTeX | \lor | |
Html | ∨ | |
∨ | ||
Conjunción | Texto | and |
& | ||
* | ||
C, Java | && | |
Unicode | \u2227 | |
LaTeX | \land | |
\times | ||
\ast | ||
Html | ∧ | |
∧ | ||
Implicación | Texto | imp |
-> | ||
--> | ||
Unicode | \u2192 | |
LaTeX | \to | |
\rightarrow | ||
Html | ↔ | |
→ | ||
Doble implicación | Texto | dimp |
= | ||
<-> | ||
<--> | ||
Unicode | \u2194 | |
LaTeX | \leftrightarrow | |
Html | → | |
↔ | ||
Disyunción exclusiva | Texto | xor |
Disyunción opuesta | Texto | nor |
Conjunción opuesta | Texto | nand |
La sintaxis de las expresiones es la habitual en los lenguajes de programación. La prioridad y asoicatividad de los operadores es tambien la habitual. Todos los operadores son asociativos por la izquierda. El siguiente cuadro muestra las precedencias de menor (mas arriba) a mayor (mas abajo). La prioridad de operación puede alterarse mediante el uso de paréntesis.
DIMP |
IMP |
OR, XOR, NOR |
AND, NAND |
NOT |
Operadores relacionales
Además de los operadores lógicos el lenguaje incluye operadores relacionales para comparar variables o expresiones numéricas. El siguiente cuadro muestra los aspectos léxicos de estos operadores:
Operador relacional | Estilo | Expresiones válidas |
---|---|---|
Igual | C, Java | == |
Distinto | C, Java | != |
Texto | <> | |
Unicode | \u2260 | |
LaTeX | \ne | |
Html | ≠ | |
≠ | ||
Menor | C, Java | <html><</html> |
Html | < | |
Menor o igual | C, Java | <html><=</html> |
LaTeX | \le | |
Unicode | \u2264 | |
Html | <= | |
≤ | ||
≤ | ||
Mayor | C, Java | <html>></html> |
Html | < | |
Mayor o igual | C, Java | <html>>=</html> |
LaTeX | \ge | |
Unicode | \u2265 | |
Html | >= | |
≥ | ||
≥ |
El lenguaje tambien incluye constantes enteras y reales. (números), que puede formar parte de las expresiones relacionales. Los operadores relacionales tienen mayor prioridad de operación que los operadores lógicos. No se han incluido en el lenguaje operadores aritméticos.
Instrucciones
El lenguaje de patrones de expresiones lógicas incluye un conjunto de instrucciones para controlar los operadores que se admiten como válidos en las respuestas, de manera que se pueda forzar al alumno a utilizar, o mejor dicho a no utilizar determinados operadores. Son los siguientes:
Instrucción | Significado |
---|---|
@noNOT | No se puede utilizar el operador NOT |
@noOR | No se puede utilizar el operador OR |
@noXOR | No se puede utilizar el operador XOR |
@noNOR | No se puede utilizar el operador NOR |
@noAND | No se puede utilizar el operador AND |
@noNAND | No se puede utilizar el operador NAND |
@noIMP | No se puede utilizar el operador IMP |
@noDIMP | No se puede utilizar el operador DIMP |