Compilando en Pascal

Compilando en Pascal Gonzalo Soriano [email protected] 28 de marzo de 2009 Resumen Este apunte no tiene la intensi´ on de ense˜ narles a usar un com

1 downloads 141 Views 1MB Size

Recommend Stories


Pascal
Ejercicios. Operadores

3.3 Bifurcaciones en Pascal
3.3 Bifurcaciones en Pascal Selección La selección de alternativas en Pascal se realiza con alguna de las dos siguientes formas : 1. La sentencia if 2

Story Transcript

Compilando en Pascal Gonzalo Soriano [email protected] 28 de marzo de 2009 Resumen Este apunte no tiene la intensi´ on de ense˜ narles a usar un compilador, sino mostrales como compilar y algunas herramientas como el debugger y los breakpoints que pueden serles u ´tiles al momento de realizar un TP o un programa extenso.

1. 1.1.

Turbo Pascal 7.0 Compilar un programa

Para mostrar c´ omo se compila un programa, primero tendremos que tener el programa. Motivo por el cual se eligi´o uno sencillo y que tiene como u ´nico prop´ osito la suma de dos n´ umeros. El c´ odigo es el siguiente:

Program ejemplo; Uses CRT; { Bloque de declaraci´ on de unidades. } Var { Bloque de declaraci´ on de variables. } num1, num2, resultado: integer; Begin { Comienzo del Programa Principal. } { Limpio la pantalla. } ClrScr; { Pido que ingrese un n´ umero y lo leo por pantalla. } write (’Ingrese un numero entero: ’); readln (num1); writeln; write (’Ingrese el segundo numero entero: ’); readln (num2); writeln; { Hago la suma de num1 + num2. } resultado := num1 + num2; { Imprimo por pantalla el resultado de la suma. } writeln (’El resultado de la suma es: ’,resultado); writeln; { Hago la resta sin guardarla en ninguna variable e imprimo el resultado. } 1

writeln (’La resta del primero menos el segundo es de: ’, num1-num2); writeln; { Espero hasta que el usuario apriete una tecla para salir del programa. } writeln (’Presione una tecla para continuar.’); readkey; End. { Fin del Programa Principal. } Ahora que tenemos el programa, debemos compilarlo, pero antes tenemos que asegurarnos que lo compilaremos en disco. Raz´on por la cual vamos al men´ u Compile y, en caso de que no diga Disk en Destination le hacemos clic.

Una vez que nos aseguramos de esto, volvemos a ir al men´ u Compile, pero esta vez elegimos Compile; o presionamos las teclas Alt+F9, como lo indica al costado.

2

Y ahora ya se compilo el programa, solo queda buscarlo en la PC y ejecutarlo cuando desee. A continuaci´ on veremos el uso de una herramienta muy u ´til, que se utiliza para encontrar y solucionar problemas en c´odigos largos. Esta herramienta consiste en ir ejecutando el c´ odigo paso a paso, y ver en un cuadro de texto como se van modificando las variables; y recibe el nombre de debugger. Lo primero que tenemos que hacer es poner las variables que queremos ver como var´ıan; para esto debemos ir al men´ u Debug, y dentro de ´el, a Add match... o presionar las teclas Ctr+F7. ´

Al hacer esto, les aparecer´ a un cuadro de texto donde ustedes deben ingresar el nombre de la variable.

Para observar m´ as variables deben repetir el procedimiento anterior para cada una. 3

Despu´es pueden presionar la tecla F7 o F8 para que el programa se valla ejecutando de a un solo paso. Empezara desde el begin donde empieza el programa y seguir´ a hacia abajo. Pinta de verde l´ınea la pr´oxima l´ınea a ser ejecutada.

En las siguientes dos im´ agenes se puede ver c´omo varia el valor de num1 cuando el usuario ingresa el n´ umero 5.

4

Cuando tenemos c´ odigos largos y no encontramos un error, puede ser muy molesto tener que ejecutar todo el programa l´ınea por l´ınea; y m´as si sabemos que en las primeras 200 (por decir un n´ umero) no se encuentra el error. Y ac´a es donde aparecen los breakpoints. Lo que tenemos que hacer es decir ’supongo que de ac´a para atr´as no esta el error, as´ı que voy a correr el programa hasta este punto y de ac´a en adelante lo seguir´e paso a paso’. ¿Como hacemos para decirle eso al compilador?, muy sencillo, agregamos un breakpoint. Para lo cual tenemos que ir a ’Debugg’ y luego a ’Add breakpoint...’.

Al hacer esto, les aparecer´a cuadro de texto que les preguntara si desean poner alguna condici´ on para que el compilador detenga la corrida. En caso de que deseen, pueden modificar ese campo, y aceptar con ’OK’.

Una vez que aceptan, la l´ınea sobre la cual ustedes estaban parados se colorear´ a de rojo, indicando que ah´ı hay un breakpoint.

5

Despu´es hay que correr el programa, para lo cual debemos ir al men´ u ’Run’ y nuevamente a ’Run’, como indica la figura, o presionando las teclas Ctrl+F9.

De esta manera, el programa se ejecutara hasta ese punto, y a partir de all´ı, correr´ a como si lo hubi´eramos hecho paso a paso. Obviamente que si deseamos, tambi´en podemos empezar a ejecutar el programa paso a paso y terminar corri´endolo como reci´en.

2. 2.1.

Free Pascal y GDB Compilando en Linux

Para compilar un programa en Linux, al igual que en cualquier plataforma, necesitamos un c´ odigo fuente y un compilador. El compilador que vamos a usar es el Free Pascal, el cual tiene la ventaja de ser multiplataforma y lo podemos obtener de http://www.freepascal.org/download.var. Ahora lo que nos falta es el programa, de lo cual nos tenemos que encargar 6

nosotros :). Para escribirlo podemos usar una IDE1 como el Anjuta cualquier editor de texto. Usaremos como ejemplo el siguiente programa:

[4]; o

Programa ejemplo.pas program ej1; uses crt; var int : integer; begin writeln(’Funciona!!!!’); readln(int); writeln(’ingresastes el ’,int); readkey; end. Ahora que tenemos el c´ odigo fuente del programa a compilar (ejemplo.pas) y el compilador (Free Pascal), simplemente tenemos que abrir una terminal, l´ınea de comandos o consula y pararnos en el directorio donde esta guardado el archivo ejemplo.pas. Una vez ubicados en la posici´on correcta, escribimos: user$ fpc ejemplo.pas Si no tubimos problemas al momento de compilar, la salida ser´a de la forma: Free Pascal Compiler version 2.0.0 [2005/09/09] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Linux for i386 Compiling ejemplo.pas Linking ejemplo 10 Lines compiled, 0.6 sec Si al mismo programa le agregamos una variable que no se usa, por ejemplo: int, aux : integer; Free Pascal nos lo informar´ a de la siguiente forma (ver l´ınea 5): Free Pascal Compiler version 2.0.0 [2005/09/09] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Linux for i386 Compiling ejemplo.pas ejemplo.pas(4,7) Note: Local variable "aux" not used Linking ejemplo 10 Lines compiled, 0.2 sec Si ahora cambiamos el programa usando una variable sin inicializar de la forma: program ej1; uses crt; 1 Integrated

Development Environment, o Entorno de Desarrollo Integrado

7

var int : integer; begin writeln(’Funciona!!!!, de entrada int vale’, int); readln(int); writeln(’ingresastes el ’,int); readkey; end. Free Pascal nos lo informar´ a de la siguiente forma (ver l´ınea 5): Free Pascal Compiler version 2.0.0 [2005/09/09] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Linux for i386 Compiling ejemplo.pas ejemplo.pas(6,2) Warning: Variable "int" does not seem to be initialized Linking ejemplo 10 Lines compiled, 0.1 sec Si nos hubieramos olvidado de declarar la variable int, Free Pascal de la siguiente forma: Free Pascal Compiler version 2.0.0 [2005/09/09] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Linux for i386 Compiling ejemplo.pas ejemplo.pas(7,9) Error: Wrong number of parameters specified ejemplo.pas(7,13) Error: Illegal expression ejemplo.pas(8,28) Error: Wrong number of parameters specified ejemplo.pas(8,32) Error: Illegal expression ejemplo.pas(11) Fatal: There were 4 errors compiling module, stopping ejemplo.pas(11) Error: Compilation aborted Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specifiy a source file to be compiled) Notar que en la u ´ltima l´ınea nos indica que el programa no fue compilado.

2.2. 2.2.1.

Primeros pasos con el GDB Compilar el fuente

Si suponemos que nuestro programa se llama ejemplo.pas entonces usualmente lo compilar´ıamos de la forma: user$ fpc ejemplo.pas Pero para informarle ahora tenemos que informarle al compilador que lo tiene que compilar de una forma particular para que despu´es podamos usar el GDB; y eso lo hacemos con el flag -g antes del nombre del programa. user$ fpc -g ejemplo.pas

8

2.2.2.

Iniciar el GDB

Como dijimos en el resumen, el GDB se usa por l´ınea de comandos, y una vez parados en ella con solo poner user$ gdb ejemplo.pas 2 iniciamos el GDB. Si queremos pasarle par´ ametros al programa que vamos a ejecutar, ´este es el momento de pasarlos con el comando set args param1 param2 ... paramN Para empezar a ejecutar el c´ odigo fuente del programa que queremos depurar, tenemos que usar el comando start. Una vez que empezamos a debuggear tenemos distintos comandos, que usaremos en funci´on de nuestras necesidades; los m´ as comunes son: start: Inicia la ejecuci´ on del programa, pero no ejecuta ninguna sentencia. Su llamada es (gdb) start. step: Ejecuta la pr´ oxima instrucci´on (equivalente al Trace into [F7] de Pascal). Su llamada es (gdb) step n. Donde n es la cantidad de pasos que tiene que seguir, si no se lo next: Ejecuta la pr´ oxima instrucci´on, pero si es un procedimiento o una funci´ on la ejecuta en un solo paso. Equivalente al Step over [F8] de Pascal. Su llamada es simplemente (gdb) next. list: Muestra la pr´ oxima instrucci´on a ejecutarse y su contexto. Su llamada es simplemente (gdb) list. print: Muestra el valor de una variable, una expresi´on l´ogica, o la llamada a una funci´ on. Su llamada es (gdb) print param, donde param es el nombre variable a observar, la llamada a la funci´on o la expresi´on. break: Es el equivalente a los breakpoints del Turbo Pascal. Su funci´on es de detener la corrida del programa en una l´ınea en particular; pero sin terminar la ejecuci´ on. El break puede llamarse de las siguientes formas: • (gdb) break n. Inserta un breakpoint en la n-esima l´ınea del fuente que estamos ejecutando. • (gdb) break fuente.pas:n. Inserta un breakpoint en la n-esima l´ınea del archvio fuente.pas. • (gdb) break funcion. Inserta un breakpoint al comienzo de la funci´ on indicada. delete N : Borra el breakpoint N. Su llamada es simplemente (gdb) delete N. continue: Contin´ ua la ejecuci´on del programa hasta el pr´oximo breakpoint o el fin del programa. Su llamada es simplemente (gdb) continue. run: Corre, desde el principio, el programa hasta encontrar un breakpoint o el fin del programa. Su llamada es simplemente (gdb) run. help: Muestra la ayuda del GDB. Su llamada es simplemente (gdb) help. 2 Siendo

ejemplo.pas el nombre del programa a debuggear.

9

help running: Muestra los comandos b´asicos de GDB para debuggear un programa. Su llamada es simplemente (gdb) help running. help command: Muestra una breve descripci´on del comando. Su llamada es simplemente (gdb) help command. q/quit: Sale del GDB. Su llamada es simplemente (gdb) q.

Referencias [1] http://sourceware.org/gdb/ [2] http://www.gnu.org/software/ddd/ [3] http://www.freepascal.org/ [4] http://www.anjuta.org/

10

´Indice 1. Turbo Pascal 7.0 2. Free Pascal y GDB 2.1. Compilando en Linux . . . 2.2. Primeros pasos con el GDB 2.2.1. Compilar el fuente . 2.2.2. Iniciar el GDB . . .

1

. . . .

. . . .

11

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

6 6 8 8 9

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.