viernes, 28 de diciembre de 2007
15. Paradigma Orientado a Objetos
http://www.paginasprodigy.com.mx/sanluga/PARADIGMA_OO_2_0.doc
Después de revisar estos conceptos entonces sugiero comenzar a revisar los siguientes ejercicios enfocados a reforzar y aumentar el conocimiento sobre el paradigma:
1. Diseñando Clases
2. Controlando el acceso a las Clases
3. Creando propiedades y métodos estáticos
4. Sobrecarga de operadores
5. Herencia
6. Clases Abstractas
7. Creando interfases
8. Delegados
viernes, 21 de diciembre de 2007
14. Clase ArrayList
La clase ArrayList nos permitirá realizar este tipo de operaciones además de otras y de forma mucho más amigable, por lo que generalmente este objeto es muy utilizado para implementar arreglos mucho más poderosos, incluso a partir del punto 6 se muestra algunas técnicas avanzadas que nos permiten utilizar ArrayList con Arreglos managed.
1. Declarando e inicializando ArrayList unidimensionales de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist1.txt
2. Accesando a los elementos de un ArrayList unidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist2.txt
3. Operación de búsqueda en un ArrayList unidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist3.txt
4. Eliminando valores de un ArrayList unidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist4.txt
5. Operaciones utiles de un ArrayList
http://www.paginasprodigy.com.mx/sanluga/arraylist5.txt
6. Declarando e inicializando ArrayList bidimensionales de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist6.txt
7. Accesando a los elementos de un ArrayList bidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist7.txt
8. Operación de búsqueda en un ArrayList bidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist8.txt
9. Eliminando valores de un ArrayList bidimensional de longitud variable
http://www.paginasprodigy.com.mx/sanluga/arraylist9.txt
jueves, 20 de diciembre de 2007
13. Arreglos managed
Nativos: Son aquellos que soliamos utilizar en C/C++ y que iniciabamos con alguna declaración como esta:
Managed: Son aquellos que son administrados por el CLR y que cuentan con las facilidades descritas en el apartado de código managed.
array
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2320388&SiteID=1
Bien pues, como lo apunte desde el inicio, nos vamos a centrar en managed mode así bien todos los ejemplos que siguen tienen un enfoque de arreglos administrados y ojo, debes tener mucho cuidado con los ejemplos que llegues a encontrar en Internet puesto que muchos utilizan sintaxis promovidas en frameworks anteriores, así bien, la sintaxis que presento en este taller, al menos en este punto funciona para Visual Studio 2008, es decir .NET 3.5, si Microsoft llega a sacar otro framework deberíamos revisar que sirve y que de plano ya descontinuo (si, ese es el relajo). En fin vamos a revisar los ejemplos:
1. Declaración e inicialización de un Arreglo unidimensional y de longitud fija
http://www.paginasprodigy.com.mx/sanluga/arreglo1.txt
2. Accesando a los elementos miembro de un arreglo unidimensional y de longitud fija
http://www.paginasprodigy.com.mx/sanluga/arreglo2.txt
3. Operaciones Utiles en los arreglos unidimensionales de longitud fija
4. Declarando arreglos bidimensionales de longitud fija
http://www.paginasprodigy.com.mx/sanluga/arreglo4.txt
5. Accesando elementos en un arreglo bidimensional de longitud fija
http://www.paginasprodigy.com.mx/sanluga/arreglo5.txt
6. Creando arreglos bidimensionales "dentados"
miércoles, 19 de diciembre de 2007
12. Apuntadores
Así pues, este tema puedes verlo como opcional pero que a final de cuentas te permitirá comprender algunos de los códigos más complejos. A continuación les comparto un artículo que escribí hace ya algunos años y que aunque no es managed sus conceptos continuan vigentes y que seguramente te servirá de base para comenzar a comprender el comportamiento de los apuntadores y su relación intríseca con los arreglos.
http://www.paginasprodigy.com.mx/sanluga/pointers.pdf
Los ejercicios presentados en el artículo pueden ser ejecutados dentro de VC++ 2008 Express como nuevo proyecto general y seleccionando un Empty Project. Ojo, lo vuelvo a repetir, este código no .NET sino más bien lenguaje C general:
El siguiente código, lo compile con este método, obtengo algunos warnings pero se ejecuta bien, intentalo.
http://www.paginasprodigy.com.mx/sanluga/apunta.txt
11. Funciones
Hasta ahora en todos los ejemplos que se han desarrollado, todo el código va dentro del bloque main(), sin embargo para programas más complejos generalmente se divide el codigo en bloques que permiten darle una estructura lógica a nuestro programa.
Las funciones son la unidad básica de construcción en la programación estructurada y debemos revisar algunos conceptos importantes:
1. Paso de argumentos por valor y por referencia
http://www.paginasprodigy.com.mx/sanluga/funcion1.txt
2. Funciones recursivas
http://www.paginasprodigy.com.mx/sanluga/funcion2.txt
martes, 18 de diciembre de 2007
10. Estructuras de Control
Explicación del if
http://www.cprogramming.com/tutorial/lesson2.html
Explicación del switch
http://www.cprogramming.com/tutorial/lesson5.html
Explicación del for y while
http://www.cprogramming.com/tutorial/lesson3.html
Algo sobre el bloque try...catch
http://support.microsoft.com/kb/815662/es
miércoles, 12 de diciembre de 2007
9. Declaración de variables
El .NET Common Language Infraestructure (CLI) hace posible escribir codigo en diferentes lenguajes. El termino CLI-Compliant significa que el código cumple con los requerimientos .NET por lo que permite su interoperatividad. Para mayor información sugiero leer la siguiente liga:
http://decsai.ugr.es/~cb/CSharp/languaje/data.xml
A continuación pongo algunos ejemplos que involucran los tipos de datos que podemos encontrar en System.dll así como alguna de la funcionalidad más interesante. Recomiendo que examinen el código pero que revisen las los links que se recomiendan para obtener mayor profundidad en temas muy particulares y que son de gran utilidad a la hora de comprender el funcionamiento de VC++.
TIP: Cuando no recuerdes a ciencia cierta que tipo de datos requieras puedes comenzar con el namespace System seguido del operador de resolución de ámbito :: e inmediatamente el mecanismo IntelliSense incorporado a VC++ te mostrará el contenido con lo cual puedes navegar para buscar el tipo que no recuerdas.
Ejemplo 1. Declaración de un Int32:
http://www.paginasprodigy.com.mx/sanluga/tipos1.txt
Ejemplo 2. Declaración de una referencia tipo managed heap (^) .
http://www.paginasprodigy.com.mx/sanluga/tipos2.txt
Ejemplo 3. Entrada de datos desde consola
http://www.paginasprodigy.com.mx/sanluga/tipos3.txt
Ejemplo 4. Datos Booleanos (muestra el boxing implicito)
http://www.paginasprodigy.com.mx/sanluga/tipos4.txt
Ejemplo 5. Datos Byte
http://www.paginasprodigy.com.mx/sanluga/tipos5.txt
Ejemplo 6. Datos Char
http://www.paginasprodigy.com.mx/sanluga/tipos6.txt
Ejemplo 7. Datos Enteros
http://www.paginasprodigy.com.mx/sanluga/tipos7.txt
Ejemplo 8. Datos en Punto Flotante
http://www.paginasprodigy.com.mx/sanluga/tipos8.txt
Ejemplo 9. Datos decimales
http://www.paginasprodigy.com.mx/sanluga/tipos9.txt
Ejemplo 10. Datos Fecha y Hora
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
1. Introducción
Finalmente, Microsoft anuncia un cambio de estrategia y a todo le pone el "punto NET". Así, recapitulando, tenemos que hacernos expertos en C/C++, API de Windows, paradigma OO y ahora expertos en CLR. A pesar de que C# es el lenguaje insignia de Microsoft .NET muchos aun reconocemos el poder de C++ en lenguajes escritos para MS Windows. Así bien este taller se trata sobre como aprender VC++ .NET aunque en el camino quizá también aprendamos mucho sobre VB.NET y de C#.
Como primer actividad y como es de suponerse debemos contar con VC++.NET. Al momento que escribo estas lineas se ha liberado Visual Studio Express 2008, y lo puedes descargar en forma gratuita en el site de Microsoft. La direccion de donde lo pueden bajar es:
http://www.microsoft.com/express/download/
Puedes bajar un solo producto o un archivo ISO para quemar un DVD con todos los productos. Esto es particularmente util si lo quieres instalar una y otra vez. Así bien, lo descargan lo instalan y mañana nos vemos para comenzar con el taller.
Saludos
Luis Sanchez