Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) MEMORIA DESCRIPTIVA DE ACCIONES DE INNOVACIÓN DOCENTE UNIVERSIDAD DE CÓRDOBA DATOS IDENTIFICATIVOS: Título de la acción INTÉRPRETE Y DEPURADOR GRÁFICO DE PSEUDOCÓDIGO EN ESPAÑOL EN EL SISTEMA OPERATIVO LINUX (02NP016) Resumen de la acción El proyecto ha desarrollado un intérprete de pseudocódigo en español para que los alumnos puedan aprender los conceptos básicos de programación ejecutando directamente sus propios algoritmos. Dicho intérprete funciona bajo sistema operativo Linux, el cual está cada día más difundido en la enseñanza universitaria y en el mundo laboral. Componentes del grupo Coordinador/a: Nombre y apellidos Área de Conocimiento Nicolás Luis Fernández García Ciencia de la Comp. e I.Artif. Departamento Informática y A Numérico Componentes: Rafael Medina Carnicer Rafael Luis Morales Márquez Ciencia de la Comp.e I.Artif. Informática y A.Numérico Ingeniero Técnico en Informática de Sistemas Asignaturas afectadas Nombre de la asignatura Área de Conocimiento Metodología y Tecnología de la programación Metodología y Tecnología de la programación Fundamentos de Informática Fundamentos de Informática Fundamentos de Informática Programación científica Titulación/es CC. Comp. e I.A. I.T. Informática Gestión CC. Comp. e I.A. I.T. Informática Sistemas CC. Comp. e I.A. I.T.I. Mecánica CC. Comp. e I.A. I.T.I. Electricidad CC. Comp. E I.A. I.T.I. Electrónica Industrial CC. Comp. E I. A. Ing. en Automática y E. I. 1 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) MEMORIA DE LA ACCIÓN 1. Introducción El aprendizaje de la programación está basado en unos conceptos básicos que son comunes a todos los lenguajes de programación: variables, constantes, tipos de datos, sentencias de control, funciones, procedimientos, parámetros, etc. Actualmente, estos conceptos de progamación son explicados mediante un lenguaje algorítmico en pseudocódigo que es utilizado para desarrollar diversos algoritmos que muestran las características fundamentales de la programación. Lamentablemente, dichos algoritmos no pueden ser ejecutados en un ordenador para comprobar si son o no correctos. Los algoritmos han de ser codificados en un lenguaje de programación para obtener programas que posteriormente serán compilados o interpretados. El aprendizaje simultáneo de los conceptos básicos de programación y las características de un lenguaje de programación suele ser dificultoso para los alumnos. Debido a ello, se ha planteado el desarrollo de un intérprete de pseudocódigo en español que permita a los alumnos ejecutar directamente sus algoritmos, separando el aprendizaje algorítmico de la programación del aprendizaje de las características específicas de un lenguaje de programación. 2. Objetivos El objetivo principal de este proyecto de innovación y mejora docente ha sido el desarrollo de una aplicación informática que permita ejecutar programas escritos en un lenguaje algorítmico en español bajo el sistema operativo Linux. La consecución de este objetivo principal ha sido posible gracias al desarrollo de los siguientes objetivos secundarios: • Editor gráfico que permita la escritura de los algoritmos. • Analizador que compruebe si los algoritmos están libres de errores léxicos, sintácticos o semánticos. • Depurador que permita mostrar los valores de las variables durante la ejecución de los algoritmos “paso a paso”. • Intérprete integrado en el editor gráfico que permita la ejecución de los algoritmos. 3. Descripción de la experiencia La metodología utilizada en el desarrollo de la experiencia ha estado compuesta por las siguientes fases: a. Descripción general. b. Especificación del lenguaje algorítmico. c. Análisis del intéprete de pseudocódigo. d. Análisis del entorno de trabajo. e. Diseño del sistema. f. Diseño léxico y sintáctico del lenguaje algorítmico. g. Diseño de datos h. Pruebas. i. Edición del manual de usuario. Las siguientes subsecciones describen con más profundidad cada una de estas fases. 2 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) 3.1. Descripción general El proyecto ha sido descompuesto en tres módulos • Intérprete de Lenguaje E (ILE): es el encargado de analizar y ejecutar los programas desarrollados con el lenguaje algorítmico E. El intérprete ha de informar al usuario de los posibles errores léxicos, sintácticos y semánticos que se produzcan durante el análisis del programa. • Depurador de Lenguaje E (DEL): ha de visualizar “paso a paso” la ejecución del programa escrito con el lenguaje E, mostrando en cada momento la sentencia de código a ejecutar así como los valores de las variables usadas en el programa. Su objetivo es detectar errores lógicos. • Entorno de Desarrollo E (EDE): incluye el intérprete y el depurador dentro de un entorno gráfico que posee, además, su propio editor de código para los programas. El intérprete también permite ejecutar los programas desde la línea de comandos en modo de texto. 3.2. Especificación del lenguaje algorítmico Se ha efectuado una descripción detallada de todos y cada uno de los componentes léxicos y sintácticos que forman parte del lenguaje algorítmico que debe reconocer el intérprete de pseudocódigo. Las características generales del lenguaje que se han establecido son: • Lenguaje tipificado: o Se ha definido un conjunto básico de tipos de datos, en el que cada objeto de datos tiene asociado un tipo. Este tipo determinará los valores que los datos pueden tomar y las operaciones que se pueden realizar con ellos. o El lenguaje diseñado dispone de seis tipos de datos básicos (entero, real, carácter, cadena, lógico y complejo), así como de un tipo de dato definido por el usuario (registro). o Los objetos de datos que se pueden manejar son: constantes, variables y arrays. • Lenguaje estructurado: o El lenguaje diseñado utiliza sentencias que controlan el flujo de ejecución, facilitando así la programación y reduciendo las posibilidades de error por saltos incontrolados. o El lenguaje dispone de sentencias de asignación, condicionales, iterativas, de llamada y de retorno, entre otras. • Lenguaje procedimental: o El uso de subprograma permite realizar una determinada tarea de forma que lo que ocurra en su interior no provoque efectos secundarios en otras partes del programa. o El lenguaje diseñado permite la definición y ejecución de subprogramas mediante la codificación de algoritmos, funciones parametrizadas y procedimientos parametrizados, además de funciones predefinidas. 3 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) Figura 1.- Modelo de objetos. 3.3. Análisis del intérprete de pseudocódigo Inicialmente se establecieron los tres modos diferentes de ejecución de la aplicación informática: • Análisis: ha de examinar el código en busca de errores léxicos, sintácticos o semánticos, a la vez que ha de generar el código objeto que posteriormente ejecutará. • Interpretación: ha de analizar el código y, en caso de no encontrar fallos, ejecutar el código objeto generado. • Depuración: es similar a la interpretación, pero en este caso, la ejecución se ha de realizar “paso a paso”, mostrando en cada momento la sentencia a ejecutar y los valores de las variables usadas. 4 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) Figura 2.- Modelo dinámico: diagrama de trazas del escenario normal. Se ha utilizado la metodología orientada a objeto O.M.T. (Rumbaugh,1.995) para efectuar el análisis del proyecto. Dicha metodología utiliza tres modelos diferentes para describir las características esenciales de la aplicación informática: • Modelo de objetos: se encarga de describir la estructura estática de los datos utilizados en la aplicación informática. Este modelo identifica las clases del sistema y los atributos pertenecientes a dichas clases. Además indica las relaciones entre las clases y su organización (véase la figura 1). • Modelo dinámico: se ocupa de analizar el comportamiento del sistema y de los objetos de los que consta a lo largo del tiempo. En este modelo se preparan los escenarios con los diálogos típicos, que son descritos mediante los diagramas de trazas (véase la figura 2) que indican los sucesos que se producen. • Modelo funcional: este modelo especifica “lo que sucede”, mientras que el modelo dinámico especifica “cuándo sucede”. Se utilizan los diagramas de flujo de datos para indicar los procesos que componen el sistema (véase la figura 3). Figura 3.- Modelo funcional. 3.4. Análisis del entorno de trabajo En esta fase se han descrito las características que debía tener la interfaz de la aplicación informática, analizando cada una de las ventanas que la componen así como la estructura que de dichas ventanas. Se establecieron dos entornos de trabajo diferentes: • Entorno gráfico: debe proporcionar un entorno de trabajo mediante ventanas, en el que se controlará el intérprete mediante una barra de menús y otra de herramientas, así 5 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) como con la combinación de teclas rápidas. Además el entorno gráfico proporcionará su propio editor de código, con las funciones típicas de un editor, lo cual aumentará las posibilidades del entorno. • Entorno de consola: permitirá la ejecución del intérprete desde la línea de comandos del sistema operativo. Desde este entorno sólo se podrá analizar e interpretar el código, pero no se podrá depurar. Ambos entornos nos mostrarán tanto los errores cometidos a la hora de elaborar cualquier código, como la salida del programa durante su interpretación. La depuración sólo será posible en el entorno gráfico, en el cual se mostrará en tiempo de depuración el trozo código que se está ejecutando y las variables que forman parte de la ejecución del programa en ese momento. 3.5. Diseño del sistema Se ha desarrolado la arquitectura del sistema que está compuesta por las siguientes capas: • Entorno: esta capa es la encargada de establecer la comunicación entre el usuario y el sistema. • Intérprete: representa el intérprete que es capaz de analizar, interpretar y depurar el pseudocódigo escrito en el lenguaje algorítmico. • Lenguaje: representa el lenguaje algorítmico con el que va a trabajar el sistema. • Plataforma de Linux: representa el sistema operativo utilizado. • Recursos de hardware: representa la parte física de la máquina que se encarga de la ejecución del sistema. 3.6. Diseño léxico y sintáctico del lenguaje algorítmico Se han utilizado las expresiones regulares y las reglas de producción de una gramática de contexto libre (Hopcroft et al., 2002) para describir, respectivamente, los componentes léxicos y la sintaxis del lenguaje algorítmico1 diseñado. 3.7. Diseño de datos Esta fase ha sido utilizada para describir con mucha más precisión los atributos y las funciones de cada una de las clases generadas en el análisis del modelo de datos. 3.8. Pruebas Las pruebas realizadas se han dividido en tres partes: • Pruebas conjuntas del lenguaje y el intérprete, ya que no es posible probar uno sin el otro. • Pruebas del entorno gráfico junto con el depurador, ya que éste sólo puede ser utilizado bajo el entorno gráfico (véase la figura 4). • Prueba de validación: consiste en una prueba final del sistema informático desarrollado. 1 Una descripción pormenorizada del lenguaje algorítmico diseñado se incluye en el manual de usuario de que acompaña a la aplicación informática. 6 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) Figura 4.- Imagen del editor durante la fase de depuración. Las pruebas realizadas han permitido detectar los errores y adoptar las soluciones apropiadas para solucionarlos. 3.9. Edición del manual de usuario Una vez concluida la aplicación informática, se desarrolló el manual de usuario, que se ha adjuntado a este informe, el cual consta de los siguientes capítulos: • Capítulo 1.- Introducción. • Capítulo 2.- Instalación. • Capítulo 3.- El Lenguaje E. • Capítulo 4.- El Editor del Código Fuente. • Capítulo 5.- El Intérprete del Lenguaje E. • Capítulo 6.- El Depurador del Lenguaje E. • Capítulo 7.- Ejemplo práctico. • Bibliografía. 7 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) • • Bibliografía. Apéndice A: Qt. 4. Material y métodos 4.1. Recursos de software Los recursos de software utilizados han sido: • Linux Mandrake (v 8.0): sistema operativo dónde se han ejecutado los recursos de software del proyecto y la aplicación resultante del mismo. • gcc - GNU Project C Compiler (v2.96): compilador de lenguaje C y C++ (Schildt, 1.995). • flex - GNU Project Fast Lexical Analyzer Generator (v2.5.4): generador de analizadores léxicos compatible con lex utilizado para generar el analizador léxico del intérprete de pseudocódigo (Paxson, 1.995). • bison - GNU Project Parser Generator (v1.28): generador de analizadores sintácticos compatible yacc utilizado para generar el analizador sintáctico del intérprete de pseudocódigo (Donnely y Stallman, 1.999). • Qt GUI Toolkit (v3.0.5): librería gráfica para el desarrollo del entorno gráfico requerido del depurador de pseudocódigo. • Nedit (v5.2) editor de texto ASCII para la edición del código de la aplicación y del manual de usuario. • latex - GNU Project Structured Text Formatting and Typesetting (v3.14): formateador de texto para la edición del manual de usuario (Kopka y Daly, 1.993). • GIMP (v1.2.1): editor de figuras que permite exportar figuras a formatos PostScript (PS) y Encapsulated PostScript (EPS), además de capturar imágenes de la pantalla. • Visio (v5.0): editor de figuras y diagramas empleados en el manual de usuario. 4.2. Recursos de hardware El proyecto ha sido desarrollado con un PC compatible con las siguientes características: • Microprocesador: AMD K6 II 300MHz. • Memoria RAM: 128 MB. • Vídeo:VGA, Trident. • OS Versión: Linux Mandrake 8.0. • Ratón: compatible. 5. Resultados obtenidos y disponibilidad de uso Se ha elaborado el siguiente material: • Un CD que contiene la instalación de la aplicación informática desarrollada, denominada EDE 2 (Entorno de Desarrollo E, versión 2.0). • Un manual de usuario que describe con claridad el lenguaje diseñado y el funcionamiento de EDE 2. La disponibilidad del material elaborado es máxima ya que es voluntad de los autores darle la máxima difusión posible. El análisis de los objetivos propuestos al principio del proyecto permite extraer los siguientes resultados: • Se ha diseñado un lenguaje algorítmico, denominado “lenguaje E”, capaz de reconocer tipos de datos simples y compuestos, trabajar con operadores y expresiones, 8 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) • • • • • • reconocer sentencias de asignación, iterativas, de entrada / salida, trabajar con funciones y procedimientos parametrizados y poseer una biblioteca de funciones de distintos tipos. Se ha desarrollado un entorno de desarrollo que funciona bajo sistema operativo Linux que incluye: o Un editor código para escribir los programas escritos en lenguaje E. o Un intérprete de los programas escritos en lenguaje E. o Un depurador de los programas escritos en lenguaje E. EDE2 permite interpretar y analizar los programas escritos con el editor integrado en la aplicación o programas almacenados en ficheros de texto. El intérprete es capaz de detectar los posibles errores léxicos, sintácticos y semánticos que los programas escritos en lenguaje E. También permite detectar errores de ejecución El depurador es capaz de mostrar “paso a paso” la ejecución del código, informando en todo momento de la línea de sentencia que se encuentra ejecutando y del valor de las variables que participan en la ejecución. El entorno gráfico de la aplicación dispone de su propio editor de texto, barras de menús y de herramientas para el control de la aplicación, accesos directos para realizar el análisis, la interpretación y la depuración de un determinado pseudocódigo y visualizador de resultados y variables. El entorno de consola dispone de comando directos para analizar e interpretar ficheros que contengan código en lenguaje E. Algunas de las mejoras que podrían incorporarse a la aplicación informática desarrollada son: • • • • • Incluir el tratamiento de matrices de registros. Incluir el tipo de dato fichero. Incluir conceptos de Programación Orientada a Objetos. Permitir que el programa principal pueda usar parámetros de entrada y salida. Permitir que el código fuente se almacene en distintos ficheros fuentes, pudiendo tener funciones y procedimientos en ficheros distintos al que contiene al procedimiento principal. 6. Utilidad de la experiencia Este proyecto de innovación y mejora docente ha permitido desarrollar la aplicación informática EDE2 (Entorno de Desarrollo E, versión 2.0) que permite ejecutar, en el sistema operativo Linux, programas escritos con el lenguaje algorítmico en español denominado “Lenguaje E” (véase la figura 4). 9 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) Figura 5.- Ventana principal de la aplicación desarrollada: EDE 2. Se considera que EDE 2 puede facilitar notablemente el aprendizaje de los conceptos básicos de programación gracias al uso del lenguaje algorítmico que lo acompaña y a las herramientas de edición, interpretación y depuración que posee. EDE 2 está dotado de un entorno gráfico que facilita la edición, análisis, depuración y ejecución de los algoritmos (véase la figura 5). Además, también permite la ejecución de los algoritmos desde la línea de comandos del sistema operativo. Se ha considerado que el intérprete debe ejecutarse en el sistema operativo Linux porque es muy utilizado en la enseñanza universitaria y cada vez tiene más difusión en el mundo laboral. 10 Programa de Apoyo a la Innovación Docente en las Universidades Andaluzas. Curso 2003/04 Unidad para la Calidad de las Universidades Andaluzas (UCUA) EDE 2 está destinada a todos los alumnos que comienzan sus estudios de Informática, en general, y de programación, en particular. La utilización de EDE 2 proporcionará a los alumnos una base firme para poder afrontar con éxito el aprendizaje de cualquier otro lenguaje de programación. 7. Observaciones y comentarios Sería deseable desarrollar en un futuro próximo una fase experimental en la que alumnos de la Universidad utilizarán el intérprete EDE 2 para comprobar su funcionamiento en situaciones muy diversas y para incorporar sus sugerencias. 8. Autoevaluación de la experiencia El presente proyecto de innovación y mejora de la calidad docente aporta una nueva herramienta que facilita los primeros pasos en el aprendizaje de la programación. 9. Bibliografía • • • • • • • Aho, A. V. y Sethi, R. Compiladores. Principios, técnicas y herramientas. Addison Wesley Iberoamericana, primera edición, 1.990. Donnelly, C. y Stallman, R. “Bison. El generador de analizadores sintácticos compatibles con Yacc”. Free Software Foundation, novena edición, 1.999. Hopcroft, J. E.; Motwani, R.; Ullman, J. D. “Introducción a la teoría de autómatas, lenguajes y computación”. Segunda edición. Pearson Educación, S.A. Madrid, 2.002. I.S.B.N.: 84-7829-056-7. Kopka, H. y Daly, P. W. “A Guide to LATEX”. Addison - Wesley, primera edición, 1.993. Paxson, V. “Flex. Un generador de analizadores léxicos rápidos””. The Regents of the University of California, primera edición, 1.995. Rumbaugh, J. “Modelado y diseño orientado a objetos. Metodología O.M.T.”. Prentice Hall, primera edición, 1.995. Schildt, H.; “C++ Manual de Referencia”. McGraw-Hill / Interamericana de España S.A., 1.995. 11