miércoles, 12 de diciembre de 2007
8. Un programa en Windows
viernes, 7 de diciembre de 2007
7. Mi primer programa
Más que ir dictando pasos creo que lo importante es que vayan intentando hacer ciertas actividades por ustedes mismos y solo enfatizar en aspectos muy puntuales. Así bien. El primer ejercicio consiste en:
1. Crea una solución llamada TallerVCPP y un proyecto (tipo CLR Empty Project) llamado consola
2. Se agrega al proyecto un archivo C++ File (.cpp) llamado HolaMundo.cpp
3. Se introduce el siguiente código
http://www.paginasprodigy.com.mx/sanluga/HolaMundo.txt
4. Compilar y ejecutar y verificar que el programita funciona.
5. Grabar el programa
Las aplicaciones de consola son muy útiles sobre todo cuando estamos comenzando con esto de la programación C/C++ pues es un desarrollo más o menos simple en el cual nos centramos en la funcionalidad más que la interfase con Windows. Así pues muchos de los programas de ejemplo de un libro de texto en C/C++ pueden ser trasladados con algunos ajustes a modo Consola.
Una pregunta importante:
¿Porque llamamos al método WriteLine así: Console::WriteLine("x"); y no así: Console.WriteLine("x"); como se supone que nos enseñaron nuestros profes de C/C++?
La respuesta aquí: http://support.microsoft.com/kb/815704/en-us
6. Pre requisitos
SUGERENCIA #2: El nombre de los ejemplos solo da una pista del ejercicio sin embargo pon mucha atención a los comentarios puesto que en un código se revisan diversos conceptos y que no necesariamente tienen que ver con el tema tratado.
Antes de comenzar a programar te sugiero que tengas a la mano algunos libros o links a la mano. Puedes utilizar cualquier herramienta de búsqueda lo importante es que tengas algo sobre:
1. Lenguaje C/C++
2. Windows API Programming
3. Referencia sobre las librerias del CLR
Esto es lo básico, más adelante vamos a necesitar algunos otros sobre:
4. Bases de datos (ADO.NET)
5. Paradigma Orientado a Objetos
6. WinForms
7. XML, SOAP, ...
mmmm, supongo que esto es suficiente por ahora, sin embargo durante el taller les iré dando algunas opciones dependiendo del tema. Quizá encuentres mucho material que quiza no sea de lo mejor pero generalmente pongo links que creo que son representativos para que se den una idea más clara de los conceptos.
Pues manos a la obra.
jueves, 6 de diciembre de 2007
5. Managed o Unmanaged
En Visual C++ .NET puedes escribir dos tipos de código, Administrado (Managed Mode) o NO Administrado (Unmanaged Mode). ¿Cuál es la diferencia?
Todo aquel código que se basa en el CLR es Managed, es decir cuando todo tu código se apega a los mecanismos del CLR entonces tu código va a gozar de todos los beneficios que .NET brinda como recolección de basura, uso de clases estándares para cualquier lenguaje, seguridad entre muchas otros.
Entonces podemos pensar que el Managed mode es finalmente la dirección pero para qué entonces sirve programar en Unmanaged Mode. Bueno, en realidad yo veo dos posibles respuestas (claro que pueden haber más), una de ellas es que es una visión natural de .NET, todo lo que no es .NET entonces se convierte en NO DOTNET o lo que es lo mismo Unmanaged, así para que un proyecto .NET pueda convivir con un proyecto anterior debe saber tratar proyectos Unmanaged. La otra es porqué considero que el Unmanaged mode debe ser mucho más poderoso que el Managed para hacer algunas cosas que solo se puede hacer desde afuera, como modificar el CLR por ejemplo. Creo que el Unmanaged mode va a pasar a ser una especie de lenguaje ensamblador, es decir un As bajo la manga. Cuando algo no se pueda hacer en CLR (aunque esto para Microsoft parece difícil de creer), podemos siempre recurrir al Unmanaged Mode y brincarnos a .NET. Supongo que debería estar bien justificado antes de meterte en líos… En fin.
Así bien, en este taller me voy a enfocar en el managed mode, por lo que me voy a orientar a enseñarles a utilizar VC++ pero siempre basado en CLR. Considero que es un muy buen inicio.
Finalmente dos cosas: La primera: les recomiendo un tutorial (muy bueno por cierto) sobre CLR que explica muchas cosas que aquí no he explicado a profundidad.
http://www.theserverside.net/tt/articles/showarticle.tss?id=DM_CLR
La segunda, si estas interesado en utilizar mixed-mode (es decir manager y unmanaged al mismo tiempo) puedes consultar el foro http://www.thescripts.com/forum/thread263218.html en donde se tratan algunas inquietudes sobre el mismo. Como podrás ver, transparente no es, pero si quieres que tus aplicaciones .NET platiquen con las anteriores creo que no queda de otra.
Saludos… Luis Sánchez
4. Proyectos y Soluciones
Como ya lo habrá imaginado una solución no es más que un conjunto de proyectos generalmente interrelacionados entre sí. Pero cuál es la utilidad de una solución, ¿para qué tener dos o más proyectos dentro de una solución?. En realidad existen muchos escenarios que justifican esta respuesta y todos tienen que ver con la capacidad de tener un proyecto principal que se auxilia de otros proyectos que pueden estar produciendo quizá más código ejecutable o incluso librerías. Es posible por ejemplo, ir construyendo librerías DLL y al mismo tiempo probarlas en un entorno similar al de producción. Algunas otras veces puede ser cuestión de arquitectura, por ejemplo es posible dividir tu aplicación en three tier (*) y poder probar los cambios en cada capa. Como puedes observar las posibilidades son interesantes.
Abre Visual C++ y selecciona en el menú File la opción New y luego Project… como es de esperar aparece el siguiente cuadro de dialogo:

