# remotes::install_github("curso-r/CursoRTarefas")
library(CursoRTarefas)
CursoRTarefas::adicionar_chunk_setup() 
CursoRTarefas::adicionar_codigo_pre_tutorial(curso = "Introdução à programação com R",
                              url = "https://loja.curso-r.com/introduc-o-a-programac-o-com-r.html")

Funções próprias

1)a) Crie uma função chamada numero_ao_quadrado() que tenha um argumento (chamado numero) e retorne o quadrado deste número.

Teste se a função funciona: numero_ao_quadrado(3) deve retornar o valor 9.

numero_ao_quadrado <- function(____){
  _____
}
numero_ao_quadrado(3)
numero_ao_quadrado <- function(___){
 ___ ^ 2
}
# Teste se a função funciona:
numero_ao_quadrado(3)
numero_ao_quadrado <- function(numero){
  numero ^ 2
}
# Teste se a função funciona:
numero_ao_quadrado(3)
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

b) Crie uma função chamada raiz_da_soma que recebe 2 números x e y e retorna a raiz quadrada da soma desses números. Depois teste a função para valores x = 6 e y = 3, o resultado gerado pela função deve ser 3.

Dica: sqrt() é a função para raiz quadrada.

raiz_da_soma <- function(){


}
# Teste se a função funciona:
raiz_da_soma(x = 6, y = 3)
raiz_da_soma <- function(x, y){
  soma <- ___
  sqrt(soma)
}
# Teste se a função funciona:
raiz_da_soma(x = 6, y = 3)
raiz_da_soma <- function(x, y){
  soma <- x + y
  sqrt(soma)
}
# Teste se a função funciona:
raiz_da_soma(x = 6, y = 3)
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

Adaptando códigos em funções

2) Nos exercícios sobre controle de fluxo, mostramos um exemplo que, para testá-lo, usamos a função sample para sortear um dia da semana. Vamos transformar aquele código em uma função? Essa função deve se chamar mensagem_de_bom_dia() receber um argumento chamado dia_da_semana. Abaixo segue o código que usamos no exercício, que deve ser adaptado, e também algumas chamadas da função que você pode usar para testar se o resultado é o esperado:

# TRANSFORME O CÓDIGO ABAIXO EM UMA FUNÇÃO:


# Estrutura de repetição
if (dia_da_semana %in% c("sabado", "domingo")) {
  mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom descanso!")
  print(mensagem)

} else if (dia_da_semana == "sexta") {
  mensagem <-
    paste0("Hoje é ", dia_da_semana, ", falta pouco para o final de semana!")
  print(mensagem)

} else {
  mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom trabalho!")
  print(mensagem)
}


# VERIFIQUE SE A FUNÇÃO FUNCIONA:
mensagem_de_bom_dia("segunda")
mensagem_de_bom_dia("sexta")
mensagem_de_bom_dia("domingo")
# TRANSFORME O CÓDIGO ABAIXO EM UMA FUNÇÃO:

mensagem_de_bom_dia <- function(______) {
  # Estrutura de repetição
  if (dia_da_semana %in% c("sabado", "domingo")) {
    mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom descanso!")
    print(mensagem)

  } else if (dia_da_semana == "sexta") {
    mensagem <-
      paste0("Hoje é ", dia_da_semana, ", falta pouco para o final de semana!")
    print(mensagem)

  } else {
    mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom trabalho!")
    print(mensagem)
  }
}

# VERIFIQUE SE A FUNÇÃO FUNCIONA:
mensagem_de_bom_dia("segunda")
mensagem_de_bom_dia("sexta")
mensagem_de_bom_dia("domingo")
# TRANSFORME O CÓDIGO ABAIXO EM UMA FUNÇÃO:

