Herramientas de usuario

Herramientas del sitio


es:manual:items:externosfichero

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:externosfichero [2023/09/27 12:24] rootes:manual:items:externosfichero [2023/09/27 12:31] (actual) – [Corrección de la ejecución directa] root
Línea 11: Línea 11:
 El caso mas simple de preguntas de ejecución de ficheros es aquel en el que el fichero enviado como respuesta se procesa y se captura su salida que se pasará a Siette directamente como respuesta. El caso mas simple de preguntas de ejecución de ficheros es aquel en el que el fichero enviado como respuesta se procesa y se captura su salida que se pasará a Siette directamente como respuesta.
  
-Siette reconocerá esta respuesta como cualquier otra respuesta a una pregunta de respuesta libre e intentará reconocer mediante alguno de los patrones si la respuesta (el resultado de la ejecución del script) coincide con alguno de ellos.+Siette reconocerá esta respuesta como cualquier otra respuesta a una pregunta de respuesta libre e intentará reconocer mediante alguno de los patrones si la respuesta (el resultado de la ejecución del [[es:manual:spsl|script de procesamiento]]) coincide con alguno de ellos.
  
 === Ejemplo 1 === === Ejemplo 1 ===
Línea 23: Línea 23:
 {{ es:manual:items:item-externo-python-2.png?500 }} {{ es:manual:items:item-externo-python-2.png?500 }}
  
-Para corregir este ítem se usa un //script de procesamiento// escrito en el [[es:manual:spsl|lenguaje SPSL]], con las siguientes instrucciones, en la pestaña [[es:help_items_advanced_files|Avanzado]], en donde debe indicarse previamente que el [[es:help_items_advanced#Sistema de presentación de la pregunta]] es ''Enviar fichero'':+Para corregir este ítem se usa un [[es:manual:spsl|script de procesamiento]] escrito en el [[es:manual:spsl|lenguaje SPSL]], con las siguientes instrucciones, en la pestaña [[es:help_items_advanced_files|Avanzado]], en donde debe indicarse previamente que el [[es:help_items_advanced#Sistema de presentación de la pregunta]] es ''Enviar fichero'':
  
       python3 test.py 1 2 3 4; python3 test.py 1 5 3 4;       python3 test.py 1 2 3 4; python3 test.py 1 5 3 4;
Línea 42: Línea 42:
 ==== Corrección de la ejecución mediante etiquetas ==== ==== Corrección de la ejecución mediante etiquetas ====
  
-Salvo casos sencillos en los que la ejecución sea simple, la evaluación directa del resultado de la ejecución de una instrucción no permite una evaluación detallada. Cuando se usa un //script de procesamiento//, la salida que se devuelve es simplemente la ejecución de la última de las sentencias, por lo que se pierde información en el caso en el que se requiera realizar diversas pruebas, cuyo resultado puede ser unas veces correcto y otras no. +Salvo casos sencillos en los que la ejecución sea simple, la evaluación directa del resultado de la ejecución de una instrucción no permite una evaluación detallada. Cuando se usa un [[es:manual:spsl|script de procesamiento]], la salida que se devuelve es simplemente la ejecución de la última de las sentencias, por lo que se pierde información en el caso en el que se requiera realizar diversas pruebas, cuyo resultado puede ser unas veces correcto y otras no. 
  
-Para solucionar este problema el //script de procesamiento// trabaja con patrones de reconocimiento específicos para cada una de las sentencias de ejecución del //script// y devuelve a Siette como respuesta de la ejecución //etiquetas// que resumen el resultado de varias pruebas.+Para solucionar este problema el [[es:manual:spsl|script de procesamiento]] trabaja con patrones de reconocimiento específicos para cada una de las sentencias de ejecución del //script// y devuelve a Siette como respuesta de la ejecución //etiquetas// que resumen el resultado de varias pruebas.
  
  
 === Ejemplo 2 === === Ejemplo 2 ===
  
