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 [2023/11/16 10:18] – [@OnError skip / @OnError recover] rootes:manual:spsl [2026/01/21 11:03] (actual) – [Gramática] root
Línea 189: Línea 189:
  
 ==== @OnError skip / @OnError recover ==== ==== @OnError skip / @OnError recover ====
-Esta //sentencia de control// se usa en combinación con la //sentencia de control// ''@OnError recover'' en las [[es:manual:items:externosficherocompuestas|preguntas compuestas con fichero]]. Cuando en un script se establece el modo ''@OnError skip'', si se produce un error en la ejecución de alguna de las //sentencias de prueba// el script no se interrumpe, sino que el flujo de control se reinicia y salta hasta encontrar la siguiente instrucción ''@OnError recover''. Por ejemplo, supongamos el siguiente script:+Esta //sentencia de control// se usa en combinación con la //sentencia de control// ''@OnError recover''. Cuando en un script se establece el modo ''@OnError skip'', si se produce un error en la ejecución de alguna de las //sentencias de prueba// el script no se interrumpe, sino que el flujo de control se reinicia y salta hasta encontrar la siguiente instrucción ''@OnError recover''. Por ejemplo, supongamos el siguiente script:
  
     @OnError skip     @OnError skip
Línea 206: Línea 206:
 instr<sub>4</sub> da error, la siguiente instrucción a ejecutar será instr<sub>6</sub>. instr<sub>4</sub> da error, la siguiente instrucción a ejecutar será instr<sub>6</sub>.
  
-Notese que la //sentencia de control// ''@OnError recover'' no tendría ningún efecto si previamente no es hubiera establecido la //sentencia de control// ''@OnError skip''.+Nótese que la //sentencia de control// ''@OnError recover'' no tendría ningún efecto si previamente no es hubiera establecido la //sentencia de control// ''@OnError skip''.
  
 === Preguntas compuestas === === Preguntas compuestas ===
  
-En el caso de la ejecución de una pregunta compuesta de ficheros, Siette compone el script de ejecución añadiendo en la cabecera de cada subpregunta dos //sentencias de control//, una de tipo ''@Answer label'' y otra ''@OnError recover'', por lo que si se ha definido previamente el modo ''@OnError skip'', no es necesario incluir manualmente ''@OnError recover'', y el salto en la ejecución funciona entre los script de las subpreguntas. Por ejemplo, supongamos el siguiente script:+Un caso especial y muy frecuente del uso de estas //sentencias de control// es la ejecución de [[es:manual:items:externosficherocompuestas|preguntas compuestas con fichero]]. Siette compone el script de ejecución añadiendo en la cabecera de cada subpregunta dos //sentencias de control//, una de tipo ''@Answer label'' y otra ''@OnError recover'', por lo que solo sería necesario definir manualmente la //sentencia de control//  ''@OnError skip''. En este caso, no es necesario incluir manualmente ''@OnError recover'' ya que se añade automáticamente. El salto en la ejecución funcionará entre los (sub)scripts de las subpreguntas. Por ejemplo, supongamos que Siette ha compuesto el siguiente script:
  
     @OnError skip     @OnError skip
 +    instr(0,1)        == res(0,1)   -> A(0,1)   : B(0,1)
 +    ...
 +   
     @Answer label(1)      @Answer label(1) 
     @OnError recover      @OnError recover 
Línea 399: Línea 402:
 ;#; ;#;
  
-Por ejemplo, sea el siguiente //script de preocesamiento// que comprueba si un programa en Python es capaz de reconocer los números impares:+Por ejemplo, sea el siguiente //script de procesamiento// que comprueba si un programa en Python es capaz de reconocer los números impares:
  
    @OnError stop    @OnError stop
Línea 414: Línea 417:
 ''@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).  
  
