cpp builder

7
Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 1 Programación orientada a objetos (634) Uso de C++ Builder para aplicaciones de consola Lo que se necesita saber sobre C++ Builder para esta asignatura es bien poco, ya que para practicar lo aprendido con C++ no necesitamos crear sofisticadas aplicaciones con interfaz gráfica de usuario. La interacción con el usuario se reducirá a pedirle da- tos y mostrarle información, lo que podemos hacer perfectamente con aplicaciones de consola. Aplicaciones de consola ¿Qué son las aplicaciones de consola? Son aquellas que se ejecutan sobre el sistema operativo en modo de línea de órdenes (MS-DOS en nuestro caso). Las aplicaciones que se ejecutan sobre MS-DOS dentro de Windows lo hacen dentro de una ventana MS-DOS (también denominada ventana de terminal o símbolo del sistema). Son ven- tanas que sólo pueden mostrar caracteres (25 líneas de 80 caracteres), y normalmente en blanco sobre fondo negro, aunque esto se puede configurar. Supongo que ya sabes a las ventanas que me refiero. Estas aplicaciones interactúan con el usuario mostrando textos en la pantalla (que en este caso se reduce a lo que hay dentro de la ventana) y leyendo datos del teclado. Tradicionalmente, al conjunto de una pantalla y un teclado se le denomina consola. Nota Para no complicar las cosas antes de tiempo, no nos queda más remedio que evitar el uso de vocales acentuadas, eñes y otros caracteres castellanos, ya que no se muestran correctamente en la consola. Para solucionar el problema deberíamos utilizar las rutinas de internacionaliza- ción de C++, lo que resulta bastante complicado de explicar a estas alturas.

Upload: juan-gallardo

Post on 29-Jan-2016

215 views

Category:

Documents


0 download

DESCRIPTION

c++

TRANSCRIPT

Page 1: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 1

Programación orientada a objetos (634)

Uso de C++ Builder para aplicaciones de consola

Lo que se necesita saber sobre C++ Builder para esta asignatura es bien poco, ya que para practicar lo aprendido con C++ no necesitamos crear sofisticadas aplicaciones con interfaz gráfica de usuario. La interacción con el usuario se reducirá a pedirle da-tos y mostrarle información, lo que podemos hacer perfectamente con aplicaciones de consola.

Aplicaciones de consola

¿Qué son las aplicaciones de consola? Son aquellas que se ejecutan sobre el sistema operativo en modo de línea de órdenes (MS-DOS en nuestro caso). Las aplicaciones que se ejecutan sobre MS-DOS dentro de Windows lo hacen dentro de una ventana MS-DOS (también denominada ventana de terminal o símbolo del sistema). Son ven-tanas que sólo pueden mostrar caracteres (25 líneas de 80 caracteres), y normalmente en blanco sobre fondo negro, aunque esto se puede configurar. Supongo que ya sabes a las ventanas que me refiero.

Estas aplicaciones interactúan con el usuario mostrando textos en la pantalla (que en este caso se reduce a lo que hay dentro de la ventana) y leyendo datos del teclado. Tradicionalmente, al conjunto de una pantalla y un teclado se le denomina consola.

Nota Para no complicar las cosas antes de tiempo, no nos queda más remedio que evitar el uso de vocales acentuadas, eñes y otros caracteres castellanos, ya que no se muestran correctamente en la consola. Para solucionar el problema deberíamos utilizar las rutinas de internacionaliza-ción de C++, lo que resulta bastante complicado de explicar a estas alturas.

Page 2: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 2

Cada programa es un proyecto

Cualquier programa que queramos desarrollar en C++ Builder consistirá en un pro-yecto en el que se englobarán todos los módulos del programa (archivos .h de cabecera y .cpp de implementación de las distintas clases y el archivo .cpp con el programa principal).

No bastará con compilar cada módulo por separado, sino que también será necesario construir (build o make) el proyecto en conjunto. Una vez compilados todos los módu-los y construido el proyecto, ya se podrá ejecutar el programa.

Nota Si cuando ejecutas el programa no sale nada (se abre la consola y se cierra acto seguido), en-tonces seguramente te has olvidado de construir el proyecto.

Creación de un proyecto

Para crear un proyecto se usa la orden File New o el botón New de la barra de herramientas. Aparece el cuadro de diálogo New Items que permite elegir el tipo de proyecto.

Hay muchas opciones en varias fichas. C++ Builder es un potente entorno de progra-mación que ofrece mucha ayuda y muchas herramientas a los programadores de C++. Incluye muchos asistentes que guían en el desarrollo de cada tipo de proyecto o escri-ben código por nosotros. En el Laboratorio de programación II aprenderás a usar mu-chas de esas herramientas. Aquí vas a utilizar C++ Builder de una forma muy simple para no distraerte de lo importante: el código C++ que queremos probar.

Por tanto, la opción del cuadro New Items que a nosotros nos interesa es Console Wi-zard, en la primera ficha (New). Seleccionando esa opción aparece el asistente para aplicaciones de consola. Este es uno de los asistentes más simples de C++ Builder: un cuadro de diálogo en el que podemos establecer unas pocas opciones, tal como puedes comprobar en la ilustración que sigue.

Crear un proyecto File New

Page 3: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 3

Asegúrate de que las opciones sean las que se ven en la figura y pulsa el botón OK. (El código será C++, no C, y no usaremos ni VCL ni múltiples hebras de ejecución. Tam-poco indicaremos ningún archivo origen del proyecto.)

Se crea el proyecto (con nombre Proyecto1 hasta que se guarde) y también se crea un primer módulo en un archivo denominado (de momento) Unit1.cpp.

La zona más amplia en la que se encuentra el código del módulo es el área de edición. Pueden estar abiertos varios archivos de código fuente en el editor: cada uno en una ficha cuya pestaña muestra el nombre del archivo. Sólo se verá en cada momento el contenido de uno de los archivos, pero se puede pasar a trabajar con otro pulsando so-bre la correspondiente pestaña.

En el panel izquierdo se podrán ver las clases del proyecto, cada una con sus atributos y sus métodos. Pero eso será cuando empecemos a programar con clases.

Ya hay algo en el nuevo archivo. No nos interesa. Selecciónalo todo (Ctrl+A) y bórralo (Supr). Ya tienes el archivo listo para comenzar a escribir en él el código C++ que quieras probar.

Nota Maximiza la ventana para tener el mayor espacio disponible para editar el programa.

Page 4: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 4

Edición del código y almacenamiento del trabajo

Antes de nada, algo muy importante que ya habrás oído muchas veces: asegúrate de guardar a menudo el trabajo. Si durante la ejecución ocurre algo imprevisto y el sis-tema no responde, habrás perdido todo lo que hayas escrito desde la última vez que guardaste.

La edición del código no te va a suponer ningún problema, ya que en Borland C++ Builder se sigue la tradición de los editores de Borland, por lo que se utiliza de forma muy similar al editor de Turbo Pascal.

Para probar los ejemplos de los apuntes o de los talleres puedes copiar el código y pe-garlo en el editor, en donde quieras insertarlo dentro del archivo actual. Si quieres probar módulos completos que puedas coger de la web, bastará con que incluyas el ar-chivo (o los archivos) en el proyecto, lo que puedes hacer utilizando la orden Add to project del menú Project (o el botón de la barra de herramientas o Shift+F11). Asegúra-te de haber incluido en el proyecto todos los archivos que se necesiten.

Para guardar el trabajo, selecciona Save en el menú File (o usa el botón de la barra de herramientas o pulsa Ctrl+S). Se guardará el archivo que se ve actualmente en el edi-tor (puedes tener abiertos muchos archivos al mismo tiempo). Si no lo habías guarda-do todavía, se te pedirá un nombre. Con la opción Save All del mismo menú (o el botón de la barra de herramientas o Shift+Ctrl+S) se guardan todos los archivos abiertos y el proyecto (para el que se te pedirá un nombre la primera vez).

Compilación, construcción y ejecución del programa (proyecto)