-Para el problema del ejemplo anterior, supongamos ahora que el //script de procesamiento// es el siguiente:+Para el problema del ejemplo anterior, supongamos ahora que el [[es:manual:spsl|script de procesamiento]] es el siguiente:
  
    python3 test.py 1 2 3 4 == True ->           : Incorrecto    python3 test.py 1 2 3 4 == True ->           : Incorrecto
    python3 test.py 1 5 3 4 == False -> Correcto : Incorrecto    python3 test.py 1 5 3 4 == False -> Correcto : Incorrecto
  
-Este //script// toma escribe en un fichero ''test.py'' el texto introducido por el alumno, y lo ejecuta con el interprete ''python3'' pasandole primero unos parametros con los que debe dar un resultado ''True''. Si no da este resultado el //script de procesamiento// devolverá como respuesta la etiqueta ''Incorrecto''. . Si la primer prueba tiene éxito, probara una segunda con una lista no ordenada. Si el resultado es ''False'', devolverá como respuesta la etiqueta ''Correcto'' y si no la etiqueta ''Incorrecto''+Este //script// toma escribe en un fichero ''test.py'' el texto introducido por el alumno, y lo ejecuta con el interprete ''python3'' pasandole primero unos parametros con los que debe dar un resultado ''True''. Si no da este resultado el [[es:manual:spsl|script de procesamiento]] devolverá como respuesta la etiqueta ''Incorrecto''. . Si la primer prueba tiene éxito, probara una segunda con una lista no ordenada. Si el resultado es ''False'', devolverá como respuesta la etiqueta ''Correcto'' y si no la etiqueta ''Incorrecto''
 Al igual que en otros ítem externos, hay que indicar en el [[es:manual:items:externos#ítem base]] que estas son las dos opciones posibles de respuesta mediante los correspondientes patrones, ya que en este caso el [[es:manual:items:externos#ítem base]] es un [[es:manual:items:tiposbasicos:respuesta_libre|ítem de respuesta libre]], en la pestaña [[es:help_items_content_pattern|Contenido]] Al igual que en otros ítem externos, hay que indicar en el [[es:manual:items:externos#ítem base]] que estas son las dos opciones posibles de respuesta mediante los correspondientes patrones, ya que en este caso el [[es:manual:items:externos#ítem base]] es un [[es:manual:items:tiposbasicos:respuesta_libre|ítem de respuesta libre]], en la pestaña [[es:help_items_content_pattern|Contenido]]
  
Línea 65: Línea 65:
 El //checkbox// que aparece al pie de la lista de etiquetas permite mostrar alternativamente los patrones o las etiquetas. El //checkbox// que aparece al pie de la lista de etiquetas permite mostrar alternativamente los patrones o las etiquetas.
  
-También en este caso es interesante poder usar el campo [[es:manual:test:refuerzos|''Refuerzo'']] para informar al alumno del motivo del fallo. Para ello se podría hacer la siguiente modificación en el //script de procesamiento//:+También en este caso es interesante poder usar el campo [[es:manual:test:refuerzos|''Refuerzo'']] para informar al alumno del motivo del fallo. Para ello se podría hacer la siguiente modificación en el [[es:manual:spsl|script de procesamiento]]:
  
    python3 test.py 1 2 3 4 == True ->           : Incorrecto1    python3 test.py 1 2 3 4 == True ->           : Incorrecto1
Línea 79: Línea 79:
 {{ es:manual:items:item-externo-python-6.png?500 }} {{ es:manual:items:item-externo-python-6.png?500 }}
  
-Evidentemente, en un caso real se deberían añadir mas pruebas en el //script de procesamiento// para garantizar que el programa cumple las especificaciones de forma general, y no tan solo en dos casos de prueba.+Evidentemente, en un caso real se deberían añadir mas pruebas en el [[es:manual:spsl|script de procesamiento]] para garantizar que el programa cumple las especificaciones de forma general, y no tan solo en dos casos de prueba.
  
 === Ejemplo 3 === === Ejemplo 3 ===
Línea 105: Línea 105:
  
 == Script de procesamiento == == Script de procesamiento ==
-El script de procesamiento es un //programa// escrito en [[es:manual:spsl|lenguaje SPSL]], que se introduce en el campo ''Script'' de la pestaña [[es:help_items_advanced_files|Avanzado]]. +El [[es:manual:spsl|script de procesamiento]] es un //programa// escrito en [[es:manual:spsl|lenguaje SPSL]], que se introduce en el campo ''Script'' de la pestaña [[es:help_items_advanced_files|Avanzado]]. 
  
-En el caso anterior el //script de procesamiento// es el siguiente:+En el caso anterior el [[es:manual:spsl|script de procesamiento]] es el siguiente:
  
    @PatronSiette: false, false, false, true    @PatronSiette: false, false, false, true
Línea 129: Línea 129:
    echo 18 24   | ./mcd    echo 18 24   | ./mcd
  
-El resultado de esta prueba debería ser ''6'', o bien ''mcd=6'', o cualquier otra que terminase con el número 6. Para ello el //script de procesamiento// utiliza el [[es:manual:items:patron:siette|patron Siette]] ''*<6|6>'', que encaja con cualquiera de estas respuestas.+El resultado de esta prueba debería ser ''6'', o bien ''mcd=6'', o cualquier otra que terminase con el número 6. Para ello el [[es:manual:spsl|script de procesamiento]] utiliza el [[es:manual:items:patron:siette|patron Siette]] ''*<6|6>'', que encaja con cualquiera de estas respuestas.
  
 En caso de que la prueba tenga éxito el //script// asigna el valor de ''1'' como posible respuestas, pero continúa su ejecución. realiza a continuación la siguiente prueba  En caso de que la prueba tenga éxito el //script// asigna el valor de ''1'' como posible respuestas, pero continúa su ejecución. realiza a continuación la siguiente prueba 
Línea 135: Línea 135:
    echo 192 224 | ./mcd     echo 192 224 | ./mcd 
  
-que debe dar como resultado una secuencia que termine en ''32''. Si esta prueba tiene éxito, asigna el valor ''5'' omo posible respuesta, y prosigue con le ejecución. Si no, la ejecución del //script de procesamiento// termina y devuelve el valor que habia preparado anteriormente, es decir ''1''.+que debe dar como resultado una secuencia que termine en ''32''. Si esta prueba tiene éxito, asigna el valor ''5'' omo posible respuesta, y prosigue con le ejecución. Si no, la ejecución del [[es:manual:spsl|script de procesamiento]] termina y devuelve el valor que habia preparado anteriormente, es decir ''1''.
  
 Finalmente realiza la tercera prueba con otros valores diferentes. Si tiene exito devolverá un ''10'', y si no lo tiene devolvera ''5'' que es la etiqueta asociada a la última prueba correcta. Finalmente realiza la tercera prueba con otros valores diferentes. Si tiene exito devolverá un ''10'', y si no lo tiene devolvera ''5'' que es la etiqueta asociada a la última prueba correcta.
  
-En realidad, las etiquetas que devuelve el //script// son algo mas elaboradas, ya que pueden incluir información sobre la ejecución del script y la última sentencia que provocó un error. Por ejemplo, suponiendo que las dos primeras pruebas funcionan, pero no asi la tercera, el //script de procesamiento // devolveria realmente una cadena de texto como esta:+En realidad, las etiquetas que devuelve el //script// son algo mas elaboradas, ya que pueden incluir información sobre la ejecución del script y la última sentencia que provocó un error. Por ejemplo, suponiendo que las dos primeras pruebas funcionan, pero no asi la tercera, el [[es:manual:spsl|script de procesamiento]] devolveria realmente una cadena de texto como esta:
  
    <!--5--><code><pre><font color='red'>&gt;echo 192 224 | ./mcd    <!--5--><code><pre><font color='red'>&gt;echo 192 224 | ./mcd
Línea 151: Línea 151:
 que le indica que al ejecutar el programa ''mcd'' con los valores ''192 224'' el resultado obtenido es ''24'' (que no es correcto). que le indica que al ejecutar el programa ''mcd'' con los valores ''192 224'' el resultado obtenido es ''24'' (que no es correcto).
  
-La respuesta del //script de procesamiento// es un trozo de texto en HTML. La primera parte de esta respuesta corresponde a la etiqueta de evaluación que se devuelve dentro de un comenatrio HTML para no interferir con la presentación de la respuesta al alumno.+La respuesta del [[es:manual:spsl|script de procesamiento]] es un trozo de texto en HTML. La primera parte de esta respuesta corresponde a la etiqueta de evaluación que se devuelve dentro de un comentario HTML para no interferir con la presentación de la respuesta al alumno.
  
 == Reconocimiento de la respuesta externa == == Reconocimiento de la respuesta externa ==
Línea 158: Línea 158:
 {{ es:manual:items:item-externo-mcd-2.png }} {{ es:manual:items:item-externo-mcd-2.png }}
  
-Como puede apreciarse en este caso el patrón de reconocimiento, en este caso un [[es:manual:items:patron:siette|patrón Siette]] que encaja con la respuesta del //script de procesamiento// es ''<!--5-->*'', es decir, el patrón reconoce solamente la etiqueta de evaluación dentro del comentario HTML e ignora el resto de la respuesta de cara a la evaluación.+Como puede apreciarse en este caso el patrón de reconocimiento, en este caso un [[es:manual:items:patron:siette|patrón Siette]] que encaja con la respuesta del [[es:manual:spsl|script de procesamiento]] es ''<!--5-->*'', es decir, el patrón reconoce solamente la etiqueta de evaluación dentro del comentario HTML e ignora el resto de la respuesta de cara a la evaluación.
  
-En el caso en que se usen etiquetas para componer la respuesta como resultado del //script de procesamiento//, el interfaz de usuario se ha simplificado, de manera que no es necesario introducir los patrones, ni el [[es:help_items_content_pattern#tipo de patrón]] y las opciones de reconocimiento, sino simplemente las etiquetas. Esto facilita la tarea del programador y evita posibles errores. En el caso anterior la interfaz de usuario mostrará la pestaña ''Contenido'' de la siguiente forma:+En el caso en que se usen etiquetas para componer la respuesta como resultado del [[es:manual:spsl|script de procesamiento]], el interfaz de usuario se ha simplificado, de manera que no es necesario introducir los patrones, ni el [[es:manual:items:patrones#tipos_de_patrones_de_evaluación|tipo de patrón]] y las opciones de reconocimiento, sino simplemente las etiquetas. Esto facilita la tarea del programador y evita posibles errores. En el caso anterior la interfaz de usuario mostrará la pestaña ''Contenido'' de la siguiente forma:
  
 {{ es:manual:items:item-externo-mcd-3.png }} {{ es:manual:items:item-externo-mcd-3.png }}
  
-Puesto que la respuesta del //script de procesamiento// no ha sido completamente errónea, es potestad del profesor decidir si asigna un crédito parcial a esta respuesta, mediante el sistema de [[es:manual:test:tipos#por puntos|evaluación por puntos]], o bien si se dispone de datos suficientes, se podría calibrar un modelo de respuesta [[es:manual:test:tipos#TRI|TRI politómico]]; pero esto ya es otra historia...+Puesto que la respuesta del [[es:manual:spsl|script de procesamiento]] no ha sido completamente errónea, es potestad del profesor decidir si asigna un crédito parcial a esta respuesta, mediante el sistema de [[es:manual:test:tipos#por puntos|evaluación por puntos]], o bien si se dispone de datos suficientes, se podría calibrar un modelo de respuesta [[es:manual:test:tipos#TRI|TRI politómico]]; pero esto ya es otra historia...
  
  
es/manual/items/externosfichero.1695817440.txt.gz · Última modificación: 2023/09/27 12:24 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki