Professional Documents
Culture Documents
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
Aplicaciones de Consola en C#
Jun 20, 2011 Programacion Tutoriales C# 10 comentarios El principal motivo de este post, es que la mayor parte de los que leen este blog no saben como interactuar con el usuario a 2 tweets travs de la consola (lo cual es comprensible), y no tienen una forma dinmica de probar sus cdigos. Generalmente cuando retweet retweet nos ensean a programar, parten de la parte de como crear mtodos, la sintaxis del lenguaje, las estructuras de control (for, foreach, etc) y se pasan por alto la parte de como crear una aplicacin, donde el usuario vea resultados a traves de la consola. Bueno, empecemos desde 0:
1 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
Console.WriteLine("Tu nombre es: "+nombre+" y tienes " + edad + " aos."); //En C# se usa el operador + para concatenar cadenas Console.WriteLine("Tu nombre es {0} y tienes {1} aos", nombre, edad);
Como ven la segunda va es mucho ms simple, solo debes recordar que el numero que est entre cochetes, es el indice del parmetro que se pasa al final del mtodo. 2- Console.Write() Hace casi lo mismo que Console.WriteLine() pero sin cambiar de lnea, o sea concatena el texto que le pasemos al mtodo con lo que se haya escrito hasta ese momento en la consola. 3- Console.ReadLine() Se usa para leer lo que el usuario escribi en la consola, y podemos guardarlo en una variable para despues usarlo en nuestro programa. No hay que pasarle ningn parmetro y el programa solo continuar cuando el usuario teclee alguna lnea y presione Enter. Podemos hacer algo como esto:
Console.WriteLine("Escriba su nombre"); string nombre = Console.ReadLine();
Importante: Si lo que queremos es recoger lo que el usuario escriba como un tipo en especfico, por ejemplo, un entero, deberemos usar el mtodo esttico int.Parse, por ejemplo:
int x = int.Parse(Console.ReadLine();
ya que lo que devuelve Console.ReadLine() es un string. 4-Console.ReadKey() Este mtodo resulta importante algunas veces, sobre todo cuando queremos darle varias opciones al usuario (a, b, c, d). Aunque se puede utilizar Console.ReadLine(). En este caso, este mtodo lo que devuelve es un objeto de tipo ConsoleKeyInfo, y se puede utilizar de la siguiente forma, por ejemplo:
Console.WriteLine("Presiona una tecla"); ConsoleKeyInfo c = Console.ReadKey(); Console.WriteLine("Presionaste la tecla "+ c.KeyChar);
Bueno, estos son algunos de los mtodos ms importantes. Veamos ahora como est compuesto un proyecto de tipo consola. Lo primero que vemos es el namespace que se llama igual que el proyecto, luego vemos que hay una clase Program, la cual se llama as por defecto y dentro de esta, un mtodo Main() con la siguiente signatura:
static void Main(string[] args)
Este es el punto de entrada de nuestra aplicacin, el mtodo se llama as por defecto y no se debe cambiar ni aadir ningn parmetro. Bueno, vamos ya a escribir un poco de cdigo, como ejemplo, vamos a calcular la edad de un usuario pidiendole que nos diga el ao de nacimiento. Para esto crearemos otro mtodo esttico (dentro de Program) que le pasaremos un ao de nacimiento y calcula la edad. Veamos:
public static int DameEdad(int dia, int mes, int ao) { //Usamos la clase DateTime y un mtodo estatico para restar fechas DateTime fecha_nacimiento = new DateTime(ao, mes, dia); TimeSpan edad = DateTime.Now.Subtract(fecha_nacimiento); return (edad.Days/365); }
Este mtodo hace uso de la clase DateTime de .Net, que tiene muchas funcionalidades, entre ellas permite restar dos fechas, lo cual sera un algoritmo un poco pesado de programar (no es tan sencillo como restar los aos). Cuando hacemos DateTime.Now, accedemos a la fecha actual que tenemos en nuestra PC, por ultimo devolvemos la cantidad de dias que han pasado entre las dos fechas y lo dividimos entre la cantidad de dias que tiene un ao. Ahora veamos como programar el mtodo Main para interactuar con el usuario, pedirle la fecha, y encargarnos que la introduzca correctamente. El cdigo sera algo as:
private static void Main(string[] args) { //Variables que usaremos para la fecha de nacimiento int dia_nacimiento, mes_nacimiento, ao_nacimiento=0; Console.WriteLine("Escriba su nombre"); string nombre = Console.ReadLine();
2 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
Console.WriteLine("Hola {0}, bienvenido a mi aplicacion!",nombre); Console.WriteLine("Por favor, introduce tu fecha de nacimiento:"); //El while solo termina cuando se hace break while (true) { //Pedimos el dia y lo validamos Console.Write("Dia de nacimiento: "); dia_nacimiento = int.Parse(Console.ReadLine()); if (dia_nacimiento < 1 || dia_nacimiento > 31) Console.WriteLine("Por favor, especifique un dia entre 1 y 31"); else //Si el dia es valido, entonces pasamos a pedir el mes break; } while (true) { //Pedimos el mes y lo validamos Console.Write("Mes de nacimiento: "); mes_nacimiento = int.Parse(Console.ReadLine()); if (mes_nacimiento < 1 || mes_nacimiento > 12) Console.WriteLine("Por favor, especifique un mes entre 1 y 12"); else break; } while (true) { //Pedimos el ao y lo validamos Console.Write("Ao de nacimiento: "); ao_nacimiento = int.Parse(Console.ReadLine()); //El ao no puede ser posterior a 1900 y anterior al ao actual if (ao_nacimiento < 1900 || ao_nacimiento > DateTime.Now.Year) Console.WriteLine("Por favor, especifique un ao entre 1900 y el {0}", DateTime.Now.Year); else break; } //Si llegamos aqui, es porque tenemos una fecha correcta, vamos a calcular la edad con //el mtodo DameEdad() que escribimos antes int edad = DameEdad(dia_nacimiento, mes_nacimiento,ao_nacimiento); Console.WriteLine(nombre+", usted tiene " + edad + " aos."); Console.WriteLine("Presione cualquier tecla para terminar el programa"); Console.ReadKey(); }
Por supuesto el cdigo se puede hacer ms eficiente y mucho ms corto, pero quera mostrarte el uso de las funciones mencionadas antes. El cdigo est bastante bien comentado, y espero que con las cosas que expliqu antes se entienda sin problemas. Tambin les dejo el proyecto para que lo descarguen. Cualquier duda o aporte, en los comentarios.
Compartir:
Me gusta 7 Tweet 3
Imprimir
Compartir
10 comentarios
Forma parte de nuestra discusin y sguela de cerca
Me parece muy interesante el tema, te felicito. Si me permite tengo una pregunta sobre el codigo y una sugerencia. 1.El uso de los simbolos < y > no lo conozco me lo pueden explicar? 2. Sera interesante el tema Base de Datos y C# o Windows Forms en c#.
3 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
@OnyZero, los smbolos que comentas son los operadores < (menor) y >(mayor) respectivamente, hubo un problema con la codificacin de caracteres, ya est corregido, y gracias por la recomendacin, la tendr en cuenta Autor: Tomy | Fecha: Jun 21, 2011.
Esta muy interesante esta pagina, estoy intentando aprender a programar en c# y bueno esto me ilustra. Autor: fernando cardenas | Fecha: Jul 9, 2011.
buen Post.para los que estamos comenzando en este mundo de la programacin. Autor: Ricky | Fecha: Jul 10, 2011. [...] aqu Categoria(s): .NET, C#Tags: aplicacion, c#, consola, read, readline, write, writeline [...] Autor: Aplicacin de consola C# | Informtica, programacin, noticias, tecnologa | Fecha: Oct 12, 2011.
Excelente.. muy didctico, se agredece el tiempo y el aporte. Sobre todo para aquellos que estamos ingresando a C# Autor: Mximo | Fecha: Dic 8, 2011.
C# me cuesta mucho, mi duda es cuando utilizar un if else y while. Si tuvieras ejemplos de programas seria woow, necesito ayuda si no reprobar. Autor: hanna | Fecha: Abr 3, 2012.
Una duda, como imprimo metodos? Se que es el nombre punto pero cuando se tienen parametros se que para el string es + pero y los demas??? Autor: hanna | Fecha: Abr 7, 2012.
4 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
@hanna: el if else se utilizan para cuando quieres decidir si hacer una cosa u otra en dependencia si una condicin se cumple o no, el while se utiliza para llamar instrucciones mientras se cumpla una condicin, la diferencia entre uno y otro es que en el if else se verifica la condicin una sola vez. Y para imprimir mtodos, haces algo como: Console.WriteLine(Metodo()); //si no tiene parametros Console.WriteLine(Metodo(parametro1, parametro2)); //si tiene parametros Autor: Tomy | Fecha: Abr 12, 2012.
Escribe tu comentario
Nombre Requerido. Email Requerido. No pblico. Sitio Web Si tienes alguno.
Comentario
Annciate aqu
Popular
Ejercicios resueltos de array con C# (1)
5 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
en Codigos C# / 57
Entendiendo la recursividad
en Tutoriales C# / 20
Generando permutaciones en C#
en Codigos C# / 16
Calcular el da de la semana C#
en Codigos C# / 16
La clase Arbol en C#
en Codigos C# Tutoriales C# / 15
Categoras
6 de 7
http://www.puntopeek.com/programacion/creando-una-aplicacion-de-con...
wordpress Web 2.0 Tutoriales C# Tipografas Tecnologas web Software Libre SEO Programacion Buscadores CMS Codigos C# Diseo web General Google Microsoft Mozilla Firefox
Etiquetas
wordpress 2.7 novedades wordpress algoritmos
Google Programacion ejercicios C# Microsoft Software Libre .Net ejemplos C# estructuras C# Buscadores
Diseo web string recursividad Web 2.0 Codigos
Copyright 2010 Lenguajes & Cdigos - www.puntopeek.com Gestionado con WordPress Patrocinado por Noticias y actualidad
C# Tutoriales C# SEO
7 de 7