Anda di halaman 1dari 12

Programacin en C ++

1 INTRODUCCIN
El comit para el estndar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estndar lo marcaba el libro escrito en 1978 por estos dos autores El lenguaje C++ se comenz a desarrollar en 1980. Su autor fue B. Stroustrup, tambin de la ATT. Al comienzo era una extensin del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenz a ser utilizado fuera de la ATT en 1983. El nombre C++ es tambin de ese ao, y hace referencia al carcter del operador incremento de C (++). Ante la gran difusin y xito que iba obteniendo en el mundo de los programadores, la ATT comenz a estandarizarlo internamente en 1987. En 1989 se form un comit ANSI (seguido algn tiempo despus por un comit ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las dificultades y limitaciones del C original. La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que sealar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de ste fueron tomadas del C++. En estas Notas se van a presentar los fundamentos del lenguaje C++ tradicional a partir del lenguaje C. Su descripcin se va a realizar en dos partes: una inicial en la que se contemplan las modificaciones y una posterior con los aadidos. El C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con l, aunque ya se ha dicho que presenta ciertas ventajas (las modificaciones menores, que se vern a continuacin). Como lenguaje orientado a objetos se basa en una filosofa completamente diferente, que exige del programador un completo cambio de mentalidad. Las caractersticas propias de la Programacin Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que s que cambian radicalmente su naturaleza.

- DIFERENCIAS ENTRE C Y C++


C++ contiene varias modificaciones menores sobre el C original. Normalmente se trata de aumentar la capacidad del lenguaje y la facilidad de programacin en un conjunto de detalles concretos basados en la experiencia de muchos aos. Como el ANSI C es posterior a los primeros compiladores de C++, algunas de estas modificaciones estn ya introducidas en el ANSI C. En cualquier caso, se trata de modificaciones que facilitan el uso del lenguaje, pero que no cambian su naturaleza. Hay que indicar que el C++ mantiene compatibilidad casi completa con C, de forma que el viejo estilo de hacer las cosas en C es tambin permitido en C++, aunque ste disponga de una mejor forma de realizar esas tareas. Cambio en la extensin del nombre de los ficheros El primer cambio que tiene que conocer cualquier programador es que los ficheros fuente de C++ tienen la extensin *.cpp (de C plus plus, que es la forma oral de llamar al lenguaje en ingls), en lugar de *.c. Esta distincin es muy importante, pues determina ni ms ni menos el que se utilice el compilador de C o el de C++. La utilizacin de nombres incorrectos en los ficheros puede dar lugar a errores durante el proceso de compilacin.

- ENTORNO DE PROGRAMACIN (IDE) -Code::blocks -Dev C++

-Eclipse -Turbo C++


Manual de uso de

1 Introduccin CodeBlocks es un IDE (Integrated Development Environment, Entorno integrado de desarrrollo), que permite principalmente el desarrollo en C y C++, si bien otros lenguajes como Python tambin estn soportados. En este documento se describe de manera sencilla las operaciones ms comunes con el entorno, es decir: crear un proyecto, compilar, ejecutar y depurar.

Figura 1: El IDE Codeblocks

En la figura 1, se aprecia la apariencia del entorno, con la parte derecha dedicada casi integramente a la edicin de archivos (al ser un editor con pestaas, se pueden editar varios archivos al mismo tiempo). Debajo del edtor, se encuentra el rea de mensajes, donde se obtienen varias informaciones como por ejemplo los resultados de una bsqueda. Principalmente, tambin se mostrarn los resultados de cualquier compilacin. En la parte izquierda se aprecian dos ventanas de depuracin: Call stack (la pila de llamadas), y Watches (visores de variables), que slo estn activas mientras se est depurando un determinado proyecto. Esta es la configuracin por defecto, por lo que la disposicin de las ventanas pueden variar de un usuario a otro. 2 Crear un proyecto Para crear un proyecto, se selecciona la opcin File >> New, y a continuacin, Project. Para construir el proyecto, bsicamente se necesita darle un nombre, un directorio de residencia, y seleccionar el lenguaje y tipo de aplicacin a desarrollar. figura 2. El tipo de aplicacin ms adecuado para desarrollar aplicaciones en C o C++ estndar es Console Application.

Figura 2: Tipos de proyectos A continuacin, se selecciona el lenguaje de programacin a emplear para el proyecto. Por defecto, seleccionaremos entre C y C++, tal y como se ve en la figura 3. Una vez

seleccionado el lenguaje, ser necesario escoger un nombre para el proyecto, y una ubicacin (directorio) en el disco duro.

Figura 3: Seleccin entre lenguajes de programacin disponibles. El simple hecho de introducir un ttulo har que se complementen las entradas de directorio del proyecto y de nombre del proyecto, tal y como se ve en la figura 4. A continuacin, es necesario seleccionar el compilador a emplear, adems de los perfiles (modos de compilacin) a utilizar, como se aprecia en la figura 5.

Figura 4: Ttulo del proyecto. Los perfiles por defecto son perfectamente adecuados para cualquier proyecto: debug servir para el proceso de desarrollo del software, mientras que release selecciona las opciones del compilador de mayor optimizacin y elimina la informacin de depuracin, para el momento del acabado..

Figura 5: Perfiles y seleccin del compilador. El compilador seleccionado es el GNU GCC, que es el que se provee en la configuracin por defecto de CodeBlocks. Si para un proyecto especfico se desea cambiar de compilador, se puede seleccionar ahora. Una vez pulsado Finish, el proyecto ha sido creado, as como el archivo main.c, que aparecer en el nuevo directorio y como archivo principal de la compilacin. Para comprobarlo, slo es necesario referirse a la ventana Management, y seleccionar la pestaa Project, como se observa en la figura 6. Bajo la seccin con el nombre del proyecto que se haya seleccionado, encontraremos dos carpetas: sources y headers. Bajo la primera se encuentran todos los archivos .c y .cpp, mientras que bajo la segunda se encuentran todos los archivos .h. Haciendo doble clic en cualquiera de ellos, hace que aparezcan en el editor, listo para ser utilizados. Si se pulsa el botn derecho del ratn sobre ellos, se pueden eliminar del proyecto (aunque no son eliminados del disco).

Figura 6: Ventana Management, una vez creado el proyecto. 2.1 Insertar archivos ya existentes en el proyecto.

Muchas veces, es necesario incluir archivos ya existentes en un proyecto que acabamos de crear, tpicamente porque estos archivos son mdulos que ya estn hechos previamente y que deseamos aprovechar. Para aadir estos archivos, se utiliza la opcin Project >> Add Files, que abre un cuadro de dilogo de apertura que permitir seleccionarlos. En la ventana del proyecto aparecern correctamente ordenados segn sean archivos cabecera (.h) o archivos de implementacin (.c, .cpp). Ntese que, para que una sentencia como #include cabecera.h sea correctamente compilada, tambin es necesario aadir al proyecto una indicacin de dnde se encuentra ese archivo de cabecera (si es que no reside en el directorio del proyecto). Esto se logra en Projects >> Build options, seleccionando entonces la pestaa Search Directories (figura 7), y pulsando entonces el botn add para aadir un nuevo directorio. Entonces se escribe la nueva ruta (como se ve en la figura 8), y es aadido a la lista de bsqueda.

Figura 7: Aadiendo directorios en las opciones de construccin del proyecto. Una vez hecho sto, el proyecto se construir perfectamente. Slo es necesario tener en cuenta un detalle: si el camino del directorio a introducir contiene espacios, es posible que la compilacin termine con varios errores aparentemente inexplicables (como por ejemplo, que no se encuentra c:\documents, en Windows), por lo que si es as, es mucho ms conveniente indicar el nuevo directorio de bsqueda como un camino relativo, en lugar de absoluto. As, si necesitamos un

Figura 8: Introduciendo el nuevo directorio de bsqueda. HolaMundo/), entonces ser ms conveniente fijar el nuevo directorio de bsqueda como ../Lib. Tambin es posible, en esta ventana, cambiar el compilador que se ha estado usando, o las opciones de depuracin u optimizacin, o cualquier otra que se desee aadir. Ntese que, a la izquierda, aparecen los perfiles que hayamos creado antes (por defecto, debug y release), de manera que los cambios afectan independientemente a una de los perfiles: para que afecten a ambos, ser necesario repetirlos. Es sencillo comparar ambos perfiles: el primero tiene todas las opciones de depuracin seleccionadas, mientras el otro no slo no las tiene, sino que incluye todas las posibles optimizaciones.

