5. Más sobre las interfaces de repaso `repasa` y `repasatk`
Anterior | Capítulo 3. Definiciones clasificadas en una jerarquía | Siguiente

## 5. Más sobre las interfaces de repaso `repasa` y `repasatk`

En una clasificación puede especificarse un peso a cada significado referenciado para que `repasa` y `repasatk`, junto con una política de estudio apropiada lo empleen. La idea es dar con el peso una medida de la "importancia" de un significado con respecto a otros de la clasificación, desde el punto de vista de quien crea la clasificación. Esta medida puede ser un número entero arbitrario, aunque sugerimos emplear uno entre 1 y 5, siendo 1 importancia mínima y 5 importancia máxima. En el ejemplo presentado hay una palabra con un peso especificado:

    	<refpal id="Dios" idsig="fe" peso="5" />

Las interfaces de repaso para elegir las preguntas que formulan emplean una política de estudio, la cual puede depender del peso de cada palabra. La política de estudio es una función que da un valor a cada palabra que puede estudiarse en una definición con base en:

- El progreso que ha tenido quien estudia en esa palabra, en particular el registro de las diversas ocasiones en las que la ha preguntado con: fecha, número de veces que la respondió bien, número de veces que fue preguntada.

- El peso de la palabra y el máximo peso encontrado en las palabras disponibles para repasar.

- La fecha actual.

Hay 4 políticas de estudio predefinidas y es posible especificar otra empleando el lenguaje `prom`. Las políticas predefinidas pueden elegirse desde la línea de comandos de las herramientas de repaso con las opciones: `-pol-autores`, `-pol-igual` y `-pol-progreso`, `-pol-aleatoria` (ver repasa(1)). Si se desea emplear una política especificada en un archivo en lenguaje `prom`, puede emplearse la opción `-pol-prom `archivo``.

A continuación se presenta un ejemplo de una política de estudio escrita en lenguaje `prom`:

    /* Calcula valores para 'política de estudio' para interfaz para repasar
       definiciones de repasa.  Política: primero las no repasadas o las
       repasadas hace más tiempo.
       El valor máximo que devuelve es 1, el mínimo es 0.
       Dominio público 2003. Sin garantías.
       http://structio.sourceforge.net/repasa
    */

    aserción(ejecutor=="repasa");

    si (tamaño(dia)==0) {
    	/* Si no se ha repasado tiene prioridad máxima */
    	retorna(1.0);
    }

    /* Si se ha repasado, se revisa la fecha del último repaso, y se
       normaliza para compararla con las de otras palabras.
       Téngase en cuenta que las fechas en el vector dia se representan
       como el número de días desde 1/Ene/1970 (como valor flotante).
    */
    retorna(1.0-dia[tamaño(dia)-1]/hoy);

La documentación completa sobre este lenguaje la encuentra en el manual de intprom (ver intprom(1)) y su uso junto con las herramientas de repaso en el manual de repasa (ver repasa(1)) o en el de repasatk (ver repasatk(1)). Note que:

- Comienza verificando que se esté ejecutando desde una herramienta de repaso.

- Emplea el operador `tamaño` que retorna el tamaño de un vector.

- Aprovecha que el vector `dia` (en el que están las fechas en las que se repaso la palabra), está ordenado ascendentemente, para extraer la última fecha de repaso (está en la última posición del vector `dia`)

- Aprovecha que la fecha actual (variable `hoy`) y las fechas del vector `dia` son flotantes con el número de días entre el 1/Ene/1970 y la fecha misma.

Anterior | Subir | Siguiente
4. Lo que puede clasificarse | Inicio | Capítulo 4. Plan de estudios y usos en un colegio