Curso de C#
Introducción
Este va a ser el inicio de un curso de C# que espero que podamos llevarlo hasta el final y que pueda servir de algo a todos.
Pretendo que este curso sirva a cualquiera que quiera aprender este lenguaje de programación a poder hacer sus propias aplicaciones, independientemente de los conocimientos que tenga de informática.
Este curso pretende enseñar desde lo más básico hasta lo más complicado, eso sí limitándonos al lenguaje en sí sin entrar en profundidad en librerías añadidas para cometidos concretos, habrá algunos casos en los que haya que entrar un poco más en ciertos aspectos por ser de uso mas común.
Podríamos decir que va ser un curso para principiantes, o sea todo se explicara de la manera más sencilla posible y en el caso de que no se pueda se machacara bastante ese tema para que pueda comprenderse.
Bueno vamos a empezar con lo que importa.
Echemos un vistazo al Framework
El .NET Framework es un conjunto de componentes que están integrados en el propio sistema operativo, según estos van avanzando en sus versiones van integrando el .NET Framework cada vez mas de forma nativa.
.NET Framework incluye un sistema de ejecución virtual denominado Common Language Runtime (a partir de ahora CLR), además está compuesto por un conjunto unificado de clases y componentes. CLE es la implementación realizada por Microsoft de la Common Language Infrastructure (CLI), norma internacional que constituye la base para crear entornos de ejecución y desarrollo independientes del lenguaje y la plataforma.
Todos los lenguajes que se pueden utilizar con el .NET Framework (C#, Visual Basic .NET, Fortran, J#, F#, COBOL, etc.) se compilan en un lenguaje intermedio conforme a la especificación CLI. Todo este código generado en el lenguaje que prefiramos y recursos, como imágenes o cadenas de texto, se almacenan en un archivo al que se denomina ensamblado y que puede se un archivo ejecutable (.exe) o una librería (.dll). Dichos ensamblados contienen un manifiesto que proporciona información sobre los tipos, la versión, la referencia cultural y los requisitos de seguridad del ensamblado.
Cuando se ejecuta un programa .NET el ensamblado se carga en CLR, con lo que se pueden realizar diversas acciones en función de la información del manifiesto. A continuación, si se cumplen los requisitos de seguridad, CLR realiza una compilación Just In Time (JIT) para convertir el código de lenguaje intermedio en codigo máquina nativo. CLR también proporciona otros servicios relacionados con la recolección automática de elementos no utilizados, el control de excepciones y la administración de recursos. El código ejecutado por CLR se denomina algunas veces "código administrado", en contraposición al "código no administrado" que se compila en lenguaje máquina nativo destinado a un sistema específico. En el diagrama siguiente se muestran las relaciones en tiempo de compilación y tiempo de ejecución de los archivos de código fuente de C#, las bibliotecas de clases de .NET Framework, los ensamblados y CLR.
Diagrama extraido de la pagina de Microsoft.
La interoperabilidad del lenguaje es una característica clave de .NET Framework. Como el código de lenguaje intermedio generado por el compilador de C# cumple la especificación de tipos común (CTS), este código generado en C# puede interactuar con el código generado en las versiones .NET de Visual Basic, Visual C++, Visual J# o cualquiera de los más de 20 lenguajes conformes con CTS. Un único ensamblado puede contener varios módulos escritos en diferentes lenguajes .NET, y los tipos admiten referencias entre sí como si estuvieran escritos en el mismo lenguaje.
Además de los servicios en tiempo de ejecución, .NET Framework también incluye una amplia biblioteca de más de 4.000 clases organizadas en espacios de nombres que proporcionan una gran variedad de funciones útiles para la entrada y salida de archivos, la manipulación de cadenas, el análisis XML, los controles de los formularios Windows Forms y muchas tareas más. La aplicación de C# típica utiliza continuamente la biblioteca de clases de .NET Framework para el tratamiento de las tareas comunes de "infraestructura".
Pongamos manos a la obra
Vamos a ver como generamos nuestro primer proyecto y como se ejecuta para ver el resultado. Mas adelante ya profundizaremos más en la estructura generada en el proyecto y en los distintos archivos que lo forman.
Para poder empezar debemos disponer de Visual Studio en cualquiera de sus versiones, pero a ser posible vamos a usar la última versión que Microsoft a liberado: Visual Studio 2010. Quien ya tenga una versión instalada puede usar esa si quiere, el que no puede descargar la versión Express del producto la cual es gratuita. Esta versión del Visual Studio puede descargarse desde la siguiente dirección:
http://www.microsoft.com/express/Downloads/
La versión 2010 en el momento de escribir esto solamente estaba disponible en Ingles, aquellos que no se apañen bien con el idioma puede descargar en la misma página la versión 2008 la cual si esta en castellano.
Si alguien tiene problemas instalando el producto lo único que hay que hacer es consultar en google y se pueden encontrar multitud de ayudas para la instalación del Visual Studio.
Una vez instalado, lo ejecutamos, veremos la siguiente pantalla:
Pulsamos sobre la opción de nuevo proyecto, esto nos mostrar una ventana en la que podemos seleccionar entre los distintos tipos de proyecto que nos permite Visual Studio. Seleccionamos el tipo “Aplicación de Consola”, escribimos un nombre de proyecto en la caja de texto correspondiente (“Name” ó “Nombre”), para este ejercicio pondremos “ConsolaPruebas” y pulsaremos el botón “OK”.
Tras esto se generara el proyecto y podremos ver en la ventana el archivo program.cs abierto, en la parte de la derecha vemos el explorador de la solución con los archivos generados para este proyecto.
Haremos una pequeña modificación para que esto no sea solo mirar y no tocar. Tenemos el método main, entre los signos que los limitan ({ }) vamos a escribir lo siguiente:
La primera línea (Console.WriteLine) escribe un mensaje en la consola que se arranca, la segunda línea espera a que pulsemos una tecla cualquiera para terminar la ejecución del programa.
Veremos el mensaje que hemos escrito en la consola y esta se quedara esperando a que pulsemos una tecla, momento en el que finalizara.
Conclusiones
Con esto concluimos este capitulo, hemos visto por encima un poco sobre como esta formado el .NET Framework.
Adema hemos generado nuestro primer proyecto le hemos añadido algo de codigo y lo hemos compilado y ejecutado.
Mas adelante profundizaremos mas sobre la estructura del proyecto y el codigo y analizaremos un poco mas todo lo que se genera con cada nuevo proyecto.
Espero que todo esto sirva a alguno para aprender un poquillo. Como no me tengo por ningun genio admito todo tipo de comentarios y respondere a dudas o corregire los articulos ante cualquier sugerencia.
Hasta el proximo capitulo.
Introducción
Este va a ser el inicio de un curso de C# que espero que podamos llevarlo hasta el final y que pueda servir de algo a todos.
Pretendo que este curso sirva a cualquiera que quiera aprender este lenguaje de programación a poder hacer sus propias aplicaciones, independientemente de los conocimientos que tenga de informática.
Este curso pretende enseñar desde lo más básico hasta lo más complicado, eso sí limitándonos al lenguaje en sí sin entrar en profundidad en librerías añadidas para cometidos concretos, habrá algunos casos en los que haya que entrar un poco más en ciertos aspectos por ser de uso mas común.
Podríamos decir que va ser un curso para principiantes, o sea todo se explicara de la manera más sencilla posible y en el caso de que no se pueda se machacara bastante ese tema para que pueda comprenderse.
Bueno vamos a empezar con lo que importa.
Echemos un vistazo al Framework
El .NET Framework es un conjunto de componentes que están integrados en el propio sistema operativo, según estos van avanzando en sus versiones van integrando el .NET Framework cada vez mas de forma nativa.
.NET Framework incluye un sistema de ejecución virtual denominado Common Language Runtime (a partir de ahora CLR), además está compuesto por un conjunto unificado de clases y componentes. CLE es la implementación realizada por Microsoft de la Common Language Infrastructure (CLI), norma internacional que constituye la base para crear entornos de ejecución y desarrollo independientes del lenguaje y la plataforma.
Todos los lenguajes que se pueden utilizar con el .NET Framework (C#, Visual Basic .NET, Fortran, J#, F#, COBOL, etc.) se compilan en un lenguaje intermedio conforme a la especificación CLI. Todo este código generado en el lenguaje que prefiramos y recursos, como imágenes o cadenas de texto, se almacenan en un archivo al que se denomina ensamblado y que puede se un archivo ejecutable (.exe) o una librería (.dll). Dichos ensamblados contienen un manifiesto que proporciona información sobre los tipos, la versión, la referencia cultural y los requisitos de seguridad del ensamblado.
Cuando se ejecuta un programa .NET el ensamblado se carga en CLR, con lo que se pueden realizar diversas acciones en función de la información del manifiesto. A continuación, si se cumplen los requisitos de seguridad, CLR realiza una compilación Just In Time (JIT) para convertir el código de lenguaje intermedio en codigo máquina nativo. CLR también proporciona otros servicios relacionados con la recolección automática de elementos no utilizados, el control de excepciones y la administración de recursos. El código ejecutado por CLR se denomina algunas veces "código administrado", en contraposición al "código no administrado" que se compila en lenguaje máquina nativo destinado a un sistema específico. En el diagrama siguiente se muestran las relaciones en tiempo de compilación y tiempo de ejecución de los archivos de código fuente de C#, las bibliotecas de clases de .NET Framework, los ensamblados y CLR.
Diagrama extraido de la pagina de Microsoft.
La interoperabilidad del lenguaje es una característica clave de .NET Framework. Como el código de lenguaje intermedio generado por el compilador de C# cumple la especificación de tipos común (CTS), este código generado en C# puede interactuar con el código generado en las versiones .NET de Visual Basic, Visual C++, Visual J# o cualquiera de los más de 20 lenguajes conformes con CTS. Un único ensamblado puede contener varios módulos escritos en diferentes lenguajes .NET, y los tipos admiten referencias entre sí como si estuvieran escritos en el mismo lenguaje.
Además de los servicios en tiempo de ejecución, .NET Framework también incluye una amplia biblioteca de más de 4.000 clases organizadas en espacios de nombres que proporcionan una gran variedad de funciones útiles para la entrada y salida de archivos, la manipulación de cadenas, el análisis XML, los controles de los formularios Windows Forms y muchas tareas más. La aplicación de C# típica utiliza continuamente la biblioteca de clases de .NET Framework para el tratamiento de las tareas comunes de "infraestructura".
Pongamos manos a la obra
Vamos a ver como generamos nuestro primer proyecto y como se ejecuta para ver el resultado. Mas adelante ya profundizaremos más en la estructura generada en el proyecto y en los distintos archivos que lo forman.
Para poder empezar debemos disponer de Visual Studio en cualquiera de sus versiones, pero a ser posible vamos a usar la última versión que Microsoft a liberado: Visual Studio 2010. Quien ya tenga una versión instalada puede usar esa si quiere, el que no puede descargar la versión Express del producto la cual es gratuita. Esta versión del Visual Studio puede descargarse desde la siguiente dirección:
http://www.microsoft.com/express/Downloads/
La versión 2010 en el momento de escribir esto solamente estaba disponible en Ingles, aquellos que no se apañen bien con el idioma puede descargar en la misma página la versión 2008 la cual si esta en castellano.
Si alguien tiene problemas instalando el producto lo único que hay que hacer es consultar en google y se pueden encontrar multitud de ayudas para la instalación del Visual Studio.
Una vez instalado, lo ejecutamos, veremos la siguiente pantalla:
Pulsamos sobre la opción de nuevo proyecto, esto nos mostrar una ventana en la que podemos seleccionar entre los distintos tipos de proyecto que nos permite Visual Studio. Seleccionamos el tipo “Aplicación de Consola”, escribimos un nombre de proyecto en la caja de texto correspondiente (“Name” ó “Nombre”), para este ejercicio pondremos “ConsolaPruebas” y pulsaremos el botón “OK”.
Tras esto se generara el proyecto y podremos ver en la ventana el archivo program.cs abierto, en la parte de la derecha vemos el explorador de la solución con los archivos generados para este proyecto.
Haremos una pequeña modificación para que esto no sea solo mirar y no tocar. Tenemos el método main, entre los signos que los limitan ({ }) vamos a escribir lo siguiente:
static void Main(string[] args)
{
Console.WriteLine("Hola a todos, este es el..... curso de c#");
Console.ReadLine();
}
La primera línea (Console.WriteLine) escribe un mensaje en la consola que se arranca, la segunda línea espera a que pulsemos una tecla cualquiera para terminar la ejecución del programa.
Ahora procederemos a ejecutar la aplicación, para ello pulsamos sobre el botón de Ejecutar
(
) en la barra de herramientas o presionamos F5. Esto compilara la aplicación y arrancara la consola.
(

Veremos el mensaje que hemos escrito en la consola y esta se quedara esperando a que pulsemos una tecla, momento en el que finalizara.
Conclusiones
Con esto concluimos este capitulo, hemos visto por encima un poco sobre como esta formado el .NET Framework.
Adema hemos generado nuestro primer proyecto le hemos añadido algo de codigo y lo hemos compilado y ejecutado.
Mas adelante profundizaremos mas sobre la estructura del proyecto y el codigo y analizaremos un poco mas todo lo que se genera con cada nuevo proyecto.
Espero que todo esto sirva a alguno para aprender un poquillo. Como no me tengo por ningun genio admito todo tipo de comentarios y respondere a dudas o corregire los articulos ante cualquier sugerencia.
Hasta el proximo capitulo.