-La opcion por defecto es ''@Command on''; pero en ocasiones mostrar la instrucción exacta que da lugar al error no es oportuno desde el punto de vista de la evaluación, ya que simplemente descubre cual es la prueba singular que falla y el alumno solo tendría que modificar su porgrama resolviendo este caso particular, y no modificando el programa convenientemente. En estos casos puede usarse la opción ''@Command off'' que no añaden a la respuesta el resultado de la última ejecución. (Vea en el manual las consideraciones y consejos acerca de [[es:manual:items:externosficheroconsejos#pruebas públicas y privadas]]).+La opción por defecto es ''@Command on''; pero en ocasiones mostrar la instrucción exacta que da lugar al error no es oportuno desde el punto de vista de la evaluación, ya que simplemente descubre cual es la prueba singular que falla y el alumno solo tendría que modificar su porgrama resolviendo este caso particular, y no modificando el programa convenientemente. En estos casos puede usarse la opción ''@Command off'' que no añaden a la respuesta el resultado de la última ejecución. (Vea en el manual las consideraciones y consejos acerca de [[es:manual:items:externosficheroconsejos#pruebas públicas y privadas]]).
  
-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 que ha dado 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 ha dado error. 
 + 
 +==== @Result ==== 
 + 
 +Esta //sentencia de control// indica al script si debe o no incluir en la respuesta que devuelve a Siette el patrón de comparación correspondiente a la última //sentencia de prueba// que se ejecutó.  
 +La sintaxis es la siguiente: 
 + 
 +;#; 
 +<i>@Result</i>  <typo fs:large>(</typo>''on''<typo fs:large>|</typo>''off''<typo fs:large>)</typo> 
 +;#; 
 + 
 +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 
 +             <font color='red'>False</font> 
 +             <hr> 
 +             <font color='green'>True</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'', 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. 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.
  
 ==== Variables ==== ==== Variables ====
Línea 480: Línea 506:
    done       done   
  
-No es necesario declarar previamente la variable del bucle ''for''La variable se sustituyen en las  //sentencias de prueba// antes de la ejecución y a todos los efectos es lo mismo que si se escribieran varias //sentencias de prueba//. El ejemplo anterior produce exactamente el mismo efecto que el siguiente trozo, ya que internamente el bucle for se pre-procesa y sustituye el trozo de los bucles por las correspondientes //sentencias de prueba// ya instanciadas.+No es necesario declarar previamente la variable del bucle ''for''Dentro del bucle la variable se escribe precedida del simbolo \$ y se sustituye en todas las  //sentencias de prueba// antes de la ejecución. A todos los efectos es lo mismo que si se escribieran varias //sentencias de prueba//. El ejemplo anterior produce exactamente el mismo efecto que el siguiente trozo, ya que internamente el bucle for se pre-procesa y sustituye el trozo de los bucles por las correspondientes //sentencias de prueba// ya instanciadas.
  
  
Línea 511: Línea 537:
  | “@Scale” NUMBER NUMBER         | “@Scale” NUMBER NUMBER       
  | “@Answer” label     | “@Answer” label   
- | “@ssh” USER@HOST   + | “@ssh”  
 +   
  | “@timeout” NUMBER     | “@timeout” NUMBER   
          | “@command” commandOption             | “@command” commandOption   
Línea 542: Línea 569:
 failCase → “:” label failCase → “:” label
  | ε  | ε
-forSent → “for” VARIABLE “in” valueList LF “do” LF sentList “done” +forSent → “for” VARIABLE “in” valueList LF “do” LF sentList LF “done” 
 valueList → valueList label valueList → valueList label
  | label  | label
Línea 548: Línea 575:
  | NUMBER  | NUMBER
 </code> </code>
 +
 +En donde los identificadores que aparecen en mayusculas tienen el siguiente significado:
 +
 +|| LF || Representa un salto de línea ||
 +|| NUMBER || Es un numero entero ||
 +|| 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 ||
 +|| 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. ||
 +|| 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.1700129896.txt.gz · Última modificación: por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki