Escrito por
George POLIOVEI el Lunes 08 de Diciembre de 2008 a las 19:47hs
Bienvenidos a esta nueva entrega de Aprendiendo .NET
Nuestra primera aplicación C#
Primero que nada vamos a abrir nuestro Note Pad o el que hayan elegido y digitemos las siguientes líneas de código.-
Recuerden respetar minúsculas y mayúsculas ya que C# hace diferencias gramaticales, esto quiere decir que
Class no es lo mismo que
class o
clasS.
Salvada la primera regla seguimos, como vimos en entregas anteriores para que se coloreen las palabras reservadas del lenguaje es necesario indicarle al Note padd que estamos trabajando con
C#.
Mi primera Clase
Como mencionamos antes, a diferencia de C y C++, todo el código de nuestra aplicación deberá estar contenido si o si dentro de una
Clase
Existen escasas excepciones de código que viven fuera de una clase, una de estas son las sentencias
Using, los
namespaces, y otros que veremos más adelante.
Método para construir una clase
Una clase se construye de acuerdo al siguiente detalle:
• La Palabra reservada
class
• Un Nombre para identificar la clase
• Una llave de apertura
• El cuerpo de la clase (todo nuestro código)
• Una llave de cierre
Esto es todo lo que necesitamos para construir una clase correctamente
Bueno ahora que ya sabemos como construir una clase vamos a estudiar nuestra primera aplicación línea por línea
Línea 1: comienza por la palabra reservada
class e inmediatamente después, el nombre que identificará a dicha clase en el ejemplo anterior es
HelloGuruProgrammer.
Línea 2: llave de apertura de la clase, todo nuestro código deberás estar encerrado dentro de las llaves de apertura y cierre de la clase
Línea 3: Aquí aparece un actor muy importante para nuestra aplicación y es la declaración de un Método, pero éste método es especial ya que será el punto de entrada a la aplicación y por lo General lleva el nombre de
Main, todas las aplicaciones deben tener un punto de entrada de lo contrario la aplicación no podrá ejecutarse.
¿PERO QUE ES UN METODO Y PORQUE EL METODO MAIN ES TAN ESPECIAL?
Buena pregunta, empecemos por saber que es un método
Un método es un conjunto de instrucciones que se ejecutan cuando es llamado o invocado y de acuerdo a su definición
puede o no retornar un valor.
Por ahora no nos vamos a extender mucho sobre los métodos ya que más adelante le vamos a dar un buen espacio de estudio, pero es bueno saber ahora que es el método
Main()
Todas las aplicaciones sin excepción deben de tener un método
Main o Método Principal, estos métodos brindan el punto de entrada a la aplicación
Cuando hacemos doble clic en el icono de alguna aplicación, los Servicios de Windows exploran todo el contenido de la aplicación en busca del método
Main(), si lo encuentran el programa comienza a ejecutarse desde dicho punto y si no lo encuentra entonces la aplicación no podrá ejecutarse
El Método
Main() debe ser estático (
static), esto significa que durante la ejecución de la aplicación una y solo una copia de dicho método se mantendrá en memoria, esto se debe a que la aplicación solo podrá tener un punto de entrada, si el método Main() no lo declaramos como estático, el resultado sería un caos
El método
Main() debe ser público (
public), cuando un método lo definimos como público estamos permitiendo que sea accesible de otros lugares, inclusive desde el exterior de la aplicación
Para nuestra pequeña aplicación no es necesario que el método
Main() devuelva algún valor, por eso aparece la palabra reservada
void , significa que cuando se ejecute el método y su ejecución haya finalizado no devolverá ningún valor, si por el contrario el método
Maín() debiera retornar un valor por ejemplo de tipo entero para informar del resultado de su ejecución entonces la palabra reservada
void deberá ser reemplazada por la palabra
Int.
El Método
Main() es en definitiva una porción del código de nuestra aplicación por lo cual debe de estar si o si contenido dentro de una clase, ningún método puede definirse o existir fuera de una clase, en nuestro caso el Método
Main() está contenido dentro de la Calse
HelloGuruProgrammer
Al igual que una clase, el método
Main() como cualquier otro método debe tener sus correspondientes llaves de apertura y cierre, todo el código encerrado dentro de las llaves de apertura y cierre de un método es código o cuerpo de Método y a su vez un método, inclusive el propio
Main() es código o cuerpo de una
Clase
¿Y LAS FUNCIONES DONDE QUEDARON?
Bueno las apariencias engañan, por que digo esto, por el simple motivo de que una
función son un conjunto de instrucciones como el método
Main() pero pueden vivir libremente fuera de una clase en lenguajes como C++.
Como en
C# como no podemos escribir código fuera de una clase, entonces podemos afirmar que nunca tendremos una
función
Bueno ahora que sabemos que es el método
Main(), y a muy grandes rasgos los métodos en Gral. Vamos a seguir analizando nuestra primera aplicación
Línea 4 – Llave de apertura del Método
Main(),.
Línea 5 – línea de código ejecutable, aquí entran en escena tres nuevos actores el
namespace, una clase y un método de clase.-
Si son observadores entonces habrán notado que hemos declarado un Método dentro de otro, con esto entonces afirmamos que los Métodos pueden anidarse
Truco: Yo en particular me he acostumbrado a leer el código de atrás hacia delante y me ha resultado muy útil, así que siguiendo esta política comencemos por el final
El
punto y coma: esto indica el final de una línea de ejecución o a partir de ahora en más
una sentencia
Inmediatamente antes del punto y coma tenemos el llamado a un
método de nombre
WriteLine(“string”) éste es un método de tipo
estático que recibe como parámetro de método una
cadena de texto o
string y cuya tarea es mostrar en pantalla el contenido de dicho
string , también podemos deducir que este método no devuelve ningún valor, por lo tanto es de tipo
void , importante cuando pasemos un
string como parámetro de entrada a un método o, como valor de una variable siempre deberá escribirse el texto entre
comillas dobles
(“Hello Guru Programer”)
También es importante destacar que inmediatamente luego de los nombres de métodos deben abrirse y cerrarse paréntesis y si el método requiere algún valor como parámetro de entrada, estos deben incluirse dentro de dichos paréntesis, los valores que reciban los métodos de aquí en mas serán
lista de parámetros
Ejemplo:
Método1 ( ) ; - significa que el método no recibe ninguna lista de parámetros
Método2 ( string str ) ; - significa que el método recibe un solo parámetro y deberá ser de tipo
cadena de texto o string
Siguiendo el caso, inmediatamente antes del nombre del Método noten la presencia de un
Punto, esta es la forma que usa C# para indicar el nombre de la clase a la cual pertenece el método invocado
Por lo tanto podemos afirmar que el método
WriteLine se encuentra contenido dentro de una clase de nombre
Console
Y por último la presencia de un
namespace, noten también que inmediatamente antes del nombre de la clase hay otro
punto, bueno como a través del punto podemos indicar que método de clase usar, también lo utilizaremos para indicar a que
namespace pertenece dicha clase, en el ejemplo anterior el
namespace es
System.
Ok, leamos nuestro código como forma de interpretar lo que queremos que haga utilizando la forma de atrás hacia delante
“
Escribe una Línea (WriteLine) en pantalla con el texto (“
Hello Guru Programmer”) en la
Consola (Console) de nuestro
Sistema (System)”
Si prestan atención es como si estuviéramos hablando con nuestra máquina diciéndole que hacer, pero, para que esta comunicación sea entendible es preciso darle nombres significativos a nuestras futuras clases y métodos en relación a las tareas que desempeñarán
Siguiendo con el análisis viene
Línea 6 – llave de cierre del método
Main(), esto no merece mucha explicación
Línea 7 – llave de cierre de la Clase
HelloGuruProgrammer, aquí termina nuestra clase
Cuando el código pase esta última línea entonces la aplicación terminará
¿COMO EJECUTAR NUESTRA PRIMERA APLICACIÓN?
Antes que nada, es necesario entender que todo nuestro código es lo que desde aquí en más llamaremos
Código Fuente, éste código no es ejecutable ya que la
CPU no lo entiende, así que para que lo sea, deberemos transformarlo a un lenguaje entendible para la PC, éste lenguaje es conocido cómo
Código Máquina y la acción de conversión de un lenguaje a otro se llama “
Compilación”, pero recuerden que los lenguajes de la Plataforma .NET después del proceso de
compilación del código fuente se obtiene como resultante código
MSIL que aunque su extensión sea un (
EXE) sigue siendo
No Entendible por la CPU, quién se ocupara de hacerlo entendible es el (
JIT) que irá compilando el
MSIL a medida que se requiera, por eso su nombre (
Just in time)
GENERANDO NUESTRO PRIMER MSIL
Primero que nada vamos a guardar nuestro archivo de
código fuente siguiendo las reglas que vimos anteriormente
En las entregas anteriores nos habíamos creado una estructura de trabajo, pues bien vamos a la carpeta
CS y creemos una nueva con el nombre
Class01
Una vez creada la carpeta hacemos clic en el disquette único del Note Padd y guardamos nuestro trabajo en dicha carpeta con el Nombre
Class01.cs
Bien una vez guardado nuestro trabajo es hora de generar nuestro
MSIL
Primero verificamos que el archivo se guardo correctamente
Perfecto
Como es norma general comenzar desde abajo, empezaremos utilizando la Consola de Windows cómo método de práctica antes de lanzarnos a las complejas estructuras gráficas, así que lo que deberemos hacer ahora es abrir una Consola utilizando una de las siguientes formas
1.- desde el menú
Inicio / Todos los programas / Accesorios / Símbolo de Sistema
O desde el menú
Inicio / Ejecutar
y en la ventana que aparece digitamos
cmd y presionamos
Enter
Con cualquiera de estas acciones se iniciará la Consola de Windows
Para aquellos que no la conozcan esta es una consola de Windows que es similar a la terminal de LINUX
Cuando uno trabaja en consola toda la versatilidad que ofrece el Mouse queda en el olvido, aquí el Mouse no funciona, cualquier acción que queramos realizar, deberemos hacerla a través del teclado utilizando unos programitas conocidos como
Comandos, por ejemplo si queremos copiar un archivo usamos el comando
copy si queremos ver el contenido de una carpeta utilizamos el comando
dir, etc.
Utilizar la consola para hacer tareas que acostumbramos en Windows como copiar mover, mirar o lo que se nos ocurra, nos brinda una práctica realmente útil para nuestras profesiones, así que sería bueno que le den un buen nivel de importancia.
Siguiendo con lo nuestro.
Por lo general la Consola siempre se inicia en la carpeta del usuario activo de Windows en ese momento, y eso lo muestra la línea que aparece en la captura, toda esa línea desde la unidad hasta el símbolo de
mayor que tiene un nombre
PROMP, es el encargado de decirnos donde estamos parados y los resultados de las acciones que realizamos a través de los
comandos
Interpretando la información del
Promp de la captura dice:
que la Unidad de disco sobre la cual estamos trabajando es
C: y estamos actualmente posicionados en una carpeta llamada
222 que a su vez dicha carpeta se encuentra dentro de otra llamada
Document and Setting, si siguen el camino desde Windows verán que es exactamente lo mismo solo que desde una vista a bajo nivel
Muy bien luego de esta breve introducción vamos a movernos de carpeta utilizando la consola claro, hasta la que creamos antes
Class01, para ello utilizaremos el
comando “cd” éste comando lo que hace es mover el
Promp del sistema a la ubicación que deseemos, así como en Windows usamos el Mouse haciendo doble clic sobre las carpetas para movernos, aquí usaremos el comando
cd
El comando
cd recibe como parámetro la ubicación a la cual nos queremos trasladar, para nuestro caso seria
Luego de ingresar la orden simplemente la ejecutamos presionando la tecla
Enter
Si no hubo errores de escritura entonces el
Promp habrá cambiado su cuerpo informando de la nueva posición como se muestra en la captura.
Ahora bien nos quedan 2 comandos mas por examinar, supongamos que me atrajo tanto la consola que quiero seguir usándola.
Examinando el interior de una carpeta usando la Consola de Windows
La verdad que en Windows con solo ir haciendo doble clic sobre las carpetas ya estamos viendo su contenido, aquí al no haber Mouse la cosa cambia, deberemos recurrir al comando
dir como forma de examinar los contenidos de las carpetas
Siguiendo el ejemplo anterior yo se de antemano que la carpeta
Class01 contiene un archivo, que es nuestro código fuente y al que le dimos el nombre de Class01.cs la comprobación ya la hicimos desde Windows ahora vamos a hacerla desde la Consola
Simplemente digitamos el comando
dir sin parámetros y presionamos
Enter para ejecutar dicha orden.
Como pueden, ver la primera flecha indica el comando utilizado y luego de presionar la tecla
Enter se desplegará toda la información contenida dentro de la carpeta
Class01, la otra flecha indica que hay un solo archivo y la ultima flecha muestra el nombre del archivo, su extensión y el tamaño del mismo, también se puede apreciar otro tipo de información que no merece la pena explicarla dada su intuitividad.
En resumen es lo mismo que Windows sólo que desde un ambiente
NO GRAFICO
El último comando y el más importante para nosotros es el
csc, este comando tiene la tarea de compilar nuestro código fuente a un
MSIL, y la forma de utilizarlo es muy similar a los demás.
Primero se debe de escribir el nombre del comando y luego de un espacio se le debe especificar el archivo de
código fuente a compilar respetando minúsculas y mayúsculas y también se debe indicar su extensión, luego para dar la orden de ejecución basta con presionar la tecla
Enter
Manos a la obra y compilemos nuestra primera aplicación.
Perfecto, lo que aquí sucedió fue lo siguiente
La primera línea muestra el comando que queremos ejecutar y luego de presionar la tecla
Enter el compilador entro en acción
La 2da, 3ra. y 4ta línea muestra información del compilador usado
La 5ta. Línea se puede apreciar un renglón vacío, esto quiere decir que el proceso se realizo correctamente y no hubieron errores de compilación, de haberlos habido se mostraría información ahí mismo
Y la última línea vuelve al
Promp, quedando éste a la espera de alguna otra orden, “que buen chico”
Ahora bien, de acuerdo a todo lo aprendido, entonces si no hubo errores en la compilación es cierto afirmar que se generó un archivo de código
MSIL pero ¿donde está?
Bueno controlando nuestra inquietud les digo que si, es verdad, el resultante de la compilación es un archivo
MSIL y por lo general se genera dentro de la misma carpeta que contiene el código fuente, así que para verlo lo único que tenemos que hacer es usar el comando
dir desde la consola o bien usando el explorador de Windows.
Vamos a usar las 2 formas
Desde la consola
Pero miren nada más quien ha aparecido, es nuestra primera aplicación, recién compilada y observen su tamaño, bueno esto confirma todo lo dicho antes, aquello de que el
MSIL a parte de el código traducido contenía también un conjunto de servicios adicionales. En fin solo resta decir “
Bienvenido a nuestras vidas class01.exe”
Ahora veámoslo desde Windows
Bueno creo que por hoy ya son demasiadas emociones juntas, todo ha salido de maravilla
Ahora bien como no queremos que se mal acostumbren existe un pequeño detalle en nuestra aplicación.
Si la ejecutan desde Windows haciendo doble clic en el icono como cualquier aplicación de Windows verán un destello de una consola y probablemente no puedan ver el mensaje que debe mostrar nuestra aplicación que es “
Hello Gurú Programmer”, esto no significa que la aplicación esté mal codificada, lo que sucede es que al hacerle doble clic lo primero que hacen los servicios de Windows es buscar el punto de entrada a la aplicación o sea “El método
Main” una ves que lo encuentra comienza la ejecución, pero como no hay ninguna línea de código que le indique al programa que no debe finalizar una vez cumplido todo lo que tiene que hacer, simplemente finaliza la aplicación y retorna a Windows, en otras palabras la ejecución es tan rápida que no percibimos el mensaje.
Así que les queda a ustedes encontrar la forma de agregar una línea de código más al código fuente que tenga la tarea de no dejar que la aplicación finalice hasta que se presione la tecla
Enter.
Pequeña ayudita
Dentro de la clase
Console hay un método que detiene la ejecución del programa y no continua hasta que el usuario presione la tecla
Enter.
Otra cosa importante, en toda aplicación la ejecución de las líneas de código se realiza en forma secuencial desde la 1 hasta la última así que es una buena idea colocar dicha línea de parada justo antes de que se cierre la llave del Método
Main()
Y por último si un método no recibe parámetros entonces se debe de llamar al método por su nombre y colocarle inmediatamente después los paréntesis
Metodo();
Y obviamente si modifico el código fuente también deberemos modificar nuestro
MSIL, de lo contrario los cambios no se verán reflejados, a este proceso de re-compilación se lo conoce como
Actualización
Bueno finalizando la entrega vamos a recalcar que todo lo expresado aquí en detalle en cuanto a compilación y consola no lo vamos a seguir haciendo en el futuro ya que entendemos que lo expuesto hoy aquí es muy bien asimilable y no podemos darnos el lujo de ocupar mucho espacio en dichos temas. Una última cosita es darse presente en el Sitio, no sean tímidos, nuestra comunidad no funciona así, opinen, pregunten, si este trabajo les sirve entonces úsenlo y participen tanto en estas entregas como en todas las que se encuentran en el Sitio, por ejemplo los artículos que he estado mirando de
PHP son de una calidad enorme y muy bien explicados, tanto los colegas del Sitio como las personas invitadas a brindar nuestros conocimientos, lo hacemos honorariamente y lo único que pedimos es que por lo menos se den presente con una crítica, no importa de qué tipo, las estadísticas de concurrencia al Sitio son muy buenas así que lo único que falta para ser un
10 es su signo de presente
Un abrazo para todos y espero que hagan las tareas
Aquí les dejo una muestra de la aplicación Modificada, eso si la línea que agregué no se las voy a mostrar