Herramientas de usuario

Herramientas del sitio


es:manual:items:patron:logica

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 continuació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 Escriba una representación lógica del siguiente enunciado: “Si aumentan los impuestos sobre los carburantes, subirá la inflación y disminuirá el consumo”. Considere lo siguiente: p: aumentan los impuestos sobre los carburantes q: sube la inflación r: disminuye el consumo
Patrón. p → (q & r)
Respuestas reconocidas p → (r & q)
(p –> r) && (p –> q)
Respuestas no reconocidas p –> r && p –> q La prioridad de operación del operador && es mas fuerte que la del operador →

Ejemplo 2

Enunciado Escriba una expresión lógica equivalente a $p \to q$ sin utilizar el operador $\to$
Patrón. p → q @noIMP
Respuestas reconocidas $!p \lor q$
!(p && !q)
Respuestas no reconocidas p –> q No se admite el operador →

Ejemplo 3

Enunciado ¿Que condición debe cumplirse para que pueda realizarse esta oparación $1/a + 1/b$ ?
Patrón. a != 0 && b != 0
Respuestas reconocidas $a \ne 0 \land b \ne 0$
(a > 0 || a < 0) && (b > 0 || b < 0)
$a == 1 \land b==1$

Cuando en la expresión lógica aparecen operadores relacionales, se supone que a ambos lados hay una expresión numérica. Si no se especifica ninguna otra cosa, la interpretación solo asigna a las variables implicadas valores numéricos 1 y 0, resolviendo la comparación en estos casos. Pueden definirse los valores que puede tomar la variables mediante una instrucción de asignación, como se muestra los siguientes ejemplos:

Ejemplo 4

Patrón. a>0 && b>0 @a<-{0,1,2} La expresión @a<-{0,1,2} indica que la variable a puede tomar los valores numéricos 0,1 y 2. La variable b toma valores 0 o 1.
Respuestas no reconocidas a==1 && b==1 La interpretación a←2, b←1; hace que el valor del patrón sea verdadero, pero el valor de la respuesta es falso.

Ejemplo 5

Patrón. a>0 && b>a @a<-{0,1} @b<-{0,1}
Respuestas no reconocidas a>0 && b>0 La interpretación a←1, b←1; hace que el valor del patrón sea falso, pero el valor de la respuesta es verdadero.

Descripción del lenguaje

Las variables se escriben siempre como un solo carácter. En todo el lenguaje no se distingue nunca entre mayúsculas minúsculas. La sintaxis del para escribir tanto los patrones como la respuesta puede considerarse como una síntesis 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 &not;
&tilde;
&#732;
&excl;
&#33;
&#172;
Disyunción Texto or
|
+
C, Java ||
Unicode \u2228
LaTeX \lor
Html &or;
&#8744;
Conjunción Texto and
&
*
C, Java &&
Unicode \u2227
LaTeX \land
\times
\ast
Html &and;
&#8743;
Implicación Texto imp
->
-->
Unicode \u2192
LaTeX \to
\rightarrow
Html &harr;
&#8594;
Doble implicación Texto dimp
=
<->
<-->
Unicode \u2194
LaTeX \leftrightarrow
Html &rarr;
&#8596;
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 &ne;
&#8800;
Menor C, Java <html>&lt;</html>
Html &lt;
Menor o igual C, Java <html>&lt;=</html>
LaTeX \le
Unicode \u2264
Html &lt;=
&le;
&#8804;
Mayor C, Java <html>&gt;</html>
Html &lt;
Mayor o igual C, Java <html>&gt;=</html>
LaTeX \ge
Unicode \u2265
Html &gt;=
&ge;
&#8805;

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 de restricción

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

Instrucciones de asignación

Cuando en una fórmula lógica intervienen variables numéricas, por defecto se le asignan valores 0 y 1 como posibles interpretaciones. Se puede especificar el rango de valores que puede tomar una variable lógica mediante una instrucción de asignación de la forma:

 @v <- { valor, valor, valor .... }

el siguiente ejemplo indica que la variable a puede tomar los valores 0,1 o 2.:

 @a <- { 0,1,2 }

Tambien puede expresarse los valores mediante rangos de variación con un cierto incremento. Por ejemplo, la siguiente expresión asigna a la variable x los posibles valores 0, 0.25, 0.5, 0.75 o 1.

 @x <- [0,1, 0.25]

En cualquier caso los posibles valores siempre son finitos, y debe tenerse en cuenta que la complejidad del cálculo crece al aumentar el numero de posibles interpretaciones.

es/manual/items/patron/logica.txt · Última modificación: 2023/05/08 11:34 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki