Percursos
/
Elm
Elm
/
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 1

Constantes e funções

Um valor constante define-se com name = expression. No Elm, tudo o que não seja uma definição é uma expressão.

five = 5

six = 3 + 3

As funções definem-se com name parameters... = expression, e os parâmetros são separados apenas por espaços.

add number1 number2 = number1 + number2

Invocar uma função também é uma expressão e faz-se indicando o nome da função e passando argumentos para cada um dos seus parâmetros, separados por espaços, tal como na definição da função.

five = add 2 3

Podes usar parênteses para especificar a ordem de avaliação de uma expressão.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Indentação / espaços em branco significativos

O Elm não usa marcadores sintáticos como chavetas, parênteses ou pontos e vírgulas para delimitar o código. Em vez disso, usa espaços em branco e indentação.

  • As definições de módulos, de imports e de funções de nível superior têm de começar na coluna mais à esquerda.
  • Se uma expressão estiver dividida por várias linhas, o código que faz parte dessa expressão tem de estar indentado a partir dessa expressão com pelo menos um espaço.
  • As partes da expressão que estão agrupadas devem ser indentadas com o mesmo número de espaços.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

Módulos

Cada ficheiro em Elm é um módulo e tem de conter uma instrução module antes de todo o resto do código. Os nomes dos módulos têm de coincidir com o nome do ficheiro, por isso o módulo Calculator tem de estar no ficheiro Calculator.elm. Tudo o que é definido dentro de um módulo tem âmbito privado dentro dele e não pode ser acedido a partir de fora desse módulo, a menos que esteja listado em exposing.

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

Comentários

Um comentário é um texto dentro do ficheiro Elm que não é interpretado como código. Destina-se sobretudo a ser lido por ti e por outros programadores. Há uma sintaxe simples para comentários de uma só linha, baseada em dois hífenes. Também podes ter comentários de várias linhas, com o par de delimitadores de abertura e fecho {- e -}.

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

Formatação

Existe um guia de estilo, e podes usar o elm-format para formatar o código automaticamente.

Instruções

Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fantástica do teu livro de receitas preferido.

Tens três tarefas, todas relacionadas com o tempo gasto a cozinhar a lasanha.

1. Define o tempo esperado no forno, em minutos

Define expectedMinutesInOven para calcular quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo esperado no forno, em minutos, é 40:

expectedMinutesInOven
    --> 40

2. Calcula o tempo de preparação, em minutos

Define preparationTimeInMinutes, que recebe o número de camadas da lasanha como parâmetro e devolve quantos minutos são precisos para preparar a lasanha, assumindo que cada camada leva 2 minutos a preparar.

preparationTimeInMinutes 3
    --> 6

3. Calcula o tempo decorrido, em minutos

Define a função elapsedTimeInMinutes, que recebe dois parâmetros: o primeiro é o número de camadas da lasanha e o segundo é o número de minutos que a lasanha está no forno. A função deve devolver quantos minutos já dedicaste 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.

elapsedTimeInMinutes 3 20
    --> 26
Editar via GitHub A ligação abre numa nova janela ou separador
Elm Exercism

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

Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.