Lasanha

Lasanha

Exercício de aprendizagem

Introdução

Noções básicas

Funções

Em Gleam, as funções definem-se com a sintaxe pub fn.

pub fn add(x: Int, y: Int) -> Int {
  x + y
}

Esta função recebe dois argumentos, ambos do tipo Int, e devolve um valor do tipo Int. Não existe a palavra-chave return em Gleam: o valor da última expressão de uma função é sempre devolvido implicitamente.

As anotações de tipo dos argumentos e o tipo devolvido são opcionais, e o Gleam verifica sempre completamente os tipos do teu código. Normalmente, quem programa em Gleam dá anotações de tipo às suas funções por clareza, mas podes omiti-las se quiseres.

pub fn add(x, y) {
  x + y
}

Podes chamar uma função com a sintaxe function_name(argument1, argument2).

pub fn double(x: Int) -> Int {
  // Call the add function defined above
  add(x, x)
}

Variáveis

Em Gleam, as variáveis definem-se com a sintaxe let name = expression.

pub fn main() {
  let count = 1
}

As variáveis podem ser declaradas com anotações de tipo. Tal como nos argumentos de uma função, estas são opcionais, embora a maioria de quem programa em Gleam omita as anotações de tipo das variáveis para ser mais breve.

pub fn main() {
  let count: Int = 1
}

Literais de string

Em Gleam, as strings escrevem-se com aspas duplas.

pub fn greeting() {
  "Hello, world!"
}

Comentários no código

Podes usar comentários para deixar notas a outros programadores que leiam o código-fonte. Em Gleam, os comentários são linhas únicas precedidas de //.

pub fn main() {
  // This is a comment
  let x = 1
}

Instruções

Neste exercício vais escrever código para te ajudar a cozinhar uma lasanha fabulosa, seguindo o teu livro de receitas preferido.

Tens cinco tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.

1. Define o tempo esperado no forno em minutos

Define a função expected_minutes_in_oven, que não recebe argumentos e devolve quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo esperado no forno é de 40 minutos:

expected_minutes_in_oven()
// -> 40

2. Calcula o tempo restante no forno em minutos

Define a função remaining_minutes_in_oven, que recebe como argumento os minutos 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 da tarefa anterior.

remaining_minutes_in_oven(30)
// -> 10

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

Define a função preparation_time_in_minutes, que recebe como argumento 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 te leva 2 minutos a preparar.

preparation_time_in_minutes(2)
// -> 4

4. Calcula o tempo total de trabalho em minutos

Define a função total_time_in_minutes, que recebe dois argumentos: o primeiro argumento é o número de camadas que adicionaste à lasanha e o segundo argumento é o número de minutos que a lasanha já esteve no forno. A função deve devolver o número total de minutos que dedicaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação, em minutos, com o tempo, em minutos, que a lasanha esteve no forno até ao momento.

total_time_in_minutes(3, 10)
// -> 16

5. Cria uma notificação de que a lasanha está pronta

Define a função alarm, que não recebe argumentos e devolve uma mensagem a indicar que a lasanha está pronta a comer.

alarm()
// -> "Ding!"
Editar via GitHub A ligação abre numa nova janela ou separador
Gleam Exercism

Estás pronto para começar Lasanha?

Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.