Nota que delante del cuadro de texto donde se introduce el nombre de la solución existe una casilla que dice: “Create directory for solution”, generalmente esta marcada pero si la desmarcas, le indicas a Visual Studio que no requieres de una solución que más bien es un solo proyecto y que donde le dices que grabe ahí mero te va a grabar todos los archivos, así que si vas a utilizar esta opción mejor creas un directorio para que al rato no se vuelva un relajo.

Como ejercicio, abre Visual C++ y crea dos proyectos (de tipo CLR Console Application Project), uno llamado MiPrueba y el otro llamado Nuevo, los dos dentro de la solución MiSolucion (recuerda, sin acentos).
Revisa la imagen y podrás identificar que el nombre del proyecto “MiPrueba” esta en negritas, esto es porque es el proyecto que arranca por defecto. Puedes cambiar el proyecto que arranca accediendo a las propiedades de la solución mediante el menú Project y la (última) opción Properties.

En este dialogo también podemos observar que es posible realizar un arranque múltiple de proyectos.
En fin… es bueno conocer algunas de estas opciones y sobre todo identificar que aunque muchas de estas están orientadas a administrar los proyectos, también, existen opciones para administrar soluciones y que debemos de conocer si queremos programar algunas aplicaciones más avanzadas.
Saludos… Luis Sánchez
(*) Para más acerca de arquitecturas 3 tier o de 3 capas puedes buscar en Internet, a continuación te pongo una de las ligas que encontré y que parece interesante. http://www.sei.cmu.edu/str/descriptions/threetier.html
miércoles, 5 de diciembre de 2007
3. Configurando el IDE
Ejecuta Microsoft Visual C++ 2008 Express Edition, selecciona el menú Tools y la opción Options… (¿observas los puntos suspensivos después de la palabra Options?, en el estándar de las interfaces de Windows nos indica que al seleccionarla nos va a mostrar un cuadro de dialogo).
En el cuadro de dialogo expande la opción TextEditor y selecciona la en la lista la opción C/C++. La primera modificación que vamos a hacer es activar la casilla “Line numbers” en la sección Display, como se muestra en la imagen.

En versiones anteriores las Keyword aparecían en un azúl Navy, que en realidad no me gustaba así que lo cambiaba por rojo o algún color más brillante, en esta versión el color de los Keywords viene de color Blue (brillante). Si quieres modificar algún color o necesitas que la fuente del código sea más grande puedes utilizar las opciones que se presentan en Environment y Fonts and Colors.
Presiona el botón OK en el dialogo y una vez que se cierra vamos a seleccionar en el menú Tools ahora la opción Customize. En este punto vamos a agregar el ToolBar Build, nota que en cuanto seleccionas el ToolBar aparece en la pantalla. Ahora, de la pestaña Commands arrastra la opción Compile hasta el Toolbar Build. Finalmente búscale un lugar apropiado a la nueva barra de herramientas.

Por ahora es lo único que vamos a hacer después cuando desarrolles más verás que existen muchas formas de personalizar el IDE de C++ y que nos permite hacer más cómodo el desarrollo de sistemas.
2. Instalación y registro
Las instalaciones son automáticas y te darás cuenta de que incluye las nuevas versiones para componentes como el .NET Framework que ya incluye la 3.5, además de componentes como el SQL Server Compact el cual es un motor de base de datos para dispositivos móviles.
Lo único que se requiere en este punto es paciencia. Una vez instalados los componentes que elijas, te recomiendo que los registres. Entras a cada entorno de desarrollo y en el menú de ayuda seleccionas la opción registrar.

Para registrar el producto necesitas una cuenta registrada en passport (Hotmail). Es recomendable este paso puesto que no te deja actualizar tus versiones a menos que te encuentres registrado.
Otro punto importante a considerar y que, adivinaron, requiere paciencia, es la descarga del Microsoft SQL Server 2005 Management Studio Express Edition el cual permite administrar las bases de datos de manera más amable. Son cerca de 40 MB pero vale la pena la espera. Este componente lo puedes descargar desde:
http://www.microsoft.com/downloads/details.aspx?FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=es#filelist
Finalmente y para que se diviertan un poco, recomiendo que al menos tengas la base de datos de AdventureWorks en tu consola de SQL. La puedes bajar de:
http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004,
Asegúrate de que utilizas esta liga, porque con algunas otras versiones obtienes error al instalar.
Listo!, ahora si estamos listos para comenzar...
Saludos
Luis Sanchez