Mostrando entradas con la etiqueta Aprendizaje. Mostrar todas las entradas
Mostrando entradas con la etiqueta Aprendizaje. Mostrar todas las entradas

domingo, 27 de abril de 2025

Evaluación. Ítem.

Ítem gráfico (3). Panel de imágenes.


Similar al mapa, en este caso nos encontramos con una actividad de aprendizaje o un conjunto de ítem de evaluación en el que las mismas imágenes sirven como respuesta a diferentes (aunque similares) preguntas.


Se trata de una tareas especial en la que el input puede ser visual, aunque normalmente es verbal, pero el output se basa necesariamente en la elección de una entre varias imágenes, con la peculiaridad que las mismas imágenes sirven para responder diferentes (incluso un número elevado) de ítem.

En este caso, la solución más simple consiste en repetir la lámina de respuesta tantas veces como preguntas se formulen. De este modo el problema se reduce a un ítem de opción basada en imagen, como los que [ya vimos en esta entrada]; pero cuantos más ítem compartan el soporte de respuesta, menos funcional se vuelve esa solución, que no lo es en ningún caso, ya que sobrecargamos innecesariamente nuestro docap con imágenes repetidas y, en su caso, también con código redundante.

Disponemos de un procedimiento que elimina la necesidad de repetir las láminas de respuesta y que permite simplificar el código de forma significativa. Veamos en qué consiste; pero antes nos vamos a poner en situación para facilitar la comprensión del procedimiento.

El docap de un test como el Peabody (por poner un ejemplo) se resuelve mediante el procedimiento propuesta en la entrada dedicada al [ítem gráfico de elección de imagen], ya que en cada ítem cambia el conjunto de imágenes entre las que se encuentra la respuesta correcta; pero un test como ITPA-CA (Comprensión Auditiva) presenta el mismo conjunto de seis imágenes para un grupo numeroso de ítem. Esto permite que podamos usar el mismo mapa o conjunto de (aquí) seis imágenes, siempre que independicemos el uso de la imagen del ítem. Me explico:

  • Cada ítem tiene seis (o las que sean) opciones de respuesta.
  • Para un conjunto de ítem esas seis opciones son las mismas, aunque para cada ítem sólo una de ellas es la correcta
  • Las imágenes configuran lo que llamo un panel de imágenes, el cual se puede construir como sumatorio de imágenes independientes o como imagen única sobreponiendo una forma transparente (o semitransparente) sobre cada una de las escenas en que se divide dicha imagen única.
  • Dada imagen independiente, o cada forma superpuesta se asocia a un script que emite como resultado de la pulsación un valor (código numérico o letra) que se recoge como respuesta a cada uno de los ítem: una respuesta por ítem.
  • Posteriormente, mediante funciones LO-Calc o mediante código, se valora si la respuesta dada a cada uno de los ítem se ajusta a lo esperado (es correcta) o no (es incorrecta) y, en función de ese juicio, se puntúa según el procedimiento establecido (ITPA-CA -> 0 vs. 1)
El problema que queda por resolver aquí es cómo hacer que los ítem avancen, mientras que las opciones de respuesta permanecen. La solución pasa por ir construyendo paulatinamente un listado con las respuestas, el cual, por ejemplo, ubicamos en una columna de celdas (en LO-Calc). Un procedimiento se encarga de descartar si una posición (celda) ya está ocupada, luego ese ítem ya está cumplimentado, siendo necesario, entonces, desplazarse a la siguiente, que es la que corresponde necesariamente con la posición que ocupa en esa lista el ítem que en ese momento se está resolviendo.  

Como sucede en otras ocasiones en las que se describen procedimientos, su explicación puede resultar más compleja de lo que supone su ejecución. Me temo que este es uno de esos casos; y espero que la presentación del soporte y de su código, lo cual muestro a continuación, sirvan para aclarar las dudas que pudieran quedar.


Muestro primero el panel de seis imágenes en el que se puede comprobar la superposición de semi-transparencias que son las que quedan asociadas a sendos script. Por ejemplo, la primera a este script:

Sub img1

Dim Lamina As string

Dim img As integer, nit As Integer

Lamina = "Lamina1"

img = 1

nit = 16

puntuar(Lamina,img, nit)

End Sub

Este procedimiento se repite con cada una de las imágenes, luego hay seis script, uno por cada sección del panel (en realidad por cada figura semi-transparente superpuesta)

La función del script es asignar contenido a una serie de tres variables (Lamina, img y nit)...

  • Lamina identifica la hoja de cálculo a la que acceder (Lamina = "Lamina1")
  • img designa a la imagen (sección del panel) que se está pulsando (img = 1)
  • y nit identifica el número de ítem asociados a este panel (nit = 16)

... y con ellas definidas como parámetros, pasar esos valores a la subrutina (función, se diría en otros lenguajes) (puntuar(Lamina,img, nit)) que es la que ejecuta el procedimiento que sigue. 

Sub puntuar (Lamina as String, img As integer, nit As Integer)

Dim oHoja As Object, oCelda As Object

Dim Celda As Integer

Dim i As integer

oHoja = ThisComponent.getSheets().getByName(Lamina)

For i = 0 To nit

N = "N" & i + 4

oCelda = oHoja.getCellRangeByName(N)

Celda = oCelda.getValue()

If Celda = 0 Then

oCelda.setValue(img)

Exit For

End If

Next

End Sub

Lo interesante de este procedimiento es que una única subrutina da servicio a estos seis script y a todos los que sean necesarios. Concretamente en ITPA-CA, a un total de 18 script con los que respondemos a un total de 50 ítem. Vemos como funciona.

  • Tras acceder a la hoja sobre la que vamos a trabajar (oHoja = ThisComponent.getSheets().getByName(Lamina)) mediante el parámetro Lamina
  • desarrollamos un bucle for  que tiene como límite superior el valor del parámetro nit (For i = 0 To nit), que indica tanto el número de ciclos del bucle como el número de ítem a los que vamos a responder.
  • Nos posicionamos en la celda que nos interesa (inicialmente N4) mediante la fórmula N = "N" & i + 4 que asocia el identificador numérico de la celda con el valor del contador i 
  • Y a partir de esta posición, capturamos ese objeto celda (oCelda = oHoja.getCellRangeByName(N)) y su contenido (Celda = oCelda.getValue())...
  • ... condicionando la acción a desarrollar mediante if a que esa celda esté vacía (If Celda = 0 Then). 
  • Esa acción consiste en escribir en la celda el identificador de la imagen (img) que hemos pasado como parámetro (oCelda.setValue(img)) y salimos del bucle (Exit For)
  • En caso de no cumplirse esa condición, esto es, que la celda no esté vacía, continua desarrollándose el ciclo, esto es: no se escribe nada en la celda (evitando así sobre-escribir en una celda) y se pasa a la siguiente.
Es necesario tener en cuenta que, aquí, cada celda incluida en este proceso (desde N0+4 = N4 hasta N16+4 = N20) equivale a un ítem. La tabla en la que se encuentra nuestra columna nos permite apreciar el procedimiento de asignación y de puntuación del ítem.


La primera columna identifica los ítem de la lámina (de 1 a 17); la tercera indica la respuesta correcta para cada ítem (esto es la imagen que se debería seleccionar) y la cuarta (PD) permite puntuar cada ítem mediante una función condicional LO-Calc (=SI(N4=O4;1;0)). Esta tabla permanece oculta (Formato | Columnas | Ocultar) aunque aquí la mostremos por motivos expositivos.

Documento. Desde [este enlace] puedes descargar el documento LO-Calc que desarrolla lo expuesto en la entrada.