Fundamentos de programación I - -
1. Introducción 1.1. Introducción a Dev-C++ y DJGPP 1.1.1. Qué es Dev-C++? Dev-C++ es un Entorno Integrado de Desarrollo (Integrated Development Environment, IDE) capaz de crear programas ejecutables para MS-DOS y Windows en los lenguajes de programación C y C++, basándose en el compilador (llamado Mingw) que incorpora. Dev-C++ es un entorno de trabajo dentro del cual podemos desarrollar de manera completa una aplicación. En este entorno encontramos un editor de textos para escribir los programas, herramientas de corrección de errores para verificar los programas, herramientas de creación de código ejecutable para probar el funcionamiento de los programas, y otras herramientas específicas, de manera que podemos realizar todos los pasos de desarrollo de una aplicación sin necesidad de salir del entorno. Una vez dentro de Dev-C++, escribimos los programas de que constará la aplicación, los convertimos en ejecutables y los probamos. Además del compilador incorporado, podemos utilizar también el CYGWIN, otra implementación del compilador GCC para entornos Windows. Además, el código generado es autosuficiente, es decir, podemos copiar un programa generado con Dev-C++ a cualquier otro ordenador, aunque no tenga el Dev- C++ instalado, y el programa funcionará igualmente. El entorno Dev-C++ se distribuye bajo la licencia GNU. Por lo tanto, es gratuito y se puede copiar y distribuir libremente. 1.1.2. Qué es el Mingw? El Mingw es un compilador de línea de comandos que se ejecuta desde una consola, y por lo tanto, se puede utilizar con independencia de Dev-C++, con otros entornos de desarrollo o utilizando un simple editor de textos para introducir los ficheros fuente a compilar. De todos modos, se recomienda trabajar dentro del entorno Dev-C++, ya que éste interacciona perfectamente con el compilador para generar las versiones ejecutables de nuestros programas. página1
2. Instalación del software En la misma página donde habéis descargado este documento encontraréis un enlace al fichero comprimido llamado 'devcpp4.exe', que contiene todo lo necesario para realizar la parte práctica de la asignatura: el compilador y el entorno de desarrollo. Este fichero se instala de forma automática al ejecutarlo. Os aparecerá una ventana como la que se muestra a continuación: Figura 2-1: Ventana de inicio de la instalación. La ventana os indica la carpeta (directorio) donde se guardarán los ficheros necesarios para llevar a cabo la instalación. Podéis aceptar la selección por defecto (recomendable), o seleccionar cualquier otro directorio. Para continuar con la instalación, seleccionad el botón 'Unzip'. Pasados unos segundos os aparecerá la ventana que se muestra a continuación: Figura 2-2: Los ficheros del instalador han sido guardados. Entonces ya podemos aceptar y cerrar la ventana del programa seleccionando el botón 'Close' que muestra la figura 2-1. página2
2.1. Instalación del software Todo cuanto tenemos que hacer para instalar el software es ejecutar el programa 'setup.exe' en la carpeta donde hayamos descomprimido los archivos (C:\install_devcpp por defecto). Al hacerlo, nos aparece la pantalla con la licencia GNU (Software License Agreement), que tendremos que aceptar para continuar la instalación apretando la tecla Yes, tal como se muestra a continuación: Figura 2-3: Licencia GNU. A continuación se nos presentan una serie de opciones de instalación, de entre las cuales tenemos que escoger la etiquetada como 'Typical' (la seleccionada por defecto) y apretar el botón Next, dejando también sin alterar el directorio de destino: Figura 2-4: Inicio de la instalación. página3
A continuación empieza la instalación, proceso que puede tardar unos minutos, y al final del cual nos aparecerá la siguiente ventana. Podemos cerrarla apretando 'Finish': Figura 2-5: Instalación finalizada. Ya podemos ejecutar el entorno Dev-C++ apretando sobre el icono que ha sido creado en el menú de inicio. La primera vez que arrancamos este entorno, nos aparecerá la siguiente ventana: Figura 2-6: Configuración inicial del entorno. De nuevo podemos aceptar las opciones por defecto. Es muy recomendable hacerlo para asociar la extensión.c al entorno Dev-C++. página4
Una vez el entorno Dev-C++ ha sido instalado satisfactoriamente, ya se puede borrar el directorio temporal donde se descomprimió el fichero original (C:\install_devcpp por defecto). 2.2. El entorno Dev-C++ Ejecutando el entorno Dev-C++ a través del icono correspondiente, os aparecerá la siguiente pantalla inicial: Figura 2-7: Aspecto del entorno Dev-C++. Tal como se ha comentado anteriormente, Dev-C++ es un entorno integrado de desarrollo que permite hacer todos los pasos para crear una aplicación sin salir del entorno. 2.2.1. Descripción de la ventana principal El entorno de trabajo divide la ventana en diversas partes. En la parte superior están los menús y los iconos, que permitirán hacer rápidamente las tareas más comunes. En la línea inferior, hay información sobre el proceso de compilación, que inicialmente está en blanco. En la parte central será donde se abrirán las diversas ventanas de edición de código. página5
La ventana principal está formada por las siguientes áreas claramente diferenciadas: - El menú principal. Situado en la parte más superior de la ventana. Con él podemos controlar cualquier aspecto de la aplicación, sin necesidad de hacer uso de los iconos de acceso rápido. - Las barras de iconos. Están situadas bajo los menús. Permiten acceder rápidamente a las funciones más comunes del programa. - El Project Manager. Se encuentra en la parte izquierda de la ventana. Gestiona proyectos formados por diversos ficheros. - Área de ficheros abiertos. Es el espacio situado a la derecha del gestor de proyectos. En este área se abren los ficheros fuente con los que trabajaremos. - Zona de mensajes. Son las pestañas situadas en la parte más inferior de la ventana. Será donde el compilador muestre los errores encontrados en nuestro programa. 2.3. Configuración del entorno Es muy importante que configuréis el entorno de la siguiente manera: - En el menú "Options" seleccionad "Compiler Options", o haced click directamente sobre el icono "Compiler Options". - En la pestaña "Directories", marcad la casilla que dice "Add the following commands when calling compiler", y en el recuadro de texto inferior escribid "-Wall -Werror Wuninitialized -O" (sin comillas; el último parámetro es una "o" mayúscula, no un cero). Eso activa todos los warnings (avisos) convirtiéndolos en errores y detecta variables usadas sin inicializar. - En la pestaña "C/C++ compiler" haced click en "Support all ANSI standard C programs". - En la pestaña "Code generation/optimization" haced click en "Optimize". - En el menú "Options" seleccionad "Environment Options", o haced click directamente sobre el icono "Environment Options". En la pestaña "Misc." aseguraos de que las casillas "Assign.dev files with Dev-C++" y "Assing. c,.cpp,.h and.hpp files with Dev-C++" están marcadas. En esta pestaña también tenéis el esqueleto básico de código, que el entorno rellena por defecto al crear un nuevo fichero. Debéis borrar la línea donde pone "#include <iostream.h>", que no es de C sino de C++, y si queréis añadid en su lugar el fichero de cabecera <stdio.h> que sí que utilizaremos a lo largo del curso. Compiler Options Environment Options página6
Figura 2-8: Pestaña Directories del menú Compiler options. Figura 2-9: Pestaña Misc del menú Environment options. página7
3. Utilización del software 3.1. Creación de un programa Se puede crear un programa de dos maneras: con proyecto y sin proyecto. Un proyecto es sencillamente, una agrupación de ficheros que forman una aplicación. En las prácticas de esta asignatura, las aplicaciones serán de un solo fichero, así que el uso de proyectos no será necesario. De todos modos, a continuación se explican las dos maneras posibles de trabajar: 3.1.1. Sin Proyecto a) En el menú "File" seleccionad "New source file", o bien haced click directamente sobre el icono "New source file". Eso creará un fichero con un nombre provisional, y rellenado con un esqueleto básico. b) Editad vuestro programa. c) Una vez terminado, grabadlo con la opción "Save unit as..." que se encuentra en el menú "File". Aparecerá una ventana que os pedirá un nombre de fichero. Os recomendamos crear una carpeta, como "C:\Dev-C++\FPI" y grabar el fichero dentro de ésta. Es importante que pongáis un nombre descriptivo: "EJERCICIO1.c", "PEC1.c", o algo por el estilo. También es muy importante poner ".c" como extensión del fichero y seleccionar "C source file" en el desplegable que hay en la parte inferior de la ventana. Después de eso, el fichero estará salvado como fichero C. A partir de este momento, para salvar sólo hace falta seleccionar "Save", y grabará las modificaciones en el mismo fichero, escribiendo sobre las antiguas. página8
3.1.2. Con Proyecto a) En el menú "File" seleccionad "New Project...". Eso abrirá una ventana para seleccionar el tipo de proyecto que queréis crear. De todo lo que aparece a la ventana, sólo en interesa seleccionar "Console Application", y marcar "C Project". Seleccionad también la casilla "Make default language". b) Una vez aceptéis, os aparecerá una ventana que os pedirá un nombre. Este nombre es para identificar el proyecto, y no tiene nada que ver con el nombre del fichero con el cual se salvará después. Poned un nombre y aceptad. c) A continuación os pedirá el nombre del fichero con el cual se grabará el proyecto. Por defecto, el entorno propondrá un nombre de fichero igual al nombre que habéis introducido en el paso b), con la extensión ".dev". Moveos al directorio donde pondréis los programas de la asignatura (por ejemplo "C:\Dev- C++\FPI") y aceptad. d) Una vez creado el proyecto os aparecerá, en la parte izquierda de la ventana principal, el "Project Manager", con una representación de los ficheros de vuestro proyecto. Además, automáticamente se habrá abierto un fichero provisional con un esqueleto ya creado para empezar a trabajar. Este fichero tiene un nombre provisional, que podréis cambiar cuando hacéis "Save unit" en el menú "File", o bien haced click sobre el icono "Save current file". Los ficheros del proyecto ya se salvarán por defecto como "C source file" 1. Una barra agrupa todos los iconos para crear y guardar proyectos y ficheros: Proyectos Ficheros 1 Un proyecto es especialmente útil cuando nuestro programa tiene diversos ficheros fuente. En este caso, se pueden añadir y quitar fácilmente ficheros en nuestro proyecto con las opciones del menú "Project" o utilizando los iconos equivalentes página9
3.2. Compilación de un programa Para poder generar un ejecutable a partir de vuestro programa, lo tenéis que compilar. Para compilar un programa, debéis seleccionar "Compile" en el menú "Execute". El proceso de compilación, si no se han detectado errores, genera un ejecutable que podéis ejecutar seleccionando "Run", en el mismo menú. También existe un comando "Compile and Run" que hace las dos cosas automáticamente. La barra de iconos que gestiona la compilación y ejecución de un programa es la siguiente: Compile Project Run Project Compile and Run Project 3.3. Depuración de errores Cuando el proceso de compilación falla, Dev-C++ nos muestra una lista de los errores encontrados. Los errores, se disponen en una tabla, en la pestaña "Compiler" situada en la parte inferior de la ventana principal 2. Para cada error obtenemos la siguiente información: - Número de línea donde se ha detectado el error. - Fichero donde se encuentra el error. - Mensaje descriptivo del error. Haciendo doble-click sobre una línea de error, vamos a parar directamente a la línea del fichero donde se ha detectado el error. Hay que tener en cuenta que el error no tiene porqué estar necesariamente en el número de línea especificado. Lo que nos dice el compilador es que el error se ha detectado en aquella línea, pero puede haberse generado antes. En la figura siguiente se muestra un error clásico de olvido del punto y coma. El error nos da en la línea marcada con rojo, pero en realidad se ha cometido en la anterior. 2 En determinados casos, los errores se pueden producir también en el proceso de link (enlazado). Estos errores van a parar a la pestaña de "Linker". El enlazado es un proceso por el cual se intentan resolver referencias entre diferentes ficheros fuentes. En principio, trabajando con programas de un solo fichero, no deberían aparecer. página10
A menudo el mensaje de error no es muy explicativo. Incluso nos puede llevar a confusión. Por lo tanto es recomendable no fijarse tanto en el mensaje como en el número de línea propiamente. También hay que tener en cuenta que un error puede ocasionar una serie de errores como consecuencia del primero. En este caso, solucionando el primero desaparecerá el resto. Este tipo de errores suele caracterizarse para abundantes mensajes de error confusos e imprecisos. En la figura adjunta, por ejemplo, se genera uno de estos errores a final de fichero, como consecuencia de la falta del punto y coma. página11