Lasanha

Lasanha

Exercício de aprendizagem

Introdução

Variáveis e atribuição

R é uma linguagem de tipagem dinâmica, por isso, em geral, não é necessário especificar o tipo de uma variável. O operador de atribuição preferido é <-

x <- 42
avogadro <- 6.02e23
mystr <- "Hello, World!"

Usar = em vez de <- funciona muitas vezes, mas nem sempre, e é desaconselhado por ser um mau estilo. Se estiveres a trabalhar no RStudio, podes inseri-lo com o atalho de teclado Alt-minus.

Os operadores são, na sua maioria, convencionais, mas repara em %/% e %%:

2 + 3   # 5
2 - 3   # -1
2 * 3   # 6
2 / 3   # 0.6666667
8 %/% 3 # 2 (integer division)
8 %% 3  # 2 (remainder)
2 ^ 3   # 8 (exponential)

Em R, # inicia um comentário de uma linha. Não existe uma sintaxe separada para comentários de várias linhas.

Funções

Para definir uma função:

squareit <- function(x) {
    x * x
}

As funções podem ter zero ou mais argumentos, separados por vírgulas. Os parênteses () são necessários com function(), mesmo que não haja parâmetros.

Podem especificar-se valores predefinidos para os argumentos de uma função, embora tenham de vir depois de todos os argumentos sem valor predefinido, e usa = e não <- para atribuir o valor predefinido. Como exemplo bastante inútil:

squareit <- function(x = 42) {
    x * x
}

squareit()
#> [1] 1764

As chavetas { } não são estritamente necessárias para corpos de função com uma única linha, mas incluí-las é considerado um bom estilo.

O R devolve automaticamente o valor final de uma função, como nos exemplos acima.

return() pode ser usado em qualquer parte do corpo da função para tornar um valor devolvido explícito.

Chamar uma função funciona da mesma forma que em muitas outras linguagens:

squareit(3)
#> [1] 9

Instruções

Neste exercício vais escrever algum código para te ajudar a cozinhar uma lasanha fabulosa a partir do teu livro de culinária preferido.

Tens quatro 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 parâmetros e devolve quantos minutos a lasanha deve estar no forno. Segundo o livro de culinária, o tempo esperado no forno é de 60 minutos.

> expected_minutes_in_oven()
[1] 60

2. Calcula o tempo restante no forno, em minutos

Define a função remaining_time_in_minutes, que recebe como parâmetro os minutos que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de ficar no forno, com base no tempo esperado no forno da tarefa anterior.

> remaining_time_in_minutes(50)
[1] 10

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

Define a função prep_time_in_minutes(), que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos passaste a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.

> prep_time_in_minutes(2)
[1] 4

4. Calcula o tempo decorrido, em minutos

Define a função elapsed_time_in_minutes, que recebe dois argumentos: o primeiro argumento é o número de camadas que adicionaste à lasanha e o segundo parâmetro é o número de minutos que a lasanha já esteve no forno. A função deve devolver quantos minutos, no total, 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.

> elapsed_time_in_minutes(3, 20)
[1] 26
Editar via GitHub A ligação abre numa nova janela ou separador
R Exercism

Estás pronto para começar Lasanha?

Inscreve-te no Exercism para aprenderes e dominares R com 21 conceitos111 exercícios, e mentoria humana real, tudo grátis.