es:manual:spsl
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
es:manual:spsl [2023/05/08 14:00] – [Gramática] root | es:manual:spsl [2023/11/16 10:28] (actual) – [@OnError skip / @OnError recover] root | ||
---|---|---|---|
Línea 58: | Línea 58: | ||
;#; | ;#; | ||
- | < | + | < |
;#; | ;#; | ||
Línea 83: | Línea 83: | ||
javac Punto.java <> *error* -> OK : ERROR_COMPILACION | javac Punto.java <> *error* -> OK : ERROR_COMPILACION | ||
java Punto | java Punto | ||
+ | |||
+ | === Opción file === | ||
La opción '' | La opción '' | ||
Línea 92: | Línea 94: | ||
tienen como efecto comparar el contenido del fichero // | tienen como efecto comparar el contenido del fichero // | ||
+ | |||
+ | === Opción exec === | ||
La opción '' | La opción '' | ||
Línea 105: | Línea 109: | ||
Si no hay ninguna //sentencia de control// para cambiar el patrón, por defecto se usa el [[es: | Si no hay ninguna //sentencia de control// para cambiar el patrón, por defecto se usa el [[es: | ||
- | ==== Sentencias de prueba simple ==== | + | ==== Sentencias de prueba simple. Salida directa |
La opción mas sencilla son las // | La opción mas sencilla son las // | ||
Línea 111: | Línea 115: | ||
grep -l function test.txt | grep -l function test.txt | ||
- | En este caso la sentencia de prueba | + | En este caso la sentencia de prueba |
==== Ejecución de una lista de sentencias de prueba ==== | ==== Ejecución de una lista de sentencias de prueba ==== | ||
Línea 121: | Línea 125: | ||
| | ||
- | Evidntemente | + | Evidentemente |
- | prueba se satisface, por lo que el script no termina, sino que continúa ejecutandose. Supongamos que la segunda | + | prueba se satisface, por lo que el script no termina, sino que continúa ejecutandose. Supongamos que la segunda |
''< | ''< | ||
Línea 130: | Línea 134: | ||
si no es necesario diferenciar entre uno u otro caso. | si no es necesario diferenciar entre uno u otro caso. | ||
+ | |||
+ | ==== @Answer label ==== | ||
+ | Cuando se trata de preguntas simples, Siette solo espera una respuesta tras la ejecución del script de verificación del fichero. Ahora bien, en el caso de preguntas compuestas, es necesario devolver una respuesta por cada una de las subpreguntas. | ||
+ | |||
+ | Cuando se usan preguntas compuestas con fichero, el script correspondiente a la pregunta compuesta se obtiene mediante la concatenación de los scripts de cada una de las subpreguntas. La etiqeuta '' | ||
+ | |||
+ | Este proceso es transparente al usuario, ya que al construir la pregunta externa de fichero, si se trata de una pregunta compuesta, Siette se preocupa de añadir para cada una de las subpreguntas la opción '' | ||
+ | |||
+ | Podriamos decir que la sentencia '' | ||
==== @OnError stop ==== | ==== @OnError stop ==== | ||
- | El modo descrito | + | El modo descrito |
Supongamos un conjunto de sentencias de prueba | Supongamos un conjunto de sentencias de prueba | ||
Línea 175: | Línea 188: | ||
- | ==== @OnError skip ==== | + | ==== @OnError skip / @OnError recover |
- | Esta //sentencia de control// se usa en combinación con la //sentencia de control// '' | + | Esta //sentencia de control// se usa en combinación con la //sentencia de control// '' |
@OnError skip | @OnError skip | ||
+ | instr1 | ||
+ | instr2 | ||
+ | instr3 | ||
+ | @OnError recover | ||
+ | instr4 | ||
+ | instr5 | ||
+ | @OnError recover | ||
+ | instr6 | ||
+ | instr7 | ||
+ | ... | ||
+ | |||
+ | La ejecución comienza lanzando la instrucción instr< | ||
+ | instr< | ||
+ | |||
+ | Nótese que la //sentencia de control// '' | ||
+ | |||
+ | === Preguntas compuestas === | ||
+ | |||
+ | Un caso especial y muy frecuente del uso de estas // | ||
+ | |||
+ | @OnError skip | ||
+ | instr(0, | ||
+ | ... | ||
+ | |||
@Answer label(1) | @Answer label(1) | ||
+ | @OnError recover | ||
instr(1, | instr(1, | ||
instr(1, | instr(1, | ||
Línea 189: | Línea 227: | ||
| | ||
@Answer label(2) | @Answer label(2) | ||
+ | @OnError recover | ||
instr(2, | instr(2, | ||
instr(2, | instr(2, | ||
Línea 198: | Línea 237: | ||
| | ||
@Answer label(3) | @Answer label(3) | ||
+ | @OnError recover | ||
instr(3, | instr(3, | ||
... | ... | ||
+ | Si suponemos que las // | ||
- | Si suponemos | + | La instrucción '' |
- | Además de producirse el salto, la instrucción '' | ||
- | |||
- | ==== @Answer label ==== | ||
- | Cuando se trata de preguntas simples, Siette solo espera una respuesta tras la ejecución del script de verificación del fichero. Ahora bien, en el caso de preguntas compuestas, es necesario devolver una respuesta por cada una de las subpreguntas. | ||
- | |||
- | Cuando se usan preguntas compuestas con fichero, el script correspondiente a la pregunta compuesta se obtiene mediante la concatenación de los scripts de cada una de las subpreguntas. La etiqeuta '' | ||
- | |||
- | Este proceso es transparente al usuario, ya que al construir la pregunta externa de fichero, si se trata de una pregunta compuesta, Siette se preocupa de añadir para cada una de las subpreguntas la opción '' | ||
- | |||
- | Podriamos decir que la sentencia '' | ||
| | ||
==== @Eval add all ==== | ==== @Eval add all ==== | ||
- | Esta sentencia de control indica que cuando se devuelve un valo a Siette se deben //sumar// todas las etiquetas que se hayan producido, y no solamente utilizar la última. Evidentemente esto solo puede hacerse si las etiquetas tienen un valor numérico. Si no lo tienen o no se han escrito etiquetas en la //sentencia de prueba//, se tomara como valor 0. | + | Esta sentencia de control indica que cuando se devuelve un valor a Siette se deben //sumar// todas las etiquetas que se hayan producido, y no solamente utilizar la última. Evidentemente esto solo puede hacerse si las etiquetas tienen un valor numérico. Si no lo tienen o no se han escrito etiquetas en la //sentencia de prueba//, se tomara como valor 0. |
- | Por ejemplo, supongamos que se quiere comprobar si un programa en [[wp> | + | Por ejemplo, supongamos que se quiere comprobar si un programa en [[wp> |
| | ||
Línea 256: | Línea 287: | ||
Este es el valor de la evaluación por defecto. | Este es el valor de la evaluación por defecto. | ||
+ | |||
+ | ==== @Scale==== | ||
+ | La //sentencia de control// '' | ||
+ | |||
+ | ;#; | ||
+ | @timeout < | ||
+ | ;#; | ||
+ | |||
+ | en donde //NUMERO1// es un número entero positivo que representa el valor numérico máximo posible que resultaría como etiqueta final de la evaluación, | ||
+ | |||
+ | Por consiguiente, | ||
+ | |||
+ | @OnError continue | ||
+ | @Eval add correct | ||
+ | @Scale 6 4 | ||
+ | python3 test.py 1 == True -> 1 | ||
+ | python3 test.py 2 == False -> 1 | ||
+ | python3 test.py 3 == True -> 1 | ||
+ | python3 test.py 4 == False -> 1 | ||
+ | python3 test.py 5 == True -> 1 | ||
+ | python3 test.py 6 == False -> 1 | ||
+ | | ||
+ | La instrucción '' | ||
+ | |||
+ | La instrucción de escala '' | ||
+ | |||
+ | La gran ventaja de esta normalización es que el conjunto de etiquetas no depende del número de pruebas satisfactorias, | ||
+ | |||
+ | |||
==== @timeout ==== | ==== @timeout ==== | ||
Línea 452: | Línea 512: | ||
| “@OnError” errorOption | | “@OnError” errorOption | ||
| “@Eval” evalOption | | “@Eval” evalOption | ||
+ | | “@Scale” NUMBER NUMBER | ||
| “@Answer” label | | “@Answer” label | ||
| “@ssh” USER@HOST | | “@ssh” USER@HOST | ||
Línea 480: | Línea 541: | ||
| “<> | | “<> | ||
| ε | | ε | ||
- | successCase → “-->” label | + | successCase → “->” label |
| ε | | ε | ||
failCase → “:” label | failCase → “:” label |
es/manual/spsl.1683554411.txt.gz · Última modificación: 2023/05/08 14:00 por root