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

domingo, 16 de marzo de 2025

Aprendizaje. Python-pptx

Presentaciones con en Python-pptx

Sin salirme del ámbito tipológico de la presentación de información, cuando el objetivo es exponer resultados a un colectivo, sea esta actividad una sesión de formación o de devolución de información a familiar, alumnado o profesorado,  es una práctica habitual y generalizada en distintos ámbito profesionales hacerlo mediante una presentación tipo ppt.


En realidad este icono no resulta apropiado para la entrada actual, aunque es pertinente como marca de ubicación de la entrada en la sección Aprendizaje, si bien tampoco esta decisión está exenta de controversia: perfectamente podría incluirla como parte de la sección Evaluación, e incluso de la sección Datos, ya que su uso resulta coincidente, en lo fundamental, con la elaboración de informes de evaluación (sólo que colectiva y dirigida a un colectivo) o con la elaboración de documentos informativos de síntesis del análisis de datos). Pero no deja de ser una genuina expresión del uso expositivo del servicio ofimático de presentación y no es desdeñable el uso de que éste se realiza precisamente en actividades de formación, así que su tratamiento dentro de esta sección Aprendizaje está justificado.

De hecho podemos considerar secundaria esta discusión, ya que lo que caracteriza esta forma de uso del servicio es que lo que se pretende automatizar es la propia elaboración de la presentación. Al hacerlo también contribuimos a automatizar la elaboración de estos informes, lo que forma parte del proceso de automatización de la evaluación (sección Evaluación) y del análisis de datos (sección Datos).

No es que no sea posible realizar este procedimiento mediante OOo Basic, pero esta es una opción disponible que resulta mucho más sencilla de implementar mediante el lenguaje Python.

Para finalizar esta entrada, presentaré el código necesario para crear una presentación simple empleando ambos lenguajes (OOo Basic y Python).

Sub CrearPresenta

Dim sRuta As String, sRutaGuardar As String
Dim mArg()
Dim oPresenta As Object
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"

'Crear presentación
sRuta = "private:factory/simpress"
oPresenta = StarDesktop.loadComponentFromURL( sRuta, "_default", 0, mArg() )
 
'Añadir nuevas diapositivas
Dim NuevaDiapo As Object
Dim i As Integer

'Creamos un bucle para añadir x número de diapositivas en blanco
For i = 1 To 4 
NuevaDiapo = oPresenta.DrawPages.InsertNewByIndex(i)
Next

'Guardar la presentación
sRutaGuardar = ConvertToUrl ("C:/Users/XXXXX/Desktop/MiPresenta.odp")
oPresenta.storeAsUrl(sRutaGuardar, mOpciones())

End Sub

Desde un servicio LO (Calc, por ejemplo), y mediante OOo Basic, lo primero que hacemos, tras declarar las variables necesarias, es crear la presentación desde cero. Para ello, y por medio de la variable sRuta, llamamos primero al servicio impress (sRuta = "private:factory/simpress"), el cual empleamos después como uno de los tres parámetros necesarios para la función de creación propiamente dicha (oPresenta = StarDesktop.loadComponentFromURL( sRuta, "_default", 0, mArg() )). De este modo la presentación pasa a estar asociada a la variable oPresenta, o que facilita el desarrollo posterior del script.

La presentación así creada cuenta con una primera diapositiva de tipo Título - Subtítulo, ambos vacíos, por lo que el paso lógico que sigue sería dotar de contenido a ambos, cosa que no resulta tan sencillo de hacer, por lo que he podido comprobar. 


Como este contenido es evidentemente insuficiente, necesitamos aumentar el número de diapositivas, cosa que podemos hacer sin demasiada dificultad, automatizando incluso el procedimiento mediante un bucle. 
Para ello, y sobre la variable pertinente (Dim NuevaDiapo As Object), mediante un bucle For (For i = 1 To 4 ) creamos un total de cuatro nuevas diapositivas en blanco (sin componente alguno) mediante la función InsertNewByIndex() del objeto DrawPages (NuevaDiapo = oPresenta.DrawPages.InsertNewByIndex(i)). Este procedimiento (que no es el único) permite automatizar la creación del número de diapositivas que se necesiten, siendo suficiente con incrementar el valor final de la variable  (contador), si bien su valor inicial tiene que ser necesariamente 1, y no 0, ya que el procedimiento de creación de la presentación incluye crear la diapositiva 0.

Para finalizar, y aunque no es imprescindible, he añadido el código necesario para guardar la presentación creada (que no para guardarla y cerrarla). Este procedimiento se realiza en dos fases:

Primero identificamos dónde se va a guardar la presentación (sRutaGuardar = ConvertToUrl ("C:/Users/XXXXX/Desktop/MiPresenta.odp")) mediante la función ConvertToUrl() que incluye el string con la ruta completa (observa que debes adaptarla a tu caso concreto)

 Y después la guardamos (oPresenta.storeAsUrl(sRutaGuardar, mOpciones())) mediante la función storeAsUrl()

No voy a insistir en lo obvio, pero es evidente que con esto poco tenemos avanzado en la automatización de presentaciones; y no resulta sencillo ir mucho más allá. De hecho existe una página web sostenida por personas con amplios conocimientos técnicos (wiki.open-office.es) en la que no he encontrado las soluciones a los problemas que deberíamos resolver para automatizar la creación de una presentación. En realidad es posible encontrar en la web algún ejemplo de que se puede hacer, pero no ha sabido adaptar estos ejemplos a necesidades reales, por lo que se quedan en meros atisbos de posibles soluciones.

Donde la búsqueda resulta mucho más satisfactoria es en el mundo Python. Podemos trabajar con una librería que deberemos tener instalada previamente (pip install python-pptx) y con la que es posible crear presentaciones Power Point (las cuales podemos visualizar también desde Impress, como ya sabemos). A explicar cómo trabajar con esta librería dedicaré algunas entradas, aunque hora me limitaré a exponer cómo crear una presentación.

from pptx import Presentation

#Crear la presentación

mi_presenta = Presentation()

#Añadir una diapositiva

diapo1 = mi_presenta.slide_layouts[0]

diapo1 = mi_presenta.slides.add_slide(diapo1)

#Guardar presentación

mi_presenta.save("C:/Users/xxxx/Desktop/presenta_uno.pptx")

A primera vista este script parece más sencillo que el anterior, empezando por ser más breve y también más simple, al menos en algunas de sus partes. Dejando al margen la instrucción con la que se inicia el script (from pptx import Presentation), obligada al tratarse de una librería no standard que hemos tenido que instalar previamente, la creación de la presentación resulta más sencilla en python que en OOo Basicmi_presenta = Presentation() instanciando la clase mediante la función Presentation() en python frente la complejo procedimiento que se requiere en OOo Basic, en el que son necesarios dos pasos (sRuta = "private:factory/simpress" y oPresenta = StarDesktop.loadComponentFromURL( sRuta, "_default", 0, mArg())).

Algo similar podemos observar en el procedimiento de guardado de la presentación que hemos creado: también en este caso en python es suficiente con una sencilla instrucción (mi_presenta.save("C:/Users/xxxx/Desktop/presenta_uno.pptx")) basada en la función save(), mientras que en OOo Basic necesitamos dos instrucciones y de mayor complejidad, como pudimos ver antes. 

Cierto que mediante OOo Basic, cuando creamos una presentación, creamos directamente una primera diapositiva, mientras que el python necesitamos crearla ex-profeso también en dos pasos:
  • Mediante el primero creamos el objeto diapositiva, un tipo concreto de modelo de diapositiva, para ser más precisos (diapo1 = mi_presenta.slide_layouts[0])
  • Y en el segundo añadimos ese objeto recién creado a la colección de dispositivas de la presentación (diapo1 = mi_presenta.slides.add_slide(diapo1)).
Teóricamente deberemos repetir estas dos operaciones cada vez que queramos crear una nueva diapositiva; por lo que en esto, OOo Basic parece ser más sencillo, aunque en realidad no lo es tanto, ya que también podemos hacer uso de bucles para agilizar la creación de diapositivas en python. Pero en realidad, donde está la ventaja de python es en la posibilidad de acceder a los objetos de que consta la diapositiva o que se pueden implementar en ella. A demostrar esto dedicaremos las entradas que siguen.

jueves, 13 de marzo de 2025

Aprendizaje. Presentación.

Diferentes soportes.

En  este repaso por las opciones de creación de recurso par la presentación de información es necesario conocer diferentes formas en que podemos elaborar este tipo de materiales haciendo uso, simplemente, de lo que nos ofrece una suite ofimática como LibreOffice.


Para revisar algunas de estas opciones retomo el contenido de una entrada publicada ya hace tiempo, en la que exponía tres formas de crear una presentación sobre unos materiales que desarrollaron en su momento  Elia Zapico y de Cristina Castellano, utilizando los pictos de ARASAAC y otros materiales. Titulé estos materiales NOS ALIMENTAMOS.



El material original es una presentación Impress (podría ser Power Point) y no emplea más que los recursos propios de este servicio. Con esto quiero decir que no contiene código OOo Basic.

A partir de ella elaboré un documento pdf que resulta de la conversión de la presentación en documento pdf (Archivo | Exportar a | Exportar a PDF). Esta opción de Impress permite mantener en el formato PDF algunas de las funcionalidades de la presentación, lo que facilita la navegación por el documento (.pdf).

Finalmente presento también uno último documento presentación soportado sobre una hoja de cálculo (LO-Calc). Se trata de mostrar que es posible utilizar Calc con esta finalidad, resultando bastante sencillo hacerlo, aunque en este caso, para imitar el funcionamiento de una presentación es necesario recurrir a OOo Basic. No importa tanto que Calc sea o no sea el soporte más adecuado, como el hecho de que, gracias a OOo Basic, es posible darle esta función, lo que en determinadas ocasiones puede resultar de mucha utilidad.

Documentos. En los enlaces que siguen puedes acceder a los documentos citados en la entrada. Añado un cuarto documento (txt) con el código asociado al documento Calc.

Aprendizaje. Presentación.

Presentaciones simples.

La presentación de información es la forma más básica de emplear los recursos digitales en el proceso de Enseñanza-Aprendizaje (E-A), reproduciendo el formato expositivo y sustituyendo los libros de texto por medios informáticos. El material elaborado puede ser de diferente tipo y contener distintos elementos, pero es de esperar que, como mínimo, contenga textos e imágenes estáticas. A este tipo de material llamaremos presentación.


Como dije antes, el soporte que sirve de base a la presentación es el libro de texto, que tiene en los documentos elaborados con procesadores de texto su más inmediato emulador. Las presentaciones tipo PowerPoint añaden posibilidades de dinamizar la presentación de esa información, pero no es extraño que se limiten a formatos más cercanos al libro de texto y al montaje audiovisual, aunque ese es su horizonte potencial.

