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/02/17 09:24] 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 control. A partir de esta instrucción se puede construir las siguientes //sentencias de pruebas//+
  
 ==== Sentencias de prueba simple. Salida directa ==== ==== Sentencias de prueba simple. Salida directa ====
Línea 28: Línea 27:
 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: 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 -function test.txt+   grep -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.+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 correcto. 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 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 51: Línea 60:
 Por ejemplo:    Por ejemplo:   
  
-   grep -function test.txt  ==  test.txt    ->  A : B+   grep -function test.txt  ==  <2|4>    ->  A : 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. 
 + 
 +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.
  
-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-->''. 
  
-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.+==== Patrones para determinar la respuesta ==== 
 +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.
  
-==== @Correspondence ==== +=== @Correspondence === 
-==== @SiettePattern ==== +=== @SiettePattern === 
-==== @JavaPattern ==== +=== @JavaPattern === 
-==== @MathPattern ===+=== @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.+
  
 Estas //sentencias de control// tienen la siguiente estructura: Estas //sentencias de control// tienen la siguiente estructura:
Línea 127: 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:
  
es/manual/spsl.1771320298.txt.gz · Última modificación: por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki