C# é uma linguagem de tipos estáticos, o que significa que tudo tem um tipo em tempo de compilação. Atribuir um valor a um nome chama-se definir uma variável. Uma variável pode ser definida especificando explicitamente o seu tipo ou deixando o compilador de C# inferir o tipo com base no valor atribuído (o que se chama inferência de tipos). Assim, as duas definições de variável que se seguem são equivalentes:
int explicitVar = 10; // Explicitly typed
var implicitVar = 10; // Implicitly typed
A atualização do valor de uma variável faz-se com o operador =. Depois de definida, o tipo de uma variável nunca pode mudar.
var count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning different type
// count = false;
C# é uma linguagem orientada a objetos e exige que todas as funções sejam definidas numa classe. A palavra-chave class serve para definir uma classe. Os objetos (ou instâncias) são criados com a palavra-chave new.
class Calculator
{
// ...
}
var calculator = new Calculator();
Uma função dentro de uma classe chama-se método. Cada método pode ter zero ou mais parâmetros. Todos os parâmetros têm de ter um tipo explícito; não há inferência de tipos para parâmetros. Da mesma forma, o tipo do valor devolvido também tem de ser explícito. Os valores são devolvidos pelos métodos com a palavra-chave return. Para permitir que código noutros ficheiros chame um método, é preciso acrescentar o modificador de acesso public.
class Calculator
{
public int Add(int x, int y)
{
return x + y;
}
}
Os métodos são invocados com a sintaxe de ponto (.) numa instância, indicando o nome do método a chamar e passando argumentos para cada um dos parâmetros do método. Os argumentos podem indicar opcionalmente o nome do parâmetro correspondente.
var calculator = new Calculator();
var sum_v1 = calculator.Add(1, 2);
var sum_v2 = calculator.Add(x: 1, y: 2);
O âmbito em C# é definido entre os carateres { e }.
C# suporta dois tipos de comentários. Os comentários de linha única são precedidos por // e os comentários de várias linhas são inseridos entre /* e */.
A namorada do Lucian está a caminho de casa e ele ainda não preparou o jantar de aniversário deles!
Neste exercício, vais escrever algum código para ajudar o Lucian a cozinhar uma lasanha requintada do seu livro de receitas preferido.
Tens quatro tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.
Define o método Lasagna.ExpectedMinutesInOven() que não recebe parâmetros e devolve quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo esperado no forno em minutos é 40:
var lasagna = new Lasagna();
lasagna.ExpectedMinutesInOven();
// => 40
Define o método Lasagna.RemainingMinutesInOven() que recebe como parâmetro os minutos reais que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de permanecer no forno, com base no tempo esperado no forno em minutos da tarefa anterior.
var lasagna = new Lasagna();
lasagna.RemainingMinutesInOven(30);
// => 10
Define o método Lasagna.PreparationTimeInMinutes() que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos gastaste a preparar a lasanha, partindo do princípio de que cada camada demora 2 minutos a preparar.
var lasagna = new Lasagna();
lasagna.PreparationTimeInMinutes(2);
// => 4
Define o método Lasagna.ElapsedTimeInMinutes() que recebe dois parâmetros: o primeiro parâmetro é o número de camadas que adicionaste à lasanha e o segundo parâmetro é o número de minutos que a lasanha esteve no forno. A função deve devolver quantos minutos trabalhaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação em minutos com o tempo em minutos que a lasanha passou no forno até ao momento.
var lasagna = new Lasagna();
lasagna.ElapsedTimeInMinutes(3, 20);
// => 26
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.