Herramientas de usuario

Herramientas del sitio


es:manual:items:patron:siette

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
es:manual:items:patron:siette [2021/04/08 17:34] – [Patrones con números] rootes:manual:items:patron:siette [2023/05/08 08:50] (actual) root
Línea 2: Línea 2:
 ===== Patrón de expresiones regulares Siette ===== ===== Patrón de expresiones regulares Siette =====
  
-Este patrón es una versión simplificada en algunos casos y extendida en otros de las expresiones regulares que pueden encontrarse en muchos lenguajes de programación como Java, Javascript, Perl, etc. Una expresion regular no es mas que una forma de definir un lenguaje regular, es decir, un conjunto de secuencias de caracteres. +Este patrón es una versión simplificada en algunos casos y extendida en otros de las expresiones regulares que pueden encontrarse en muchos lenguajes de programación como Java, Javascript, Perl, etc. Una expresión regular no es mas que una forma de definir un lenguaje regular, es decir, un conjunto de secuencias de caracteres. 
  
    
 ==== Expresiones básicas ==== ==== Expresiones básicas ====
  
-Los patrones son a su vez cadenas de caracteres, y utilizan como base el mismo alfabeto por lo que es necesario tomar ciertas precauciones al escribir algunos caracteres que tienen un significado especial. En la siguiente tabla se muestran los patrones y el caracter que representan. Siguiendo la notación clásica en esta materia llamaremos "lexemas" a las secuencias de caracteres reconocidas por el patrón. +Los patrones son a su vez cadenas de caracteres, y utilizan como base el mismo alfabeto por lo que es necesario tomar ciertas precauciones al escribir algunos caracteres que tienen un significado especial. En la siguiente tabla se muestran los patrones y el carácter que representan. Siguiendo la notación clásica en esta materia llamaremos "lexemas" a las secuencias de caracteres reconocidas por el patrón. 
  
 === Caracteres individuales === === Caracteres individuales ===
  
-En general cualquier caracter no especial se representta a si mismo. Los caracteres especiales deben llevar una barra invertida \ en el patrón como indica la siguiente tabla:+En general cualquier carácter no especial se representa a si mismo. Los caracteres especiales deben llevar una barra invertida \ en el patrón como indica la siguiente tabla:
  
 ^ Patrón ^ Lexema ^ ^ Patrón ^ Lexema ^
Línea 18: Línea 18:
 | \* | * | | \* | * |
 | \<nowiki>|</nowiki> | <nowiki>|</nowiki> | | \<nowiki>|</nowiki> | <nowiki>|</nowiki> |
-| \( | ( |+| \<nowiki>(</nowiki> | ( |
 | \) | ) | | \) | ) |
 | \{ | { | | \{ | { |
 | \} | } | | \} | } |
-| \[ | [ |+| \<nowiki>[</nowiki> | [ |
 | \] | ] | | \] | ] |
 +| \< | < |
 +| \> | > |
 | \# | # | | \# | # |
 | \$ | $ | | \$ | $ |
-| \\ | \ |+<nowiki>\\</nowiki> | \ |
  
  
 === Concatenación === === Concatenación ===
  
-La concatenación de dos expresiones regulares da como resultado otra expresión regular que representa todas las posibles combinaciones de los lexemas de la primera expresion con todos los posibles lexemas de la segunda. +La concatenación de dos expresiones regulares da como resultado otra expresión regular que representa todas las posibles combinaciones de los lexemas de la primera expresión con todos los posibles lexemas de la segunda. 
-A continuación se dan algunos ejemplo simbles.+A continuación se dan algunos ejemplo simples.
  
 ^ Patrón ^ Lexema ^ ^ Patrón ^ Lexema ^
Línea 123: Línea 125:
  
 === Permutaciones === === Permutaciones ===
-El operador + se usa para poder generar permutaciones en el orden de respuesta. Es un operador binario que afecta a las dos expresiones situadas a derecha e izquierda. Dado que el número de permutaciones crece factorialmente con el número de expresiones, a efectos practicos se limita a 6 el número de expresiones que pueden interoperarse con el operador +, Tenga en cuenta que 6! = 720, pero que 7! = 5040 lo que supone un tiempo de cálculo excesivo para una pregunta.+El operador + se usa para poder generar permutaciones en el orden de respuesta. Es un operador binario que afecta a las dos expresiones situadas a derecha e izquierda. Dado que el número de permutaciones crece factorialmente con el número de expresiones, a efectos prácticos se limita a 6 el número de expresiones que pueden interoperarse con el operador +, Tenga en cuenta que 6! = 720, pero que 7! = 5040 lo que supone un tiempo de cálculo excesivo para una pregunta.
  
 ^ Patrón ^ Ejemplo de lexemas ^ lexemas no válidos ^ ^ Patrón ^ Ejemplo de lexemas ^ lexemas no válidos ^
Línea 143: Línea 145:
 del profesor el buen uso de estas expresiones. Como consejo general a la hora de crear preguntas de del profesor el buen uso de estas expresiones. Como consejo general a la hora de crear preguntas de
 respuesta libre, lo mejor es concretar al máximo posible la pregunta, de manera que no existan muchas respuesta libre, lo mejor es concretar al máximo posible la pregunta, de manera que no existan muchas
-ambigüedades.+ambigüedades.
  
 === Ejemplo 1 ===  === Ejemplo 1 === 
  
 ^ Enunciado | //Indique el nombre de alguna novela de Hemingway//          | ^ Enunciado | //Indique el nombre de alguna novela de Hemingway//          |
-^ Patrón.   <html><code><b>*(viejo*mar|doblan*campanas|fiesta)*</b><code></html> |+^ Patrón.   | <b>*(viejo*mar|doblan*campanas|fiesta)*</b> |
 ^ Respuestas reconocidas   | El viejo y el mar | ^ Respuestas reconocidas   | El viejo y el mar |
 ^:::   | Por quién doblan las campanas | ^:::   | Por quién doblan las campanas |
 ^:::   | París era una fiesta | ^:::   | París era una fiesta |
 ^:::   | Fiesta | ^:::   | Fiesta |
-^:::   | <html><font color="blue">En la fiesta de Blas</font></html> | +^:::   | <color blue>En la fiesta de Blas</color> | 
-^ Respuestas no reconocidas   | <html><font color="red">Adiós a las armas</font></html> | +^ Respuestas no reconocidas   | <color red>Adiós a las armas</color> | 
-^:::   | <html><font color="red">Las nieves del Kilimanjaro</font></html> |+^:::   | <color red>Las nieves del Kilimanjaro</color> |
 ^:::   | Nuestro hombre en la Habana | ^:::   | Nuestro hombre en la Habana |
  
Línea 164: Línea 166:
  
 ^ Enunciado | //¿Quién escribio "El Quijote"?//          | ^ Enunciado | //¿Quién escribio "El Quijote"?//          |
-^ Patrón.   | <html><code><b>{{Don} Miguel {de}} Cervantes {Saavedra}<code></html> |+^ Patrón.   | <b><nowiki>{{Don} Miguel {de}} Cervantes {Saavedra}</nowiki></b> |
 ^ Respuestas reconocidas   | Cervantes | ^ Respuestas reconocidas   | Cervantes |
 ^:::   | Miguel de Cervantes | ^:::   | Miguel de Cervantes |
Línea 172: Línea 174:
 ^:::   | Don Miguel | ^:::   | Don Miguel |
  
-En muchos casos conviene concretar el enunciado de manera que no quede lugar a ambiguedades y que la respuesta deba ser necesariamente corta y exacta. En el ejemplo anterior, el enunciado podría indicar //Escriba el apellido del autor de "El Quijote"//.+En muchos casos conviene concretar el enunciado de manera que no quede lugar a ambigüedades y que la respuesta deba ser necesariamente corta y exacta. En el ejemplo anterior, el enunciado podría indicar //Escriba el apellido del autor de "El Quijote"//.
  
 === Ejemplo 3 === === Ejemplo 3 ===
 ^ Enunciado | //Cuáles son los colores de la bandera de Francia?//          | ^ Enunciado | //Cuáles son los colores de la bandera de Francia?//          |
-^ Patrón.   <html><code><b>rojo+blanco+{y}+azul</html> |+^ Patrón.   | <b>rojo+blanco+{y}+azul</b> |
 ^ Respuestas reconocidas   | rojo blanco y azul | ^ Respuestas reconocidas   | rojo blanco y azul |
 ^:::   | azul rojo y blanco | ^:::   | azul rojo y blanco |
 ^:::   | blanco azul rojo | ^:::   | blanco azul rojo |
-^:::   | <html><font color="blue">blanco y azul rojo</font></html> | +^:::   | <color blue>blanco y azul rojo</color> | 
-^:::   | <html><font color="blue">y azul rojo blanco</font></html> | +^:::   | <color blue>y azul rojo blanco</color> | 
-^ Respuestas no reconocidas   | <html><font color="red">blanco y azul y rojo</font></html> |+^ Respuestas no reconocidas   | <color red>blanco y azul y rojo</color> |
 ^:::   | blanco y azul | ^:::   | blanco y azul |
  
-Los patrones de respuesta pueden aceptar como correctas algunas expresiones que no son gramaticalmente correctas. Sin duda, si las expresiones se usaran para generar todas las posibles respuestas y proponerlas como ejemplo, este comportamiento sería problematico. Sin embargo, las expresiones están pensadas para su uso contrario, por lo que no es muy importante que puedan reconocer expresiones como "blanco y azul rojo" que no sería gramaticalmente correcta, aunque probablemente no la emplearía ningun alumno. Tampoco parece probable obtener una respuesta como "blanco y azul y rojo". No obstante, si ocurriera deben seguirse las recomendaciones del [[es:manual:items:patrones#uso_de_los_patrones|uso de los patrones]] y refinar el patrón.+Los patrones de respuesta pueden aceptar como correctas algunas expresiones que no son gramaticalmente correctas. Sin duda, si las expresiones se usaran para generar todas las posibles respuestas y proponerlas como ejemplo, este comportamiento sería problemático. Sin embargo, las expresiones están pensadas para su uso contrario, por lo que no es muy importante que puedan reconocer expresiones como "blanco y azul rojo" que no sería gramaticalmente correcta, aunque probablemente no la emplearía ningún alumno. Tampoco parece probable obtener una respuesta como "blanco y azul y rojo". No obstante, si ocurriera deben seguirse las recomendaciones del [[es:manual:items:patrones#uso_de_los_patrones|uso de los patrones]] y refinar el patrón.
  
 === Ejemplo 4 === === Ejemplo 4 ===
  
 ^ Enunciado | //Indique los años durante los que trascurrió la segunda guerra mundial//          | ^ Enunciado | //Indique los años durante los que trascurrió la segunda guerra mundial//          |
-^ Patrón.   <html><code><b>*1939*1945*<code></html> |+^ Patrón.   | <b>*1939*1945*</b> |
 ^ Respuestas reconocidas   | Entre 1939 y 1945 | ^ Respuestas reconocidas   | Entre 1939 y 1945 |
 ^:::   | Desde 1939 hasta 1945 | ^:::   | Desde 1939 hasta 1945 |
Línea 196: Línea 198:
 ^:::   | 1939-1945 | ^:::   | 1939-1945 |
 ^:::   | 1939-40-41-42-43-44-1945 | ^:::   | 1939-40-41-42-43-44-1945 |
-^:::   | <html><font color="blue">193987654321945</font></html> | +^:::   | <color blue>193987654321945</color> | 
-^ Respuestas no reconocidas   | <html><font color="red">1939-45</font></html>  | +^ Respuestas no reconocidas   | <color red>1939-45</color>  | 
-^:::   | <html><font color="red">Empezó en 1939 y duró 6 años</font></html> |+^:::   | <color red>Empezó en 1939 y duró 6 años</color> |
  
  
Línea 204: Línea 206:
 === Ejemplo 5 === === Ejemplo 5 ===
  
-^ Enunciado | //Maria compró tres docenas de huevos y le dió la mitad a Carmen. ¿Cuantos huevos le quedan a María?//          | +^ Enunciado | //María compró tres docenas de huevos y le dió la mitad a Carmen. ¿Cuantos huevos le quedan a María?//          | 
-^ Patrón.   | <html><code><b>{{una} docena y (media|seis|6)|dieciocho|18}{{de} huevos}<code></html> |+^ Patrón.   | <b><nowiki>{{una} docena y (media|seis|6)|dieciocho|18}{{de} huevos}</nowiki></b> |
 ^ Respuestas reconocidas   | Una docena y media | ^ Respuestas reconocidas   | Una docena y media |
 ^:::   | 18 huevos | ^:::   | 18 huevos |
Línea 213: Línea 215:
 ^:::   | dos docenas menos media | ^:::   | dos docenas menos media |
  
-Se da el mismo caso que en el ejemplo anterior con expresiones como "18 de huevos" que no sería gramaticalmente correctas, pero que probablemente no la emplearía ningun alumno.+Se da el mismo caso que en el ejemplo anterior con expresiones como "18 de huevos" que no sería gramaticalmente correctas, pero que probablemente no la emplearía ningún alumno.
  
  
Línea 225: Línea 227:
  
 ^ Enunciado | //¿Cuál es el resultado decimal de dividir 10 entre 3?//          | ^ Enunciado | //¿Cuál es el resultado decimal de dividir 10 entre 3?//          |
-^ Patrón.   <html><code><b>3.3|3.33|3.333*</b><code></html> |+^ Patrón.   | <b>3.3|3.33|3.333*</b> |
 ^ Respuestas reconocidas   | 3.3 | ^ Respuestas reconocidas   | 3.3 |
 ^:::   | 3.333 | ^:::   | 3.333 |
 ^:::   | 3.33333333 | ^:::   | 3.33333333 |
-^:::   | <html><font color="blue">0.333999999999</font></html> |+^:::   | <color blue>0.333999999999</color> |
 ^ Respuestas no reconocidas   | 10/3 | ^ Respuestas no reconocidas   | 10/3 |
-^:::   | <html><font color="red">333E-2</font></html> |+^:::   | <color red>333E-2</color> |
  
-Nótese que aunque es una manera muy extraña de expresarlo tecnicamente sería correcta la respuesta "333E-2" que técnicamente es lo mismo que 333 * 10<sup>-2</sup>. Otros patrones alternativos como <html><code><b>3.3{3}{3}</b></code></html> tienen problemas similares.+Nótese que aunque es una manera muy extraña de expresarlo técnicamente sería correcta la respuesta "333E-2" que técnicamente es lo mismo que 333 * 10<sup>-2</sup>. Otros patrones alternativos como <b>3.3{3}{3}</b> tienen problemas similares.
  
 === Ejemplo 7 === === Ejemplo 7 ===
-^ Enunciado | //¿Cuál es el valor de la constante <html>&pi</html>?//          | +^ Enunciado | //¿Cuál es el valor de la constante// $\pi$//?//          | 
-^ Patrón.   <html><code><b>3.14|3.1416|3.14159{2{[67]}}</b><code></html> |+^ Patrón.   | <b>3.14|3.1416|3.14159{2{[67]}}</b> |
 ^ Respuestas reconocidas   | 3.14 | ^ Respuestas reconocidas   | 3.14 |
 ^:::   | 3.1416 | ^:::   | 3.1416 |
-^:::   | 3.33333333 +^:::   | 3.1415927 | 
-^:::   | <html><font color="blue">0.333999999999</font></html> | +^ Respuestas no reconocidas   | <color red>3.1415926536</color> 
-^ Respuestas no reconocidas   10/+^:::   | <color red>+3.1416</color> 
-^:::   | <html><font color="red">333E-2</font></html> |+ 
 +Como puede verse, la precisión de la respuesta plantea un problema a la correspondencia meramente lexica. 
 + 
 +Para resolver este problema que plantea la habitual interpretación de las secuencias de caracetres que representan digitos como valores numéricos, se han definido en este patrón expresiones númericas. Estas expresiones son 
 +especialmente adecuadas cuando se trabaja con números reales, ya que permiten definir la precisión con 
 +la que se aceptaran las entradas del usuario. Las expresiones numéricas pueden concatenarse 
 +normalmente dentro de los patrones de respuesta. Un número puede definirse en el patrón de dos formas: 
 + 
 +-- Definiendo explícitamente el rango de aceptación: 
 + 
 +<b><nowiki><</nowiki><i>número</i>|<i>número</i><nowiki>></nowiki></b> o bien usando la sintaxis antigua <b>#<i>número</i>#<i>número</i>#</b> 
 +     
 +en donde, //número// representa cualquier secuencia de caracteres que constituya una constante numérica entera o real en [[https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)|Java]]. El primer número debe ser mayor que el primero. Por ejemplo, el patrón :  
 +<b><nowiki><</nowiki>1939|1945<nowiki>></nowiki></b>, acepta cualquier número comprendido entre 1939 y 1945, ambos inclusive.  ( en la versión anterior de Siette, compatible con la actual, el patrón se escribiría <b>#1939#1945#</b>
 +     
 +-- Definiendo el porcentaje de error admisible: 
 +     
 +<b><nowiki><</nowiki><i>número</i>%<i>número</i><nowiki>></nowiki></b> o bien usando la sintaxis antigua: 
 +<b>#<i>número</i>#<i>número</i>%</b> 
 + 
 +en donde el primer numero representa la base de cálculo y el segundo el error porcentual admitido. Por ejemplo, para aceptar cualquier aproximación al número π con un error menor del 1 por ciento, se puede 
 +usar el patrón: <b>&lt;3.14%1&gt;</b> ( en la versión anterior de Siette, compatible con la actual, el patrón se escribiría <b>#3.14#1%</b>
 + 
 +Los patrones de respuesta numéricos siempre se comprueban mediante un intervalo, aunque éste puede ser tan pequeño como se desee, incluso 0. Internamente cuando se encuentra una secuencia de dígitos en la entrada y se han definido patrones numéricos, la secuencia de dígitos se extrae de la entrada y se calcula si encaja o no con la expresión numérica 
 + 
 +==== Patrones con magnitudes (Números con unidades) ==== 
 + 
 +Para ciertas aplicaciones, la respuesta numérica puede no ser suficiente. Por ejemplo, si se pregunta la velocidad de un vehículo, la respuesta podría expresarse en m/s o en km/h o en cualquier otra magnitud. Además, cuando la respuesta  incluye cantidades grandes o pequeñas, la respuesta podría expresarse de distinta manera, por ejemplo la velocidad de la luz, es aproximadamente 300,000 km/s, que es la expresión más habitual, pero también podría expresarse como 3*10<sup>8</sup> m/s. 
 + 
 +=== Unidades === 
 +Para expresar las unidades de una determinada magnitud Siette utiliza las expresiones: 
 +     
 +<b><nowiki><</nowiki><i>número</i> <i>unidades</i>|<i>número</i><nowiki>></nowiki></b> 
 + 
 +<b><nowiki><</nowiki><i>número</i> <i>unidades</i>%<i>número</i><nowiki>></nowiki></b> 
 + 
 +En donde las <b><i>unidades</i></b>, es una cadena de caracteres que representa una unidad de medida. La [[lista de unidades]] de medida incluye unas 500 de las más comunes unidades de longitud, velocidad, masa, volumen, tiempo, etc. 
 + 
 +Para determinar si la respuesta a una pregunta es correcta, pueden ocurrir varios casos: 
 + 
 +  * **No se indican unidades en el patrón**. En ese caso no se espera que el alumno responda con unidades, basta con que responda con un número sin unidades que corresponda al patrón, y se resuelve como se ha explicado en el apartado anterior. Si el alumno incluye unidades. no se consideraran parte del patrón numérico. Si se quiere que el alumno incluya en su respuesta las unidades, éstas se podrían poner fuera del patrón como simples elemento de texto, posiblemente opcionales. 
 + 
 +  * **Se indican unidades en el patrón.** En este caso, pueden ocurrir dos cosas:  
 +    * **La respuesta incluye unidades.**  En este caso, se aplican las reglas de conversion entre unidades antes de comparar su valor numérico. 
 +    * **La respuesta no incluye unidades.** En este caso, se asume que la respuesta está expresada en las unidades del patrón, y no se realiza ninguna conversión. Si el valor numérico encaja, la respuesta se da por correcta. 
 + 
 +En los siguiente ejemplos 81 y 8b se muestra la diferencia entre indicar las unidades dentro y fuera del patrón: 
 + 
 +=== Ejemplo 8a === 
 +^ Enunciado | // Un coche tarda hora y media en recorrer la distancia entre dos ciudades que distan 108 km. ¿A que velocidad media circula? (expresar la velocidad en m/s) //          | 
 +^ Patrón.   | <b><nowiki><</nowiki>20%<i>0</i><nowiki>></nowiki> {m/s}</b>
 +^ Respuestas reconocidas   | 20 | 
 +^:::   | 20  m/s 
 +^ Respuestas no reconocidas   72 m/
 +^:::   | <color red>72 km/h</color> | 
 +^:::   | 20 km/h | 
 + 
 + 
 +=== Ejemplo 8b === 
 +^ Enunciado | // Un coche tarda hora y media en recorrer la distancia entre dos ciudades que distan 108 km. ¿A que velocidad media circula?//          | 
 +^ Patrón.   | <b><nowiki><</nowiki>20 m/s%<i>0</i><nowiki>></nowiki></b>
 +^ Respuestas reconocidas   | 20 | 
 +^:::   | 20  m/s | 
 +^:::   | 72 km/h | 
 +^ Respuestas no reconocidas   | 72 m/s | 
 +^:::   | 20 km/h | 
 + 
 + 
 +=== Constantes numéricas === 
 +Cuando se escribe un número usando solamente los caracteres que aparecen en un teclado ocurren distintas formas de expresar un mismo número. En el patrón numérico de Siette se intenta reconocer de manera "inteligenteel número que se ha intentado expresar con la respuesta, usando posibles variantes. 
 + 
 +  * **Número con decimales** Dependiendo del país los decimales se expresan unas veces con un punto (por ejemplo en EE.UU.) y otras con una coma (que es la norma en España). Sin embargo, el auge de las nuevas tecnologías va haciendo cada vez mas habitual utilizar siempre el punto. El patrón Siette admite ambas formas como equivalentes. Es decir es lo mismo responder **3,14** que **3.14** 
 + 
 +  * **Números con exponente** Cuando se expresa un número muy grande o muy pequeño, suele ser habitual utilizar un numero pequeño e indicar un coeficiente como una potencia de 10. Por ejemplo, el número un millón quinientos mil) (1.5*10<sup>6</sup>) puede expresarse como: **1500000**, **1.5*10^6**, **1,5*10<nowiki>**</nowiki>6**, **1.5E6**, **0,15E7**, **1500*10^3**, etc..  Igualmente los números negativos con exponente pueden expresarse con mantisa negativa. Por ejemplo 0.15 puede expresarse como **1.5E-1**, **155E-2**, **15*10^-2**, etc. 
 + 
 +El uso de números con decimales y exponente puede combinarse con las unidades indistintamente. 
 + 
 +=== Ejemplo 9 === 
 +^ Enunciado | // ¿Cuál es la velocidad de la luz? //          | 
 +^ Patrón.   | <b><nowiki><</nowiki>3E5 km/s%<i>10</i><nowiki>></nowiki></b> | 
 +^ Respuestas reconocidas   | 300000 km/s | 
 +^:::   | 3E5 km/s | 
 +^:::   | 186E3 nudos | 
 +^ Respuestas no reconocidas   | 3E8 | 
 +^:::   | 3E5 km/h | 
 + 
 + 
  
es/manual/items/patron/siette.1617903260.txt.gz · Última modificación: 2021/04/08 17:34 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki