If - Else Aninhado
Parte da seção Fundamentos do Journey de R da Coddy — lição 25 de 78.
Às vezes, duas opções não são suficientes. E se você precisar verificar várias condições e lidar com cada uma de forma diferente? Você pode colocar uma instrução if-else dentro de outro bloco if ou else para criar caminhos de decisão mais complexos.
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}O R primeiro verifica se a pontuação é 90 ou superior. Como 85 não atende a essa condição, ele passa para o bloco else.
Dentro, outro if verifica se a pontuação é de pelo menos 80. Como 85 passa neste teste, ele imprime "Grade: B".
O R fornece uma maneira mais limpa de escrever isso usando else if:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}Ambas as abordagens funcionam da mesma forma, mas else if mantém seu código mais plano e fácil de ler. Você pode encadear quantos blocos else if forem necessários, e o R executará apenas o primeiro bloco cuja condição for verdadeira.
Desafio
FácilCrie um sistema de preços de ingressos usando instruções if-else aninhadas ou else if para determinar o preço do ingresso com base na idade.
Você recebeu a seguinte variável:
age <- 25Escreva uma série de condições para determinar e imprimir o preço do ingresso com base nestas regras:
- Se a idade for menor que 5, imprima
"Free" - Se a idade estiver entre 5 e 12 (inclusive), imprima
"$5" - Se a idade estiver entre 13 e 17 (inclusive), imprima
"$8" - Se a idade estiver entre 18 e 64 (inclusive), imprima
"$12" - Se a idade for 65 ou mais, imprima
"$7"
Use a função print() para o seu output.
Folha de consulta
Você pode aninhar instruções if-else umas dentro das outras para verificar múltiplas condições:
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}Uma abordagem mais limpa é usar else if para encadear múltiplas condições:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}O R avalia as condições em ordem e executa apenas o primeiro bloco cuja condição seja verdadeira. Você pode encadear quantos blocos else if forem necessários.
Experimente você mesmo
# Variável fornecida
age <- 25
# TODO: Escreva seu código abaixo
# Use instruções if-else aninhadas ou else if para determinar o preço do ingresso
# com base nas regras de idade fornecidasEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos (AND, OR)Operadores Lógicos Parte 2 (NOT)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico de Conversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetro Padrão