INTÉRPRETE Y DEPURADOR GRÁFICO DE PSEUDOCÓDIGO EN

Anuncio
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
Descargar