Figura 9: Directorio de bsqueda aadido.

2.2

Insertar nuevos archivos en el proyecto

Figura 10: Aadiendo una nueva cabecera al proyecto. Es tpico que necesitemos incluir nuevos mdulos en el proyecto, de manera que dividamos la funcionalidad en partes independientes. Lo que desearamos hacer en ese caso es muy parecido a lo hecho en el apartado anterior, slo que ahora los archivos no existen previamente. Para acceder a esta opcin, se selecciona File >> New, y entonces, File. Se nos da a elegir entre dos opciones: un nuevo archivo de cabecera (header, extensin .h), o de implementacin (source, .c). Se escoja uno u otro, aparece una ventana muy parecida a la mostrada en la figura 10. En el apartado file name se indica el nombre del archivo, aunque es necesario tener en cuenta que hay que especificarlo con la ruta completa, por lo que ser mucho ms cmodo utilizar el botn a la derecha de este campo, que abre un cuadro de dilogo de guardado. Si se desea aadir el archivo al proyecto (que es lo ms habitual), se deja marcada la opcin Add file to active project. En este caso es necesario aadir el archivo a los perfiles debug y release. Lo ms habitual es asignrselo a ambos, pudiendo hacerlo a travs del botn all o marcando cada uno de ellos. En cuanto al campo header guard word, se trata de la tpica constante utilizada por el preprocesador para hacerle saber si ya ha compilado esta cabecera previamente para esta unidad de traduccin. CodeBlocks rellena este campo automticamente, una vez introducido el nombre del archivo, por lo que no es necesario preocuparse por ello. Finalmente, hay que tener en cuenta que si se ha creado un archivo de cabecera, y ste se encuentra en un directorio que no es el directorio del proyecto, ser necesario, como se indica en el apartado anterior, aadir la ruta del directorio en el que se encuentra a las opciones del proyecto. 3 Compilando y ejecutando Las opciones Build >> build y Build >> run, construyen y ejecutan el programa, respectivamente. Se pueden atajar mediante las pulsaciones de teclas Ctrl+F9 y Ctrl+F10, o, incluso, si se desean realizar ambas acciones en secuencia, pulsando F9. En

cuanto a la barra de herramientas, pulsando la ruenda dentada se compila, y pulsando el tringulo de reproduccin se ejecuta. Cuando el proyecto consiste en una aplicacin de consola, una ventana de consola se abre para recibir y mostrar texto, y cuando termina la ejecucin espera a que se pulse una tecla. 3.1 Depuracin La depuracin no se produce cuando el programa se ejecuta normalmente, mediante Ctrl+F10 F9. Para depurar un programa es necesario seleccionar la opcin Debug >> start, o bien pulsar F8, que lanza la depuracin del programa desde el principio. Si se desea empezar a depurar desde un punto determinado, o durante la depuracin, hacer que el programa corra normalemente hasta una determinada lnea, se sita el cursor sobre esa lnea y se selecciona Debug >> run to cursor, o se pulsa F4. A la hora de depurar una aplicacin, se utilizan principalmente las opciones Debug >> Step into (Shift + F7) y Debug >> next line (F7). Mientras que la segunda va avanzando de lnea en lnea, y ejecutando a las funciones que sean llamadas en cada una de manera transparente, la primera permite saltar de funcin en funcin, conjuntamente con el flujo del programa.

3.1.1 Breakpoints Los puntos de ruptura (breakpoints), se utilizan para parar la ejecucin cuando se est depurando, y se pulsa F8 para que la ejecucin contine normalmente. Se marcan con un crculo rojo a la izquierda de la lnea, pulsando con el ratn entre la lnea y el nmero de lnea, o bien situndose en esa lnea y pulsando F5 (figura 11). Cuando la ejecucin llegue a esa lnea, smplemente se detendr, y nos permitir

Figura 11: Un breakpoint en la lnea 143. utilizar la ventana de observadores (watches), de manera que se pueda consultar el valor de cualquier variable (Debug >> edit watches).

2 - ALGUNOS CONCEPTOS DE C++ - PRIMER CONTACTO CON EL IDE

- COMENTARIOS - LA DIRECTIVA #INCLUDE - LA FUNCIN INT MAIN() - EL USO DE LAS LLAVES - VARIABLES - LOS OPERADORES ARITMTICOS - DEFINICION DE CONSTANTES - DIRECTIVAS DEL PREPROCESADOR - ASPECTO DE UN PROGRAMA C++ - FUNCIONES BSICAS DE C++ - EJERCICIOS - SOLUCIONES 3 - SENTENCIAS DE CONTROL - LOS OPERADORES - LA INSTRUCCION IF - SWITCH - CASE - CONCEPTO DE BUCLE - BUCLE WHILE - BREAK Y CONTINUE - BUCLE FOR - BUCLE DO - EJERCICIOS 4 - FUNCIONES Y LIBRERAS - FUNCIONES EN C++ - ARGUMENTOS Y VALORES DEVUELTOS POR UNA FUNCIN - LA INSTRUCCIN RETURN - TIPOS DE VARIABLES - INCLUSIN DE LIBRERAS - COMPILACIN DE MLTIPLES ARCHIVOS: PROYECTOS - REDIRECCIN - EJERCICIOS 5 - ARRAYS (VECTORES Y MATRICES) - VECTORES Y MATRICES - USANDO LOS ELEMENTOS DEL VECTOR - INICIALIZACIN DE VECTORES - VECTORES Y LITERALES - FUNCIONES GETS() Y PUTS() - VECTORES Y FUNCIONES - MATRICES - FUNCIONES DE MANIPULACIN DE STRINGS - EJERCICIOS 6 - ESTRCTURAS Y UNIONES - INTRODUCCIN - ESTRUCTURAS

- UNIONES - ESTRUCTURAS Y FUNCIONES - VARIABLES ENUM - EJERCICIOS 7 - PUNTEROS - INTRODUCCIN - DECLARACIN DE TIPO PUNTERO - EL OPERADOR & - ASIGNACIN DE MEMORIA - PUNTEROS Y FUNCIONES - PUNTEROS Y ESTRUCTURAS - OPERACIONES CON PUNTEROS - LISTAS DE PUNTEROS - EJERCICIOS 8 - FICHEROS - INTRODUCCIN - GESTIN DE FICHEROS - TIPOS DE ACCESO AL DISCO - DE PUNTERO A ARCHIVO - COMO ABRIR FICHEROS - LEER Y ESCRIBIR UN FICHERO - CERRAR FICHEROS - FICHEROS DE TEXTO - LEER Y ESCRIBIR BLOQUES - REPOSICIONAR UN FICHERO - EJERCICIOS 9 - PROGRAMACIN ORIENTADA A OBJETOS - INTRODUCCIN - CLASES, OBJETOS Y MTODOS - CLASES SIN SECCIONES PRIVADAS: STRUCT - CLASES CON SECCIONES PRIVADAS: CLASS - MTODOS INTERNOS Y EXTERNOS - EXPANSIN INLINE - USO DE REFERENCIAS Y APUNTADORES - RESUMEN - EJERCICIOS 10 - CONSTRUCTORES Y DESTRUCTORES - INTRODUCCIN - INICIALIZADORES - CONSTRUCTOR POR DEFECTO - CONSTRUCTOR DE OFICIO - CONSTRUCTOR DE COPIA - OPERADOR DE ASIGNACIN - DESTRUCTOR

- EJERCICIOS 11 - SOBRECARGA - INTRODUCCIN - SOBRECARGA DE OPERADORES - SOBRECARGA OPERADORES (++) Y (--) - CLASES Y FUNCIONES FRIENDS - EJERCICIOS 12 - HERENCIA Y POLIMORFISMO - HERENCIA - ACCESOS A MIEMBROS HEREDADOS - TIPOS DE ACCESOS A LA CLASE BASE - CLASE BASE VIRTUAL O HERENCIA MLTIPLE - CONVERSIONES ENTRE OBJETOS DE CLASE DERIVADA Y CLASE BASE - POLIMORFISMO - FUNCIONES VIRTUALES - FUNCIONES PURAS Y CLASES ABSTRACTAS - CONSTRUCTORES Y DESTRUCTORES VIRTUALES - CLASES BASE MLTIPLES - EJERCICIOS 13 - PLANTILLAS - INTRODUCCIN - PLANTILLAS DE FUNCIONES O FUNCIONES GENRICAS - SOBRECARGA DE FUNCIONES GENRICAS - PLANTILLAS DE CLASES O CLASES GENRICAS - HERENCIA DE CLASES GENRICAS - EJERCICIOS 14 - CONTROLES AVANZADOS - CONVERSIN DE TIPOS - FUNCIONES MIEMBRO WIDTH(), PRECISION() Y FILL(). - SOBRECARGA DEL OPERADOR << Y >> - MANEJO DE EXCEPCIONES 15 - ENTORNO GRFICO EN C++ - LIBRERAS - ELEMENTOS BSICOS DE DIBUJO - DIBUJO DE SECUENCIAS - DIBUJO INTERACTIVO - EJERCICIOS

Anda mungkin juga menyukai