Compilando en Pascal

Documentos relacionados
Primeros pasos para utilizar el editor Code::Blocks para C

Procedimientos, Funciones y Recursividad

Entorno de Programación Visual C++ 6.0

CAPÍTULO III MENÚS DEL TURBO PASCAL. File Edit Search Run Compile Debug Tools Options Windows Help [ ] NONAME.PAS

Instalación de Dev-Pascal en entornos Windows

GCC para plataforma Windows

1. Estructuras de decisión: simples (SI..ENTONCES..SINO) y múltiples (CASO)

Tutorial de GDB. Algoritmos y Estructuras de Datos II. Algoritmos y Estructuras de Datos II () Tutorial de GDB 1 / 1

Cómo compilar un programa utilizando el Digital Visual Fortran Compiler? Seminario de Computación 2009 Juan Ruiz y Carlos Zotelo

LENGUAJE DE PROGRAMACION C/C++.

Guía práctica de estudio: Depuración de programas

Curso de Programación en C. Licenciatura FCQeI AMBIENTE DE DESARROLLO INTEGRADO (TC VER 2.0)

Es un lenguaje multiplataforma, ya que no solo se usa en Windows, sino que también se puede usar en Linux, MAC, etc.

Guía ChileCompra Express

Manual de Instalación MonoDevelop

Mi primer programa en Code::Blocks

MANUAL DE MACROS EXCEL 2010

Funciones básicas del depurador

Depuración de Node.js (práctica)

OpenOffice Writer I. PROCESADOR de TEXTOS

Guía de uso del programa AVR-Studio

PYTHON. Programación básica

Java desde Consola Utilizando Java sin Path

FACULTAD DE INGENIERÍA

Guía de uso básico de Qt

Ingeniería en Sistemas de Información Algoritmos y estructuras de datos Lazarus IDE V1.1

9. Subprogramas: Procedimientos 1. TEMA 9: Subprogramas: Procedimientos

Estructuras de Programación

Eliminar virus que convierte carpetas en accesos directos (.lnk) en WINDOWS 7

El intérprete de Python

1 - Objetivos de Venta por Vendedor y Grupo de Objetivos

Departamento de Informática Universidad de Valladolid Campus de Segovia LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL

DEPURADOR GDB. Debugging de programas complejos con múltiples archivos.

Sesión 4 Introducción a Stata III

UTN FRRo Algoritmos y Estructuras de Datos Bibliotecas Un ejemplo : Gestión de Pantalla, Retardo y Sonido

MySQL por línea de comandos

MANUAL DE USUARIO ANEXO 3 MANUAL DE INSTALACIÓN

Curso Completo de Visual Basic 6.0

1. Creación de una nueva toma de Inventario:

01.1 Instalación de Android Studio

Cómo instalar Java en Windows 7 y Vista

MANUAL DE INSTALACIÓN DEL DIMM ANEXOS Y FORMULARIOS Linux

VB - Access Manual Visual Basic para Aplicaciones del Access 2000

PODER JUDICIAL DE LA NACION ARGENTINA

Cmap toools MAPAS CONCEPTUALES

Creación/Simulación de un proyecto con ModelSim

TRABAJO PRÁCTICO Nº 5. Abrir un documento nuevo en Excel. Guardarlo en la carpeta D:\ o E:\ COMPUTACION2 con el nombre: tp5-ej1- apellido.

PRACTICA Nº 2. Puertos de Entrada Digital. Sistemas Electrónicos Digitales. Subgrupo: de febrero de 2.015

GUIA DE LABORATORIO # 2 ENTORNO DE DESARROLLO Y COMPILACIÓN DE UN PROGRAMA EN C

BREVE DESCRIPCIÓN DEL ENTORNO DE PROGRAMACIÓN DE VISUAL LISP

CAPÍTULO 4 Mi primera diapositiva

Ejemplo: Paso de polares a cartesianas en el plano. f : [0, ) [0, 2π) R R. coordx : [0, ) [0, 2π) R. coordy : [0, ) [0, 2π) R

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación

Curso de Delphi (y VI)

Word para principiantes Autor: Pablo Biaggioni

Microsoft Visual C Express Edition Guía de Instalación y utilización básica

Instalación del RealFlight G3

Resumen. Resumen de Proceso Empresarial

MANUAL DEL USUARIO. Página Web.

GUÍA PARA LA IMPLEMENTACIÓN Y ADMINISTRACIÓN DEL SISTEMA DE EXÁMENES ELECTRÓNICOS

Tutorial MPLAB v6.x PROYECTO. Creación de Proyecto

Conexión segura al Laboratorio

OpenOffice Calc Básico HOJAS de CALCULO

Introducción al uso de los Controladores Lógicos Programables (PLC).

Turbo Pascal 7, FPS y sus herramientas de análisis de errores.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Tutorial de Code Composer Studio

BONO ELECTRÓNICO. Médica Electrónica. Venta Instalación Directa (Tratamiento) y Acceso Directo Licencia. Drivers de Lector

EJEMPLO DE MANIPULACIÓN DE TAREAS

Instalación de OpenOffice.org 2.0 DISEÑO DE PRESENTACIONES EN LA ENSEÑANZA