Como ya se dijo, para probar el código deben haberse compilado todos los módulos del programa y haberse construido el proyecto. Se pueden compilar los módulos por sepa-rado. Con la opción Compile unit del menú Project (o Alt+F9) se compila el archivo que se ve en el editor. Se usará para comprobar la sintaxis del módulo que se está editan-do.

Para construir el proyecto se puede usar la opción Make proyecto del menú Project (o Ctrl+F9) o la opción Build proyecto del mismo menú. La primera opción recompila todos los módulos que no se hayan compilado después de haber sido editados y luego enlaza (link) todo el código del programa con el de las bibliotecas para generar el ejecutable. La segunda opción funciona de forma similar, pero (re)compila todos los módulos del proyecto, lo necesiten o no (tarda algo más, obviamente).

Una vez construido el proyecto ya se puede ejecutar el programa. Para hacerlo, basta seleccionar la opción Run del menú Run (o usar el botón de la barra de herramientas o pulsar F9).

Un problema con el que nos encontramos durante la ejecución de los programas es que una vez que termina esa ejecución, se cierra automáticamente la consola, de forma que no podremos ver los resultados de la ejecución (lo que se haya impreso en la pan-talla).

Para solucionar este problema, podemos pedir siempre un dato al final de los progra-mas —justo antes del return 0; de la función main(). Sin embargo, es mejor acos-tumbrarse a utilizar las herramientas de depuración de C++ Builder cuanto antes. Lo que haremos será colocar un punto de ruptura (breakpoint) en la instrucción return 0; de la función main() para que la ejecución se interrumpa antes de ejecutar dicha instrucción return, que es la última del programa.

Podremos entonces ver la información en la consola (cuya ventana habrá quedado abierta y se podrá acceder desde la barra de tareas). Una vez hecho, para que termine la ejecución del programa bastará con usar otra vez la orden Run.

Incluir en el proyecto Project Add to project

Shift+F11

Guardar File Save

Ctrl+S

Guardar todo File Save All

Shift+Ctrl+S

Compilar módulo Project Compile unit

Alt+F9 Construir el proyecto Proyect Make

Ctrl+F9

o

Proyect Build Ejecutar Run Run

F9

Page 5: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 5

Depuración del código

Cuando un programa no produce los resultados esperados se hace necesario depurar-lo. El compilador nos ofrece la posibilidad de realizar una ejecución controlada del programa, paso a paso, de forma que podamos realizar un seguimiento de los valores que van tomando los datos a medida que se van ejecutando las instrucciones.

Ejecución paso a paso

Para ejecutar el programa instrucción a instrucción tenemos dos opciones:

Paso a paso entrando en las funciones que se llamen. Se ejecutarán todas las instrucciones del programa, de forma que cada vez que se llame a una función (o método), se pasará a ejecutar una a una las instrucciones de la función.

Se realiza lo que se conoce como traza del programa, ejecutando una a una in-cluso las instrucciones de las funciones de biblioteca.

Para ejecutar el programa paso a paso de esta forma se usa la orden Trace Into del menú Run (o el botón de la barra de herramientas o F7).

Paso a paso sin entrar en las funciones. Se ejecutarán las instrucciones una a una también, pero cada llamada a función o método se ejecutará de golpe, to-das las instrucciones de la función de una vez.

Para ejecutar el programa paso a paso de esta forma se usa la orden Step Over del menú Run (o el botón de la barra de herramientas o F8).

Se pueden combinar ambos métodos, entrando en las funciones que se desee y evitan-do entrar en otras que ya se hayan probado con anterioridad.

Mientras se ejecuta el programa paso a paso, se pueden investigar los valores de las variables por medio de la ventana Watches. Esa ventana contendrá los valores de las variables que hayamos incluido como inspecciones (watches).

Veamos un ejemplo. Hemos compilado el módulo y hemos construido el proyecto. Co-menzamos la ejecución paso a paso (F8) y tenemos esta situación:

La flecha verde indica la instrucción que se va a ejecutar cuando se pulse F8 (o F7).

Traza Run Trace Into

F7

Paso a paso Run Step Over

F8

Page 6: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 6

Durante la ejecución del programa podemos añadir una variable a la ventana Watches para poder inspeccionar su valor. Basta con que tengamos el cursor de texto dentro del identificador cuya variable queremos inspeccionar y seleccionemos la opción Add Watch... del menú Run (o pulsemos Ctrl+F5). Suponiendo que tenemos el cursor dentro de la palabra gradosFahrenheit, aparecerá el siguiente cuadro de diálogo:

Pulsando OK se insertará la variable en la ventana Watches, junto con su valor actual (¡todavía no se ha inicializado!):

También se puede añadir la variable seleccionando Debug y luego Add Watch at Cursor en el menú contextual que surge con el pulsador derecho del ratón sobre el nombre de la variable.

Se puede anclar la ventana Watches debajo del panel de edición (arrastrándola allí) para poder ver en todo momento los valores que van tomando las variables a medida que se ejecuta paso a paso el programa.

Si se quiere volver a empezar desde el principio la ejecución se puede usar la orden Program Reset del menú Run (o pulsar Ctrl+F2). Se cancelará la ejecución actual, se cerrará la consola y se dejará todo listo para que la siguiente orden de ejecución co-mience por el principio de nuevo.

Puntos de ruptura

Otra alternativa para la ejecución controlada del programa se basa en el uso de pun-tos de ruptura (breakpoint). Un punto de ruptura establece un lugar del programa donde se debe interrumpir (momentáneamente) la ejecución siempre que llegue hasta allí el hilo de ejecución.

Si el punto de ruptura se encuentra en una instrucción de un bucle, la ejecución se in-terrumpirá en cada uno de los ciclos. Si el punto de ruptura se encuentra en una de

Añadir variable a inspeccionar Run Add Watch…

Ctrl+F5

Menú contextual Run Add Watch at Cursor

Ctrl+F5

Reiniciar el programa Run Programa Reset

Ctrl+F2

Page 7: Cpp Builder

Programación orientada a objetos (634) Facultad de Informática UCM C++ Builder — Pág. 7

las ramas de una selección condicional y la ejecución transcurre por la otra rama, el punto de ruptura no se encontrará y no habrá interrupción de la ejecución en ese caso.

Una vez interrumpida la ejecución podremos, por ejemplo, inspeccionar los valores de las variables de la misma forma que en el apartado anterior.

Podemos colocar puntos de ruptura en cualquier línea de cualquier módulo del pro-grama. Para hacerlo basta con que pulsemos sobre el margen izquierdo del editor, a la altura de la línea en la que queremos colocar el punto de ruptura. Surgirá un punto rojo en el margen y la línea afectada por el punto de ruptura también quedará resal-tada en rojo:

Si pulsamos dos veces seguidas sobre el punto rojo, el punto de ruptura se desactiva y desaparece el resalte.

También podemos pulsar F5 con el cursor de texto en la línea que se quiere activar (o desactivar) el punto de ruptura.

Ahora ya sabemos cómo hacer que no se cierre automáticamente la consola al final de la ejecución del programa: evitando que llegue al final. Colocando un punto de ruptura en la última instrucción de todas, en la instrucción return de la función main(). Po-dremos pasar a la consola, ver lo que haya en ella y luego volver al entorno para pro-seguir la ejecución hasta el final pulsando el botón Run. Terminará el programa y se cerrará la consola.

Otra opción que nos podría servir es Run to Cursor, en el menú Run, que hace que se interrumpa la ejecución del programa cuando se llegue a la línea de código en la que se encuentra actualmente el cursor de texto. Si colocamos el cursor en la línea que contiene la instrucción return de la función main(), se interrumpirá la ejecución an-tes de ejecutar dicha instrucción, obteniendo el mismo resultado que en el caso ante-rior (con punto de ruptura).

Configuración del entorno

Con las opciones Environment Options... y Editor Options... del menú Tools se puede configurar la forma de trabajo del compilador, del entorno y del editor. Eso si, tendrás que hacer uso de la ayuda (botón Help) y saber leer textos técnicos en inglés.

Activar o desactivar un punto de ruptura

Pulsar sobre el margen izquierdo

F5

Proseguir con la ejecución

Run Run

F9

Ejecutar hasta el cursor

Run Run to Cursor

F4