Herramientas de usuario

Herramientas del sitio


es:manual:spsl

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:spsl [2026/01/20 18:02] – [@Result] rootes:manual:spsl [2026/02/17 15:13] (actual) root
Línea 17: Línea 17:
 A continuación se explicará el modo en que se procesa un script explicando una a una las //sentencias// del lenguaje. El orden de exposición de las sentencias irá introduciendo poco a poco los conceptos necesarios para entender el funcionamiento del lenguaje SPSL A continuación se explicará el modo en que se procesa un script explicando una a una las //sentencias// del lenguaje. El orden de exposición de las sentencias irá introduciendo poco a poco los conceptos necesarios para entender el funcionamiento del lenguaje SPSL
  
-Por ejemplo, supongamos que para probar un fichero, lo único que nos interesa saber es si un fichero ''test.txt'' contiene la palabra ''function'', para lo cual se puede usar la siguiente instrucción del sistema operativo:+Por ejemplo, supongamos que para probar un fichero, lo único que nos interesa saber es cuantas lineas contienen la palabra ''function'' en un fichero ''test.txt'', para lo cual se puede usar la siguiente instrucción del sistema operativo:
  
-   grep -function test.txt+   grep -function test.txt
  
-que devuelve ''test.txt'' en caso de que el fichero contenga la palabra ''function'' y no devuelve nada en otro caso.  +que devuelve el numero de ocurrencias. A partir de esta instrucción se puede construir las siguientes //sentencias de pruebas// 
-La sentencia de controlA partir de esta instrucción se puede construir las siguientes //sentencias de pruebas//+ 
 +==== Sentencias de prueba simple. Salida directa ==== 
 + 
 +La opción mas sencilla son las //sentencias de prueba simples//, en las que no se especifica ninguna condición, sino solamente se escribe la instrucción del sistema operativo tal cuál, es decir: 
 + 
 +   grep -c function test.txt 
 + 
 +En este caso la sentencia de prueba devolverá a Siette directamente el valor que la ejecución de la instrucción devuelva por el flujo de datos de la salida estándar (''stdout''). En este ejemplo la secuencia ''3'', en el caso de que el fichero contenga tres lineas con la palabra ''function''
 + 
 +El [[es:manual:items:patron:siette#patrones_con_numeros|patrón de reconocimiento de la respuesta correcta]] en este caso podría ser ''<2|4>'' indicando que cualquier numero entre 2 y 4 se considera correctoEl funcionamiento del sistema es el siguiente: ((Ver otros ejemplos en la sección [[es:manual:items:externosfichero|Preguntas con ficheros]] )) 
 +   - Se recibe el fichero test.txt  
 +   - Se crea un directorio temporal donde sitúa el fichero recibido. 
 +   - Se copian en ese directorio los ficheros auxiliares del directorio base. 
 +   - Se ejecuta el comando ''grep -c function test.txt'' 
 +   - Se captura la salida de este comando (supongamos ''3''
 +   - Esta salida se considera como la respuesta del alumno a una pregunta de respuesta libre 
 +   - Se busca el patrón que encaja con esta respuesta, para determinar si la respuesta es correcta. 
 +   - Se muestra al usuario su respuesta y la corrección (si el test lo permite)
  
 ==== Sentencias de prueba completas ==== ==== Sentencias de prueba completas ====
Línea 43: Línea 60:
 Por ejemplo:    Por ejemplo:   
  
-   grep -function test.txt  ==  test.txt    ->  A : B+   grep -function test.txt  ==  <2|4>    ->  A : B
  
-que indica que debe ejercutar se la sentencia del sistema operativo, obtener su resultado, compararlo con la secuencia ''text.txt'' y si es igual devolver como respuesta a Siette ''<!--A-->''y si no devolverá ''<!--B-->''.+En este caso los patrones de respuesta que usa Siette deberían ser <nowiki>''<!--A-->*''</nowiki> y <nowiki>''<!--B-->*''</nowiki>. El funcionamiento del sistema es el siguiente: ((Ver otros ejemplos en la sección [[es:manual:items:externosfichero|Preguntas con ficheros]] )) 
 +   - Se recibe el fichero test.txt 
 +   - Se crea un directorio temporal donde situa el fichero 
 +   - Se copian en ese directorio los ficheros auxiliares del directorio base. 
 +   - Se ejecuta el comando ''grep -c function test.txt'' 
 +   - Se captura la salida de este comando (supongamos ''3''
 +   - Se compara la salida con el patrón Siette ''<2|4>'' 
 +   - Si el patrón encaja se devuelve a Siette como respuesta del alumno ''<!-- A -->3''y si no encaja se devuelve ''<!-- B -->3''  
 +   - Se busca el patrón que encaje con esta respuesta, para determinar si la respuesta es correcta. En este caso los patrones de Siette pueden son ''<!-- A -->*'' y ''<!-- B -->*'', es decir dado que la respuesta ha sido ''<!-- A -->3'', el primer patrón. 
 +   - Una vez que se ha determinado si la respuesta es correcta, o no, se muestra al usuario la corrección si el test lo permite. Nótese que el valor devuelto por el script (la etiqueta ''A'') se inserta dentro de un [[https://www.w3schools.com/html/html_comments.asp|comentario HTML]]. Esto es así para evitar que la etiqueta sea visible al mostrar los resultados en Siette.
  
-Nótese que el valor devuelto por el script se inserta dentro de un [[https://www.w3schools.com/html/html_comments.asp|comentario HTML]]. Esto es así para evitar que el valor devuelto sea visible al mostrar los resultados en Siette.+A diferencia del caso anterior de respuestas simples, en este caso se usan etiquetas auxiliares para clasificar la ejecución. Esto permite un mayor nivel de abstracción, pero sobre todo, permite realizar mas de una prueba de ejecución como se verá mas adelante.
  
-==== @Correspondence ==== + 
-==== @SiettePattern ==== +==== Patrones para determinar la respuesta ==== 
-==== @JavaPattern ==== +A efectos de determinar la respuesta que se origina como consecuencia de la ejecución del script, es decir la prueba de concordancia entre la //instrucción del sistema operativo// y el //resultado//se pueden usar los mismos [[es:manual:items:patrones|patrones]] que Siette utiliza para identificar las respuestas del alumno en las preguntas de respuesta libre. 
-==== @MathPattern ==== + 
-La prueba de concordancia entre la //instrucción del sistema operativo// y el //resultado// se determina usando los mismos [[es:manual:items:patrones|patrones]] que Siette utiliza para identificar las respuestas del alumno en las preguntas de respuesta libre.+=== @Correspondence === 
 +=== @SiettePattern === 
 +=== @JavaPattern === 
 +=== @MathPattern ===
  
 Estas //sentencias de control// tienen la siguiente estructura: Estas //sentencias de control// tienen la siguiente estructura:
Línea 109: Línea 138:
  
 Si no hay ninguna //sentencia de control// para cambiar el patrón, por defecto se usa el [[es:manual:items:patron:java|patrón Java]] Si no hay ninguna //sentencia de control// para cambiar el patrón, por defecto se usa el [[es:manual:items:patron:java|patrón Java]]
-==== Sentencias de prueba simple. Salida directa ==== 
- 
-La opción mas sencilla son las //sentencias de prueba simples//, en las que no se especifica ninguna condición, sino solamente se escribe la instrucción del sistema operativo tal cuál, es decir: 
- 
-   grep -l function test.txt 
- 
-En este caso la sentencia de prueba devolverá a Siette directamente el valor que la ejecución de la instrucción devuelva por el flujo de datos de la salida estándar (''stdout''). En este ejemplo la secuencia ''text.txt'', (en el caso de que el fichero contenga la palabra ''function'') o bien la cadena vacía. 
  
 ==== Ejecución de una lista de sentencias de prueba ==== ==== Ejecución de una lista de sentencias de prueba ====
Línea 126: Línea 148:
  
 Evidentemente en este caso interesa que se ejecuten ambas pruebas. Pueden ocurrir varias situaciones: (1) La primera prueba no da como resultado ''False'' por lo que se devuelve a Siette la cadena ''<!--Incorrecto1-->''; (2) La primera Evidentemente en este caso interesa que se ejecuten ambas pruebas. Pueden ocurrir varias situaciones: (1) La primera prueba no da como resultado ''False'' por lo que se devuelve a Siette la cadena ''<!--Incorrecto1-->''; (2) La primera
-prueba se satisface, por lo que el script no termina, sino que continúa ejecutandose. Supongamos que la segunda preuba da un resultado ''True'' cuando debería dar ''False''. La respuesta del sistema a Siette en este caso sería +prueba se satisface, por lo que el script no termina, sino que continúa ejecutándose. Supongamos que la segunda preuba da un resultado ''True'' cuando debería dar ''False''. La respuesta del sistema a Siette en este caso sería 
 ''<!--Incorrecto1-->''; (3) Supongamos que la primera prueba se cumple y la segunda tambien. En este caso la respuesta que devuelve a Siette será ''<!--Correcto-->''. En realidad, este script podria sustituirse por este otro mas simple: ''<!--Incorrecto1-->''; (3) Supongamos que la primera prueba se cumple y la segunda tambien. En este caso la respuesta que devuelve a Siette será ''<!--Correcto-->''. En realidad, este script podria sustituirse por este otro mas simple:
  
Línea 417: Línea 439:
 ''@Command on'' ademas de devolver la etiqueta añadirá la instrucción y el resultado de la instrucción como parte de la respuesta, es decir la respuesta completa será: ''@Command on'' ademas de devolver la etiqueta añadirá la instrucción y el resultado de la instrucción como parte de la respuesta, es decir la respuesta completa será:
  
-   <!--2--> ><font color='red'>python3 test.py 3\nFalse</font>+   <!--2-->python3 test.py 3\n 
 +            <font color='red'>False</font>
  
 Esto sirve para indicarle al alumno cuando se muestren los resultados de la evaluación que la respuesta que dió (al enviar el fichero), ha provocado que la ejecución del comando ''python3 test.py 3'' diera como resultado ''False''. Esta información puede servir al alumno para señalarle en que casos se produce un error y permitirle refinar su código y volver a enviar una nueva respuesta en sucesivos intentos (si el test lo permite).   Esto sirve para indicarle al alumno cuando se muestren los resultados de la evaluación que la respuesta que dió (al enviar el fichero), ha provocado que la ejecución del comando ''python3 test.py 3'' diera como resultado ''False''. Esta información puede servir al alumno para señalarle en que casos se produce un error y permitirle refinar su código y volver a enviar una nueva respuesta en sucesivos intentos (si el test lo permite).  
Línea 436: Línea 459:
 El efecto de esta instrucción es similar al anterior, salvo que en este caso se añade tambien la posible respuesta correcta mediante la inclusión del patrón de respuesta con el que se compara el resultado de la ejecución. Siguiendo con el ejemplo anterior, en este caso la salida sería El efecto de esta instrucción es similar al anterior, salvo que en este caso se añade tambien la posible respuesta correcta mediante la inclusión del patrón de respuesta con el que se compara el resultado de la ejecución. Siguiendo con el ejemplo anterior, en este caso la salida sería
  
-   <!--2--> >python3 test.py 3\n+   <!--2-->  > python3 test.py 3\n
              <font color='red'>False</font>              <font color='red'>False</font>
              <hr>              <hr>
Línea 443: Línea 466:
 Esto sirve para indicarle al alumno cuando se muestren los resultados de la evaluación que la respuesta que dió (al enviar el fichero), ha provocado que la ejecución del comando ''python3 test.py 3'' diera como resultado ''False'', cuando la respuesta debería haber sido ''True'' Esto sirve para indicarle al alumno cuando se muestren los resultados de la evaluación que la respuesta que dió (al enviar el fichero), ha provocado que la ejecución del comando ''python3 test.py 3'' diera como resultado ''False'', cuando la respuesta debería haber sido ''True''
  
-La opción por defecto es ''@Result off''. Si se activa la opción ''@Result on'' implica automáticamente la opción ''@Command on'', aunque no al contrario.+La opción por defecto es ''@Result off''. Si se activa la opción ''@Result on'' implica automáticamente la opción ''@Command on'', aunque no al contrario. Recíprocamente, si se desactiva la opción de mostrar la instrucción con ''@Command off'', tambien se desactiva esta opción, es decir se aplica ''@Result off''.
  
 En caso de que la respuesta se considere correcta, es decir, cuando la ejecución ha llegado al final del //script de procesamiento//, nunca se añade el resultado de la instrucción del sistema operativo. Solo se hace cuando como resultado de una prueba se ha detectado un error. En caso de que la respuesta se considere correcta, es decir, cuando la ejecución ha llegado al final del //script de procesamiento//, nunca se añade el resultado de la instrucción del sistema operativo. Solo se hace cuando como resultado de una prueba se ha detectado un error.
Línea 581: Línea 604:
 || TEXTLABEL || Es una cadena de caracteres alfanumérica cualquiera || || TEXTLABEL || Es una cadena de caracteres alfanumérica cualquiera ||
 || VARIABLE || Representa el nomnre de una variable, similar a las variables en cualquier lenguaje de programación || || VARIABLE || Representa el nomnre de una variable, similar a las variables en cualquier lenguaje de programación ||
-|| USER@HOST || Representa una dirección de correo electrónico. ||+|| USER@HOST || Representa una dirección para ejecución remota mediante //ssh//, similar a una dirección de correo electrónico. ||
 || COMMANDLINE || Representa una sentencia cualquiera que puede ser ejecutada en el shell de UNIX. Puede contener tuberias, comandos del shell o programas compilados. || || COMMANDLINE || Representa una sentencia cualquiera que puede ser ejecutada en el shell de UNIX. Puede contener tuberias, comandos del shell o programas compilados. ||
 || RESULT || En general representa un patrón contra el que se compara la salida de la instrucción COMMANDLINE de acuerdo al tipo de patrón definido. Alternativamente puede contener el nombre de un fichero, si la definición de patrón (''fileExecFlag'') contiene "file" o la ejecución de una instrucción del shell, si la definición previa del tipo de patrón incluye "exec" || || RESULT || En general representa un patrón contra el que se compara la salida de la instrucción COMMANDLINE de acuerdo al tipo de patrón definido. Alternativamente puede contener el nombre de un fichero, si la definición de patrón (''fileExecFlag'') contiene "file" o la ejecución de una instrucción del shell, si la definición previa del tipo de patrón incluye "exec" ||
  
es/manual/spsl.1768932168.txt.gz · Última modificación: por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki