Ir para o conteúdo

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);
   }
}

Informação Relacionada