Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Instruções If Aninhadas | Introdução às Instruções Condicionais
Instruções Condicionais em C++

bookDesafio: 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

nested_if.h

copy
1234567891011121314
if (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

main.cpp

copy
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

main.cpp

copy
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

main.cpp

copy
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 if aninhadas são necessárias em alguns casos, mas não sempre. Na terceira seção, será discutido quando, por que e como evitá-las.

Tarefa

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.

  1. Utilize instruções if aninhadas para determinar o preço do ingresso:
    • Se o cliente tem menos de 18 anos, cobrar:
      • 12.0 nos finais de semana
      • 8.0 nos dias de semana
    • Se o cliente tem entre 18 e 60 anos, cobrar:
      • 20.0 nos finais de semana
      • 15.0 nos dias de semana
    • Se o cliente tem mais de 60 anos, cobrar:
      • 16.0 nos finais de semana
      • 10.0 nos dias de semana
  2. 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

solution.cpp

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 7.69

bookDesafio: 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

nested_if.h

copy
1234567891011121314
if (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

main.cpp

copy
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

main.cpp

copy
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

main.cpp

copy
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 if aninhadas são necessárias em alguns casos, mas não sempre. Na terceira seção, será discutido quando, por que e como evitá-las.

Tarefa

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.

  1. Utilize instruções if aninhadas para determinar o preço do ingresso:
    • Se o cliente tem menos de 18 anos, cobrar:
      • 12.0 nos finais de semana
      • 8.0 nos dias de semana
    • Se o cliente tem entre 18 e 60 anos, cobrar:
      • 20.0 nos finais de semana
      • 15.0 nos dias de semana
    • Se o cliente tem mais de 60 anos, cobrar:
      • 16.0 nos finais de semana
      • 10.0 nos dias de semana
  2. 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

solution.cpp

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5
single

single

some-alt