mensagem_de_bom_dia <- function(dia_da_semana) {
  # Estrutura de repetição
  if (dia_da_semana %in% c("sabado", "domingo")) {
    mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom descanso!")
    print(mensagem)

  } else if (dia_da_semana == "sexta") {
    mensagem <-
      paste0("Hoje é ", dia_da_semana, ", falta pouco para o final de semana!")
    print(mensagem)

  } else {
    mensagem <- paste0("Hoje é ", dia_da_semana, "! Bom trabalho!")
    print(mensagem)
  }
}

# VERIFIQUE SE A FUNÇÃO FUNCIONA:
mensagem_de_bom_dia("segunda")
mensagem_de_bom_dia("sexta")
mensagem_de_bom_dia("domingo")
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

Revendo um desafio

3) Nesse exercício, voltaremos no desafio apresentado em uma tarefa anterior. Naquele desafio, mostramos como calcular o desvio padrão.

media_ozone <- mean(airquality$Ozone, na.rm = TRUE)
ozone_centralizado <- airquality$Ozone - media_ozone
ozone_centralizado_ao_quadrado <-  ozone_centralizado ^ 2
media_ozone_centralizado_ao_quadrado <- mean(ozone_centralizado_ao_quadrado, na.rm = TRUE)
desvio_padrao_ozone_calculado <- sqrt(media_ozone_centralizado_ao_quadrado)
desvio_padrao_ozone_calculado

Agora vamos adaptar esse código para usar com pipe. Antes disso, também iremos criar funções para usar nesse encadeamento:

a) Crie uma função chamada centralizar, que recebe um argumento chamado vetor_centralizar, e retorna o vetor centralizado (vetor - média do vetor).

b) Crie uma função chamada eleva_ao_quadrado, que recebe um argumento chamado x, e retorna o valor de x elevado ao quadrado.

c) Usando as funções criadas e o pipe, reescreva o código para calcular o desvio padrão:

# a) 
centralizar <- function(vetor_centralizar){
  _____
}

# b)
eleva_ao_quadrado <- function(x){
  _____
}

# c) 
airquality$Ozone %>% 
  ___ %>% 
  ___ %>% 
  ___ %>% 
  ___()
# a) 
centralizar <- function(vetor_centralizar){
  vetor_centralizar - mean(vetor_centralizar, na.rm = TRUE) 
}

# b)
eleva_ao_quadrado <- function(x){
  _____
}

# c) 
airquality$Ozone %>% 
  ___ %>% 
  ___ %>% 
  ___ %>% 
  ___()
# a) 
centralizar <- function(vetor_centralizar){
  vetor_centralizar - mean(vetor_centralizar, na.rm = TRUE) 
}

# b)
eleva_ao_quadrado <- function(x){
  x ^ 2 
}

# c) 
airquality$Ozone %>% 
  ___ %>% 
  ___ %>% 
  ___ %>% 
  ___()
# a) 
centralizar <- function(vetor_centralizar){
  vetor_centralizar - mean(vetor_centralizar, na.rm = TRUE) 
}

# b)
eleva_ao_quadrado <- function(x){
  x ^ 2 
}

# c) 
airquality$Ozone %>% 
  centralizar() %>% 
  eleva_ao_quadrado() %>% 
  ___(na.rm = TRUE) %>% 
  ___()
# a) 
centralizar <- function(vetor_centralizar){
  vetor_centralizar - mean(vetor_centralizar, na.rm = TRUE) 
}

# b)
eleva_ao_quadrado <- function(x){
  x ^ 2 
}

# c) 
airquality$Ozone %>% 
  centralizar() %>% 
  eleva_ao_quadrado() %>% 
  mean(na.rm = TRUE) %>% 
  sqrt()
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

Enviar as respostas

Se você completou a tarefa e quer submeter, clique no botão abaixo ('Generate') para gerar o seu código hash e envie usando o formulário a seguir:

learnrhash::encoder_logic()
learnrhash::encoder_ui(ui_before = " ", ui_after = " ")
CursoRTarefas::adicionar_codigo_pos_tutorial(url_form = params$url_form)


curso-r/CursoRTarefas documentation built on Feb. 13, 2022, 3:21 p.m.