En cualquier caso lo que no es necesario para crear presentaciones es el empleo de recursos de programación, siendo (por lo general) suficiente con poseer un nivel de conocimiento de usuario de herramientas como PowerPoint o LO-Impress. Esto sería suficiente para justificar que no se tratara en este blog la creación de este tipo de recursos, pero, además de otras razones, resulta que el empleo de las opciones que brindan lenguajes de script como OOO Basic hace que sea conveniente empezar este nuestro recorrido por aquí.

Es por ello que rescato aquí y ahora una entrada antigua que parte, a su vez, de un ejemplo de conversión de recursos analógicos en formato digital, como forma de facilitar el acceso a la información. Esta base tiene su origen en un documento titulado La Revolución industrial y es un material original de Eliza Zapico.

Este material representa una de las formas más básicas de presentar la información y, a la vez también la forma más elemental de utilizar el servicio Impress. Pero es también una ejemplificación de cómo utilizar OOo Basic para crear recursos didácticos sencillos.

La información está soportada sobre un documento Writer y se complementa, a modo de ampliación, en dos presentaciones Impress simples (formadas únicamente por una diapositiva que contiene una imagen. Este acceso es posible mediante sendos botones de comando insertados en el texto, tal y como se puede apreciar en la imagen que sigue.

 

La contribución de OOo Basic se limita aquí a general la asociación complementaria (a modo de hipertexto) entre el documento principal (en Writer) y los accesorios (en Impress) y se concreta en dos script asociados a los botones de comando. Reproduzco a continuación uno de estos script.

Sub AccesoRI

Dim sRuta As String
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
Dim oDoc As Object

mOpciones(0).Name = "StartPresentation"
mOpciones(0).Value = True
sRuta = ConvertToUrl ("D:\RIp1.odp")
oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones())

End Sub

Puedes pensar que lo mismo que complementamos un documento con una presentación, también podemos invertir el sentido. Y en efecto así puede ser: lo único que necesitamos es crear un script en una presentación y asociarlo a algún componente de la diapositiva. Ambas acciones son también posibles y no suponen mayor complicación. Pero lo que importa ahora no es agotar todas estas posibilidades; es mostrar que mediante OOo Basic podemos potenciar la capacidad explicativa de un soporte presentación haciendo uso de varios servicios ofimáticos en función de lo que cada uno de ellos puede aportar.

Documentación. Desde estos enlaces puedes acceder al Texto y a las  presentaciones Presentación 1 Presentación 2. Estos tres documentos deben estar ubicados en el directorio raíz de la unidad D. Cualquier otra ubicación genera error al cargar las presentaciones, pero se puede modificar este funcionamiento cambiando la orden asociada a la variable sRuta.

 

Aprendizaje. Presentación.

Contenidos y actividades

Aunque no es la continuidad temática que presenté en su momento, la propia lógica del desarrollo de la temática me ha llevado a este punto en el que se asocian la presentación y el aprendizaje (y la evaluación), la primera para la exposición de los contenidos de aprendizaje y la segunda como ejercicios para reforzar este aprendizaje: la forma clásica y más frecuente de presentación de los materiales curriculares, especialmente en las etapas iniciales del proceso educativo.



También en este caso no necesito más que recatar una entrada desarrollado hace ya tiempo en la que ambos tipos de de material se combinan formando una unidad de aprendizaje. Esta combinación lo es también de dos soportes diferentes: Impress para la presentación de los contenidos y Calc como soporte para la presentación de las actividades y su ejecución sobre el mismo soporte. Esto permite informatizar dicha ejecución y, consecuentemente, la evaluación de los resultados.

Vimos en otra entrada que es posible combinar varios soportes para crear una presentación y también mostré en otra que es posible utilizar Calc como soporte para hacer una presentación. Pero también es posible combinar ambas estrategias sin cargar sobre Calc con tareas para las que otros soportes (Impress) están mejor adaptados.

Por su parte, Impress no está pensado para trabajar del modo en que sí es posible hacerlo en Calc, coincidiendo ambas adaptaciones a los roles de presentación de la información y evaluación del aprendizaje. 

Esta combinación información-ejercicios, como dije, es básica en el diseño de materiales escolares, especialmente en la  etapa de E. Primaria.

Aunque uso de OOo Basic sólo en Calc, también es posible implementarlo en Impress, pero en realidad, en este caso, la mayor parte del trabajo se basa en las funcionalidades de ambos servicios.

Documentos

Materiales del docap:
  • NosAlimentamosIni.ods. Docap basado en Calc. Contiene la presentación, las actividades y su evaluación.
  • NosAlimentamos.odp. Presentación Impress que cumple la función de presentación de los contenidos.
Anexos:
  • AnexoCodigo.txt. Anexo .txt con el código OOo Basic empleado en el docap (Libro Calc. La presentación no contiene código)
  • AccesoImpress.pdf. Anexo .pdf donde explico el script para acceder a una presentación Impress y lanzarla. Este código también se encuentra en el anexo .txt. 

domingo, 9 de marzo de 2025

Aprendizaje. Recursos.

Formatos y recursos

Una ventaja que deriva de diferenciar la original mezcla entre evaluación e intervención en dos secciones (Aprendizaje y Evaluación) es poder tratar en la primera (Aprendizaje) una cuestión que resultaba casi ajena al mismo en la formulación original del blog: la creación de recursos para el aprendizaje y la evaluación.


