Programando con wxDev-C++ Covering using wxDev-C++ for Programming and Debugging Basic C and C++ Programming Using wxWidgets with wxDevC++ Answers Frequently Asked Questions Source Code Available Online By Sof.T y Jaime Gutierrez Copyright (C) 2006 Sof.T This book and associated source code is free published material; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This book and associated source code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this book; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Version No: 0.2.0 Release Date: 18 Octubre 2007 Newest version available from http://sourceforge.net/project/showfiles.php?group_id=173102 Programando con wxDev-C++ “It’s got some quirks but then again don’t we all” NinjaNL Contents La inevitable Introducción • • • • Introducción Historia del wxDev-C++ ¿Para quién es este libro? Agradecimientos Part 1 – C / C++ Programming with wxDev-C++ • • Capítulo 1 – Descarga, Instalación y Actualización de wxDev-C++ o Introducción o Downloading wxDev-C++ o Instalando wxDev-C++ o Actualizar wxDev-C++ o Añadiendo Packages Extras Capítulo 2 – Compilando tu primer programa o Introducción o Abriendo un proyecto existente o Creando tu propio proyecto This Page Intentionally Left Blank (Just to irritate you when you print it out) The Boring Bit La inevitable Introducción. ( la inevitable traducción de la introducción ) La primera pregunta que cualquier niño haría es ¿ Por qué ? Y ésta es una buena pregunta ( Excepto cuando es la tercera vez que la hace ). El sol resplandece, hay miles fuera, entonces por qué estoy encerrado escribiendo este libro. La razón principal es que mucha gente ha preguntado en el wxForum si existe algún libro sobre wxDev-C++. Hasta ahora se han escrito unos pocos tutoriales y por aquí o acullá varios han murmurado acerca de libros. Esto responde la pregunta de por qué yo estoy escribiendo éste libro. Pero no por qué yo estoy escribiendo este libro. Para mi wxDev-C++ es algo muy especial. Todo se remonta a Julio de 1999 ( queue the flashback and misty camera lenses). Usualmente yo revisaba ( compraba ) revistas de computación, una gran ruma de ellas, pero ésta era una especial. Sobre la portada estaba Championship Manager 3, pero siendo yo un tipo geek no me interesaba en ésto. Más bien la tomé por un pequeño recuadro en la esquina que decía “Bloodshed DevC++, Free C and C++ environment”. Un Mundo grandioso y nuevo se habría para mi, el mundo de C y C++ hasta entonces yo sólo había programado en Basic y Visual Basic. También me introdujo en el asombroso mundo del Open Source Software. Figure 0.1 – Dev-C++ circa 1999 Yo fuí de prisa desde el trabajo a casa e instalé este programa, era muy básico y más bien feo, pero no me afectó. Abrí uno de los ejemplos, presioné compilar y fuí saludado con el mensaje “this program could not be compiled”, entonces el IDE (Integrated Development Environment) se cayó. Nuevamente levanté DevC++ y abrí otro ejemplo, esta vez se compiló. Fué una ventana básica con un botón en ella, para mi fué un milagro. Yo pensé, que generoso Colin Laplace, hacer este programa “free” y darlo a conocer. En los años que siguieron continué usando DevC++ y observé su crecimiento desde un programa feo e inestable a un IDE con reminiscencias de Microsoft Visual Studio que satisfascía muchas de mis necesidades. Yo no estoy solo, hoy DevC++ es aún la aplicación de desarrollo más bajada en el sitio SourceForge. Figure 0.2 – DevC++ in a more recent guise No obstante, también he usado otros IDE esta vez de Borland uno llamado C++ Builder. Yo valoro la facilidad para crear GUIs en segundos. Puedo ver su aspecto antes de estar compilados y modificar rápidamente cosas que podrían requerir varias líneas de código para crear y cambiar. Estuve ..I was torn between.. entre DevC++ y C++ Builder hasta que me uní al proyecto llamado “SkinDoc” en SourceForge en 2005. Este proyecto fue encabezado por el programador conocido como Nuklear Zelph y desarrollado usando una aplicación que ( which had slipped past me called ) se deslizaba de mi pasado, wxDev-C++. Básicamente, era un diseñador gráfico construído sobre DevC++. Lo bajé y encontré las respuestas a todos mis deseos en cuanto a programación. Bueno, casi todos, wxDev-C++ es resultado de un gran trabajo; muchos programadores expertos han invertido su tiempo creándolo y continúan mejorándolo. Pero también es una obra en curso, por lo tanto tiene algunas aristas inconclusas. Respecto de otros IDEs es similar y a la vez diferente, tanto que algunas partes pueden ser difíciles para un usuario recién llegado. Dudé hasta que descrubí el tutorial disponible en el sitio de wxDev-C++ y posteriormente el foro wxForum. También, wxDev-C++ sufre de un gran inconveniente. La paradoja de que DevC++ fue escrito en Delphi Pascal. wxDev-C++ continua con esta tradición y por lo tanto el programa desarrollado en el diseñador no siempre hace juego con el programa compilado. Es una muestra de aplicación tipo WYSINAWYG (What You See Is Not Always What You Get), algo de esto mejorará con el tiempo, pero dudo que pueda alcanzar a ser perfecto. Este libro está escrito con mi experiencia, la de otros usuarios de los foros y estoy esperanzado que les sea de utilidad. Algo de esto sin duda estará atrasado tan pronto como wxDev-C++ continue mejorando, pero este libro los reflejará en la medida que crescan juntos. Sof.T Historia del wxDev-C++ En 1983 Richard Stallman hace público el proyecto GNU. Este proyecto aspiraba a proporcionar un sistema operativo ‘free’ con herramientas semejantes a UNIX. Como parte de este proyecto Richard Stallman creó el compilador GCC ampliamente conocido. En 1992 Julian Smart comienza un proyecto llamado wxWindows, que en 2004 pasó a denominarse wxWidgets debido a la presión de Microsoft. Este proyecto fue concebido para obtener una librería GUI multiplataforma y Open Source, que, además, usara los widgets originales de cada sistema. En 1995 Steve Chamberlain comienza el proyecto Cygwin después nota que GCC contiene un gran número de atributos que hacen posible su conversión a Windows. Se unen al proyecto otros programadores y ayudan al crecimiento del Cygwin package. Originalmente una derivación de Cygwin, aparece MinGW (Minimalist GNU for Windows). Este provee las herramientas y las cabeceras Windows para desarrollar la plataforma en Win32. Alrededor de 1999 Colin Laplace libera la primera versión de Dev-C++. Usa el compilador MinGW, que provee un IDE minimalista. Otros desarrolladores se unieron y juntos ayudaron a expandir Dev-C++ en un IDE que rememora a Microsoft’s Visual Studio. Corría el 2003 y Guru Kathiresan crea en Delphi un diseñador gráfico que funciona aislado. Aunque es funcionalmente limitado es posible crear aplicaciones básicas. En 2004 Guru Kathiresan incorpora el diseñador dentro de Dev-C++. La aplicación resultante fue renombrada a wxDev-C++ y se convierte en una herramienta RAD similar a Delphi o Visual Basic. Muchos otros desarrolladores se han unido desde entonces y continúan mejorándolo. Para quién es este libro ? En rigor para que este libro sirva necesitará dirigirse a lectores de un amplio rango. Desde aquellos que nunca han programado en C++ a aquellos que saben pero que nunca han usado wxWidgets, y aquellos que están tranquilos con ambos pero buscan una píldora de información adicional. Este amplio rango de lectores posibles ha influido en la forma de este libro, expertos no querrán esforzarse en un barniz sobre programación en C/C++, y los principiantes no querrán crear GUIs que no hagan nada, porque ellos no pueden hacer código que se ejecute. Como resultado de esto el libro está dividido para permitir al lector ir directamente a la sección de su interés. Sección uno Esta sección trata sobre la instalación de wxDev-C++, crear código en C and C++, y la parte DevC++ de wxDev-C++. Sección dos Esta sección describe como crear GUI usando wxDev-C++. Se interna en wxWidgets y como trabajan juntos. Sección tres La sección final cubre tópicos avanzados, para usuarios que quieran ir más allá que usar los controles estándar. Cada sección termina con una selección de FAQs. Agradecimientos Thanks to Peter James for volunteering to carry out the role of proof-reader. His edits and additions are greatly appreciated and have helped to considerably raise the quality of this book. Malcolm Nealon has also added some valuable improvements, as well as correcting at least one major mistake. Thanks also to the developers of wxDev-C++, especially Joel Low and Tony Reina for the time they have taken to respond to my questions. A special thank you to Jaime Gutierrez for working on a Spanish translation. Part 1 C / C++ Programming with wxDev-C++ Capítulo 1 – Descarga, Instalación y Actualización de wxDev-C++ Introducción Este capítulo está orientado para todos los usuarios. Deliberadamente he extendido las explicaciones para quienes nunca o raramente instalan o desintalan aplicaciones. Los usuarios avanzados podrían irritarse por la cantidad de imágenes y precisión de las instrucciones. Si este es tu caso entonces puedes saltarte esta sección o quizás dar una mirada ligera para informarte de las novedades. Un asunto que muchos han preguntado es si wxDev-C++ está disponible en plataformas distintas a Windows. La respuesta corta es NO. Sin embargo la buena noticia es que cualquier código que hagas con wxDev-C++ puede ser compilado en otras plataformas. Para más información verifica las FAQ al final de esta parte o visita http://wxdsgn.sourceforge.net/faq.php Downloading wxDev-C++ El proyecto wxDev-C++ está hospedado en SourceForge y este es el lugar para bajar la última versión oficial ( Hay otras versiones, pero nos referiremos a la última). Por ahora asegúrate de estar conectado a Internet y abre tu navegador. Conéctate al sitio oficial de wxDev-C++, la URL siguiente http://wxdsgn.sourceforge.net. Figure 1.1 – The Official wxDev-C++ website [Accessed 1/11/2006 at 7:55A.M.] Sobre la barra de navegación de la izquierda verás el vínculo Downloads. Actualmente hay dos vínculos diferentes uno a wxDev-C++ y otro a wxDev-C++ para VC. La primera versión usa sólo el compilador open source Mingw la otra versión puede usar también el compilador Microsoft. Pronto estas versiones serán unidas. Seleccione la opción wxDev-C++ 6.10. Figura 1.2 – Seleccionando una versión de wxDev-C++ Presione sobre el vínculo etiquetado ‘wxDev-C++ 6.10’ entrarás en la página download page de SourceForge. Esta página contiene una lista de sitios espejo desde los cuales puedes bajar el archivo de instalación, Setup. Figura 1.3 – SourceForge download page for wxDev-C++ Ahora escoge un sitio espejo que esté cerca tuyo. Para mí éste es Kent, U.K. A la derecha del nombre del sitio espejo, está un vínculo en color azul etiquetado “Download”. Presiona este vínculo para acceder a la página de descarga del sitio. La página se recargará desde este espejo y la descarga partirá automáticamente. NOTA: En Internet Explorer Windows XP Service pack 2, la descarga puede ser bloqueada, en cuyo caso es necesario presionar sobre el encabezado y seleccionar ‘Allow download from this site’ ( Permitir la descarga desde este sitio ). La siguiente cosa que debes ver es el cuadro de diálogo de descarga. Esto diferirá de un navegador a otro, pero todos deberán contener las mismas funciones básicas descargar el archivo o ejecutarlo. Si tu escoges la opción [Run], el archivo Setup.exe se descargará y ejecutará automáticamente. Si tu escoges [Save] el archivo Setup.exe será salvado en tu computador para que lo ejecutes cuando desees. Presiona cualquiera de los botones, [Run] o [Save]. Figure 1.4 – Internet Explorer’s file download option box Figure 1.5 – Firefox’s file download option box En mi caso escojo [Save] ya que prefiero guardar los archivos Setup a mano por si necesito desintalar o reinstalar en un computador distinto. Figure 1.6 – Choosing a location to save the setup files in. Cualquiera hayas elegido [Run] o [Save] la descarga debe comenzar. Dependiendo de tu conección a internet será el tiempo que demore, puede ser para un café o un simple bostezo. Como se muestra a continuación esta descarga fue de aproximadamente 47.5Mb en Noviembre del 2006) Figure 1.7 – The setup file downloading Instalando wxDev-C++ Cuando el archivo haya sido descargado, si has elegido [Run] el programa de instalación partirá automáticamente, sino necesitarás encontrar el archivo guardado y ejecutarlo con un doble click sobre su nombre. O con el botón derecho del mouse elegir ‘Open’. Figure 1.8 – Running the setup program A continuación verás un cuadro advirtiendo que no debes instalar este programa sobre una instalación existente. Esta es una advertencia importante, mucha gente lo confirma. No atender a estas instrucciones puede terminar en una instalación fallida que se puede ver bien pero te puede dar muchos dolores de cabeza (no muy distinto a una chicha de manzana). Mira más adelante la sección Updating wxDev-C++ para más detalles. Figure 1.9 – The initial warning message from wxDev-C++ setup El próximo cuadro pide seleccionar el lenguaje a usar durante la instalación. Personalmente prefiero el lenguaje por defecto, inglés ya que tengo problemas para comprender cualquier otro. ( N.del T:Debe ser por la libertad que nos tomamos los traductores ;-) Selecciona tu lenguaje y presiona [OK]. Figure 1.10 – Choose a language option dialog La próxima opción marca un cambio respecto de las versiones previas de wxDev-C++. Esta versión ofrece soporte para más que un tipo de compilador, permite elegir el compilador que quieres usar. Marca los compiladores que deseas usar, luego presiona [Next>] Figure 1.11 – Choosing which compilers you wish to use Aunque wxDev-C++ es libre, para usar éste debes aceptar las cláusulas de la licencia. La licencia es la GNU GPL (General Public Licence) Versión 2. Esta puede ser leída completamente o saltársela, para continuar presione [I Agree]. Figure 1.12 – The license agreement dialog El próximo cuadro ofrece la posibilidad de escoger los componentes que deseas instalar, prefiero mantener las opciones por defecto, pero es conveniente recorrer la lista de componentes para tener una idea de que es lo que incluye la “distribución”. El combo box llamado ‘Select the type of install’ entrega tres opciones de instalación full, minimal y custom. Use la instalación mínima si el espacio de disco es prioritario en tu computador. Podrás notar que las dos primeras alternativas están en gris porque son requeridas para instalar algo que funcione. Si usas otro IDE (not that you would) y sólo deseas probar wxDev-C++, entonces sería conveniente desmarcar la opción de asociar tipos de archivos a wxDev-C++. De igual forma, si no haces cambios en esta ventana, ésta es tu última posibilidad de elegir que compilador soportarás y cargar las librerías para ello. Hace tu selección y presiona [Next >] para continuar. Figure 1.13 – The component choice dialog El cuadro siguiente da la opción de elegir donde quieres que wxDev-C++ aparezca en el menú de Inicio, nuevamente es una elección personal, Yo agrupo los programas de tipo similar y modifico esta opción a ‘Programming\wxDevCpp’. Toma tu opción y presiona [Next >] para continuar. Figure 1.14 – Start menu location option dialog El cuadro “Install Location” da la posibilidad de ubicar la carpeta de instalación de wxDev-C++. Hay una por defecto, la que usualmente adopto. Anteriormente la carpeta usada era “C:\Dev-Cpp” debido a que DevCpp no podía manejar espacios en el Path del archivo a compilar. Sin embargo, esto ya no es el caso gracias al duro trabajo de los desarrolladores de wxDev-C++. En consecuencia el valor por defecto es ahora “C:\Program Files\Dev-Cpp”. Esta es una de las muchas mejoras en esta versión. Respira hondo y presiona [Install]. Figure 1.15 – Choose an install location dialog Mientras el siguiente cuadro se llena con los nombres de todos los archivos que están instalándose podrás tomar otra pequeño descanso. Figure 1.16 – File Installation dialog A mitad de camino de la instalación, aparecerá el siguiente cuadro. Si quieres colocar wxDevC++ en el menú de Inicio de todos los usuarios en tu computador entonces presiona [Yes], sino presiona [No]. Yo selecciono [No] ya que los otros usuarios de mi computador no quieren mis enredos en su entorno. Presiona cualquiera [Yes] o [No] para continuar. Figure 1.17 – Install for all users dialog Correrán más archivos. Pronto wxDev-C++ terminará la instalación de todos los archivos necesarios. Ahora click [Next] para continuar. Figure 1.18 – File Installation dialog upon completion Esto continua con los cuadros de Completing Setup. Desmarca el check box etiquetado ‘RunwxDev-C++’ si no quieres que wxDev-C++ se ejecute cuando salgas del wizard. Igualmente desmarca ‘Read Sof.T’s wxDev-C++ Programming Manual’ si no quieres leer este libro. De preferencia marca ‘Run wx-Dev-C++’ al salir y continua con las siguientes instrucciones.Si no haces esto, la próxima vez que ejecutes wxDev-C++ necesitarás completar los siguientes pasos. Presiona [Close] para salir y aplaude fuertemente. Figure 1.19 – The completion of the setup dialog Cuando wxDev-C++ parte por primera vez serás saludado con una advertencia de la versión beta. Esta no estará en versiones posteriores. Leela o no como desees. Presione [OK] para continuar. Es conveniente recordar que los bugs se pueden enviar si encuentras alguno. Este atributo permite la mejora continua de los programas Open Source y entrega algo mejor que hacer que maldecir a los programadores cuando se cae la aplicación. Otro punto relevante es la actualización, que es cubierto en detalle en un capítulo posterior, en la sección ‘Updating wxDev-C++’. Figure 1.20 – The beta dialog Te enfrentas ahora con varias opciones para ajustar tu versión de wxDev-C++. Es el mismo comienzo de la versión estándar de DevC++. Aquí puedes elegir tu lenguaje preferido. Como mencioné antes yo escojo English. También puedes elegir entre 3 diferentes temas de iconos, ( prefiero New Look) y escoger si soportar o no el tema de XP. Haz tu selección personal y click [Next] para continuar. Figure 1.21 – Configuration Dialog Después tienes la opción de habilitar “code completion”. Elige “Yes, I want to use this feature”. El diseñador gráfico en wxDev-C++ descansa sobre el atributo de “code completion” para crear automáticamente eventos para ti. A pesar que “code completion” puede convertirse en un estorbo, también puede ser una gran fuente de información, y ayudar a evitar errores tipográficos. Click on [Next] to continue. Figure 1.21 – Enable code completion dialog La segunda parte del atributo “code completion” pregunta si quieres crear un cache de éste. Básicamente éste busca a través de todos los archivos .h en tus directorios “include” y construye una lista de funciones, etc. Posteriormente cuando programes “code completion” usa este cache para ayudarte, inducirte a completar el código. Selecciona la opción ‘Yes, create the cache now’. Click [Next] to continue. En este punto, a menos que tengas un computador muy rápido, anda a hervir agua y prepara un café. ( N. del T. : Nuestro amigo inglés dejó el té por el café ). Figure 1.22 – Code completion cache creation dialog (try saying that fast) Bebe tu café y continúa esperando. Esto termina con el tiempo te doy mi palabra. Figure 1.23 – Yep still waiting, nearly finished that coffee though Hurra, hemos llegado al cuadro final. Lee o no según desees y presiona [OK] para completar el proceso de instalación. Figure 1.24 – Phew the final dialog Después de una corta pausa el IDE aparecerá, seguido por el tip del día. Actualizar wxDev-C++ Actualizar wxDev-C++ es un procedimiento medianamente simple siempre y cuando recuerdes la advertencia que aparece durante la instalación y que dice ‘Please do not install this version of wxDevC++ over an existing installation’. Para conocedores de windows esto será un procedimiento simple, pero, por si las moscas no estás seguro, aquí está como proceder. Como siempre presiona el botón [Start-Inicio] sobre la barra de Windows. Desde el menú emergente selecciona ‘Panel de Control’. Figure 1.25 – Getting to the Control Panel (Windows 9x) El Panel de Control aparecerá con varias opciones. Necesitas seleccionar Agregar/Remover Programas. Figure 1.26 – Selecting Add/Remove Programs Aparecerá el cuadro de Add/Remove. Dependiendo de cuantos programas tengas instalados en tu computador, tomará unos pocos segundos en llenar la lista. Cuando termine recorre la lista hasta que encuentres wx-devcpp. Selecciona esta opción; cuando esté destacada el botón Add/Remove será activado. Click el botón [Add/Remove] para continuar. Figure 1.27 – The Add/Remove Dialog El próximo cuadro muestra la ubicación de wxDev-C++ y deberás presionar ‘Uninstall’ para continuar. Figure 1.28 – Uninstall dialog Se despliega una lista con los archivos desinstalados. Figure 1.29 – wxDev-C++ being uninstalled. Finalmente los siguientes cuadros emergerán. Si has gastado mucho tiempo en configurar el IDE con tus preferencias, desearás mantener los archivos de configuración. Click el botón [No] para mantener tus archivos de configuración o Click el botón [Yes] para borralos y volver al valor por defecto. Figure 1.30 – Remove configuration files dialog Finalmente, el último cuadro. Ya que personalmente guardo mis proyectos en C:\DEV-CPP, dejo este directorio. Es seguro dejar este directorio para instalar tu nueva versión. O borrarlo, como sea, la decisión es tuya. Figure 1.31 – The final dialog Para instalar la última versión desde el sitio en Sourceforge siga las instrucciones de la sección previa ‘Getting wxDev-C++’. Usuarios Avanzados Para usuarios avanzados existe la opción de probar las versiones de frontera de wxDev-C++ en sus compilados alfa. Estos compilados muestran atributos que pueden formar parte de futuras versiones de wxDev-C++. Hay dos sitios donde están estas pruebas, los de Tony Reina y Joel Low. Ambos son accesibles desde la página principal de wxDev-C++ en “Alpha builds” en la barra de navegación lateral. Figure 1.32 – Link to alpha build of the wxDev-C++ IDE Abajo esta la portada del sitio de Tony. Tony generalmente tiene disponible varias versiones de wxDev-C++. Figure 1.33 – Tony’s wxDev-C++ page Presiona sobre la conexión a wx-devcpp Testers (alpha versions). Este te llevará a la siguiente página. Desearás grabar el devcpp.palette para que este agregue lo último en controles a la paleta de widget en el IDE. Las fechas adjuntas a los archivos te indican cuales son los últimos. Presiona alguno que te interese, sálvalo en el lugar donde instalaste wxDev-C++ ( Este es “C:\Program Files\Dev-Cpp” si aceptaste la ubicación por defecto). Figure 1.34 – Tony’s list of wxDev-C++ versions Cuando se haya terminado la descarga abre la carpeta C:\Dev-Cpp ( o el lugar de instalación ) y renombra devcpp.exe a algo como devcpp.exe.backup. Así quedará disponible para revertir el cambio si la versión nueva queda muy inestable. Ahora busca el archivo que bajaste y renómbralo a devcpp.exe. Ahora puedes ejecutar wxDev-C++ normalmente. La página de Joel en cambio tiene vínculos a versiones alfa solo en binario o “installer packages”. El también enumera varios vínculos a librerías re-compiladas de wxWidgets. En la Web hay disponibles también actualizaciones. Lee la próxima sección para más detalles. Figure 1.35 – Joels’s list of wxDev-C++ versions and packages. La última versión CVS puede ser localizada en http://home.wanadoo.nl/m.nealon/devcppcvs.exe . El que te da otra opción a probar. Añadiendo Packages Extras En algún momento durante el desarrollo de DevC++ alguien decide que sería bueno que los usuarios pudieran añadir las librerías usadas por ellos y actualizar el IDE. La primera versión de este mecanismo de actualización fue denominado VUpdate. Sin embargo, éste fue desechado con el tiempo y DevC++ derivó a un nuevo sistema llamado Web Update. Este permite al usuario descargar nuevas versiones de DevC++ cuando sean lanzadas y descargar también DevPaks. DevPaks son paquetes de archivos que contienen una gran variedad de cosas desde archivos de ayuda hasta bibliotecas adicionales. wxDev-C++ está basado en DevC++ debido a esto se usa el mismo Web Update, pero como consecuencia se tendrá que atender a algunos obstáculos que discutiremos posteriormente. En primer lugar permítanme mostrar como añadir más bibliotecas a nuestra instalación de wxDev-C++. Si wxDev-C++ no está corriendo, iníciala. Desde el menú “Tools” selecciona “Check for Updates/Packages…” Figure 1.36 – Check for updates from the tool menu Este activará la aplicación Web Update. Asegúrate de estar conectado a Internet antes de proceder. En el borde superior del cuadro de diálogo está una listbox etiquetada “Select DevPak server”. Presiona sobre la flecha lateral para desplegar los servidores disponibles ( Actualmente hay tres, solo uno dedicado a wxDev-C++). Selecciona “Dev-C++ primary devpak server”. Figure 1.37 – Selecting a DevPak server Después que hayas seleccionado el servidor: Presiona el botón [Check for updates]. Tras una corta pausa la parte principal del cuadro de diálogo deberá llenarse con una lista de actualizaciones que puedes descargar. La lista indica de izquierda a derecha el nombre de la actualización, el número de versión y, si ya tienes instalado el archivo, el número de versión del archivo instalado. Esto evita que descargues e instales versiones atrasadas. A continuación sigue el tamaño del archivo lo que es oportuno conocer para conexiones de velocidad baja. Finalmente la fecha de creación del archivo te da un punto de referencia sobre si el archivo está al día o no. Marca en la caja al lado del nombre del archivo para seleccionarlo y posteriormente descargarlo. Figure 1.38 – Selecting libraries to download. Toma nota de la advertencia que sigue a continuación.... En este punto todos los archivos con una marca verde a su lado serán descargados. Activa la descarga presionando [Download Selected]. ADVERTENCIA: Recuerda que este sistema se usa para actualizar tanto DevC++ como wxDev-C++. La imagen siguiente muestra una versión nueva de DevC++ que podría ser descargada. No la descargues o perderás la parte de diseño gráfico de DevC++. Pueden aparecer problemas cuando se descargan versiones Alfa de wxDev-C++. Versiones Alfa pueden ser menos estables que tu versión actual o eliminar algunos atributos. Igualmente no descargues bibliotecas de nombre wxWindows, este es el antiguo nombre dado a wxWidgets y te causará un dolor de cabeza. Finalmente se precavido cuando descargues versiones de bibliotecas de wxWidgets compiladas con opciones diferentes o deficientes, podrían dañar una instalación saludable. Es seguro descargar desde el servidor wxDev-C++. Figure 1.39 – Careful not to download updates of DevC++ Cuando hayas terminado de descargar los archivos ellos serán instalados automáticamente como en el caso de WebUpdate Mirrors, o aparecerá el siguiente cuadro informativo. Figure 1.40 – Installing updates dialog Presionando “OK” se inicia la instalación de otra aplicación llamada PackMan. No esta no es una pequeña pelota amarilla con un gran apetito, este es el manejador Devpak. Aquí puedes elegir instalar o cancelar. Lo más frecuente es que quieras instalarlo. Figure 1.41 – Installing the new package. Tienes ahora instalado tu nuevo paquete. Encontrarás que pudo haber añadido nuevos templates a tu menu New > Proyect, nuevos archivos de ayuda o incluso nuevas bibliotecas para jugar ( o trabajar ). Manutención ( en españa ) Mantención ( en latinoámerica ) de los Package Pero, ¿ Qué hacer si deseas remover un paquete que hayas bajado ? O para comprobar que paquetes hay disponibles. Todo es posible dentro de PackMan. Para hacer esto selecciona “Package manager” desde el menú “Tools”. Figure 1.42 – Checking your packages En cuanto PackMan comience listará todos los paquetes disponibles. Cuando tu selecciones alguno, el panel de la izquierda se modificará mostrándote el nombre del paquete, el número de versión, una breve descripción y un sitio Web de referencia. Si presionas sobre el tab contiguo a “General” llamado “Files”, se listarán todos los archivos que contiene el paquete. Figure 1.43 – Controlling your packages También es posible instalar y remover paquetes desde aquí. El procedimiento anterior no es la única forma de instalar nuevos devpacks, se pueden descargar desde varios sitios Web. Para tener una idea de la variedad disponible, escribe “devpack” en tu buscador favorito de internet. Uno de los sitios encontrados será Devpaks.org. Tu puedes recordar este nombre de la lista de sitios de actualizacion Web Update. Devpaks.org es no de los sitios más grandes para encontrar devpaks. Figure 1.44 – The home page for Devpaks.org Los paquetes se listan bajo varias categorías. Es muy factible descargar devpaks desde aquí. Una vez descargado puedes ejecutar el archivo o navegar hasta él y hacer esto con un doble click. Si wxDev-C++ ha sido bien configurado partirá automáticamente la instalación asistida que tu has visto anteriormente. Existen otros pequeños sitios para devpacks de wxDev-C++. Tal como uno mencionado en el foro y que se muestra abajo. Este sitio puede ser ubicado aquí http://mirror.cdhk.de/wx/ Figure 1.45 – Announcement of a new wxDev-C++ devpak site Otros devpaks como los de NinjaNL están disponibles en: http://home.wanadoo.nl/m.nealon/wxWidgets-2.6.2.DevPak http://home.wanadoo.nl/m.nealon/wxWidgets-2.6.2contrib.DevPak http://home.wanadoo.nl/m.nealon/wxWidgets-2.6.2contrib.DevPak Usuarios avanzados ( Advanced Users ) Usuarios avanzados pueden estar interesados en conocer donde se guardan los devpacks que son instalados por PackMan. La respuesta es en el direcorio de instalación de wxDev-C++ en una carpeta llamada packages. Por qué es interesante? Yo uso tres instalaciones diferentes de wxDev-C++, una en mi home computer, una en mi laptop y otra en una máquina virtual vmware de Windows la que uso para pruebas. En vez de descargar e instalar repetidamente los packages, yo instalo un package una vez en mi computador principal y entonces los cargo en las otras máquinas copiando los archivos .devpak y luego uso la opción [Install] en Packman. Figure 1.46 – Local versions of the installed DevPaks Chapter 2 – Compiling your first program Introducción Tan pronto tengas tu nuevo IDE instalado y actualizado como quieras. ¿ Qué hacer con esto? Este capítulo tratará de como abrir proyectos existentes y como crear y guardar tus propios proyectos. En lugar de ahogarte con screenshots este capítulo parte usando ciertas convenciones descritas a continuación. Menús Cuando veas en el texto una linea como File|New|Project significa ir al menú File en la barra de menú en el extremo superior del IDE. Seleccionar “File” presionando sobre él, moverse hacia abajo a la opción “New” y seleccionar “Project” desde el menu emergente. Esto se muestra aquí. Figure 2.1 – Demonstration of File|New|Project Keyboard Shortcuts Cuando veas instrucciones como presionar <Ctrl><F9>, esto significa mantener presionada la tecla “Ctrl” y mientras se mantiene así presionar la tecla “F9”. Hay tres tipos de teclas combinables “Ctrl”, “Shift” y “Alt”. Ambas “Ctrl” y “Alt” se encuentran en la parte baja del teclado. “Shift” se encuentra en los lados izquierdo y derecho del teclado. Las teclas que comienzan con ‘F’ se encuentran en el borde superior del teclado y son conocidas como teclas de Funciones. Para más información acerca de keyboard shortcuts ve el Apéndice 1. Onscreen Buttons Cuando veas instrucciones como presionar [Close], esto significa ubicar en la pantalla el botón con el texto “Close” señalarlo con el puntero del mouse y presionar el botón izquierdo de éste. Esto se muestra en la captura de pantalla siguiente. Abriendo un proyecto existente DevC++, y en consecuencia wxDev-C++, llegan con varios proyectos de ejemplo para compilar y ejecutar ayudándote a aprender. Partiremos abriendo y compilando uno de estos proyectos. Dando por hecho que wxDev-C++ está ejecutándose. Si la ventana con el tip del día está desplegada, ciérrala presionando [Close]. Ahora anda a : File|Open Project or File Esto abrirá el diálogo “Open File”. Dependiendo de donde hayas abierto el último archivo el diálogo mostrará ese directorio. Este diálogo se despliega diferente en otras plataformas no te preocupes si el estilo difiere del mío. Figure 2.2 – The Open File dialog El ejemplo que usaremos está guardado en la carpeta \Dev-Cpp\Examples, necesitas navegar a ella usando la lista en el borde superior ( la que tiene la etiqueta “Look In” ) o usando el ícono “Up One Level” ( subir un nivel ) . (Si tu has instalado wxDev-C++ en la ubicación por defecto entonces la ruta completa es “C:\Program Files\DevCpp\Examples”). Deberás ver la siguiente lista. Figure 2.3 – The examples supplied with DevC++/wxDev-C++ Abre la carpeta “Jackpot” y examina su contenido. Tu verás la siguiente lista de archivos. El que nosotros queremos abrir se llama ‘Jackpot.dev’. Como quieras: ábrelo con doble click o selecciónalo con el botón derecho y presiona [Open]. Figure 2.4 – The selecting a .dev project file El archivo .dev contiene los setting del proyecto. Este incluye cosas como los nombres de los archivos usados en el proyecto, opciones del compilador, números de versión, etc. Después aprenderás como modificar los settings incluídos en este archivo. Ahora que has abierto el archivo .dev retornarás al IDE. El árbol de control en el costado izquierdo mostrará todos los archivos incluídos en este proyecto, siempre que el panel “Project” esté encima. Para este proyecto hay un sólo archivo llamado “main.cpp”. Click sobre 'main.cpp' para abrirlo en el IDE. Figure 2.5 – The list of files included in this project El archivo será abierto en el IDE. Lo que observas ahora es el “Código fuente”. Notarás las diferentes líneas y partes de ellas en distintos colores. Esto se llama “Syntax Highlighting” y permite que con una mirada distingas fácilmente las partes del código fuente. El colorido usado por el resaltador de sintaxis puede ser configurado de acuerdo con tus preferencias, no te preocupes si tus colores son diferentes del mío. Observa la imagen siguiente, verás en la parte superior tres líneas de color verde. Las líneas comienzan con “#” y son conocidas como líneas de “Preprocessor”. Trataremos el “Preprocessor” en detalle más adelante. A continuación verás que ciertas palabras se muestran en bold. Estas son “Reserved Keywords” ( Palabras reservadas ) . Reserved Keywords son palabras que forman parte del lenguaje de programación y no las puedes usar con otro propósito. Notarás también que ellas están todas en minúsculas. C y C++ son lenguajes que distinguen entre mayúsculas y minúsculas, por ejemplo “Save” y “sAve” son diferentes. Partes de líneas comienzan y terminan con ‘ ” ’ se conocen como ‘String constants’ ( texto vernáculo ) y son coloreadas rojo. Las constantes numéricas son mostradas en morado. ( N.del T.: Este es el nombre que aprendí en Kindergarten ) Finalmente las líneas que comienzan con ‘//’ ,o que comienzan con ‘/*’ y finalizan con ‘*/’ se colorean azul. Estas líneas son comentarios. Comentarios son aquí para ayudar a comprender el código fuente a tí y a otros lectores humanos ( o humanoides ). El compilador no toma en cuenta los comentarios, así úsalos para aquello que creas necesario. Cuando retomes un trozo de código espinudo dentro de un año, unos comentarios bien ubicados determinarán cuanto tiempo demorarás en comprender el código. Figure 2.6 – Syntax highlighted source code. No queremos ocupar el tiempo tratando que ahora comprendas que significa todo esto, porque es tiempo de compilar tu primer programa. Compilar significa traspasar el código leible ( Yo prometo que estarás capacitado para esto después ) a un programa llamado “compiler”. El compilador entonces lo traduce en código binario, comprensible para el computador. Una vez que el programa ha terminado la compilación, respondiendo que no ha encontrado errores en él ( Ver Debugging con wxDev-C++), puedes echarlo a correr. Hay varias formas de compilar un programa la más rápida es presionar <Ctrl><F9> ( Ver la introducción para más detalles). Alternativamente puedes usar el menú Execute|Compile o presionar el botón compilar de la barra de herramientas. Figure 2.7 – The compile button A continuación aparecerá el cuadro de diálogo.Dependiendo del tamaño de tu proyecto esta parte tomará un tiempo, pero para este programa sólo tomará un segundo. Cuando el compilador haya terminado el botón [Cancel] cambiará a [Close]. Presiona sobre el botón [Close]. Figure 2.8 – Compiling. Estas de vuelta en el IDE, ¿ Qué ocurrió ? ¿ Dónde está tu nuevo programa ? No os preocupeis, hemos sólo construído el programa, ahora necesitamos ejecutarlo. Esto puede hacerse desde dentro del IDE. Una vez más tienes varias opciones: Presionar el atajo del teclado <Ctrl><F10> ( reduce la tendinitis ). O seleccionar 'Run' desde el menú Execute|Run. O usar el botón [Run] desde la barra de herramientas. Figure 2.9 – Running the program Hey presto, tu programa nuevo está arriba y corriendo. Juega con él por un momento. El objetivo del juego es acertar al número que el computador ha elegido entre 0 y 30. Cuando te hayas aburrido presiona una tecla y a continuación <Enter> para salir del programa. Figure 2.10 – The jackpot game Hasta acá está todo bien, pero, ¿ no podría ser esto más amigable compilar y ejecutar el programa todo en uno ? Bueno no seas tan flojo ☺. Pero en caso de que tú lo seas y todos los buenos programadores son flojos ( realmente es justo ahorrar tiempo cuando las tareas son repetitivas), puedes compilar y ejecutar tu programa usando uno de los siguientes métodos: Presionar <F9>. Usar Execute|Compile & Run desde el menú principal. Presionar el botón Compile & Run en la barra de herramientas. Figure 2.11 – Compiling and running in one step Felicitaciones has aprendido no sólo a abrir proyectos, también a compilarlos y ejecutarlos en un paso doblando tu productividad. (For the male audience, who said ‘Men can’t do two things at once?’). Creando tu propio proyecto Si has terminado de jugar Jackpot y estás listo para continuar. Este capítulo se llamó Compilando Tu Primer Programa. Tu has compilado un programa, pero no es tuyo, nos ha permitido actuar y hacer esto. Hay dos formas de crear un nuevo proyecto: Desde el menú seleccionar File|New|Project. O desde el toolbar, seleccionar el botón ‘New Project’. Figure 2.12 – The new project toolbar button Ambos métodos llevan al cuadro de diálogo New Project. Dependerá de que packages hayas instalado en tu sistema la apariencia que éste tome. Tú puedes tener más o menos tabs y más o menos opciones en cada tab. Figure 2.13 – The new project dialog. Entre las opciones visibles en este tab estará ‘Console Application’. Si tienes muchas opciones aquí, puedes necesitar desplazar la ventana hasta encontrarla. Clickéa sobre el ícono 'Console Application'. La ventana etiquetada “Description:” cambiará para darte una descripción básica de este tipo de proyecto. En este caso dirá “A console application (MSDOS window)”. La otra opción mostrada es el nombre del proyecto. Escribe “MyHelloWorld” en el campo “name”. Deja las otras opciones como están y presiona [OK]. Figure 2.14 – How the New Project dialog should look Si tú ya tienes abierto un proyecto aparecerá un mensaje preguntando si tu quieres realmente cerrar ese proyecto y comenzar uno nuevo. Seleccione “Yes”. Si tienes archivos modificados y no guardados serás conminado a guardarlos. A continuación serás enfrentado con el diálogo que te preguntará donde guardar los archivos del proyecto. Personalmente yo navego hasta c:\Dev-Cpp y aquí creo una carpeta nueva llamada Projects (si aún no existe ) mediante un click sobre el boton [Create New Folder]. Figure 2.15 – Creating a new folder Se creará una carpeta nueva y podrás editar el nombre. Cambia el nombre de la carpeta a “Projects”, esta carpeta será nuestro principal almacen para todos nuestros proyectos. Ingrese a la carpeta “Projects” con un doble click sobre el nombre de ésta. Crea otra carpeta, esta vez llamada “MyHelloWorld”. ( Por seguridad no dejes ningún espacio en el nombre ya que Dev-C++ supuestamente tiene problemas con ellos en los nombres.) Figure 2.16 El nombre de archivo es completado nuevamente con el nombre que elejiste para el proyecto, en este caso “MyHelloWorld.dev” entonces presiona “Save”. El proyecto será guardado y el IDE desplegará un código fuente básico como el que sigue: #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { system("PAUSE"); return EXIT_SUCCESS; } Nuevamente no entraremos en detalles acerca de que significa todo esto, lo que trataremos en los próximos 2 capítulos. En cambio alteraremos el código fuente como sigue, asegúrate de cambiar las constantes string ( texto en rojo ) a tus propios textos. #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { //Change the text Your name goes here to your name cout << "Hello my name is: " << "Your name goes here" << endl; //You can change the text between the quotes to describe yourself by day cout << "Mild mannered reporter by day" << endl; //You can change the lines between the quotes to describe your super self cout << "Caped crusader by night" << endl; //This line pauses the program, try putting // in front of it to see what //happens system("PAUSE"); //This line says that the program has terminated normally, ie not crashed return EXIT_SUCCESS; } Presiona <F9> para compilar y ejecutar tu primer programa. Un diálogo emergente te consultará para guardar el código fuente. Comprueba que el directorio mostrado en el borde superior próximo a la etiqueta “Save in:” es nuestro directorio de proyecto, en este caso, “MyHelloWorld”. wxDev-C++ titulará automáticamente el código fuente como “main.cpp”. La extensión “.cpp” comunica al compilador y nosotros que éste es un archivo de código fuente C++, no C o cualesquier otro lenguaje. Puedes cambiar el nombre pero no la estensión, si deseas, pero dejaré este como está y presionaré el botón [Save]. Inmediatamente el compilador partirá y un segundo más tarde se ejecutará el programa. Si haces los cambios sugeridos estos se desplegarán en la pantalla. Figure 2.17 – Output from MyHelloWorld program. Felicítate, has escrito y compilado exitosamente tu primer programa. Bienvenido a la categoría de programador en C++. Pero para llegar a ser más avezado studia los próximos dos capítulos.