Desafio: Instruções If Aninhadas
Uma declaração if aninhada é simplesmente uma declaração if dentro de outra declaração if. Essa estrutura permite avaliar múltiplas condições, uma após a outra, e executar blocos de código específicos.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
A declaração if externa atua como um guardião, e com base em sua avaliação, pode abrir caminho para outra declaração if interna. Considere um cenário em que se deseja determinar o salário de um trabalhador com base em seu desempenho.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }
Este código calcula o novo salário de um funcionário com base no número de tarefas concluídas e nas horas trabalhadas, com um aumento de 20% se as tarefas forem superiores a 15 e um aumento adicional de 20% se as horas trabalhadas forem superiores a 40. Como pode ser visto, o cálculo atual é 1200. E isso só pode ser alcançado utilizando instruções if aninhadas; aqui estão algumas tentativas de obter a mesma lógica sem elas.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }
À primeira vista, pode parecer que funciona da mesma forma, mas neste caso o trabalhador receberá um aumento extra de 20%, independentemente de ter concluído mais de 15 tarefas. Execute o código e observe a saída, que mostra o valor de 1200, mesmo que desta vez o trabalhador não tenha concluído mais de 15 tarefas.
main.cpp
1234567891011121314151617181920212223#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }
Nesse caso, pode parecer que deveria funcionar como esperado, mas infelizmente, também está incorreto, a saída é 1000. Isso ocorre porque, se o trabalhador concluir mais de 15 tarefas, mas não trabalhar mais de 40 horas, ele não receberá nada. Portanto, é necessário utilizar instruções if aninhadas para obter a implementação correta.
Instruções if aninhadas são muito úteis para criar processos de tomada de decisão e lidar com cenários complexos em seu código. Ao estruturar cuidadosamente o seu código e manter a legibilidade, é possível aproveitar o poder das instruções if aninhadas para escrever programas eficientes e fáceis de manter.
Nota
Instruções
ifaninhadas são necessárias em alguns casos, mas não sempre. Na terceira seção, será discutido quando, por que e como evitá-las.
Swipe to start coding
Você está desenvolvendo um sistema de ingressos de cinema. Os preços dos ingressos variam de acordo com a idade do cliente e se é final de semana ou dia de semana.
- Utilize instruções if aninhadas para determinar o preço do ingresso:
- Se o cliente tem menos de 18 anos, cobrar:
12.0nos finais de semana8.0nos dias de semana
- Se o cliente tem entre 18 e 60 anos, cobrar:
20.0nos finais de semana15.0nos dias de semana
- Se o cliente tem mais de 60 anos, cobrar:
16.0nos finais de semana10.0nos dias de semana
- Se o cliente tem menos de 18 anos, cobrar:
- Retornar o preço do ingresso a partir da função.
Exemplo
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solução
solution.cpp
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you give an example of when nested `if` statements are necessary?
What are some alternatives to using nested `if` statements?
Can you explain how to avoid nested `if` statements in certain scenarios?
Awesome!
Completion rate improved to 7.69
Desafio: Instruções If Aninhadas
Deslize para mostrar o menu
Uma declaração if aninhada é simplesmente uma declaração if dentro de outra declaração if. Essa estrutura permite avaliar múltiplas condições, uma após a outra, e executar blocos de código específicos.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
A declaração if externa atua como um guardião, e com base em sua avaliação, pode abrir caminho para outra declaração if interna. Considere um cenário em que se deseja determinar o salário de um trabalhador com base em seu desempenho.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }
Este código calcula o novo salário de um funcionário com base no número de tarefas concluídas e nas horas trabalhadas, com um aumento de 20% se as tarefas forem superiores a 15 e um aumento adicional de 20% se as horas trabalhadas forem superiores a 40. Como pode ser visto, o cálculo atual é 1200. E isso só pode ser alcançado utilizando instruções if aninhadas; aqui estão algumas tentativas de obter a mesma lógica sem elas.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }
À primeira vista, pode parecer que funciona da mesma forma, mas neste caso o trabalhador receberá um aumento extra de 20%, independentemente de ter concluído mais de 15 tarefas. Execute o código e observe a saída, que mostra o valor de 1200, mesmo que desta vez o trabalhador não tenha concluído mais de 15 tarefas.
main.cpp
1234567891011121314151617181920212223#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }
Nesse caso, pode parecer que deveria funcionar como esperado, mas infelizmente, também está incorreto, a saída é 1000. Isso ocorre porque, se o trabalhador concluir mais de 15 tarefas, mas não trabalhar mais de 40 horas, ele não receberá nada. Portanto, é necessário utilizar instruções if aninhadas para obter a implementação correta.
Instruções if aninhadas são muito úteis para criar processos de tomada de decisão e lidar com cenários complexos em seu código. Ao estruturar cuidadosamente o seu código e manter a legibilidade, é possível aproveitar o poder das instruções if aninhadas para escrever programas eficientes e fáceis de manter.
Nota
Instruções
ifaninhadas são necessárias em alguns casos, mas não sempre. Na terceira seção, será discutido quando, por que e como evitá-las.
Swipe to start coding
Você está desenvolvendo um sistema de ingressos de cinema. Os preços dos ingressos variam de acordo com a idade do cliente e se é final de semana ou dia de semana.
- Utilize instruções if aninhadas para determinar o preço do ingresso:
- Se o cliente tem menos de 18 anos, cobrar:
12.0nos finais de semana8.0nos dias de semana
- Se o cliente tem entre 18 e 60 anos, cobrar:
20.0nos finais de semana15.0nos dias de semana
- Se o cliente tem mais de 60 anos, cobrar:
16.0nos finais de semana10.0nos dias de semana
- Se o cliente tem menos de 18 anos, cobrar:
- Retornar o preço do ingresso a partir da função.
Exemplo
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solução
solution.cpp
Obrigado pelo seu feedback!
single