Dedicaré esta entrada a diferenciar tipos de recursos y en sucesivas a explicar en detalle en qué consiste cada uno de ellos. Estamos ante una cuestión previa al tratamiento de los ítem de evaluación, al constituir estos una concreción de uno de los usos posibles, mientras que en la formulación anterior de la sección única constituían el centro de la misma. Esta pérdida de centralidad es consecuencia del "descubrimiento" de que en realidad la evaluación es sólo una de las posibles aplicaciones de los recursos disponibles; precisamente aquella que la formulación oficial de la competencia digital entiende como principal manifestación de dicha competencia en el ámbito docente: la creación de materiales para la instrucción y el aprendizaje.

Efectivamente, de eso va esta entrada, pero no en el marco de la interpretación "oficial" de la competencia, así que no se espere aquí, en esta sección, un tratamiento de las herramientas de autor; más bien se trata de analizar cómo nuestras herramientas y nuestro enfoque competencial también sirven para resolver las necesidades docentes que cubre los campos de la elaboración de materiales para la evaluación, pero también para el proceso E-A en sentido amplio.

Desde esta perspectiva, el primer formato en que se expresan estos recursos tiene que ver con la forma más simple de expresarse el objetivo instruccional y de plantearse la interacción del alumno con el material (de aprendizaje): la presentación o exposición del contenido y de la información en soporte digital. No es casual que la principal herramienta que sirve a tal fin lleve también el mismo nombre, así como la forma básica en que se presenta como producto: presentación (de contenidos) es tanto el enfoque del objetivo, como la herramienta (programa de presentación, vg. Power Point) como el producto (una presentación de diapositivas, seguimos llamando a dicho producto, en justo recuerdo de sus antecedentes analógicos). Es verdad que este término (presentación), no está, pues, exento de riesgos por la confusión a que puede dar lugar (por ejemplo, entre objetivo y medio), pero creo que es el mejor y el más justo, si queremos reconocer a los antecedentes analógicos el papel que cumplieron para que ahora estemos aquí. 

Por orden de importancia en el proceso E-A, aunque resulte dudoso, sitúo la creación de recursos que contribuyen al aprendizaje, sea este entendido como entrenamiento más o menos sistemático de procedimientos (generalmente simples, aunque no sólo) o como ejecución de actividades de captación y recuerdo de aprendizajes (normalmente de datos y conceptos). Mientras que ante los materiales de presentación, la labor del discente era receptiva (sin connotaciones negativas), ahora es activa, ya que es el alumno quien maneja e interactúa con los materiales de aprendizaje, nombre que utilizaré como descriptor, sobreentendiendo que con él me refiero a todos aquellos que tienen que ver con la realización de actividades de ejercitación de procedimientos, recuerdo y adquisición de contenidos y refuerzo y recuperación de procesos de aprendizaje.

No cabe duda que estos materiales van de la mano de (y complementan a) los anteriores, pero no se pueden confundir con ellos, ni la tecnología de soporte con que se realizan son los mismos, aunque sí existen tecnologías mixtas (herramientas de autor) que aúnan ambas funciones. Lo "curioso" es que precisamente la combinación de medios ofimáticos ofrece también la posibilidad de elaborar productos que, entendidos como conjunto, combinan la presentación con el aprendizaje, justamente sin necesidad de específicas "herramientas de autor". Por este, aunque no son las únicas, serán tratadas especialmente en esta sección del blog; por este motivo, pero también por compartir (o hacer posible cubrir) dos objetivos: el aprendizaje y la evaluación del aprendizaje. 

El tercer formato, la demostración en sus diferentes formas y niveles de complejidad, no deja de ser un desarrollo del primero (la presentación), pero es de mayor complejidad en cuanto a requisitos técnicos; tanto que el medio que hasta ahora ha resultado fundamental (en programa de elaboración de presentaciones), ahora requiere de todo su potencial (recursos de animación e incorporación de MAV) para estar cerca de quedarse corto. También es este el límite en el que algunas herramientas de autor se muestran aprovechables, aunque requieren un nivel de dominio que no está disponible para todos los usuarios, por lo que dejan que desear como recursos de expresión de la competencia digital docente: pretenden eludir un procesos de aprendizaje que permita alcanzar un nivel de dominio satisfactorio, pero lo requieren para dar respuesta a necesidades a las que da igual o mejor respuesta el aprendizaje de la programación.

Finalmente, un cuarto formato queda identificado como juego, que reúne las exigencias de dinamismos e interacción de los formatos anteriores, y que se puede entender como desarrollo de la lógica que preside las actividades de aprendizaje, aunque contiene elementos de todos los anteriores. El desarrollo de este tipo de productos no es asumible desde los servicios de una suite ofimática y tampoco por la mayoría de las herramientas de autor (podría haberlo sido para los lenguajes de autor), por lo que tenemos que recurrir a lenguajes de programación que dispongan de utilidades específicas: PyGame de Python es una de ellas. Esta librería nos permite crear juegos bidimensionales, pero, por lo dicho antes, también se puede usar para generar los diferentes formatos de los que hemos hablado en esta entrada. Digo esto por constituir por ello una alternativa al uso de los servicios ofimáticos y las herramientas de autor.

lunes, 9 de diciembre de 2024

Evaluación. Presentación.

Contenidos de la sección

En esta sección trataré cuestiones relativas a la construcción de pruebas de evaluación (1); esto incluye dos procedimientos: la recogida y análisis de los resultados (individuales o grupales) y la elaboración de informes (también individuales o para el grupo) sobre resultados.



