Percursos
/
C#
C#
/
Exercícios
/
A lasanha suculenta do Lucian
A lasanha suculenta do Lucian

A lasanha suculenta do Lucian

Exercício de aprendizagem

Introdução

Noções básicas

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 */.

Instruções

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.

1. Define o tempo esperado no forno em minutos

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

2. Calcula o tempo restante no forno em minutos

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

3. Calcula o tempo de preparação em minutos

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

4. Calcula o tempo decorrido em minutos

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
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar A lasanha suculenta do Lucian?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.