Aprendiendo .NET Tutorial PARTE 7

Escrito por el Miércoles 17 de Diciembre de 2008 a las 13:47hs

Bienvenidos a esta nueva entrega de APRENDIENDO .NET

En primer lugar agradecer la importancia que le est?n brindando al sitio y esperemos que no pierda asiduidad.

Como hemos visto en los comentario de la entrega 6 ya todos pudieron resolver el problema de la l?nea que faltaba, ahora vamos a darle un poco mas de importancia a dicha l?nea ya que no solo se limita a esperar a que el usuario de la aplicaci?n presione la tecla Enter para continuar

Como ya es sabido el m?todo ReadLine(); que se encuentra definido en la clase Console tiene una funci?n mucho m?s importante que la de detener el c?digo en el punto donde se codific?, y es la de recoger como una cadena de caracteres lo ingresado por el usuario de la aplicaci?n a trav?s del teclado.

Por ejemplo si durante la ejecuci?n secuencial del c?digo se encuentra una sentencia con la llamada al M?todo ReadLine(), la aplicaci?n esperara a que el usuario presione la tecla Enter y, si antes de presionarla dicho usuario digito cualquier palabra a trav?s del teclado, estas palabras ser?n guardadas en una cadena de caracteres o string y puesta a nuestra disposici?n.

Esto permite el concepto de interacci?n con el usuario de la aplicaci?n.

Muy Importante: todo lo recogido por el m?todo ReadLine(), ser? tratado por la aplicaci?n como STRING o cadena de caracteres o texto

?Porque es tan importante lo mencionado?, pues muy simple, supongamos que el usuario digita la expresi?n literal ?123?, en realidad el programa devolver? un STRING y NO un N?mero, para que dicha expresi?n literal sea reconocida como un N?mero es preciso indic?rselo expl?citamente, a este procedimiento de conversi?n se lo conoce como conversi?n explicita y mas adelante le dedicaremos un buen espacio.

Todav?a no hemos llegado al estudio en profundidad de los m?todos pero nos estamos acercando. Como se dijo antes un m?todo puede o no devolver un valor, ya vimos y sabemos que aquellos m?todos que no devuelven ning?n valor son de tipo void, pero si el m?todo devuelve un valor otra es la historia

Cuando llamemos o invoquemos a un m?todo que devuelve un valor es preciso recoger el resultado o valor devuelto y darle un tratamiento acorde a su tipo, de lo contrario el resultado de nuestra aplicaci?n nos sorprender? con algo no deseado

Ahora bien, entonces si el m?todo ReadLine(); recoge lo ingresado por teclado puedo afirmar que dicho m?todo devolver? un valor, o sea el m?todo no ser? de tipo void sino string, as? que uno de los tratamientos posibles podr?a ser, almacenar dicho valor retornado en una variable de tipo string, y jugar con ella interactuando con el Usuario

IMPORTANTE: TODOS LOS VALORES DE RETORNO DE UN METODO SI SE DECIDE ALMACENARLO EN UNA VARIABLE, ENTONCES DICHA VARIABLE DEBER? SER DEFINIDA DEL MISMO TIPO QUE EL VALOR RETORNADO POR EL METODO, DE LO CONTRARIO SE PRODUCIR? UN ERROR DE COMPILACION

Por ejemplo la siguiente sentencia producir? un error de compilaci?n

Int a = ?Hola?;

Aqu? se est? tratando de almacenar en una variable de tipo Entero, un valor de tipo string,
INCORRECTO


SIEMPRE SE DEBE RESPETAR LOS TIPOS

La siguiente sentencia no dar? ning?n error

string a = ?Hola?;

Aqu? se esta almacenando un valor de tipo texto en una variable del mismo tipo CORRECTO

Retomando el ejemplo del numero ?123?, es muy importante que entiendan bien esto ?123? es una expresi?n literal y como tal ser? tratada hasta no ser convertida a un sistema num?rico decimal, hexadecimal ?

El siguiente ejemplo arrojara un error de compilaci?n

?123? + 12;

Resultado = ERROR

Lo que aqu? estamos tratando de hacer es una suma entre dos tipos de formatos distintos o no pertenecientes al mismo sistema ya que ?123? es un string y 12 es un n?mero

?C?mo se que valor es string si a la vista parece un n?mero?

Bueno eso lo indican las comillas, todas las expresiones que aparecen o se definen entre comillas dobles ser?n tratadas de tipo texto o string o cadena de caracteres por el compilador

Los siguientes ejemplos no dar?n ning?n error

int a = 123 + 12

Resultado:

a = 135


string b = ?123? + ?12?

Resultado:

b = ?12312?

En el primer caso primero me defin? una variable de tipo entero y le asigne como valor el resultado de una operaci?n obteniendo como resultado lo que esper?bamos de la suma, y en el segundo caso me defin? una variable de tipo string y le asigne como valor el resultado de una suma de caracteres, si obserban bien en realidad lo que se sumo fueron dos textos o dos strings, a este proceso de sumar string se lo conoce como CONCATENACION

Un par de ejemplos de concatenaci?n no nos har?n ning?n da?o.-

string a = ?Buenos? + ?Dias?;

Resultado:

a = ?BuenosDias?


Ahora bien el resultado no es precisamente lo que esper?bamos a no ser que hablemos sin pausas.

Hay varias formas de solucionar este problema

Forma 1

Podr?amos concatenar un tercer car?cter (el espacio en blanco) es considerado como un car?cter

string a = ?Buenos? + ? ? + ?Dias?;

Resultado:

a = ?Buenos Dias?

Forma 2

Tambi?n podr?amos haber incluido un espacio en blanco dentro de uno de los textos

string a = ?Buenos ? + ?Dias?;

Resultado:

a = ?Buenos Dias?

?Como puedo ver estos resultados en la consola?


Muy f?cil, simplemente lo podemos hacer llamando al m?todo WriteLine(); de la siguiente manera

System.Console.WriteLine(a);

Observen bien la sentencia anterior, NO utilic? las comillas dobles, cuando no se especifican las comillas, el m?todo tomar? a la palabra entre par?ntesis como una variable y lo que imprimir? en pantalla ser? su contenido, por lo tanto la sentencia anterior imprimir? en pantalla

Buenos D?as

Ahora si le pusi?ramos las comillas a la palabra pasada al m?todo como se muestra

System.Console.WriteLine(?a?);

Aunque ( a ) sea una variable definida en alg?n punto de nuestro c?digo lo que se mostrar? en pantalla ser? lo siguiente

a

Tambi?n la concatenaci?n se puede hacer entre variables y/o entre string y variable

Los siguientes ejemplos ilustran mejor lo que se quiere decir

System.Console.WriteLine(?a? + a );

Aqu? concatenamos un string a una variable con un string en su interior, por lo tanto la salida en pantalla ser? la siguiente

a Buenos D?as

O puedo concatenar 2 variables

System.Console.WriteLine( a + a );

El resultado ser?:

Buenos D?asBuenos D?as

Y para finalizar con las concatenaciones y resolver la salida anterior puedo concatenar un espacio en blanco o usar otros modos para corregir lo mostrado

System.Console.WriteLine( a + ? ? + a );

El resultado ser?:

Buenos D?as Buenos D?as

O bien con una coma

System.Console.WriteLine( a + ?, ? + a );

El resultado ser?:

Buenos D?as, Buenos D?as


Prosiguiendo con la entrega

Entiendo que lo que hemos dado hasta ahora en cuanto a variables y m?todos fue muy escaso, pero no se preocupen simplemente esto es un adelanto para que le comiencen a tomar el gusto a la codificaci?n y no se hundan en un mont?n de palabras t?cnicas

Las variables se merecen much?simo m?s espacio pero por ahora vamos a conformarnos con esto

PROCESO DE CREACION E INICIALIZACI?N DE UNA VARIABLE

La siguiente sintaxis debe ser respetada en todo sentido para que no ocurran errores

Para la definici?n de una variable

;

Donde el tipo indicara a que sistema pertenece la variable y el identificador es el nombre por el cual conoceremos a la misma y por supuesto el punto y coma para indicar el fin de la sentencia

Para la Inicializaci?n de una variable

;

Donde el identificador es el nombre propiamente dicho de la variable a la cual le queremos asignar un valor, el operador es por ejemplo el de asignaci?n (=), y el valor es el contenido o argumento que le queremos dar a la variable y por supuesto el punto y coma indicando el fin de la sentencia

Para que quede mas claro veamos un ejemplo

Definici?n:

Int a; // inicializaci?n de una variable de tipo entero de nombre a


Inicializaci?n:

a = 5; // asignaci?n del valor num?rico 5 a la variable antes definida

Tambi?n es posible hacer ambos procesos en una sola l?nea por ejemplo

int a = 5; // mucho mas simple no

Mas adelante cuando veamos variables vamos a ahondar m?s en ellas

Otro ejemplo

string s = ?Hola?; // definici?n de la variable s de tipo texto e inicializaci?n con el valor ?Hola?

TRABAJANDO EN EQUIPO

Ahora que conocemos m?s profundamente el uso del M?todo ReadLine(), las variables y la concatenaci?n, no veo el inconveniente de comenzar a trabajar en conjunto con el m?todo WriteLine(), para crear una aplicaci?n m?s compleja que la primera

