Fundamentos de Informática. Primer Curso de Ingenieros Industriales Práctica 6 Dev C++. Compilador de C para Windows 1. Introducción Estas notas sirven de apoyo para la realización de las prácticas de programación en lenguaje C de la asignatura Fundamentos de Informática de primer curso de Ingeniería Industrial. Esta práctica de introducción al lenguaje C pretende mostrar algunos conceptos básicos asociados al programa compilador de C empleado en la asignatura. En este caso DevC++. Dev-C++ es un entorno integrado de desarrollo de programas en lenguaje C (y C++, una forma evolucionada de C) de libre distribución bajo licencia GNU (http://www.gnu.org/copyleft/gpl.html). Este software integra en una única herramienta todo lo necesario para desarrollar programas en lenguaje C, incorporando como elementos más destacados, un preprocesador de lenguaje (Preprocessor) y un compilador de lenguaje C/C++ (Compiler), y un montador de enlaces (Linker). Además de estos elementos básicos, la herramienta proporciona otras funcionalidades muy convenientes, como son una herramienta de depuración de código (Debugger), así como plantillas de código preformateado y librerías de funciones de fabricante. El software Dev-C++ puede descargarse gratuitamente desde la página web de la asignatura, o bien directamente desde la web del desarrollador http://www.bloodshed.net/dev/devcpp.html Los apartados que siguen tratarán de describir de un modo necesariamente no exhaustivo, aunque si suficiente para nuestros propósitos, esta útil herramienta. 2. Nomenclatura y Convenciones En este texto, así como en otro de informática, se usan convenciones para indicar de forma resumida alguna acción a realizar. También se usan palabras con un sentido definido distinto del que tienen en el lenguaje habitual. En cuanto a las convenciones, éstas permiten sobre todo indicar las pulsaciones de las teclas. Para indicar que se pulsen dos teclas simultáneamente, se escribe tecla1+tecla2. Por ejemplo, Alt+f significa que se ha de pulsar la tecla Alt y, dejando ésta pulsada, pulsamos a continuación la tecla f. Otros conceptos referidos en este enunciado como, Barra de menús, barras de herramientas o ventana de programa y depuración se describen en el apartado siguiente. 1 Fundamentos de Informática. Primer Curso de Ingenieros Industriales 3. Desarrollo de la práctica Posiblemente, el mejor modo de aprender estas nociones, es comenzar con la escritura de un primer programa en Dev-C++, tal como describiremos a continuación. 3.1. Arranque de la aplicación En primer lugar arrancaremos la aplicación haciendo click dos veces sobre el icono del escritorio de la aplicación Dev-C++. El entorno de desarrollo Dev-C++ tiene el aspecto habitual de una aplicación para el sistema de explotación Windows. Barra de Menús Barras de Herramientas Ventana de programa Como puede comprobar, el entorno de desarrollo proporciona multitud de funcionalidades que resultaría tedioso y extenso de describir en este documento. Por este motivo nos centraremos únicamente en los aspectos esenciales que permitan la escritura, compilación, montaje y depuración de un programa en C. 3.2. Escritura del código fuente En este apartado escribiremos el código de lenguaje C que codifica el programa. Para ello es necesario abrir nuevo archivo en blanco de código fuente, acudiendo en la barra de menús a Archivo -> nuevo - > Código fuente 2 Fundamentos de Informática. Primer Curso de Ingenieros Industriales Observará que se despliega una nueva ventana de programas en blanco, sobre la que podrá escribir el código que considere oportuno. Escriba lo siguiente: #include <stdio.h> main() { float a,b,med; printf("Introduzca el primer numero\n"); scanf("%f",&a); printf("Introduzca el segundo numero\n"); scanf("%f",&b); med=(a+b)/2; printf("\n\nLa media de %f y %f es %f\n",a,b,med); system("PAUSE"); } Compruebe que ha tecleado correctamente el programa con todos los símbolos que aparecen en él. Para finalizar guarde el programa en un fichero, en la barra de menús Archivo->Guardar, o bien pulsando ctrl+S. La primera vez que guarde el archivo se le solicitará un nombre y una ubicación para el archivo, así como una extensión. Se sugiere que cree un directorio en el disco local C: (Búsquelo pulsando sobre el símbolo , y a continuación cree el directorio con ), y guarde allí su fichero con 3 Fundamentos de Informática. Primer Curso de Ingenieros Industriales el nombre que crea oportuno (Verifique que la extensión es “C source files (*.c)”). Con esta etapa habrá finalizado la creación de su fichero de código fuente. Para obtener el programa final, es necesario compilar y montar el programa, pasos que se explican a continuación. 3.3. Compilación En la etapa de compilación el código fuente es comprobado sintácticamente por Dev-C++, y traducido a lenguaje de máquina (aún no ejecutable, y denominado código objeto). En caso de detectarse errores sintácticos o de concordancia de acuerdo con las reglas del lenguaje C, Dev-C++, avisa apropiadamente, tal como veremos a continuación. Para compilar el código fuente que acabamos de teclear basta con acudir a la barra de menús y pulsar Ejecutar-> Compilar, o bien Ctrl+F9. Con esto se inicia el proceso de compilación. Si todo va bien debe observar una ventana como la siguiente: 4 Fundamentos de Informática. Primer Curso de Ingenieros Industriales Es decir, debe obtener cero errores (Errors) y cero avisos (Warnings) en el proceso de compilación. Los errores son fallos críticos en la escritura o la concepción del programa que impiden al compilador realizar su tarea. Son por tanto errores que impiden proseguir con el resto de etapas de creación del programa, y deben ser reparados. Los errores más simples (ausencia de punto y coma al final de una sentencia, variables no declaradas, paréntesis no balanceados, etc.) pueden corregirse de forma sencilla inspeccionando el código del programa con la ayuda de los mensajes del compilador. Errores más sutiles o de difícil detección pueden requerir el empleo de la herramienta de depuración que se describirá posteriormente. Los avisos hacen referencia a incongruencias no críticas en el código (tipos de datos no concordantes, variables declaradas pero no utilizadas, etc). Los avisos no impiden proseguir con el resto de etapas de creación del programa ejecutable, aunque resulta poco recomendable hacerlo. Una buena práctica de programación aconseja modificar el código fuente en lo necesario (generalmente cambios menores) para evitar la aparición de avisos en el proceso de compilación. Si detecta errores o avisos en el proceso de compilación de su programa, compruebe que no ha omitido ningún carácter crítico al teclearlo o ha cometido algún otro error al copiar el código fuente que se le suministra. 3.4. Montaje En la etapa de Montaje, el código objeto generado en la etapa de compilación es “ensamblado” junto con el código objeto de las funciones de librería para crear un único fichero ejecutable (con extensión .exe) Esta etapa no conlleva generalmente errores, salvo que hayamos omitido o confundido algunas de las librerías de funciones que emplee nuestro programa. Si todo es correcto, debe obtener en el mismo directorio en el que ha guardado el código fuente de su programa, un fichero con ese mismo nombre, pero con extensión .exe, indicando que el fichero es ejecutable directamente por el computador. 3.5. Ejecución 5 Fundamentos de Informática. Primer Curso de Ingenieros Industriales La ejecución del programa es el paso final, y permite comprobar el funcionamiento del programa. Para ejecutar el programa, puede pulsar en la barra de menús Ejecutar -> Ejecutar (o bien Ctrl.+F10). Un método alternativo consiste en abrir una ventana de consola MS-DOS en el sistema operativo, y ejecutar el programa directamente en línea de comandos, tecleando el nombre del programa + ENTER. Para esto último debe asegurarse de que se encuentra en el directorio local donde ha compilado y generado el programa ejecutable. Si la ejecución del programa no es satisfactoria, bien porque no realiza las tareas para las que ha sido concebido, bien porque presenta errores en tiempo de ejecución, el código debe ser modificado volviendo al paso 3.2 de escritura del código fuente. Cada vez que realice alguna modificación al programa, deberá compilar, montar y ejecutar de nuevo el programa. Dev-C++ tiene una opción para realizar estas tres tareas en un sólo paso pulsando en la barra de menús Ejecutar -> Compilar y Ejecutar. Resulta sin embargo conveniente que en un principio realice estas tareas por separado hasta adquirir una cierta práctica. 3.6. Depuración Se entiende por depuración de un programa, aquellas tareas encaminadas a la localización y eliminación de errores (‘bugs’ en su denominación en inglés) de cualquier naturaleza en el código de un programa. Dev-C++ proporciona varias herramientas para este propósito, entre las que cabe destacar: 1. Inspección de variables Esta herramienta permite mostrar el valor de cualquier variable del programa mientras éste se ejecuta. Con ello se puede verificar si las variables toman el valor esperado en cada paso de ejecución y actuar en consecuencia. Para usar esta herramienta, en primer lugar hay que ejecutar el programa en modo de depuración. Una forma sencilla de hacerlo es emplear la herramienta ejecutar hasta el cursor. Para ello coloque el cursor con el ratón sobre cualquier línea del programa, por ejemplo float a,b,med; y pulse sobre la barra de menús depurar-> ejecutar hasta el cursor. (O bien pulsando Shift+F4). 6 Fundamentos de Informática. Primer Curso de Ingenieros Industriales Observará que se despliega una ventana de depuración en la parte inferior de la pantalla con diferentes opciones. Entre ellas, las opciones añadir y remover variable vigilada, permiten respectivamente ampliar y reducir la lista de variables que queremos inspeccionar. De este modo, pulse sobre Añadir variable vigilada, y ante la pregunta “nombre de la variable”, introduzca la variable med. Puede repetir el procedimiento con otras variables (pruebe por ejemplo con las variables a y b). El valor de las variables inspeccionadas puede visualizarlo en la ventana desplegada en la parte izquierda de la pantalla, bajo la lengüeta depuración. 2. Ejecución paso a paso Ésta es otra útil herramienta que, como su nombre indica, permite ejecutar el programa instrucción a instrucción de modo que sea posible comprobar el comportamiento del mismo ante cada una de ellas. En conjunción con la herramienta de inspección de variables, permite obtener la traza del programa y verificar el comportamiento del mismo. La ejecución paso a paso se activa simplemente pulsando sobre la opción Siguiente Paso, que puede encontrar en la ventana de depuración de la parte 7 Fundamentos de Informática. Primer Curso de Ingenieros Industriales inferior de la pantalla, en la barra de menús depurar, o bien pulsando Shift+F7. Podrá observar como cada vez que se avanza un paso, se ejecuta una sóla instrucción del programa, resaltándose la línea en la que se encuentra actualmente el programa y, si se ha activado la inspección de variables, podrá observarse el valor de cada una de ellas en cada paso de ejecución. 4. Un programa más complejo Ahora que ha escrito su primer programa en C, puede intentarlo de nuevo con un programa algo más complejo. Pruebe a programar el siguiente juego #include <stdio.h> #include <stdlib.h> #include <time.h> main() { int nal,n,i; time_t s; time(&s); srand((unsigned int) s); nal=rand()%50; i=0; 8 Fundamentos de Informática. Primer Curso de Ingenieros Industriales printf("Adivina un numero entre 0 y intentos\n"); do{ printf("Introduzca un numero\n"); scanf("%d",&n); if(n==nal) {printf("ACERTASTE !!\n"); system("PAUSE"); exit(0);} else if(n<nal) printf("El numero es mayor\n"); else printf("El numero es menor\n"); i++; }while(i<6 && n!=nal); printf("\n Fallaste !!\n"); printf("El numero era %d\n\n",nal); system("PAUSE"); } 50. Tiene 6 En esta ocasión puede observar que algunas líneas están desplazadas respecto al margen izquierdo. Es lo que se denomina indentación. Aunque no es imprescindible, se recomienda que respete la indentación, ya que proporciona mayor legibilidad al código (en su debido momento comprenderá la importancia de adquirir está práctica como hábito de programación). 9