Aunque esta restricción de contenidos implique escindir un proceso unitario (la presentación de materiales de evaluación para el alumnado, el análisis de resultados y la elaboración del informe) en dos secciones diferentes, esta escisión está justificada por la especificidad de la primera fase (en realidad de cada una de ellas, pero especialmente de la primera), incluidos las exigencias que derivan de la ineludible cuestión de los derechos de autor. Es por ello que esa fase pasa a conformar la sección Aprendizaje. No obstante, a pesar de esta diferenciación, siempre cabe la posibilidad de realizar propuestas y ejemplos de recursos que reconstruyan la unidad. Cuando este sea el caso, el material resultante puede estar accesible desde ambas secciones o desde una de ellas, pero no por ello será menos unitario ni menos accesible.

Esta decisión de diferenciar ambas secciones implica ciertamente una pérdida importante de contenido para la ahora reducida sección Evaluación, cuyo contenido que estoy aquí intentando describir, aunque esta reducción es menor de lo que ahora puede parecer. En concreto sus contenidos, como se verá a continuación, son suficientemente amplios y complejos: 
  • los procedimientos de recogida de datos (los resultantes de la aplicación de recursos de evaluación, sean éstos los que sean)
  • el análisis de estos datos en función de los objetivos de la prueba, incluyendo, en su caso, la aplicación de baremos estandarizados o la elaboración de referentes de valoración de los resultados.
  • la elaboración de informes individualizados de evaluación
  • y en su caso, y cuando resulte necesario, la elaboración de informes dirigidos a colectivos en formato presentación tipo Power Point.
Aprovecho la referencia a este tipo de material para identificar una diferencia que resultará (eso espero) de especial interés en el planteamiento del contenido de esta sección (también con implicaciones en Aprendizaje): junto a pruebas de aplicación individual me propongo desarrollar también pruebas de aplicación en grupo, aunque de evaluación individual (o de pequeño grupo). 

Estas pruebas que llamaré colectivas requieren procesos de análisis específicos (ya que pueden carecer de baremo normativo previo), realizados desde la doble perspectiva de la evaluación normativa, pero también de la evaluación criterial.

Además pueden requerir una combinación de sistemas de devolución de información, que pueden ser tanto individuales como dirigida a grupo, sea este el colectivo de padres, el equipo docente o el grupo-clase o cualquier otro agrupamiento de alumnos. Es ahí donde tiene cabida la creación de instrumentos de información grupales como son las presentaciones Power Point - Impress (2).

Una segunda subsección dentro de Evaluación es  la dedicada al análisis de pruebas o test de evaluación. También me planteo ofrecer recursos de evaluación (en el sentido de las delimitaciones antes expuestas), incluidas propuestas de elaboración propia y pensada para ser aplicada a nivel grupal (3). En cualquier caso no esperes encontrar aquí un repositorio de materiales de evaluación que vulnere derechos de autor, aunque sí es posible encontrar recursos que, por causas diversas, no estén sujetos a ello, o ya no no estén. 

Con todo lo dicho creo que el contenido potencial de esta sección bien justifica su especificidad y nada, salvo la falta de tiempo, justifica el temor a que sea reducido, aunque lo sea en estos momentos por motivos obvios.

NOTAS

(1) La creación de soportes para el aprendizaje (y la evaluación) que implican el uso de los mismos por parte del alumnado quedan ubicados ahora en la sección Aprendizaje.
(2) El otro es la elaboración de este mismo tipo de informe (también dirigido al grupo) sobre el análisis de datos resultante del estudio de una realidad concreta, incluyendo el programa de intervención y sus actuaciones.
(3) En este caso es de prever que lo sea a modo de ejemplo de procedimiento, dada la imposibilidad de aplicarlas en la práctica; cuestión ésta que resulta imprescindible para que una prueba resulte de utilidad.

jueves, 27 de junio de 2024

Procedimientos. Gráficos

Creación de ítem de evaluación en Impress

También en Impress (servicio de creación de presentaciones de LibreOffice) es posible crear ítem de evaluación, y no me refiero al uso básico de las presentaciones como recurso para presentar la tarea, algo que ya [hemos visto] en este blog como soporte complementario de un docap. También hemos hablado de las peculiaridades del uso de  OOo Basic en Impress, por lo que [te remito a estas entradas] sobre estas cuestiones previas.


Lo que voy a tratar ahora es el proceso a seguir para transformar una diapositiva Impress en un recurso de evaluación. Se trata de una mera ilustración del modo de trabajo, en realidad de uno de los modos de trabajo, y en su forma más simple. La incorporación de recursos gráficos como los que proporciona Impress dentro de un docap complejo, requiere un desarrollo del contenido de esta entrada que posiblemente abordaré en otro momento.

Para contextualizar esta exposición, vamos a suponer una prueba de evaluación de un único ítem creado sobre presentación Impress, la cual diseñaremos para que el alumno responda directamente actuando sobre la pantalla. Se trata de que el funcionamiento del documento permita el uso directo por parte del alumno, aunque no resuelve todos los problemas que esto implica, sólo los más básicos.

Ya sabemos que Impress permite también (como todos los servicios LibreOffice) el uso de script (1), pero con ciertas limitaciones, incluyendo una determinante: no es posible utilizar la funcionalidad Grabar macro. También presenta ciertas peculiaridades que responden a los dos modos de trabajo con el servicio: en modo Diseño y en modo Presentación.
  • En modo Diseño podemos implementar controles de formulario, por ejemplo botones de comando, que asociados a script funcionan como se espera.
  • Pero algunos de esos controles, por ejemplo los citados botones de comando, no funcionan como desearíamos en el modo Presentación (2).
