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