UT2. Instalación y uso de Entornos de Desarrollo. Juan V. Carrillo Entornos de Desarrollo CFGS DAM

Programar en TortuBots

TUTORIAL I INSTRUCTIVO PARA LA INSTALACIÓN DEL PROGRAMA APS EDUCATIVO

PROGRAMACIÓN EN BATCH Programar en batch supone programar archivos con la extensión.bat.

Instalación y uso de QtCreator para programación en lenguaje C (modo consola) INDICE

Fundamentos de Ordenadores. Depurar programas usando Nemiver

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal

Pre-Laboratorio 1 MA-33A : Introducción a Matlab

Estructuras de control: Las variables: Fuertemente tipado: Tipado dinámico: Variables booleanas: Qué son las estructuras de control?

Transcripción:

Compilando en Pascal Gonzalo Soriano gsorianob@gmail.com 28 de marzo de 2009 Resumen Este apunte no tiene la intensión de enseñarles a usar un compilador, sino mostrales como compilar y algunas herramientas como el debugger y los breakpoints que pueden serles útiles al momento de realizar un TP o un programa extenso. 1. Turbo Pascal 7.0 1.1. Compilar un programa Para mostrar cómo se compila un programa, primero tendremos que tener el programa. Motivo por el cual se eligió uno sencillo y que tiene como único propósito la suma de dos números. El código es el siguiente: Program ejemplo; Uses CRT; { Bloque de declaración de unidades. } Var { Bloque de declaración de variables. } num1, num2, resultado: integer; Begin { Comienzo del Programa Principal. } { Limpio la pantalla. } ClrScr; { Pido que ingrese un número 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ón por la cual vamos al menú 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ú 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ón veremos el uso de una herramienta muy útil, que se utiliza para encontrar y solucionar problemas en códigos largos. Esta herramienta consiste en ir ejecutando el código 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ú Debug, y dentro de él, a Add match... ó presionar las teclas Ctr+F7. Al hacer esto, les aparecerá un cuadro de texto donde ustedes deben ingresar el nombre de la variable. Para observar más variables deben repetir el procedimiento anterior para cada una. 3

Después 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á hacia abajo. Pinta de verde línea la próxima línea a ser ejecutada. En las siguientes dos imágenes se puede ver cómo varia el valor de num1 cuando el usuario ingresa el número 5. 4

Cuando tenemos códigos largos y no encontramos un error, puede ser muy molesto tener que ejecutar todo el programa línea por línea; y más si sabemos que en las primeras 200 (por decir un número) no se encuentra el error. Y acá es donde aparecen los breakpoints. Lo que tenemos que hacer es decir supongo que de acá para atrás no esta el error, así que voy a correr el programa hasta este punto y de acá en adelante lo seguiré 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á cuadro de texto que les preguntara si desean poner alguna condición 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á de rojo, indicando que ahí hay un breakpoint. 5

Después hay que correr el programa, para lo cual debemos ir al menú 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á como si lo hubiéramos hecho paso a paso. Obviamente que si deseamos, también podemos empezar a ejecutar el programa paso a paso y terminar corriéndolo como recién. 2. Free Pascal y GDB 2.1. Compilando en Linux Para compilar un programa en Linux, al igual que en cualquier plataforma, necesitamos un código 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 IDE 1 como el Anjuta [4]; o cualquier editor de texto. Usaremos como ejemplo el siguiente programa: 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ódigo 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ón correcta, escribimos: user$ fpc ejemplo.pas Si no tubimos problemas al momento de compilar, la salida será 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á 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á 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 última línea nos indica que el programa no fue compilado. 2.2. Primeros pasos con el GDB 2.2.1. 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és 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ámetros al programa que vamos a ejecutar, éste es el momento de pasarlos con el comando set args param1 param2... paramn Para empezar a ejecutar el código 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ón de nuestras necesidades; los más comunes son: start: Inicia la ejecución del programa, pero no ejecuta ninguna sentencia. Su llamada es (gdb) start. step: Ejecuta la próxima instrucción (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óxima instrucción, pero si es un procedimiento o una función la ejecuta en un solo paso. Equivalente al Step over [F8] de Pascal. Su llamada es simplemente (gdb) next. list: Muestra la próxima instrucción a ejecutarse y su contexto. Su llamada es simplemente (gdb) list. print: Muestra el valor de una variable, una expresión lógica, o la llamada a una función. Su llamada es (gdb) print param, donde param es el nombre variable a observar, la llamada a la función o la expresión. break: Es el equivalente a los breakpoints del Turbo Pascal. Su función es de detener la corrida del programa en una línea en particular; pero sin terminar la ejecución. 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ón indicada. delete N : Borra el breakpoint N. Su llamada es simplemente (gdb) delete N. continue: Continúa la ejecución del programa hasta el próximo 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ásicos de GDB para debuggear un programa. Su llamada es simplemente (gdb) help running. help command: Muestra una breve descripción 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

Índice 1. Turbo Pascal 7.0 1 2. Free Pascal y GDB 6 2.1. Compilando en Linux........................ 6 2.2. Primeros pasos con el GDB..................... 8 2.2.1. Compilar el fuente...................... 8 2.2.2. Iniciar el GDB........................ 9 11