Antes que nada veamos una peque?a cosita que se nos quedaba en el tintero y que son realmente de mucha utilidad
LOS COMENTARIOS EN LA APLICACI?N

Tambi?n lo veremos m?s adelante en un buen espacio pero por ahora bastar? con lo que explicar? a continuaci?n. Los comentarios en una aplicaci?n son realmente ?tiles, ya que nos ayudan a entender lo que hace cada l?nea o sentencia.

Los comentarios se rigen por normas espec?ficas y cada lenguaje de programaci?n tiene la suya, como se dijo antes un programa se ejecuta en forma secuencial de arriba hacia abajo, esa secuencia se la conoce como FLUJO y lo podemos controlar, el compilador ir? ejecutando todas las sentencias en orden descendente a partir del punto de entrada, reconociendo el principio de cada sentencia a trav?s de su definici?n y el final usando como separador de sentencias los puntos y comas

Ahora, si el compilador se encuentra con una l?nea vac?a no la tomar? encuentra y proceder? a la siguiente, lo mismo sucede si el compilador se encuentra con un comentario, no lo tomar? en cuenta y proceder? a la siguiente l?nea.-

?C?mo sabe el compilador que l?nea es un comentario?

Buena pregunta, reconocer? como comentarios todo lo que se encuentre despu?s del siguiente s?mbolo ( // ), todo lo que se encuentre detr?s de estas dos barras simples el compilador lo pasar? por alto o sea no lo tendr? en cuenta al momento de la ejecuci?n
Existe otros s?mbolos que tambi?n son reconocidos por el compilador como comentarios pero no lo veremos ahora

Veamos un ejemplo para evacuar dudas

// esto es un comentario

int a = 5; // defino e inicializo una variable y hago un comentario

// int b = 10 ? esto tambi?n es un comentario el compilador no crear? la variable

//otro comentario


Espero que haya quedado claro, de aqu? en m?s todas nuestras aplicaciones las comentaremos

?INTERACTUANDO CON EL USUARIO?

El siguiente ejemplo muestra un ejemplo de interacci?n entre una aplicaci?n y un usuario usando comentarios

// Esta aplicaci?n interact?a con el usuario

Public class TestClass??? // creo mi clase para alojar al m?todo Main
{
public static void Main()? ?// creo el m?todo Main
{
string Nombre;??? // defino una variable de tipo texto

System.Console.WriteLine();??? // rengl?n en blanco

System.Console.WriteLine(??Como te Llamas??);???? // Pido el nombre al usuario

System.Console.WriteLine();??? // rengl?n en blanco

// Almaceno el valor de retorno del m?todo ReadLine() en la variable Nombre

Nombre = System.Console.Readline();?? ?// ReadLine siempre devuelve texto

//interact?o con el Usuario

System.Console.WriteLine(?Hola ? + Nombre);?? // saludo porque soy educado
Uso concatenaci?n

System.Console.Readline()??? // Esta sentencia no permite que la consola se cierre

}
}

?Qu? hay de nuevo viejo?

Dijo el orej?n

Bueno lo nuevo aqu? es el uso de comentarios, definici?n de una variable para almacenar lo devuelto por el m?todo ReadLine(), el uso combinado de m?todos y variables para lograr la interacci?n con el usuario de la aplicaci?n.

Espero que les haya servido lo aprendido hoy y para no perder el entusiasmo les dejo deberes al mejor estilo escuelita.

Pensaron que no los iba a poner he ?!!!

Bueno las tareas que el Sitio quiere que hagan son las siguientes:

1.- ampliar la estructura de trabajo sumando una nueva carpeta con el nombre de class02

2.- crear una aplicaci?n similar a la anterior pero con los siguientes detalles

El nombre de la clase deber? ser ?InteractingWithTheUserClass?
? La aplicaci?n deber? exhibir el Titulo ?El Gur? Programador? centrado en la consola
? Como subtitulo: debajo del titulo y centrado el texto ?Clase 2 ? Interactuando con el usuario?
? La primera l?nea de texto deber? preguntar por el Nombre del Usuario y guardar lo respondido en una variable.-
? Un rengl?n vac?o.-
? Las Tercera l?nea de texto deber? preguntar por el apellido y almacenar el valor en una 2da variable
? Rengl?n vac?o
? La quinta l?nea deber? saludar al usuario y dar la bienvenida al sitio por ejemplo ?Hola bienvenido a la clase de Aprendiendo .NET del Sitio El Gur? Programador?
? Aqu? se deber? CONCATENAR el texto y las variables
? Mas abajo deber? controlarse que la consola no se cierre hasta que el usuario presione la tecla Enter
? a su vez avisar de dicha espera al usuario con un texto como por ejemplo ?Presione la tecla Enter para finalizar?
? comentar la aplicaci?n
? guardar el c?digo fuente en un archivo con el nombre Class02.cs
? COMPILAR el C?digo Fuente para obtener el c?digo MSIL

Espero no haber sido muy Malvado pero as? es la vida, la fama cuesta, para que dicho proyecto tenga ?xito tendr?n que investigar como usar los CARACTERES ESPECIALES DE ESCAPE

Para que vean que no somos tan malvados les dejamos una ayudita


Uso de un car?cter de escape


2 tabuladores a la derecha

Produce la siguiente salida en pantalla:


Truco:

System.Console.WriteLine(? Hola?);

Moviliza la palabra hola hacia la derecha seg?n la cantidad de espacios incluidos antes

Y para finalizar ser?a bueno que env?en los proyectos terminados y FUNCIONANDO al Sitio o Bien coordinar con Roby nuestro querido Director como hacerlos llegar. Y quien sabe, cuando tengamos los conocimientos s?lidos aprendidos en el Sitio y luego de algunas evaluaciones, El Guru del Programador nos pueda sorprender con alg?n certificado aval?ndolo uno nunca sabe lo que puede suceder

Se pueden ayudar usando los comentarios del blog como forma de intercambio de opiniones

NO INCLUYAN NADA MAS DE LO QUE SE PIDE, AQU? SE PRETENDE QUE APRENDAN A PROGRAMAR NO A REALIZAR OBRAS DE DISE?O ARTISTICO COMO COLORES EN LAS LETRAS O CUALQUIER OTRO MOTIVO, ESO QUEDA PARA PRACTICA DE USTEDES MISMOS, TAMBIEN LES AYUDAR? A LIMITARSE A REALIZAR LOS TRABAJOS SEG?N LO PEDIDO CONTRACTUALMENTE EN EL FUTURO

Aqu? est? la aplicaci?n que se pretende funcionando

Inicio de la aplicaci?n haciendo doble click sobre el MSIL


Lo primero que aparece es el t?tulo, subtitulo y solicitud del nombre


Ingreso mi nombre y presiono la tecla Enter


El siguiente paso el programa me solicita el apellido


Lo ingreso y presiono la tecla Enter


Finalmente nuestro programa es tan educado que nos saluda y da la bienvenida

Tambi?n avisa del fin del programa cuando se presione la tecla Enter

Los primeros 5 proyectos en llegar participar?n en un sorteo donde regalaremos el CODIGO FUENTE, que permite tener ocupada a la suegra durante un buen tiempo

Un abrazo cordial y muy fraternal

George Poliovei








comentarios



  1. Muy Bien ya estoy comenzando, lo de la suegra esta genial jaja, cuando lo tenga a donde lo envío, o lo ponemos aqui pegado ?

    saludos amigos, sigan asi y nunca cambien



  2. hola, primero a mi suegra la quiero mucho así que el código no lo necesito, soy afortunada, y ya se que no hay que agregar mas de lo que se pide pero yo le incluí la edad, me parecio buena idea, pero me anda mal cuando almaceno la edad segun el compilador me da error en este punto

    int edad = System.Console.ReadLine();
    System.Console.WriteLine("Tienes "+edad+" años");

    en teoria debería andar no se porque no pero bueno de ultima saco la linea

    saludos y felices fiestas



  3. hola estoy siguiendo el curso esta muy bien esplicado ya termine de aser la practica de la entrega 7 y me gustaria saber a donde la puedo enviar o pegar la aqui mismo gracias...



  4. Hola laura, mira creo que tu error esta en la variable que usas para guardar lo retornado por el metodo ReadLine, como dice la clase en negrita que si un metodo retorna un tipo de valor entonces la variable debe de ser del mismo tipo estas intentando guardar en una variable de tipo entero un dato de tipo texto

    saludos espero te ayude

    Leo



  5. Felicidades y gracias por publicar este tipo de material que nos ayuda mucho a los estudiantes de Informatica mas que todo, y tambien a cualquier persona que tenga la curiosidad de aprender programacion.

    Mucho exito en todos tus proyectos.

    Chao



  6. Muy bueno el material, pero van a seguir publicando ? cuando sale la proxima entrega gracias



  7. Hola
    Excelente turorial, pero em gustaria saber cuando publican el proximo ya que ha pasado harto tiempo y aun no sale nada...
    Ojala publiquen el siguiente luego...
    :D

agregar comentario


Se permiten las etiquetas HTML , y

. Si ingresa alguna direcci?n web o direcci?n de email ser?n convertidos en enlaces autom?ticamente.





publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API