Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE INGENIERA DEPARTAMENTO DE INGENIERA DE SISTEMAS E INDUSTRIAL BOGOT D.C. 2004
TABLA DE CONTENIDO
1 2 3
Introduccin....................................................................................................................4 Instalacin ......................................................................................................................5 Entorno de trabajo..........................................................................................................8 Men y barras de herramientas .....................................................................................8 Explorador de proyectos y clases e informacin de depuracin....................................8 rea de edicin. .............................................................................................................9 Resultados de la compilacin y controles de depuracin. .............................................9
Descripcin de las opciones del Men.........................................................................10 4.1 Menu File ................................................................................................................10 4.2 Men Edit................................................................................................................10 4.3 Men Search...........................................................................................................11 4.4 Men Project...........................................................................................................11 4.5 Men Execute .........................................................................................................11 4.6 Menu Options..........................................................................................................12 4.7 Men Tools .............................................................................................................12 4.8 Men Windows .......................................................................................................12
5 6
Iniciar un proyecto........................................................................................................13 Colores en la escritura de cdigo.................................................................................13 Directivas de Preprocesador........................................................................................14 Comentarios.................................................................................................................14 Cadenas de caracteres ................................................................................................14 Nmeros.......................................................................................................................14 Palabras Claves ...........................................................................................................14
7 8 9
Compilacin y generacin de programas.....................................................................15 Otras facilidades ..........................................................................................................16 Errores comunes en programacin y como evitarlos con Dev-C++.............................17
9.1 Olvidar terminar un comentario con */ ....................................................................17 9.2 Uso de letras maysculas cuando no es til...........................................................17 9.3 Olvidar las dobles comillas de un texto o cadena de control. .................................18 9.4 Olvidar el signo ; despus de cada instruccin.......................................................19 9.5 cambiar el signo ; por , despus de alguna sentencia............................................19 9.6 Olvidar colocar llaves en una sentencia compuesta...............................................20 9.7 Las palabras reservadas son :................................................................................21 9.8 Olvidar definir una variable. ....................................................................................22 9.9 usar , en vez de ; dentro de una sentencia for...................................................23 9.10 Olvidar incluir una librera ...................................................................................23
1 Introduccin
El presente manual, no es un manual del lenguaje C++, es un manual, para el uso de un entorno de desarrollo de cdigo como lo es Dev-C++, por lo tanto no encontrar ayudas sobre la referencia del lenguaje, ni explicacin de la sintaxis. Este manual presenta las facilidades de esta herramienta para el desarrollo de cdigo.
Dev-C++ es un Entorno de Desarrollo Integrado (IDE) para el lenguaje de Programacin C/C++ que usa Mingw de GCC (GNU Compiler Collection) como Compilador y permite crear: Programas ejecutables para Win32. Programas ejecutables para consola. Construccin de DLLs y bibliotecas estticas. Adems, se puede utilizar en combinacin con otros compiladores basados en GCC.
Dev-C++ es un software de libre distribucin sujeto a los trminos de la Licencia Pblica General (GPL), que facilita la escritura de programas en lenguaje C++; para brindar las facilidades de creacin de programas (ejecutables *.exe) se apoya en diversos compiladores, entre ellos MinGW (Minimalist Gnu Windows), tambin software libre bajo la licencia GNU
Las caractersticas de Dev-C++ son: Tiene integrado un depurador basado en GDB Soporta mltiples lenguajes (el castellano es uno de ellos). Mantiene una lista con las clases utilizadas en el desarrollo de un programa. Mantiene la lista de funciones definidas en el desarrollo del programa. Tiene un manejador de proyectos (se usa cuando el programa se compone de ms de un fichero fuente). Tiene un editor que resalta la sintaxis del cdigo que es configurable. Soporta plantillas para la creacin de tus propios tipos de proyectos. Permite la creacin de Makefile para la compilacin separada de archivos fuente. Edita y compila ficheros de recursos. Soporta la actualizacin del software y bibliotecas a travs de Internet.
Este manual fue elaborado por Nelson Javier Cruz, como un aporte del Centro de estudios de Ingeniera de sistemas CEIS_UN, al departamento de Sistemas e industrial de la universidad Nacional de Colombia. aportes y recomendaciones a: ceis_un@hotmail.com
2 Instalacin
La instalacin es muy sencilla, es necesario tener un equipo con Windows, funciona en todas las versiones de Windows, excepto las inferiores a win 95, las exigencias de memoria y disco son MUY pequeas. Estas son las especificaciones mnimas necesarias, que requiere el computador: Microsoft Windows 95, 98, NT 4, 2000, XP, 2003 8 MB RAM procesador de 100 Mhz (486 o Pentium) 30 MB de espacio en disco.
Aunque en este manual, no se presenta la ltima versin, se presentar una lo suficientemente verstil para desarrollar los objetivos propuestos en los cursos de programacin de computadores y mtodos numricos.
Es posible descargarlo en un solo archivo comprimido de 8Mb, y en versin de 6 disquettes, de la pgina antes indicada. Tambin en las salas de computadores de la Facultad de Ingeniera (453230, 453-119, 453-209 y 401-201) se dispone de una copia en CD.
Para iniciar la instalacin, basta ubicar entre los instaladores el programa setup e iniciarlo.
2. Tipo de instalacin Es recomendada, la instalacin Custom (el usuario selecciona los mdulos que desea), ya que se instalarn los recursos requeridos para el trabajo. Se sugiere seleccionar todos los mdulos para no tener inconvenientes, luego hacer clic en Next > para copiar los archivos.
Al terminar, la instalacin presenta la posibilidad, de abrir un archivo que describe el programa, o de iniciar el programa por primera vez. Usted puede seleccionar estas opciones de acuerdo a su preferencia.
La primera vez que es ejecutado, el programa pedir la asociacin de los archivos propios del lenguaje C al entorno de desarrollo (muy conveniente), y adems la seleccin de un estilo visual para los iconos de entorno de trabajo. Es conveniente hacer una seleccin de acuerdo a las capacidades del equipo. Ya que no todas las colecciones de iconos se vern adecuadamente en pantallas de baja resolucin (frecuente en win 95 o 98).
3 Entorno de trabajo
Se pueden identificar 4 reas principales: 1. Men y barras de herramientas 2. Explorador de proyectos 3. rea de trabajo y edicin. 4. Resultado de la compilacin.
1 3 2
4
Men y barras de herramientas
Aqu tenemos los mens con los tpicos comandos de Windows (abrir, guardar, copiar y pegar) Tambin tenemos una serie de iconos en las barras de herramientas que no son ms que una parte de las opciones que tenemos en los mens, se puede dejar el ratn encima de un icono durante unos segundos y aparecer una ayuda emergente. Explicativa de lo que se ejecuta cuando se hace clic sobre la figura. En el numeral 4 se har una pequea descripcin de cada una de las opciones del men.
a) Explorador de proyectos, que muestra los archivos por los que est formado el proyecto -y por tanto su aplicacin- bien sean de cdigo, de encabezados, o de recursos. b) Explorador de clases, una de las funciones ms tiles, ms adelante se detallar cada una de las estructuras/clases definidas en los archivos del proyecto, as como los mtodos y datos que forman parte de la estructura/clase, incluyendo sus argumentos y su tipo. Tambin se ver una lista de las funciones globales que tenemos en el proyecto, tambin con sus argumentos. Pulsando doble clic en un mtodo, funcin o clase, se ir directamente al archivo y lnea donde se ha definido. c) Informacin de depuracin, aqu podremos definir las variables que queramos cuando estemos depurando un programa.
rea de edicin.
Aqu aparecern los Archivo de cdigo que se abran. Se Pueden tener abierto ms de un Archivo a la vez, y seleccionarlo por medio del men Window.
En sta serie de pestaas se encuentra informacin acerca del proceso de compilacin. Cuando se selecciona una pestaa se expandir para mostrarnos los resultados.
En la pestaa compiler (compilador) se ven los errores y advertencias que ha generado la compilacin de nuestro cdigo (si los hubiera), pulsando doble clic en uno de ellos se remite directamente a la lnea que provoc dicho error o advertencia. Tambin se generan avisos.
Tambin existen otras pestaas, con propsitos ms especficos, linker, informa acerca de la correcta referencia de las libreras con el cdigo que hemos creado. resource, indica posibles advertencias acerca de otros recursos invocados en las lneas de cdigo de nuestro programa, y Compile Log, informa acerca de diferentes mensajes que produzca la herramienta de compilacin. En muy raras ocasiones hay mensajes el las pestaas linker, resource, sin embargo, cuando aparecen estos son muy importantes.
Nuevo proyecto Nueva plantilla Abrir proyecto existente o Archivo Abrir archivos recientes Fichero nuevo Nuevo recurso Guardar Guardar con otro nombre Guardar todos los Archivos abiertos Cerrar proyecto Cerrar ventana actual Exportar a HTML o RTF (Word) Imprimir Setup impresora Salir del Programa
Deshacer Rehacer Cortar Copiar Pegar Insertar Insertar una marca Ir a una marca Seleccionar todo el contenido de la ventana
10
Nuevo proyecto Nuevo elemento al proyecto (adicionar archivo) Eliminar archivo del proyecto Abrir un archivo para editar Generar un archivo make Opciones del proyecto.
Compilar (generar un programa) Correr el programa Compilar y correr Reconstruir todo Depurar
11
12
5 Iniciar un proyecto
Antes de construir un programa, es importante definir el nombre del proyecto, es aconsejable que este no supere los 8 caracteres, y que este describa o de una idea de aquello que pretende hacer.
En Dev-C++, hay diferencias entre utilizar: New project (iniciar un proyecto), o New Source file (iniciar archivo con cdigo fuente). El primero hace referencia a la creacin de uno o varios archivos que hacen parte de uno o varios programas. El segundo, inicia un solo archivo de cdigo C++, incluyendo en ste un cdigo bsico, como plantilla de programa.
En su totalidad, el curso de programacin, est diseado para ser trabajado con New Source file (iniciar archivo con cdigo fuente), por lo tanto, una vez iniciado el programa, se selecciona en el men, File la opcin New Source file o de otra forma, basta
oprimir simultneamente las teclas Ctrl y u. Hecho esto, debe aparecer en el rea de edicin, el siguiente texto:
#include <iostream.h> #include <stdlib.h> int main() { system("PAUSE"); return 0; } El cual es til para iniciar a trabajar, pues proporciona el uso de unas libreras bsicas (#include <iostream.h> y #include <stdlib.h>), establece el inicio y final main(){}, de programa (int
(PAUSE);) y devolver el control al sistema retornando 0 (return 0). Se debe incluir despus del corchete { y antes de system (PAUSE); el cdigo del programa que se desea construir.
13
asignacin de colores, es automtica, y se describir brevemente a continuacin. En Dev c++, se utilizan las siguientes estructuras de cdigo:
Comentarios: se visualizan en color azul oscuro. Un comentario, es una frase que no es tenida
en cuenta al momento de compilar el programa, es decir es una frase que aclara lo que se est realizando, como un mensaje para quien revisa el cdigo del programa, pero que no es ejecutada, y se puede utilizar en cualquier parte del cdigo. Se inicia con los caracteres /* y se termina con los caracteres */, como ejemplo:
Cadenas de caracteres: se presentan en rojo. Son textos, que tienen que ser manipuladas
como variables o mensajes, y por lo tanto tienen una presentacin especial. Como ejemplo:
Nmeros: se ven en azul claro. Los valores numricos, usados por su valor, son presentados en
color azul. Como ejemplos:
Palabras Claves: Se presentan en color negro resaltado. Son palabras usadas por el lenguaje
C++, y que tienen un significado exacto para la ejecucin de los programas, presentamos aqu varios ejemplos:
14
Otras expresiones como los operadores matemticos y lgicos (Symbol) o los identificadores de funcin, aparecern como texto normal en color negro sin resaltar.
La compilacin es el proceso mediante el cual el programa que tenemos en lenguaje de programacin se traduce a lenguaje de mquina (ceros y unos) para poder ser ejecutado por el computador. La compilacin genera un archivo ejecutable con extensin .exe.
El siguiente programa, que escribe los nmeros de 1 a 10, est escrito en lenguaje de programacin C++
#include <iostream.h> #include <stdlib.h> main(){ int a=0; for(a=0;a<10;a++) { cout << a <<"\n" ; } system("PAUSE"); } Para convertir este cdigo o cualquiera otro, en un programa ejecutable, se utilizan las herramientas de ejecucin del programa: men execute
Compilar (generar un programa) Correr el programa Compilar y correr Reconstruir todo Depurar
El proceso de compilacin se hace por medio de la opcin Compile. Utilizando la opcin Run, se ejecuta la ltima compilacin efectuada al cdigo.
15
La opcin Compile and Run, hace consecutivamente las acciones de compilar y de correr el programa.
La opcin Rebuild all sirve para volver a compilar todos los archivos de un proyecto, se usa para compilar ms de un archivo, y tiene el mismo efecto de la opcin Compile.
8 Otras facilidades
Es posible insertar fracciones de cdigo de frecuente uso, por medio de la opcin INSERT del Menu Edit, pues coloca en el editor estructuras completas del lenguaje, impidiendo que se omitan detalles que impiden la buena ejecucin del programa.
Por Ejemplo, es recomendable iniciar a trabajar insertando Comment header que coloca en el punto donde se tenga el cursor sobre el editor, el siguiente cdigo:
Por Ejemplo, es recomendable iniciar a trabajar insertando Comment header que presenta el siguiente cdigo:
16
Otro ejemplo, el resultado de insertar for (), da como resultado: for() { } Se debe tener mucho cuidado, ya que como es posible ver, no se insertan todos los elementos bsicos de la sentencia for, como por ejemplo el par de puntos y comas (;) necesarios para dividir los paramentos de entrada a esa sentencia.
Correcto
#include <iostream.h> #include <stdlib.h> int main() { /* inicio del programa system("PAUSE"); return 0; }
*/
Si cuando escribe, nota que el texto no adquiere los formatos adecuados, muy posiblemente olvid cerrar el comentario con los caracteres */
Correcto
#include <iostream.h> #include <stdlib.h> int main() { /* inicio del programa system("PAUSE"); return 0; }
*/
*/
No es evidente a simple vista, si se ignora el sentido de la instruccin, pero al momento de compilar (F9) muestra un resultado que indica la falta de una funcin o instruccin. El
17
siguiere es el mensaje es mostrado en la ventana Compiler and linker output : E:\DEV-C_~1\Lib\\libmingw32.a(main.o)(.text+0x8e): `WinMain@16' undefined reference to
Correcto
1 2 3 4 5 6 7 8 9 #include <iostream.h> #include <stdlib.h> int main() { /* inicio del programa cout<<"Hola mundo \n"; system("PAUSE"); return 0; }
*/
*/
Este problema ocasiona mltiples errores al momento de crear un ejecutable. El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (nota, en este ejemplo el nombre del archivo es err3.cpp) 1. 2. 3. 4. c:\err\err3.cpp: In function `int main()': c:\err\err3.cpp:7: stray '\' in program c:\err\err3.cpp:7: `Hola' undeclared (first use this function) c:\err\err3.cpp:7: (Each undeclared identifier is reported only once for each function it appears in.) 5. c:\err\err3.cpp:7: parse error before `;'
Identifica la funcin en donde est el error (mensaje 1) muestran la palabra Hola como algo no declarado (desconocido para el computador) (mensaje 3) El nmero 7 indica la lnea del cdigo donde est el error.
18
Correcto
1 2 3 4 5 6 7 8 9 10 #include <iostream.h> #include <stdlib.h> int main() { /* inicio del programa cout<<"Hola mundo \n"; system("PAUSE"); return 0; }
*/
*/
Este inconveniente no indica en cual lnea de cdigo est el error, ya que generalmente indica la siguiente lnea. El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_4.cpp) 1. c:\err\ejemp_4.cpp: In function `int main()': 2. c:\err\ejemp_4.cpp:8: parse error before `(' En este ejemplo, hace falta terminar la instruccin 7 con ; sin embargo la segunda lnea del mensaje de salida indica que est en la lnea numero 8.
Correcto
1 2 3 4 5 6 7 8 9 10 #include <iostream.h> #include <stdlib.h> int main() { /* inicio del programa cout<<"Hola mundo \n"; system("PAUSE"); return 0; }
*/
*/
Este inconveniente no indica en cual lnea de cdigo est el error, ya que generalmente indica la siguiente lnea. El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_5.cpp)
1 2
19
En este ejemplo, hace falta terminar la instruccin 8 con ; sin embargo la segunda lnea del mensaje de salida indica que est en la lnea numero 9.
9.6 Olvidar colocar llaves en una sentencia compuesta (aplica para las sentencias for, if, do, switch)
Incorrecto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; for (a = 0 ; a < 100 ; a++ ) { b= a*a; cout<<b<<" = "<<a<<"*"<< a<<"\n"; system("PAUSE"); return 0; }
Correcto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; for (a = 0 ; a < 100 ; a++ ) { b= a*a; cout<<b<<" = "<<a<<"*"<< a<<"\n"; } system("PAUSE"); return 0; }
Este inconveniente no indica en cual lnea de cdigo est el error. Esto es debido a que realiza la comprobacin completa de parntesis que abren y cierran, solo el programador deber determinar donde est el error. El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_6.cpp) 1 c:\err\ejemp_6.cpp: In function `int main()': 2 c:\err\ejemp_6.cpp:15: parse error at end of input En este ejemplo, hace falta cerrar llaves en la lnea 11, el error es indicado despus de toda la comprobacin de llaves en la lnea 15
20
Estas palabras no admiten modificaciones, es necesario escribirlas tal como son, sin maysculas, si no aparecen resaltadas en negrita resaltado en el rea de edicin, muy seguramente estn mal escritas o fuera de contexto, y por lo tanto es necesario revisar el cdigo.
Incorrecto
1 2 3 4 5 6 7 8 9 10 11 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; For (a = 0 ; a < 100 ; a++ ) { b= a*a; cout<<b<<" = "<< a <<"*"<<a<<"\n"; }
Correcto
1 2 3 4 5 6 7 8 9 10 11 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; for (a = 0 ; a < 100 ; a++ ) { b= a*a; cout<<b<<" = "<<a<<"*"<<a<<"\n"; }
21
12 13 14
system("PAUSE"); return 0; }
12 13 14
system("PAUSE"); return 0; }
Una palabra reservada denota una instruccin, si esta no es clara o no se encuentra, se pierde el sentido de las expresiones construidas en todas las lneas de cdigo. El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_7.cpp) 1 2 3 4 5 6 7 8 9 c:\err\ejemp_7.cpp: In function `int main()': c:\err\ejemp_7.cpp:7: parse error before `;' c:\err\ejemp_7.cpp:7: parse error before `)' c:\err\ejemp_7.cpp: At top level: c:\err\ejemp_7.cpp:12: ANSI C++ forbids declaration `system' with no type c:\err\ejemp_7.cpp:12: `int system' redeclared as different kind of symbol E:\DEV-C_~1\Include\stdlib.h:283: previous declaration of `int system(const char *)' c:\err\ejemp_7.cpp:12: initialization to `int' from `const char *' lacks a cast c:\err\ejemp_7.cpp:13: parse error before `return'
En este ejemplo, la sentencia for de la lnea 7, tiene una letra en maysculas, el editor de texto no la detecta como una palabra reservada de C++, y por lo tanto, la sentencias propias de esta orden (a = 0 ; a < 100 ; a++ ), pierden sentido, y ocurre un error general en la aplicacin, es aconsejable en estos casos, revisar cada una de las lneas indicadas en la ventana de resultados de compilacin para verificar su sintaxis.
Correcto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; for (a = 0 ; a < 100 ; a++ ) { b= a*a; cout <<b<<" = "<< a << "*" <<a<<"\n"; } system("PAUSE"); return 0; }
El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_8.cpp) 1 2 3 c:\err\ejemp_8.cpp:9: `b' undeclared (first use this function) c:\err\ejemp_8.cpp:9: (Each undeclared identifier is reported only once c:\err\ejemp_8.cpp:9: for each function it appears in.)
Hace falta definir la variable b, en la lnea 6, este error es detectado fcilmente por el
22
compilador como lo indica el primer mensaje del compilador, sin embargo, en la lnea 9 es llamada esta variable por primera vez, por lo tanto es hay donde se muestra el error.
Correcto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream.h> #include <stdlib.h> int main() { int a=0; int b=0; for (a = 0 ; a < 100 ; a++ ) { b= a*a; cout <<b<<" = "<< a << "*" <<a<<"\n"; } system("PAUSE"); return 0; }
El siguiere es el mensaje es mostrado en la ventana Compiler and linker output : (Nota, en este ejemplo el nombre del archivo es ejemp_9.cpp) c:\err\ejemp_9.cpp:7: parse error before `)' c:\err\ejemp_9.cpp:11: parse error before `}' El uso de , en ves de ;dentro de una sentencia for, genera error en 2 partes, en la lnea donde se ha declarado la sentencia, y en la lnea donde finaliza, no necesariamente es indicada la falta del signo ;
Correcto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <iostream.h> #include <stdlib.h> #include <math.h> int main() { float a=0; float b=0; for (a = 0 ; a < 100 ; a++ ) { b = atan(a); cout <<b<<" = atan("<< a <<"\n"; } system("PAUSE"); return 0; }
<<
")"
<<
")"
23
(Nota, en este ejemplo el nombre del archivo es ejemp_10.cpp) c:\err\ejemp_10.cpp:10: implicit declaration of function `int atan(...)' En la lnea 10 la variable b est recibiendo el valor del arcotangente de a, pero arcotangente es una funcin definida dentro de la librera matemtica, por lo tanto el error indicado por el compilador, es no poder resolver el significado de atan(...);
Una librera es un archivo externo, que se llama para incluir funciones que estn definidas dentro de este, es comn encontrar un conjunto estndar de libreras, estas son: ALLOC.H CONIO.H ERRNO.H GRAPHICS.H LOCALE.H SETJMP.H STDIO.H STRSTREA.H ASSERT.H CTYPE.H FCNTL.H IO.H MALLOC.H SHARE.H STDIOSTR.H SYS\STAT.H BCD.H DIR.H FLOAT.H IOMANIP.H MATH.H SIGNAL.H STDLIB.H SYS\TIMEB.H BIOS.H DIRENT.H FSTREAM.H IOSTREAM.H MEM.H STDARG.H STREAM.H SYS\TYPES.H COMPLEX.H DOS.H GENERIC.H LIMITS.H PROCESS.H STDDEF.H STRING.H TIME.H
En cada una de estas libreras encontrar diversas funciones tiles, que simplifican la programacin, por ejemplo en MATH.H, encontrar muchas funciones matemticas, como la expuesta en el ejemplo anterior, tambin es posible (y muy recomendable), escribir libreras personalizadas, definidas para cada necesidad, ya que esto facilita la utilizacin de lneas de cdigo que pueden ser tiles en uno o ms programas.
24