# 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")

Estrutura de repetição (for)

Quando programamos o despertador do nosso celular para acordar de manhã, estamos, internamente, programando um laço (for) para que uma mesma tarefa (despertar) seja executada várias vezes.

Vamos imaginar que todos os dias o nosso celular verifica se ele precisa despertar às 8 horas da manhã. Se quisermos acordar todos os dias nesse horário, isso poderia ser representado, no R, pelo código abaixo.

dias_da_semana <- c("seg", "ter", "qua", "qui", "sex", "sab", "dom")

for (dia in dias_da_semana) {
  mensagem <- paste0("8 horas da manhã de ", dia, "! Hora de acordar!")
  print(mensagem)
}

1) Complete o código abaixo para fazer o nosso despertador iterar (caminhar) no dia do mês e não mais no dia da semana. Pode considerar que todo mês tem 30 dias.

dias_do_mes <- ____

for (dia in ____) {
  mensagem <- paste0("8 horas da manhã do dia ", ___)
  print(mensagem)
}
dias_do_mes <- ___

for (dia in dias_do_mes) {
  mensagem <- paste0("8 horas da manhã do dia ", dia)
  print(mensagem)
}
dias_do_mes <- 1:30

for (dia in dias_do_mes) {
  mensagem <- paste0("8 horas da manhã do dia ", dia)
  print(mensagem)
}
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

Controle de fluxo (if/else)

2) Queremos escrever um código que apresente uma mensagem diferente conforme o dia da semana. Por exemplo, se for segunda-feira aé quinta-feira, esperamos que o código escreva a mensagem "Bom trabalho!"; se for sexta-feira, escreva "falta pouco para o final de semana!", e se for sábado ou domingo que escreva "Bom descanso!".

Antes de escrever o código que faz esse controle de fluxo, vamos escrever um gerador de dias da semana (para testar se a mensagem está saindo como esperado):

# criar um vetor com os dias da semana
dias_da_semana <- c("segunda", "terça", "quarta", "quinta", "sexta", 
                    "sabado", "domingo")

# usando esse vetor, vamos sortear um dia da semana usando a função sample(),
# e salvar o resultado no vetor 'dia_da_semana':
dia_da_semana <- sample(dias_da_semana, 1)

# Vamos ver qual dia da semana foi sorteado?
# experimente executar esse código algumas vezes para ver como teremos 
# resultados diferentes para os dias da semana:
dia_da_semana

Agora que conseguimos gerar o dia da semana para testar, podemos construir a estrutura de repetição com if, else if e else. Complete os espaços abaixo para que o código tenha o resultado esperado:

# Gerando um dia da semana para testar
dias_da_semana <- c("segunda", "terça", "quarta", "quinta", "sexta", 
                    "sabado", "domingo")
dia_da_semana <- sample(dias_da_semana, 1)
dia_da_semana

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

} else if (________) {
  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)
}
dias_da_semana <- c("segunda", "terça", "quarta", "quinta", "sexta", 
                    "sabado", "domingo")
dia_da_semana <- sample(dias_da_semana, 1)
dia_da_semana

# Estrutura de repetição
if (_________________) {
  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)
}
# Gerando um dia da semana para testar
dias_da_semana <- c("segunda", "terça", "quarta", "quinta", "sexta", 
                    "sabado", "domingo")
dia_da_semana <- sample(dias_da_semana, 1)
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)
}
grade_this({
  if (identical(.result, .solution)) {
    pass("Correto!")
  }
  fail()
})

Estrutura de repetição com controle de fluxo (for + if/else)

3) Complete o código abaixo para fazer o nosso despertador não "tocar" no fim de semana.

dias_da_semana <- c("seg", "ter", "qua", "qui", "sex", "sab", "dom")

for (dia in dias_da_semana) {
  if (__________) {
    mensagem <- paste0("8 horas da manhã de ", dia, "! Hora de acordar!")
    print(mensagem)
  }
}
dias_da_semana <- c("seg", "ter", "qua", "qui", "sex", "sab", "dom")

for (dia in dias_da_semana) {
  if (!___ %in% c(___, ___)) {
    mensagem <- paste0("8 horas da manhã de ", dia, "! Hora de acordar!")
    print(mensagem)
  }
}
dias_da_semana <- c("seg", "ter", "qua", "qui", "sex", "sab", "dom")

for (dia in dias_da_semana) {
  if (!dia %in% c(___, ___)) {
    mensagem <- paste0("8 horas da manhã de ", dia, "! Hora de acordar!")
    print(mensagem)
  }
}
dias_da_semana <- c("seg", "ter", "qua", "qui", "sex", "sab", "dom")

for (dia in dias_da_semana) {
  if (!dia %in% c("sab", "dom")) {
    mensagem <- paste0("8 horas da manhã de ", dia, "! Hora de acordar!")
    print(mensagem)
  }
}
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.