QILQAY: UNA HERRAMIENTA PARA SOPORTAR EL CURSO INDUCTORIO DE LÓGICA DE PROGRAMACIÓN ∗ (UTILIZANDO COMPUTACIÓN GRÁFICA) ABSTRACT Desde el Departamento de Sistemas de la Universidad de Nariño (Colombia), se está liderando el proyecto de investigación, Logic Programming Learning using Graphic Computation, enfocado a mejorar la enseñanza de los conceptos en el área de construcción de software. Para completar su primera etapa, fue necesario implementar una herramienta computacional que ayudara a cumplir uno de sus objetivos. Qilqay es un software creado con el fin de ayudar a impartir el Curso Inductorio de Lógica de Programación, el cual se desarrollará en la segunda etapa de la investigación mencionada. Qilqay está implementada en lenguaje C++ utilizando librerı́as visuales de Qt. Su fin es ejecutar programas que solo contienen instrucciones de graficación, las cuales dibujarán figuras sobre una ventana denominada Interface de Presentación de Resultados. que el tipo de ejercicios utilizados para la enseñar de la lógica de programación[8] en el primer nivel, puede mejorar si se basan en ejemplos vinculados con razonamiento espacial[7]. Aunque este artı́culo no tiene como objetivo publicar el proceso llevado en este proyecto de investigación, es necesario explicar sus fundamentos para luego encontrar la pertinencia de QILQAY como una herramienta de soporte para esta investigación. Durante el primer nivel de enseñanza de lógica de programación básicamente, se contemplan los siguientes elementos conceptuales: • Secuencilización (Algorithm). • Variables. • Instrucciones de entrada y salida de información (I/O). Al finalizar su implementación, se pudo comprobar que Qilqay soporta todos los requerimientos determinados por el proyecto de investigación. • Procesamiento de datos. Keywords • Instrucciones repetitivas (WHILE). • Instrucciones de decisión (IF). Programación, Enseñanza, Graficación 1. INTRODUCCIÓN Como complemento a los esfuerzos que el programa de Ingenierı́a de Sistemas de la Universidad de Nariño ha realizado para mejoramiento de la enseñanza en el área de programación, surge un proyecto de investigación que busca reforzar el aprendizaje de la lógica de programación probando algunos ajustes al método de enseñanza actual. El Proyecto Logic Programming Learning using Graphic Computation, es un proceso investigativo que se fundamenta en ∗Toda la información relacionada con la implementación de Qilqay, puede ser encontrada en el portal de Software Nariñense http://sonar.udenar.edu.co. El Curso Inductorio de Lógica de Programación, se encuentra organizado y publicado en el portal virtual de soporte a las asignaturas de la Facultad de Ingeniería de la Unviersidad de Nariño http://ingenieria.udenar.edu.co/virtual CICOM 2015 Cartagena, Colombia El método de enseñanza normalmente se fundamenta en realizar muchos ejercicios para lograr que el estudiante adquiera, por asociación mental, la habilidad para aplicar estos elementos conceptuales en solución de problemas computacionales. El proceso investigativo en curso, se ha enfocado en formular una colección de ejercicios para que en forma evolutiva, el estudiante resuelva problemas exclusivamente gráficos, realizando dibujos basados en cı́rculos, lineas, rectángulos y colores sobre un lienzo de 2 dimensiones. Por su puesto, este contenido es brindado como un curso inductorio para que posteriormente el estudiante continúe con su proceso de aprendizaje habitual. Teniendo en cuenta este cambio metodológico, fue necesario implementar una herramienta sobre la cual el curso pueda ser llevado a cabo y que disponga de los mecanismos para enseñar los mismos elementos conceptuales, pero resolviendo solo problemas gráficos. QILQAY es una herramienta computacional implementada para solventar dicha necesidad, y la cual es el objeto de este documento, en el cual se pretende mostrar sus caracterı́sticas y bondades, ası́ como algunas pruebas de funcionamiento que han sido realizadas para asegurar su buen desempeño antes de ser utilizada directamente en el curso inductorio [6]. En los siguientes capı́tulos se detalla a QILQAY ası́: En el capı́tulos 2, se presenta la estructura arquitectónica de la herramienta; el capı́tulo 3, muestra cómo fue implementada a partir de un diseño con enfoque sistemático; el capı́tulo 4, expone algunas pruebas realizadas a la herramienta; y el capı́tulo 5, discute los resultados obtenidos tanto en el proceso de desarrollo como en las pruebas realizadas. El primer componente, library, constituye el espacio que tiene la definición de todas las clases con sus respectivos métodos escritos en lenguaje C++[3][5] usando un diseño Orientado a Objetos. Y el segundo componente, wizard, el cual esta escrito con una sintaxis especial para que sea interpretado por el IDE, permite que QtCreator inicie un proyecto con todos los archivos de Qilqay necesarios listos para su ejecución. De esta forma el estudiante solo deberá realizar los siguientes pasos para iniciar su trabajo con Qilqay: 1. Abrir QtCreator. 2. ARQUITECTURA DE QILQAY 2. Crear un nuevo Proyecto de tipo Qilqay. Para implementar a Qilqay, fue necesario tener en cuenta que la solución deberı́a satisfacer tres aspectos generales indispensables: • Compatibilidad con el lenguaje estandar de enseñanaza en el Departamento de Sistemas de la Universidad de Nariño (C++). • Uniformidad con la Interface de Desarrollo (IDE ). 1 • Ejecución en multiplataforma. 3. Ejecutar. Sin necesidad de escribir código alguno, Qilqay se puede ejecutar mostrando su interface de resultados. 2.2 Arquitectura dinámica Una vez puesta en marcha, Qilqay contiene dos elementos claramente definidos: El entorno de codificación (IDE) y la interface de presentación de resultados (GUI2 ): Figure 2: Elementos de Qilqay En los primeros cursos de programación en la Universidad de Nariño, se utiliza C++ como lenguaje base de escritura de programas. Si bien es cierto que en primer semestre se busca que los estudiantes creen algoritmos sin pensar en codificación, hacia el final del primer semestre, es común hacer algunos ejercicios utilizando C++. A partir del segundo semestre, el Departamento de Sistemas de la Universidad de Nariño, ha venido utilizado QtCreator como IDE para escribir código fuente debido a su facilidad de manejo, (coloreado de sintaxis, autocompletado de código, depuramiento de código, etc.). Además, es una herramienta que puede ser utilizada por los estudiantes en forma profesional. La libertad en la selección del sistema operativo es un aspecto fundamental en los procesos académicos, de esta forma Qilqay debe poderse trabajar de manera trasparente en cualquier plataforma. 2.1 Arquitectura estática Qilqay es entonces un conjunto de dos componentes: Una librerı́a y un asistente, tal como se muestra en la figura 1. De los dos elementos, el primero, IDE, permite escribir comandos básicos de dibujo, tales como circle, line, entre otros, aprovechando el Framework de QtCreator. El segundo elemento, GUI, presenta los resultados al estudiante, soportando algunas herramientas dispuestas en la interface, tales como una cuadrı́cula ajustable, verificación de coordenadas, posibilidad de guardar el resultado, entre otros. 3. ASPECTOS DE DISEÑO E IMPLEMENTACIÓN DE QILQAY En la etapa de diseño de Qilqay, se tuvieron en cuenta los siguientes requerimientos: • Se debe disponer de comandos o instrucciones que solo permitan realizar dibujos, tales como cı́rculos, rectángulos, lı́neas, colores. Figure 1: Componentes de Qilqay • Se debe proveer de un mecanismo (I/O) para salida de información o presentación de resultados gráficos. • Se debe proveer de un mecanismo (I/O) para entrada de datos gráficos o para capturar información del usuario relacionada con datos gráficos. 1 Integrated Development Environment 2 Graphical User Interface • Las instrucciones deben estar diseñadas en idioma inglés para fomentar las buenas prácticas de programación. Figure 5: Diagrama de la liberı́a de Qilqay • La ejecución debe permitir ver los resultados inmediatamente. • La interface de presentación debe permitirle al estudiante una eficaz verificación de resultados. Para iniciar la creación de Qilqay, se optó por mantener un repositorio que permita versionamiento. De esta forma, el código fuente fue almacenado en GitHub, lugar desde el cual se puede acceder libremente al software completo. Con en el link https://github.com/GonzaloHernandez/qilqay se puede llegar hasta el repositorio de código. La documentación y manual de funcionamiento, se encuentran alojados en el sitio web http://sonar.udenar.edu.co/qilqay. 3.1 Bateria de instrucciones permitiera procesar la información en forma concurrente, es decir, en paralelo con la visualización de los resultados. Para esto, la clase Instructions presentada en la figura 6, se comporta como un hilo (thread ) heredando dicha caracterı́stica de la clase QThread. Figure 6: Diagrama de relación entre Instructions y GraphLibrary Para cubrir todos los requerimientos, se diseñó un conjunto de clases relacionadas que permitieran administrar todos los dibujos que un estudiante pudiera imaginar a partir de 6 instrucciones básicas: line, circle, oval, arc, rectangle, color. [4] La figura 3, muestra la organización de estas clases gráficas dentro de una sola familia de clases, Shape Class Family. [1] Figure 3: Diagrama de clases de figuras Estas clases son administradas por la clase GraphLibrary, a quien se le ha responsabilizado la tarea de graficar cada uno de los dibujos requeridos por el estudiante. La figura 4 bosqueja la relación estática de estas clases. Figure 4: Diagrama de clases de Qilqay La clase GraphLibrary provee los métodos necesarios para crear cada una de las figuras y ası́ ser agregadas al repositorio shapes. Para tener una mayor organización en el código fuente, se lo dividió en dos secciones: qilqaylibrary.h que contiene la programación de todas las clases previamente explicadas, y qilqay.h que contiene 3 macroinstrucciones: PROGRAM, START y END, que relajan el código final utilizado por el estudiante (Sugar Syntax ). Las instrucciones adicionales son proporcionadas por el IDE, tales como if, while, int, etc. 3.2 Como mecanismo (I/O) de salida de información se ha diseñado en Qilqay una interface de presentación de resultados, en la cual se grafican los dibujos realizados por el estudiante de cada una de las instrucciones codificadas en el IDE. El objetivo de éste GUI, es la de dotar al estudiante de una herramienta completa con la cual pueda evaluar el resultado de sus ejercicios. La figura 7 muestra la interface en ejecución. Esta interface una vez ejecutada no solo muestra los gráficos solicitados por el estudiante, sino que adicionalmente puede realizar las siguientes acciones: 3.2.1 Toda la implementación utiliza la librerı́a de Qt[2] como base de desarrollo visual, tal es el caso de la clase GraphLibrary que hereda sus caracterı́sticas visuales de la clase QWidget, tal como se muestra en la figura 5. La secuencialización de las instrucciones codificadas por el estudiante (dibujos), se logró implementando una clase que Interface de presentación de resultados (Output ) Verificación de coordenadas Uno de los requerimientos solicitados por el proyecto de investigación, consiste en permitir una inmediata verificación de resultados, en este caso, la revisión que hará el estudiante estará encaminada a verificar el lugar donde se dibujó cada figura. Para esta tarea, la interface permite visualizar las coordenadas del puntero del mouse cuando se oprima cualquiera de los dos modificadores Alt o Ctrl. Con el modifi- Figure 7: Interface de presentación de resultados La instrucción getposition(...), también configura a la interface para que se muestre un texto en un mensaje flotante (bajo el puntero), el cual es proporcionado por el estudiante a través del mismo comando. La figura 8 muestra cómo Qilqay ejecuta la instrucción de captura de datos: getposition (x ,y , " Donde quiere dibujar el circulo ? " ) ; Figure 8: Captura de datos cador Alt se muestra la coordenada del puntero en cualquier posición de la ventana, mientras que con el modificador Ctrl, se puede ver la coordenada ajustada a una cuadrı́cula previamente definida. 3.2.2 Cuadrícula Con el objetivo de retomar la intención del papel milimetrado cuando se dibuja sobre papel, se ha acondicionado a la interface con una cuadrı́cula que puede ser habilitada en el momento en que el estudiante lo desee utilizando la combinación de teclas Ctrl+G. Esta malla presentada en el fondo de los dibujos, ayuda a visualizar la ubicación de los mismos. Por defecto, la cuadrı́cula tiene una escala de 10 pixeles, pero puede ser ajustada por medio de la rotación de la perilla del mouse, ScrollMouse, mientras se tiene presionado la tecla Ctrl. Esta cuadrı́cula también puede ser habilitada desde programación por medio de la instrucción grid(.). 3.2.3 Exportar imagen Una vez realizada la verificación del resultado, el estudiante también tiene la opción de guardar la imagen generada exportándola en formato PNG. Académicamente, esta opción permite que se puedan enviar resultados al profesor o simplemente guardar un resultado junto con su código fuente para futuras consultas. El guardado de la imagen se realiza por medio de la combinación de teclas Ctrl+S. 3.3 Captura de datos (Input ) Una de las principales instrucciones en el proceso de aprendizaje de la lógica de programación, es la que permite un diálogo con el usuario final, por tal motivo, Qilqay ha dispuesto una instrucción para este fin sin salirse de los parámetros del proyecto de investigación, es decir, una instrucción que esté relacionada con computación gráfica. Como mecanismo (I/O) de entrada de datos, Qilqay ha diseñado la instrucción getposition(...). Con este comando, la secuencialidad del programa se detiene y la interface de presentación de resultados pide que se seleccione una ubicación. Una vez que se ha hecho click para seleccionar la posición, la secuencialiad del programa continúa ejecutando las instrucciones que el estudiante ha dispuesto después de ésta. 4. PRUEBAS DE FUNCIONALIDAD La funcionalidad del Qilqay, ha sido analizada por medio de dos pruebas, una realizada por integrantes del mismo equipo investigador, y otra realizada por personas ajenas al proyecto. 4.1 Diseño de ejercicios Durante la primera etapa del proyecto de investigación Logic Programming Learning using Graphic Computation, se realizaron un compendio de ejercicios para ser abordados durante el curso inductorio de lógica de programación. Estos ejercicios se clasificaron en 5 grandes grupos: • Secuencialización y Razonamiento espacial. • Manejo de variables. • Diseño de funciones. • Empleo de ciclos. • Entrada de datos. • Toma de decisiones. En las figuras 9, 10, 11, 12, 13 y 14, se muestra un ejemplo sencillo de cada uno de los temas tratados por el curso inductorio. De esta forma, la primera prueba de funcionalidad, fue realizada por un grupo de estudiantes que terminaron décimo semestre en ingenierı́a de sistemas, a quienes se les asignó la tarea de crear una baterı́a de ejercicios para cada uno de los seis temas mencionados. En total se crearon 40 de cada uno, los cuales se utilizarán en la segunda etapa del proyecto de investigación. El resultado de esta primera prueba, fue exitoso, en todos los casos la librerı́a respondió de acuerdo a lo solicitado. Figure 9: Ejemplo de Secuencialización Figure 13: Entrada de datos Figure 10: Ejemplo de Manejo de variables Figure 14: Ejemplo de Toma de decisiones Figure 11: Ejemplo de Diseño de funciones Por este motivo, la segunda prueba se realizó con un grupo de 19 estudiantes de Tecnologı́a en Computación de la Universidad de Nariño, a quienes se les impartió una cátedra resumida de 30 minutos utilizando Qilqay. Posteriormente, se les aplicó un cuestionario para evaluar 7 aspectos sobre la experiencia. Las opciones de respuesta posibles para cada aspecto fueron: • Excelente. • Bueno. • Aceptable. • Debe mejorar. Figure 12: Ejemplo de Empleo de ciclos 4.1.1 Aceptabilidad Una herramienta que servirá de apoyo a un proceso de enseñanza, debe tener como caracterı́stica fundamental la aceptación de parte de los aprendices, es decir, la herramienta debe incitar a que el estudiante desee continuar trabajando con ella. Como resultado, se obtuvo que más del 55% de los estudiantes, consideran como excelente la posibilidad de que se pueda iniciar un ejercicio sin necesidad de escribir código alguno, esto, gracias a que el wizard de Qilqay construye todos los archivos y códigos necesarios para que el estudiante solo se enfoque en digitar las instrucciones de dibujo. La figura 15 muestra que adicionalmente otro 38% de los estudiantes lo consideran como bueno. QtCreator es un IDE bastante robusto y por su eficiencia se presta para este tipo de proyectos. La figura 16 confirma que el haber utilizado a QtCreator fue una buena decisión de diseño. De los estudiantes participantes en la prueba, más del 72% califican a este aspecto entre excelente y bueno. Después de que los estudiantes realizaron varios ejercicios propuestos por el profesor, éstos calificaron como excelente Figure 15: Disponibilidad de un asistente Figure 19: Instrucción de entrada de datos Figure 16: Utilización de QtCreator para la verificación de resultados, son pertinentes. En esta ocasión se está haciendo referencia a la posibilidad de verificar las coordenadas de un dibujo ası́ como la disponibilidad de una cuadrı́cula que ayude a visualizar la posición de cada figura. Las figuras 20 y 21, muestran que el 100% de los estudiantes calificaron entre excelente y bueno a este aspecto. Figure 20: Verificación de coordenadas Figure 17: Instrucciones de dibujo Figure 21: Cuadrı́cula la definición de las instrucciones de dibujo. La figura 17 muestra que que el 61% del curso está de acuerdo con esto. El ambiente gráfico, fue uno de los aspectos que gustó dentro de los participantes, no solo fue apreciado por medio de observación directa, sino también fue constatado por las respuestas que entregaron los estudiantes. Según la figura 18, más de la mitad del curso, 55%, califican como excelente, y una tercera parte mas, 33%, califican como bueno el mecanismo (I/O) que permite la salida de información hacia el usuario. Figure 18: Interface de resultados gráficos Con las mismas apreciaciones fue calificado el mecanismo (I/O) de entrada de datos. A un 94% de estudiantes del curso, le pareció que la instrucción getposition(...) fue una excelente o buena estrategia para dialogar con el usuario. La figura 19 confirma esta apreciación. Para finalizar, todos los estudiantes están de acuerdo en que las herramientas dispuestas en la Interface de Presentación 5. CONCLUSIONES Y TRABAJOS FUTUROS Con la liberación de la primera versión completamente funcional de Qilqay, Release 13, se ha culminado la primera de las tres etapas del proyecto de investigación Logic Programming Learning using Graphic Computation. Para el equipo de trabajo, ha sido un logro invaluable, puesto que ahora, no solo se dispone de la herramienta, sino que adicionalmente, gracias a ella, también se ha podido crear la baterı́a de ejercicios que inicialmente se trabajarán en la segunda etapa, es decir, la puesta en marcha del Curso inductorio de lógica de programación. Después de realizar el compendio de ejercicios utilizando Qilqay, los mismos estudiantes que realizaron las pruebas, dieron testimonio de la eficacia de una enseñanza de la lógica de programación basada en computación gráfica, puesto que con pocas instrucciones diseñadas por Qilqay, fue posible aplicar los conceptos básicos de esta disciplina. El desarrollo de este software, ha sido exitoso gracias a la utilización de lenguaje C++ ası́ como fueron de ayuda valiosa las librerı́as de Qt. La exploración de este framework, deberı́a seguirse haciendo en los ambientes académicos, no solo para explotar los beneficios de C++, sino también porque es un framework totalmente profesional. Qilqay es un software que seguirá en continuo desarrollo, las nuevas liberaciones contendrán mejoras en pro de ayudar con más eficiencia al proceso académico para el cual fue creada. También se estudiará la pertinencia de crear más instrucciones gráficas enfocadas a enseñar la aplicación de los conceptos de la lógica de programación. La implementación de Qilqay, ha sido realizada sobre una plataforma Linux y aunque fue probada también en plataforma Windows, queda como trabajo futuro, dar más soporte al proceso de instalación del mismo en dicha plataforma. 6. REFERENCES [1] El Lenguaje Unificado de Modelado. Addison-Wesley, España, 2000. [2] Application Development with Qt Creator. PACKT Publishing, United Kingdom, 2014. [3] The C++ Programming Language, 4th Edition. Addison-Wesley, United States, 2014. [4] Computer Graphics: Principles and Practice: Principles and Practices. Addison-Wesley, New York, 2014. [5] www.cplusplus.com. http://www.cplusplus.com, 2015. [Online; accessed 20-April-2015]. [6] G. Hernández. Qilqay-General Info. http://sonar.udenar.edu.co/qilqay/, 2015. [Online; accessed 20-April-2015]. [7] S.-Y. Lee. Spatial reasoning and similarity retrieval of images using 2d c-string knowledge representation. Pattern Recognition, 23(3):305318, March 1992. [8] K. Vicente. Assaying and isolating individual differences in searching a hierarchical file system. Human Factors: The Journal of the Human Factors and Ergonomics Society, pages 349–359, June 1987. APPENDIX A. ENCUESTA DE ACEPTACIÓN DE QILQAY Las siguientes preguntas tienen como objetivo, identificar el grado de aceptación de Qilqay como herramienta de apoyo al Curso Inductorio de Lógica de Programación. Responda a cada uno de los siguientes 7 aspectos, de acuerdo a la experiencia que ha tenido en este corto curso. 1. Qilqay ha dispuesto para su trabajo un asistente denominado ”Qilqay Project” que le permite iniciar un ejercicio sin necesidad de que usted escriba lı́neas de código adicionales. Esta forma de iniciar un ejercicio la considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 2. Qilqay utiliza a QtCreator como IDE (Interfaz de desarrollo) para realizar ejercicios gráficos. El haber utilizado a QtCreator lo considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 3. Qilqay tiene a su disposición varias instrucciones para crear gráficos (circle, line, etc.). La forma en cómo han sido diseñadas estas instrucciones, la considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 4. Qilqay ha utilizado un mecanismo único de presentación de resultados (Una venta con dibujos). Esta estrategia (Input/Output) de presentar la información la considera: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 5. Qilqay también ha diseñado un único mecanismo para captura de datos ( getposition(x,y...) ), el cual captura las coordenadas del mouse. Esta estrategia de (Input/Output) la considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 6. La ventana de presentación de resultados de Qilqay permite que usted verifique las coordenadas en las cuales ha sido dibujada una figura (Moviendo el puntero mientras se presiona la tecla Ctr o Alt). La eficacia de esta caracterı́stica la considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar 7. La ventana de presentación de resultados de Qilqay también permite mostrar una cuadricula o grilla (Ctr + G), a la cual se le puede cambiar la escala (Ctr + ScrollMouse). La forma en cómo ayuda esta caracterı́stica la considera como: ⃝Excelente ⃝ Buena ⃝ Aceptable ⃝ Debe mejorar Muchas gracias.
© Copyright 2024