Ler e escrever em aplicações de consola
Neste artigo, vamos ver os básicos sobre criar aplicações de consola em C#. O artigo é principalmente direccionado para quem já conhece alguma teoria de C# (declarar variáveis, realizar operações comuns entre elas, etc).
Console
Neste exemplo, a aplicação irá perguntar o nome e o ano de nascimento do utilizador para depois calcular a sua idade. A leitura é efectuada através do método ReadLine() que permite recolher toda a cadeia de caracteres que o utilizador introduziu até pressionar o Enter. A escrita é efectuada através do método WriteLine() que permite receber qualquer número de parâmetros, sendo que o primeiro é sempre a string de output, instanciá-los com os argumentos por posição, i.e. {0}
corresponderá ao primeiro argumento dado para instanciação, e por fim mostrar a string instanciada.
Método WriteLine
O método WriteLine
permite escrever conteúdos para a consola. Um exemplo básico de uso desta função é escrever algo no ecrã para informar o utilizador, por exemplo:
Console.WriteLine("Olá, bom dia! Bem vindo ao programa");
Diferença entre o Write e WriteLine
Também existe o método Write
. A diferença entre os métodos Write
e WriteLine
é o facto deste último adicionar um caractere de quebra de linha (\n
). Na consola, esse a diferença é facilmente visível:
Console.Write("Esta linha vai ficar");
Console.Write("junta com a segunda");
Console.WriteLine();
Console.WriteLine("Mas esta linha já vai");
Console.WriteLine("ficar separada por uma quebra de linha");
Saída:
Esta linha vai ficarjunta com a segunda
Mas esta linha já vai
ficar separada por uma quebra de linha
Formatação de strings
Outra funcionalidade deste método é a formatação de strings para apresentar (corresponde à função String.Format
). Com esta funcionalidade podemos criar um modelo com o qual preenchemos os "espaços em branco":
Console.WriteLine("O aluno {0} é bom à cadeira de {1}", "João", "Programação");
Resultado:
O aluno João é bom à cadeira de Programação
Para além de substituir texto, também é possível formatar valores, casas decimais no caso de tipos numéricos, etc. Podem encontrar mais informação em:
FIXME Seria interessante falar do readline, readkey, e derivados
Threading Sleep
O método Sleep()
permite fazer uma pausa, em milisegundos, antes do processo continuar. Neste caso serve para fazer uma espera de 5 segundos antes da aplicação terminar. Nota: duas técnicas comuns para não fechar a consola no final da execução, impedindo assim o utilizador de ver o resultado final, passam pelo uso de um ReadLine()
, esperando que o utilizador pressione Enter, ou, dentro do Visual Studio, usar CTRL+F5 para executar a aplicação.
using System;
public class Idade
{
public static int Main(string[[]] args)
{
Console.WriteLine("Como te chamas?");
string line = Console.ReadLine();
string nome = line;
Console.WriteLine("{0}, em que ano nasceste?", nome);
line = Console.ReadLine();
int ano = Convert.ToInt32(line);
int idade = DateTime.Today.Year - ano;
Console.WriteLine("{0}, tens {1} anos.", nome, idade);
System.Threading.Thread.Sleep(5000);
}
}