Vous êtes sur la page 1sur 5

Aplicaciones de Consola en C#

Jun 20, 2011 PROGRAMACION TUTORIALES C# 6 comenturlos


1tweetretweet
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 travs de
la consola (lo cual es comprensible), y no tienen una forma dinmica
de probar sus cdigos. Generalmente cuando 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:
Crear una aplicacin de Consola:
Para esto, deberemos ir a File->New->Project si usas Visual Studio,
pero con cualquier otro IDE debe ser algo parecido. Entonces se
mostrar una nueva ventana como la de la figura, seleccionamos C#
en el menu izquierdo y luego como tipo de proyecto marcamos
Console Apliccation, le ponemos un nombre al proyecto y le
damos Ok. Ya estaremos listos para empezar con el cdigo.

Mtodos tiles para trabajar con la consola
Para interactuar con el usuario es que existen algunos mtodos
bsicos cuando trabajamos con la Consola. Veamos los ms
usados:
1- Console.WriteLine();
Escribe una nueva linea en la consola, es como presionar Enter y
escribir una linea. Por ejemplo, podemos hacer:
Console.WriteLine(Lo que quiera q salga en la consola);
Tambin podremos imprimir las variables de nuestro programa, para
esto hay dos formas, pero veamos mejor dos ejemplos que son lo
mismo:
//declaramos dos variables
string nombre = "Invitado";
int edad = 22;
//Imprimimos una linea en la consola de dos formas distintas
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);
<="" h3="" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-
left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;
color: rgb(68, 68, 68); font-family: Helvetica, Arial, sans-serif; font-size: 10px; font-
style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-
height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform:
none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust:
auto; -webkit-text-stroke-width: 0px; ">
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();
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

Vous aimerez peut-être aussi