Caractersticas del Lenguaje de Programacin C# (C Sharp) Parte 1
C# (ledo en ingls C Sharp y en espaol C Almohadilla) es el nuevo lenguaje de
propsito general diseado por Microsoft para su plataforma .NET. Sus principales creadores son Scott Wiltamuth y Anders Hejlsberg, ste ltimo tambin conocido por haber sido el diseador del lenguaje Turbo Pascal y la herramienta RAD Delphi.
Aunque es posible escribir cdigo para la plataforma .NET en muchos otros lenguajes, C# es el nico que ha sido diseado especficamente para ser utilizado en ella, por lo que programarla usando C# es mucho ms sencillo e intuitivo que hacerlo con cualquiera de los otros lenguajes ya que C# carece de elementos heredados innecesarios en .NET. Por esta razn, se suele decir que C# es el lenguaje nativo de .NET
Aunque C# al igual que VB.NET tiene un entorno grfico, en este curso utilizaremos el entorno no grfico del lenguaje, puesto que lo que nos interesa aprender es el lxico y la sintaxis de C#.
El entorno no grfico de un lenguaje de programacin .NET se denomina consola.
Para crear una aplicacin de consola en C#, una vez instalado el C#, hacemos click en nuevo proyecto y seleccionamos la opcin Aplicacin de Consola como se muestra en la figura
En unos pocos segundos C# Express crea el proyecto para nosotros. Visual Studio y la versin Express hacen uso de soluciones y proyectos, una solucin puede tener varios proyectos, por ejemplo, Office tiene diferentes productos como Word, Excel y PowerPoint. Office es una solucin y cada producto es un proyecto. El proyecto puede ser un programa independiente o una librera, y puede tener uno o varios documentos, estos documentos pueden ser el cdigo fuente y recursos adicionales.
El Explorador de soluciones nos muestra la informacin de la solucin de forma lgica, si observamos es como un pequeo rbol. En la raz encontramos a la solucin, cada proyecto que tengamos en esa solucin ser una rama, cada proyecto, a su vez, tendr tambin sus divisiones. En nuestro caso vemos tres elementos, dos de esos elementos son carpetas, en una se guardan las propiedades del proyecto y en la otra las referencias (durante este libro no haremos uso de estas carpetas). El tercer elemento es un documento llamado Program.cs, ste representa al documento donde guardamos el cdigo fuente de nuestra aplicacin. Vemos que la extensin de los programas de C# es .CS. En el rea de edicin podemos observar que tenemos un esqueleto para que, a partir de ah, podamos crear nuestro propio programa. Para entender lo que tenemos ah es necesario conocer un concepto: namespace. El namespace es una agrupacin lgica, por ejemplo, todo el cdigo que podemos tener relacionado con matemticas puede quedar agrupado dentro del namespace de Math. Otro uso que tiene el namespace es el de resolver conflictos con los nombres, por ejemplo, supongamos que tenemos un proyecto muy grande y varios programadores trabajando en l. Es posible que ambos programadores crearan un mtodo que tuviera el mismo nombre, esto nos genera un conflicto ya que el programa no podra saber cual versin utilizar. La forma de resolver esto es que cada programador tenga su propio namespace y hacer referencia al namespace correspondiente segn la versin que deseramos utilizar. El Framework de .NET nos provee de varios namespaces donde tenemos miles de clases y mtodos ya creados para nuestro uso. Cuando deseamos utilizar los recursos que se encuentran en un namespace programado por nosotros o por otros programadores, debemos hacer uso de un comando de C# conocido como using. Como podemos ver en la parte superior del cdigo, tenemos varios using haciendo referencia a los namespace que necesita nuestra aplicacin; si necesitramos adicionar ms namespaces, lo haramos en esta seccin. Ms abajo se est definiendo el namespace propio de nuestro proyecto, esto se hace de la siguiente manera:
El namespace que estamos creando se llama MiProyecto, como podemos ver el namespace usa { } como delimitadores, esto se conoce como un bloque de cdigo, todo lo que se coloque entre { } pertenecer al namespace; ah es donde ser necesario escribir el cdigo correspondiente a nuestra aplicacin.
Dentro del bloque de cdigo encontramos la declaracin de una clase, C# es un lenguaje orientado a objetos y por eso necesita que declaremos una clase para nuestra aplicacin. La clase tiene su propio bloque de cdigo y en nuestra aplicacin se llamar Program.
Todos los programas necesitan de un punto de inicio, un lugar que indique dnde empieza la ejecucin del programa, en C#, al igual que en otros lenguajes, el punto de inicio es la funcin Main(); esta funcin tambin tiene su propio bloque de cdigo. Dentro de esta funcin generalmente colocaremos el cdigo principal de nuestra aplicacin, aunque es posible tener ms funciones o mtodos y clases. Vamos a modificar el cdigo de la funcin tal y como se muestra a continuacin. Cuando estemos adicionando la sentencia dentro de Main(), debemos fijarnos que sucede inmediatamente despus de colocar el punto.
Si logramos observar, cuando se escribi la palabra Console y luego el punto, apareci un recuadro listando diferentes elementos. Este cuadro se llama autocompletar y nos permite trabajar rpidamente y reducir la cantidad de errores de sintaxis. El cuadro de autocompletar nos muestra sugerencia de la palabra, comando, variable, etc. que se podra usar a continuacin. Si lo deseamos, lo seleccionamos de esa lista, y l lo escribe por nosotros, conforme avancemos y nos familiaricemos con la programacin de C# veremos que es de gran ayuda. En nuestro ejemplo hemos colocado una sentencia que escribir el mensaje Hola Mundo en la consola. Es un programa muy sencillo, pero nos permitir aprender cmo llevar a cabo la compilacin de la aplicacin y ver el programa ejecutndose.
Para compilar la aplicacin Una vez que terminemos de escribir nuestro programa, podemos llevar a cabo la compilacin, como aprendimos anteriormente esto va a generar el assembly que luego usar el runtime cuando se ejecute. Para poder compilar la aplicacin debemos seleccionar el men de Depuracin o Debug y luego Construir Solucin o Build Solution. El compilador empezar a trabajar y en la barra de estado veremos que nuestra solucin se ha compilado exitosamente.
Para ejecutar la aplicacin Una vez que la compilacin ha sido exitosa, podemos ejecutar nuestro programa y ver cmo trabaja. Para esto tenemos dos opciones: ejecutar con depuracin y ejecutar sin depurador. En la versin Express nicamente aparece la ejecucin con depuracin, pero podemos usar la ejecucin sin depurador con las teclas CTRL+F5 o adicionndola usando el men de herramientas. El depurador es un programa que nos ayuda a corregir errores en tiempo de ejecucin y tambin errores de lgica.
Cuando el programa se ejecuta, aparece una ventana, a ella la llamamos consola y se encarga de mostrar la ejecucin del programa. De esta forma podremos leer el mensaje que habamos colocado en nuestro ejemplo.
Ya sabemos que los algoritmos necesitan un inicio y un fin. En nuestro programa el punto donde siempre inicia es la funcin Main(). Esta funcin indica el punto de arranque de nuestro programa y aqu colocaremos los pasos que debe seguir nuestro programa en el orden adecuado. Para indicar todos los pasos que pertenecen a Main() necesitamos colocarlos adentro de su bloque de cdigo. Un bloque de cdigo se define entre llaves { }. Todo lo que se encuentre en ese bloque de cdigo pertenece a Main (), lo que se encuentre afuera de l, no pertenece. Es importante que notemos que la clase tambin tiene un bloque de cdigo y Main () se encuentra adentro de l. De igual forma, el namespace tambin tiene su propio bloque de cdigo y la clase se encuentra adentro, aunque por ahora slo nos concentraremos en el bloque de cdigo de Main(). Un error comn cuando se crean bloques de cdigo es olvidar cerrarlos. Como recomendacin, una vez que abrimos un bloque de cdigo con {, inmediatamente debemos de colocar el cierre con } y luego programar su contenido. De esta forma, no olvidaremos cerrarlo. Dentro de Main() encontramos los pasos de nuestro algoritmo. En este momento nos pueden parecer extraos, pero aprenderemos qu significan. Tenemos que recordar que debemos aprender el idioma de la computadora y stas son una de sus primeras frases. Lo que encontramos adentro de la funcin Main() es una serie de sentencias. Las sentencias nos permiten colocar instrucciones que nuestro programa pueda ejecutar, que son utilizadas para mostrar un mensaje en la pantalla. El mensaje que nosotros queremos mostrar en la pantalla se muestra al invocar el mtodo WriteLine(). Los mtodos son similares a las funciones, existen adentro de las clases y nos permiten hacer uso de las funcionalidades internas. Este mtodo pertenece a la clase Console, y en esa clase encontraremos todo lo necesario para que podamos trabajar con la consola, ya sea colocando mensajes o leyendo la informacin proporcionada por el usuario. Como WriteLine() pertenece a Console cuando queremos utilizarlo, debemos escribir:
WriteLine() necesita cierta informacin para poder trabajar. Esta informacin es el mensaje que deseamos mostrar. A los mtodos se les pasa la informacin que necesitan para trabajar por medio de sus parmetros. Los parmetros necesarios se colocan entre parntesis (). WriteLine() necesitar un parmetro de tipo cadena. Una cadena es una coleccin de caracteres, es decir, letras, nmeros y signos. La cadena se delimita con comillas dobles . En el ejemplo, el mensaje que queremos que se muestre es: Hola. Por eso pasamos el parmetro de tipo cadena Hola Mundo. Las sentencias se finalizan con punto y coma (;) esto es importante y no debemos olvidarlo ya que este carcter en particular es reconocido por C# para indicar que la sentencia escrita hasta all, ha finalizado.
La diferencia entre los mtodos Write() y WriteLine() Hemos visto que el mtodo WriteLine() nos permite mostrar un mensaje en la consola, pero existe un mtodo similar que se llama Write(). La diferencia es muy sencilla. Despus de escribir el mensaje WriteLine() inserta un salto de lnea, por lo que lo prximo que se escriba aparecer en el rengln siguiente. Por su parte, el mtodo Write() no lleva a cabo ningn salto de lnea y lo siguiente que se escriba ser en la misma lnea. Veamos todo esto haga el siguiente ejemplo:
Al ejecutarlo, vemos cmo en efecto despus de usar Write() lo siguiente que se escribe se coloca en el mismo rengln, pero al usar WriteLine() lo siguiente aparece en el rengln siguiente. Esto es un ejemplo claro de lo explicado anteriormente: