Está en la página 1de 10

Dev-Pascal.

Edicin, compilacin y depurado de un programa Pascal


En esta primera prctica de la asignatura se pretende familiarizarse con el computador y los elementos bsicos del entorno de programacin Dev-Pascal. El entorno permite trabajar con dos compiladores, el GNU-Pascal y el FreePascal (intercambiables en las opciones del programa). El compilador FreePascal en el entorno DevPascal permite depurar errores fcilmente.

La interfaz grfica
Las siguientes prcticas de la asignatura se van a realizar con el entorno de programacin DevPascal (http://www.bloodshed.net/devpascal.html) sobre ordenadores con sistemas operativos Windows. La interfaz grfica de usuario de Dev-Pascal tiene el siguiente aspecto:

Dpto. Informtica e Ingeniera de Sistemas

pag. 1

Esencialmente, tiene los siguientes componentes: 1. Barra de men: a. File (archivo). Contiene opciones para gestionar (crear, abrir, guardar) ficheros fuente de una aplicacin, as como imprimirlos y salir de la aplicacin. b. Edit (editar). Contiene funcionalidades bsicas de edicin (copiar, pegar, cortar y seleccionar texto), hacer/rehacer acciones, plantillas bsicas de programacin (cabeceras de comentario, bucles, etc), insercin de marcadores y acceso. c. Search (buscar). Contiene un motor de bsqueda dentro del cdigo fuente. d. View (ver). Permite gestionar los elementos visibles de la interfaz grfica de usuario. e. Project (proyecto). Facilita la gestin de programas complejos que utilizan varios ficheros fuente. f. Execute (ejecutar). Contiene las funcionalidades necesarias para compilar, ejecutar y depurar el programa.

g. Options (opciones). Este men permite modificar las opciones del compilador (rutas de acceso, generacin de informacin para la depuracin, seleccin del compilador, etc) h. Tools (herramientas). Contiene un conjunto heterogneo de funcionalidades, como el acceso a la ventana de resultados de compilacin, creacin de programas autoinstalables, etc. i. j. Windows (ventanas). Contiene funcionalidades para la gestin de las ventas dentro del programa. Help (ayuda). Contiene informacin acerca del entorno de programacin DevPascal, un Tutorial, informacin sobre Pascal, etc.

2. Barras de herramientas. Comprende la barra de herramientas Principal, la de Compilacin y Ejecucin, Proyecto, Opciones y Ayuda y Especial. Su visibilidad es configurable desde View Toolbars. Todas estas barras de herramientas proporcionan botones de acceso directo a las funcionalidades ms comunes del men de la interfaz grfica de usuario. 3. rea de edicin. Editor de texto que facilita la creacin y modificacin del cdigo fuente del programa. 4. Barra de estado. Proporciona informacin sobre la posicin del cursor en el rea de edicin (fila, columna), el modo de edicin (insertar o reemplazar) y sobre el nmero total de lneas que contiene el fichero de cdigo fuente. 5. Barra de Pestaas. Facilita el acceso a informacin vital, como el resultado del proceso de compilacin del cdigo fuente. 6. Botones de control de ventana. Permite minimizar, maximizar o cerrar las ventanas del cdigo fuente y de la aplicacin.

Dpto. Informtica e Ingeniera de Sistemas

pag. 2

Configuracin Inicial
Antes de comenzar a trabajar con Dev-Pascal ser til modificar el cdigo que por defecto nos genera el entorno cuando creamos un fichero nuevo. Para ello, en la barra de men, elegir la opcin Options -> Environment options -> Misc. Una vez seleccionado, aparece el siguiente dilogo:

Sustituye el cdigo que aparece por defecto (Default code when creating new source files) por esto:
{ AUTOR: PROYECTO: FICHERO: DESCRIPCION: } program titulo; begin end.

Pulsa sobre el botn en OK. A partir de ahora, cada vez que creemos un fichero nuevo en DevPascal, aparecer ese cdigo inicial, que habr que completar.

Dpto. Informtica e Ingeniera de Sistemas

pag. 3

Edicin de un programa en Pascal


Pueden existir varios ficheros asociados a una prctica o programa concreto (el fichero fuente de Pascal, el ejecutable, ficheros de datos y resultados, etc.). Por tanto es una buena idea guardar todos los ficheros de una prctica en un directorio independiente para cada una. Crea una ventana nueva de edicin (FileNew Source File) y escribe el siguiente programa en Pascal sin preocuparte por ahora de los errores tipogrficos que comentas:
program prueba1 (input, output); { Este programa contiene un error: La variable Celsus no esta definida. Comprueba que el compilador Pascal lo detecta. } var Celsius, Fahrenheit: real; begin write('Introducir la cantidad de grados Celsius: '); readln(Celsius); Fahrenheit := (9.0 / 5.0) * Celsus + 32.0; writeln('La cantidad de grados en Fahrenheit es ', write('Pulsa Return'); readln end. Fahrenheit:8:2);

Guarda el fichero como prueba1.pas (FileSave unit as).

Compilacin y depuracin de un programa en Dev-Pascal


Compila el programa accediendo a Execute Compile. La figura de la pgina siguiente muestra el resultado obtenido. La ventana de compilacin indicar que no se ha podido compilar el programa con xito. Seleccionando con el ratn en la ventana Compiler de la barra de pestaas cada una de las lneas, observars los errores de compilacin que se han producido. En este caso, comprobars que te avisa que el identificador Celsus no ha sido declarado, y se utiliza en la lnea 12 de tu programa. Vuelve a editar el cdigo fuente y sitate en la lnea donde se encuentra el error (la nmero 12) y corrgelo. Una vez corregido este error, y otros posibles errores, abandona el editor y vuelve a compilar el fichero. Hay que repetir todo este proceso hasta que no queden errores detectables por el compilador. Si la compilacin tiene xito, el compilador no emitir ningn mensaje de error. Ahora, accede al men Execute Run y se ejecutar la aplicacin en una ventana del intrprete de comandos (Shell). Comprueba su funcionamiento. Aparecer en pantalla el mensaje Introducir la cantidad de grados Celsius:. Escribe un nmero real seguido de RETURN y obtendrs la conversin a grados Fahrenheit. Puedes repetir la operacin cuantas veces quieras. Introduce ahora una letra en lugar de un nmero. Vers que el programa termina porque se ha producido un error en tiempo de ejecucin .
Dpto. Informtica e Ingeniera de Sistemas pag. 4

Ejemplos de depuracin de programas en Pascal


Esta seccin proporciona ejemplos sencillos para entender algunos errores que se producen en la depuracin de programas.

Mensajes de error: tipos y significado


Error de compilacin Es un error que genera el compilador al tratar de obtener un programa ejecutable a partir del cdigo fuente. Son consecuencia de errores sintcticos o semnticos en el cdigo fuente Pascal. Ejemplo:
{ AUTOR: ... PROYECTO: ... FICHERO: errores1.p DESCRIPCION: Programa para observar los errores de compilacion } program generaErrorCompilacion(input,output); var nota: real; begin nota := 7.50; write('La nota obtenida es: ', notta) end.

Dpto. Informtica e Ingeniera de Sistemas

pag. 5

Al tratar de compilar aparece el siguiente mensaje de error:


11 / 34 error1.pas Error: Identifier not found NOTTA

Indica que se ha producido un error al tratar de compilar en la lnea 11 en NOTTA. El mensaje de error es IDENTIFIER NOT DEFINED , que significa que ese identificador no ha sido declarado ( notta y nota son nombres distintos). Error de ejecucin Aparece cuando el programa es sintcticamente correcto (no se han producido errores de compilacin), pero alguna de las acciones que trata de realizar es incorrecta y da lugar a un error. Ejemplo:
{ AUTOR: ... PROYECTO: ... FICHERO: errores2.p DESCRIPCION: Programa para observar los errores de ejecucion } program generaErrorEjecucion(input,output); var contador, dato: integer; ficheroDatos: file of integer; begin assign(ficheroDatos,'fichero.dat'); for contador:= 1 to 25 do begin read(ficheroDatos,dato); writeln('El dato numero ',contador,' es ',dato) end; close(ficheroDatos) end.

Se compila el programa fuente como en el ejemplo anterior. Al tratar de ejecutarlo se produce un error de ejecucin porque se ha intentado leer un dato del fichero 'fichero.dat' de un fichero que no existe.

Seguimiento y monitorizacin de programas Hay ocasiones en las que el programa no muestra el comportamiento deseado, pero no acertamos a dar con el error. En esos casos es conveniente disponer de algn tipo de ayuda para averiguar qu partes del programa se han ejecutado correctamente.

Dpto. Informtica e Ingeniera de Sistemas

pag. 6

Caso 1: Mensajes de seguimiento Si tratamos de ejecutar el siguiente programa, nos encontraremos con que se "queda atascado", y no acaba nunca.
{ AUTOR: ... PROYECTO: ... FICHERO: sinfin.p DESCRIPCION: Programa en bucle infinito } program paraSiempre(input, output); var x: integer; begin x:= 1; while x<>0 do begin x:= x + 1; if x = 5 then x:= 1 end; end.

Una buena idea puede ser insertar ciertos mensajes para tratar de averiguar qu partes del cdigo se ejecutan y detectar si hay algn punto del programa que no se alcanza.
{ AUTOR: ... PROYECTO: ... FICHERO: sinfin.p DESCRIPCION: Programa en bucle infinito con traza } program paraSiempre(input, output); var x: integer; begin x:= 1; writeln('He asignado valor a x.'); while x<>0 do begin x:= x + 1; if x = 5 then x:= 1 end; writeln('He terminado el bucle.') end.

En este caso se obtiene la siguiente salida:


He asignado valor a x.
Dpto. Informtica e Ingeniera de Sistemas pag. 7

El segundo mensaje no aparece, por lo que podemos deducir que el programa se ha atascado en algn punto entre el primer y el segundo mensaje. Podemos refinar un poco ms, insertando mensajes adicionales, o monitorizar el valor de ciertas variables. Caso 2: Monitorizacin de variables Modificamos el programa anterior de la siguiente forma:
{ AUTOR: ... PROYECTO: ... FICHERO: sinfin.p DESCRIPCION: Programa en bucle infinito con traza } program paraSiempre(input, output); var x: integer; begin x:= 1; writeln('He asignado valor a x.'); while x<>0 do begin x:= x + 1; if x = 5 then x:= 1; writeln ('El valor de x es: ', x) end; writeln('He terminado el bucle.') end.

Y obtenemos la siguiente salida:


He El El El El El asignado valor de valor de valor de valor de valor de valor a x. x es: x es: x es: x es: x es: 2 3 4 1 2

... (los mensajes continan indefinidamente...)

para interrumpir la ejecucin se pulsa Ctrl+C

As descubrimos que, en efecto, el programa no puede finalizar porque x nunca llega a tener valor 0.

Actualizacin del compilador FreePascal


El compilador que utiliza Dev-Pascal por defecto es FreePascal 1.0.6, instalado automticamente por el instalador de Dev-Pascal. Como la ltima versin disponible por el momento de este compilador es la 2.4.2, se proporcionan dos utilidades que modifican la configuracin de Dev-Pascal para conseguir que pueda trabajar con la versin de FreePascal que ms nos interese: la 1.0.6 o la 2.4.2. DevPas_FP242.bat cambia el compilador usado por DevPascal a FreePascal 2.4.2
Dpto. Informtica e Ingeniera de Sistemas pag. 8

DevPas_Orig.bat hace que DevPascal vuelva a utilizar el compilador original Para que esta utilidad funcione, es requisito imprescindible que tanto Dev-Pascal como FreePascal 2.4.2 estn previamente instalados, y adems en los directorios de defecto especificados en sus respectivos instaladores; a saber, "C:\Dev-Pas" para Dev-Pascal y "C:\FPC\2.4.2\bin\i386-win32" para FreePascal 2.4.2. En caso de que estas herramientas se hubieran instalado en otros directorios, habra que sustituir por las correctas todas las apariciones de estas trayectorias en los seis ficheros proporcionados: DevPas_FP242.bat, DevPas_Orig.bat, y dentro de la carpeta data, fpc_orig.cfg, fpc_nw.cfg, devpas_orig.ini y devpas_FP242.ini.

Depurador Insight Debugger


En el Dev-Pascal instalado en los laboratorios de prcticas se dispone del depurador Insight Debugger integrado en el entorno. Si deseamos hacer lo propio en nuestro Dev-Pascal, debemos seguir los siguientes pasos: Descargar el instalador (http://downloads.sourceforge.net/mingw/mingw-insight-6.3.exe) Instalarlo en la carpeta de Dev-Pascal Abrir la carpeta insight Mover todo su contenido a la carpeta de Dev-Pascal Renombrar el fichero gdb.exe a gdbshell.exe Renombrar el fichero insight.exe a gdb.exe Borrar la carpeta insight (donde se ha instalado el depurador)

Algunos problemas de fcil solucin


En nuestra experiencia de uso de la aplicacin Dev-Pascal hemos detectado algunos pequeos problemas, la mayora de los cuales ya se han subsanado en la instalacin de los laboratorios de prcticas, pero que nos aparecern cuando nos instalemos esta herramienta. No funciona opcin Tool/Dos shell Buscar en el equipo los ficheros COMMAND.COM o CMD.EXE Copiarlo (no moverlo) a la carpeta de Dev-Pascal Renombrar esta copia a DOSCOM.EXE No se puede asociar un icono a la aplicacin mediante la opcin Project / Project options / Icon Library Abrir la carpeta de Dev-Pascal y renombrar la carpeta Icons a Icon Tras modificar las opciones del compilador, vuelven a aparecer las de defecto Las opciones almacenadas en devpas.ini son las correctas (es decir, las que ha seleccionado el usuario); eso s, hasta que se vuelve a Aceptar el cuadro de dilogo Compiler options La barra de estado inicialmente no aparece, aunque est marcada como que s lo hace No hay ningn problema: simplemente ocultarla, pues no aporta nada Intenta acceder constantemente a una unidad de disco no disponible Si se puede abrir el men File, elegir la opcin File/Reopen/Clear History En caso contrario: o Abrir devpas.ini con el Bloc de notas
Dpto. Informtica e Ingeniera de Sistemas pag. 9

o Cerca del final, hay un apartado encabezado por [History] y otro por [History_Open] o Borrar el contenido de ambos Los caracteres del ASCII extendido no se muestran correctamente en la ejecucin del programa La codificacin de caracteres usada por la interfaz grfica y por la interfaz textual de Windows son distintas. Para que los caracteres del cdigo ASCII extendido se muestren igual, lo ms sencillo es seleccionar en la interfaz textual la misma codificacin que en la interfaz grfica, lo que se consigue ejecutando el siguiente comando en la interfaz textual de Windows: MODE CON CP SELECT=1252 No es posible iniciar una sesin de depuracin En el cuadro de dilogo Options/Compiler options/Linker, elegir Generate debugging information No es posible abrir las ayudas de Insight Debugger Se encuentran en la carpeta de Dev-Pascal, concretamente share/insight1.0/help. Abrir el fichero index.html con el navegador web en la carpeta

Dpto. Informtica e Ingeniera de Sistemas

pag. 10

También podría gustarte