C# é uma linguagem de tipagem estática, o que significa que tudo tem um tipo em tempo de compilação. Atribuir um valor a um nome é o que chamamos de definir uma variável. Você pode definir uma variável especificando o tipo explicitamente ou deixando o compilador do C# inferir o tipo com base no valor atribuído (o que chamamos de inferência de tipo). Por isso, as duas definições de variável a seguir são equivalentes:
int explicitVar = 10; // Explicitly typed
var implicitVar = 10; // Implicitly typed
Para atualizar o valor de uma variável, usamos o operador =. Depois de definida, o tipo de uma variável nunca muda.
var count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning different type
// count = false;
O C# é uma linguagem orientada a objetos e exige que todas as funções sejam definidas em uma classe. A palavra-chave class é usada para definir uma classe. 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 é chamada de método. Cada método pode ter zero ou mais parâmetros. Todos os parâmetros precisam ter o tipo explícito; não existe inferência de tipo para parâmetros. Da mesma forma, o tipo de retorno também precisa ser explícito. Valores são retornados dos métodos com a palavra-chave return. Para que um método possa ser chamado por código em outros arquivos, é preciso adicionar 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 (.) em uma instância, informando o nome do método a chamar e passando argumentos para cada um dos parâmetros dele. Os argumentos podem, opcionalmente, especificar 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 escopo em C# é definido entre os caracteres { e }.
O C# aceita dois tipos de comentários. Comentários de uma linha são precedidos por //, e comentários de várias linhas ficam entre /* e */.
A namorada de Lucian está voltando para casa e ele ainda não preparou o jantar de aniversário deles!
Neste exercício, você vai escrever um pouco de código para ajudar Lucian a preparar uma lasanha primorosa do seu livro de receitas favorito.
Você tem quatro tarefas, todas relacionadas ao tempo gasto no preparo da lasanha.
Defina o método Lasagna.ExpectedMinutesInOven() que não recebe nenhum parâmetro e retorna quantos minutos a lasanha deve ficar no forno. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40:
var lasagna = new Lasagna();
lasagna.ExpectedMinutesInOven();
// => 40
Defina o método Lasagna.RemainingMinutesInOven() que recebe como parâmetro os minutos que a lasanha já passou no forno e retorna quantos minutos a lasanha ainda precisa ficar no forno, com base no tempo esperado no forno, em minutos, da tarefa anterior.
var lasagna = new Lasagna();
lasagna.RemainingMinutesInOven(30);
// => 10
Defina o método Lasagna.PreparationTimeInMinutes() que recebe como parâmetro o número de camadas que você adicionou à lasanha e retorna quantos minutos você passou preparando a lasanha, considerando que cada camada leva 2 minutos para preparar.
var lasagna = new Lasagna();
lasagna.PreparationTimeInMinutes(2);
// => 4
Defina o método Lasagna.ElapsedTimeInMinutes() que recebe dois parâmetros: o primeiro é o número de camadas que você adicionou à lasanha, e o segundo é o número de minutos que a lasanha já passou no forno. A função deve retornar quantos minutos você passou trabalhando no preparo da lasanha, ou seja, a soma do tempo de preparo, em minutos, com o tempo, em minutos, que a lasanha já passou no forno até o momento.
var lasagna = new Lasagna();
lasagna.ElapsedTimeInMinutes(3, 20);
// => 26
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.