Estas limitaciones las podemos suplir implementando diálogos, pero también transformando los elementos gráficos en comandos, asociándolos a script. Esta será nuestra opción ahora. Paso a explicarte en detalle cómo hacerlo.

Te presento nuestra "presentación". Se trata de un ítem [tomando como modelo el test RIAS-MnV] que nos servirá de base para este trabajo.



Seguro que reconoces en este nuestro ejemplo el formato de presentación de los ítem del test, con lo que te será fácil trasladarte mentalmente a sus cuadernos de trabajo. Como puedes ver, nuestro ejemplo consta únicamente de dos diapositivas, aunque en un desarrollo real sería necesario repetir el mismo modelo tantas veces como ítem tiene la prueba: la primero contiene el estímulo y la segunda las opciones de respuesta. Utilizo la forma Flecha (Insertar | Forma | Flechas de bloques) para el desplazamiento por la presentación, si bien se podría utilizar el paso de diapositiva en función de un intervalo de tiempo (3)

Puedes comprobar que es posible implementar botones de comando [Ver | Barra de herramientas | Controles de formularioy también su correcto funcionamiento en el modo Diseño, (una vez que lo asocies a un script), pero cuando trates de activarlos desde el modo Presentación observarás que no funciona.

Después de hacer esta prueba (4), y antes de implementar nuestro "botones", deberemos habilitar nuestra presentación para que contenga script. Para ello procedemos como en el resto de los servicios LibreOffice:

Herramientas | Macros | Organizar macros | BASIC | Organizador ....

... para crear el módulo (o los módulos) en el que escribiremos nuestros script. Te recomiendo escribir estos antes de implementar los comandos, así que aquí tienes los que yo planteo:

Dim mRespuestas(43) As String
Dim mPuntos(43) As Integer

Sub cmd11

mRespuestas(0) = "A"
mPuntos(0) = 2

Info
End Sub

Sub cmd12

mRespuestas(0) = "B"
mPuntos(0) = 0

Info
End Sub

Sub cmd13

mRespuestas(0) = "C"
mPuntos(0) = 0

Info
End Sub

Sub cmd14

mRespuestas(0) = "D"
mPuntos(0) = 0

Info
End Sub

Sub cmd15

mRespuestas(0) = "E"
mPuntos(0) = 0

Info
End Sub

Sub cmd16

mRespuestas(0) = "F"
mPuntos(0) = 0

Info
End Sub

Sub Info
MsgBox "Respuesta: " & mRespuestas(0)
MsgBox "Puntuación " & mPuntos(0)
End Sub
 
A destacar:
  • Las matrices que contienen las respuestas (mRespuestas(43) - mPuntos(43) (5)) se declaran como públicas, fuera de los script, para que sean accesibles desde todos ellos.
  • Creo tantos script como botones necesito implementar en la diapositiva de respuesta (contiene 6 opciones), todos ellos con la misma estructura, por lo que el procedimiento, aunque parece costoso, en realidad es muy simple: asignación al primer elemento de cada una de las dos matrices un contenido. En el de la matriz mRespuestas(0) se asignará una letra que corresponde con la opción seleccionada, y en el de la matriz mPuntos(0), obviamente la puntuación (1 para la opción A y 0 para el resto).
Queda claro que no es un código precisamente muy elaborado, lo admito, pero en esta entrada de lo que se trata es de ver cómo podemos implementar controles de formulario (o similares) para asociarlos a OOo Basic y hacer que una presentación funcione como docap, así que, de momento, no nos detendremos en el código para centrar la atención sobre los procedimientos de acceso y la forma de implementar controles funcionales en la presentación. De eso va la parte que sigue de esta entrada.

Dado que el funcionamiento de los controles de formulario parece que no son de mucha ayuda (en el modo Presentación, que es el que nos interesa) (6), tendremos que buscar una alternativa. Afortunadamente la hay, y se llama uso de las formas básicas y su asociación a macros (script), posibilidad esta prevista LO-Impress como funcionalidad dentro de las opciones de funcionamiento que se asignan a esos objetos. Veamos cómo hacerlo.

En primer lugar tenemos que considerar dos posibles situaciones, ya que la forma de trabajo dependerá de con cual de las dos situaciones nos encontremos:
  • Que en la diapositiva de respuestas cada imagen sea un elemento diferente. En ese caso, nuestro caso tendíamos un total de seis elementos.
  • O que se trate de un dibujo único (una lámina con seis dibujos). Ahora sólo habrá un único elemento (7).
En el primer caso, directamente podremos convertir cada uno de los elementos en un comando que se asocia con un script. Para ello seguiremos estos pasos:
    1.  Seleccionamos el objeto-dibujo.
    2. Clic derecho sobre el objeto seleccionado
    3. En el menú de opciones que se despliega seleccionamos Interacción
    4. Activamos el desplegable de opciones (Acción al pulsar sobre el ratón)
    5. Y seleccionamos la opción Ejecutar macro
  • Una vez que aceptamos esta selección (botón inferior Aceptar) aparece un TextBox (Macro) que nos facilita acceder a IDE haciendo clic en el botón de comando Examinar.
  •  LO que tenemos que hacer a continuación es lo mismo que hacemos cuando queremos vincular un botón de comando a un script: seleccionar el directorio donde se encuentra el script, en caso de que el que se nos muestra no sea el que nos interesa (que normalmente lo será, con lo que nos ahorraremos este paso)
  •  Y hacer clic sobre el script que nos interese.

De este modo tan simple hemos convertido una imagen (o una forma Impress) en un comando que activa un script. Al contrario de lo que sucede con el control Botón de comando de formulario, nuestra imagen-comando no funciona como tal en el modo Diseño, pero sí en el modo Presentación, y la primera muestra de ello es que cuando pasamos el ratón por la imagen-comando, el puntero cambia de forma (Flecha -> Mano) y si hacemos clic sobre ella se desarrollará la secuencia de acciones que está diseñada en el script asociado.

Cuando se trata de una lámina con varias imágenes, tenemos que cambiar de estrategia, ya que ahora no existe un objeto individualizado sobre el que actuar; por eso deberemos utilizar las formas disponibles en Impress  (por ejemplo (8)), pero el proceso a seguir para transformar esas formas en comandos sigue siendo el mismo de antes.

Ahora bien, para resolver esta segunda situación (lámina única) tenemos dos opciones de configurar la presentación:

  • Crear una forma-comando añadida a cada elemento de la imagen, como es el caso de la imagen que te muestro a continuación, en la que bajo cada figura he situado una forma (pequeño círculo rojo), la cual transformo en comando siguiendo el método explicado antes...

  • O superponer a cada imagen de la lámina una forma transparente, siendo ésta la que se convierta en comando (siguiendo el mismo procedimiento. En este caso no se observa aparentemente nada diferente de lo que es la propia lámina, pero cada una de sus imágenes aparentemente se ha convertido en un comando; en realidad es la forma superpuesta la que actúa como comando, pero al ser transparente no se aprecia.

Veamos como proceder para desarrollar esta posibilidad:

  • Seleccionamos la figura que vamos a superponer a cada uno de los dibujos de la lámina, de modo que lo cubra por completo.
  • Seleccionamos y copiamos esta figura y la desplazamos hasta la imagen siguiente, así hasta cubrir todos las imágenes (o todas las que deseemos (9))
  • Ahora puedes convertir cada figura en comando, siguiendo el procedimiento ya explicado (10)
  • A continuación te recomiendo modificar la línea exterior de todas esas formar para hacer que desaparezca. Para ello, con la forma seleccionada hacemos clic derecho y en el menú desplegable elegimos la opción Línea y como estilo Ninguno.

  • Ahora es el momento de trabajar de nuevo con cada figura, pero no ya con la línea, sino con el Área 


... y dentro de las opciones posibles, con Transparencia, seleccionando la segunda opción (Con transparencia) y como valor el 100%.


La imagen que sigue muestra diferentes grados de transparencia para que aprecies mejor el proceso, aunque el objetivo final es que todas se presenten igual que la primera, sin línea exterior y totalmente transparentes.


De este modo, la imagen de la lámina queda a la vista, la figura superpuesta es invisible y el comando funciona sin problemas en el modo Presentación.  El usuario tendrá la sensación de hacer clic sobre el dibujo de su elección igual que si trabajáramos con imágenes individuales.

Documento

Desde [este enlace] puedes descargar la presentación que nos ha servido de ejemplo. Consta de cuatro diapositivas, el estímulo y tres más de respuesta, una con cada una de las opciones de trabajo he henos visto. 

Debes descargar el archivo, abrirlo desde LibreOffice y como se trata de un archivo con macros, habilitarlas.

El código que contiene es el mismo que te muestro en la entrada, pero te sugiero que accedas a él desde el IDE y que introduzcas los cambios y mejoras que te parezcan oportunos.

NOTAS

(1) En este momento nos limitamos al uso de OOo Basic como lenguaje de programación, pero ya sabes que en LibreOffice hay otras opciones, incluyendo Python.

(2) Otros controles se pueden implementar en el modo diseño, pero no funcionan ni en este modo ni en el modo presentación. Además, el funcionamiento de la presentación depende del modo en que ésta esté configurada. Todas estas cuestiones no serán tratadas en esta entrada, salvo lo que resulte de inmediato interés.

(3) En RIAS-MnV se plantean tiempos de presentación del estímulo (5") y de máximo de exposición de la lámina de respuesta: 20" en primera instancia y, en caso de fallo, 10" más. Estos requisitos se ajustan bien al uso de intervalos de tiempo como criterio de paso de las diapositivas; pero aquí asumo que es el profesional quien controla los tiempos de exposición, lo que, aunque es factible con un único monitor, se beneficia del uso de dos: el primero es controlado por el OE y en el segundo se muestra la presentación al alumno.

(4) No es obligatoria, ya te he contado yo lo que sucede, pero tampoco está de más comprobarlo personalmente.

(5) Su dimensión (43) se explica por contener RIAS-MnV 44 ítem.

(6) No puedo descartar que esto sea debido a muy escaso conocimiento del servicio Impress, pero en todo caso sí está claro que el comportamiento de los controles de formulario no es tan funcional y sencillo como en Calc o en Writer, lo que genera problemas que, hoy por hoy, no estoy en condiciones de resolver. De ahí la necesidad de trabajar desde otra perspectiva.

(7) También podemos importar imágenes si consideramos que se ajustan mejor a lo que nos interesa.

(8) Aunque según qué casos, ésta puede ser una solución menos "elegante" que presentar cada imagen de forma independiente, la lámina única ahorra mucho trabajo de preparación de materiales e incluso puede ser la mejor opción según para qué tareas, como la de localizar determinados elementos en un mapa, fotografía o dibujo.

(9) Para un soporte de evaluación como el que estamos creando es necesario que todas la posibles respuestas estén cubiertas por este tipo de comandos, ya que todas son opciones de respuesta. En otros casos se deberá valorar lo que resulta más fiable y conveniente, ya que, como dije, en el modo Presentación el cursor cambia de forma, lo que es una pista de cuáles son las imágenes que están asociadas a script. 

(10) Aunque puedes convertir cada figura en comando cuando lo desees, yo te recomiendo que lo hagas bien en este momento o, como mucho, tras el siguiente (eliminar la línea externa de la forma), pero siempre antes de trabajar con la transparencia de la figura. De este modo te ahorras problemas para seleccionarla, ya que una vez que es transparente te va a costar que se active para convertirla en comando.  Cierto que puedes utilizar un truco, como seleccionar la lámina de fondo y desplazarla para que las figuras transparentes queden identificadas, pero tendrás que volver a colocar de nuevo la lámina en su sitio exacto sin poder ver cómo queda la superposición lámina-figuras, lo que no siempre es fácil.

miércoles, 18 de octubre de 2023

Procedimientos. Docap.

DOCAP. Impress + Writer 

Ya vimos una primera formulación de un docap complejo que combina Calc con Writer. Analizaré en esta entrada otra formulación diferente en cuanto a uno de los servicios: utilizo Impress en lugar de Calc. Este cambio se explica fácilmente: ahora necesito las funcionalidades de Impress como recurso de manejo de información visual.

Aunque el esquema de funcionamiento es similar al modelo Calc + Writer, también se aprecian diferencias también, motivo por el cual he creído conveniente crear esta entrada.

Similitudes: Ahora Impress hace de servicio principal, lo que implica que no tenemos, como en el caso anterior, un gestor + un soporte para la salida de la información. Ahora tenemos un servicio-soporte para la exposición de la información y la aplicación de la actividad (Impress) y otro para la misma función que ya cumplió antes. Y en el intermedio el procesamiento de los datos recogidos en la fase inicial de la ejecución. 

Podemos representar lo anterior de forma simplificada mediante este esquema...

    

... entendiendo el condicional como mera representación de la fase de procesamiento, ya que es mucho más complejo, como veremos a continuación.

En la fase input se diferencian dos procedimientos de trabajo:
  • La introducción de datos de identificación, que se realiza mediante un cuadro de diálogo asociado a la presentación
  • Y la ejecución de la tarea, que se resuelve mediante comandos asociados a las figuras de cada diapositiva
El proceso comprende las siguientes fases:
  • El paso de los datos de identificación y de puntuación del ítem a matrices de datos
  • El conteo de aciertos
  • La calificación y valoración del resultado
  • Y la composición del texto a grabar en el documento de salida
Finalmente, en la fase de output se diferencian dos fases:
  • El acceso al documento-base y su apertura en modo plantilla (aquí se presenta una diferencia importante respecto al modelo de docap anterior, en el que se creaba ese documento)
  • Y el traslado de datos a las posiciones de marcador previamente establecidas en dicho documento (esta es una posibilidad que permite trabajar con documentos definidos previamente).
El [video] que sigue muestra esta estructura de forma detallada y en [esta entrada] puedes encontrar información complementaria a la que te presento aquí.




En la fase input, el uso de cuadro de diálogo [ver en GUI] está determinado por las propias limitaciones de Impress en cuanto al acceso a los sistemas gráficos de interface. 

DialogLibraries.LoadLibrary("Standard")
oPresentaCB=CreateUNODialog(DialogLibraries.Standard.getByName("DlgIdAl"))
oPresentaCB.Execute()

La segunda parte del input aprovecha las posibilidades que ofrece LO de asociar los elementos gráficos a macros/script.

El procesamiento de datos se centra en dos procesos:
  • Pasar los datos de los controles del cuadro de diálogo a una matriz string (sDatos()) para facilitar su procesamiento y, con ello, identificar al sujeto que realiza la actividad.
oDato(0) = oPresentaCB.getControl("DtFechaInfo")
sDato(0)= oDato(0).Text
  • Contabilizar los resultados y analizarlos en términos cuantitativos mediante el uso de instrucciones y estructuras OOo Basic.
For i = 0 To 11
Suma = Suma + Puntos(i)
Next
  • Con ambos, y mediante la concatenación de textos y variables, se elabora el contenido que posteriormente será traslado al soporte writer.
If Porcentaje > 80 Then
Valoracion= "Dado que el porcentaje de acierto es superior al 80%, se considera que el/la alumn@ comprende adecuadamente los conceptos básicos trabajados"
Else
Valoracion= "Dado que el porcentaje de acierto es inferior al 81%, se considera que el/la alumn@ no comprende suficientemente los conceptos básicos trabajados"
End If

Finalmente, el output empieza por el acceso al documento-base...

sRutaAcceso = ConvertToUrl("D:InfoCB.odt")
oDocModelo = StarDesktop.loadComponentFromURL( sRutaAcceso, "_blank", 0, mOpciones() )

... y finaliza con el traslado del contenido a las posiciones (marcadores de texto) que se establecieron en el documento-base en el momento en que éste se creó. 

oMrcFechaInfo = oDocModelo.getBookmarks().getByName("MarcaFechaInfo")
oMrcFechaInfo.getAnchor.setString(sDato(0))