Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Sentencias If Anidadas | Introducción a las Sentencias Condicionales
Sentencias Condicionales en C++

bookDesafío: Sentencias If Anidadas

Una sentencia if anidada es simplemente una sentencia if dentro de otra sentencia if. Esta estructura permite evaluar múltiples condiciones, una tras otra, y ejecutar bloques 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 } } }

La sentencia if externa actúa como un filtro, y según su evaluación, puede dar acceso a otra sentencia if interna. Considere un escenario en el que se desea determinar el salario de un trabajador según su desempeño.

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 el nuevo salario de un empleado en función del número de tareas completadas y las horas trabajadas, con un aumento del 20% si las tareas superan 15 y un aumento adicional del 20% si las horas trabajadas superan 40. Como se puede observar, el cálculo actual es 1200. Esto solo se puede lograr utilizando sentencias if anidadas; a continuación, se muestran algunos intentos de obtener la misma lógica sin ellas.

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; }

Al principio puede parecer que funciona igual, pero en este caso el trabajador recibirá un aumento extra del 20%, independientemente de si ha completado más de 15 tareas. Ejecuta el código y observa la salida, muestra un valor de 1200, aunque esta vez el trabajador no completó más de 15 tareas.

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; }

En ese caso, puede parecer que debería funcionar como se espera, pero desafortunadamente, también es incorrecto, la salida es 1000. Esto se debe a que si el trabajador completa más de 15 tareas pero no trabaja más de 40 horas, no recibirá nada. Por lo tanto, es necesario utilizar sentencias if anidadas para obtener la implementación correcta.

Las sentencias if anidadas son muy útiles para crear procesos de toma de decisiones y manejar escenarios complejos en tu código. Al diseñar cuidadosamente la estructura de tu código y mantener la legibilidad, puedes aprovechar el poder de las sentencias if anidadas para escribir programas eficientes y fáciles de mantener.

Note
Nota

Las sentencias if anidadas son necesarias en algunos casos pero no siempre. En la tercera sección, se analizará cuándo, por qué y cómo evitarlas.

Tarea

Swipe to start coding

Estás desarrollando un sistema de boletos de cine. Los precios de los boletos varían según la edad del cliente y si es fin de semana o día laborable.

  1. Utiliza sentencias if anidadas para determinar el precio del boleto:
    • Si el cliente es menor de 18 años, cobra:
      • 12.0 en fines de semana
      • 8.0 en días laborables
    • Si el cliente tiene entre 18 y 60 años, cobra:
      • 20.0 en fines de semana
      • 15.0 en días laborables
    • Si el cliente es mayor de 60 años, cobra:
      • 16.0 en fines de semana
      • 10.0 en días laborables
  2. Devuelve el precio del boleto desde la función.

Ejemplo

calculateTicketPrice(16, true)12.0
calculateTicketPrice(30, false)15.0
calculateTicketPrice(70, true)16.0

Solución

solution.cpp

solution.cpp

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 5
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you show an example of nested `if` statements in code?

What are some best practices for using nested `if` statements?

Are there alternatives to nested `if` statements for complex logic?

close

Awesome!

Completion rate improved to 7.69

bookDesafío: Sentencias If Anidadas

Desliza para mostrar el menú

Una sentencia if anidada es simplemente una sentencia if dentro de otra sentencia if. Esta estructura permite evaluar múltiples condiciones, una tras otra, y ejecutar bloques 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 } } }

La sentencia if externa actúa como un filtro, y según su evaluación, puede dar acceso a otra sentencia if interna. Considere un escenario en el que se desea determinar el salario de un trabajador según su desempeño.

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 el nuevo salario de un empleado en función del número de tareas completadas y las horas trabajadas, con un aumento del 20% si las tareas superan 15 y un aumento adicional del 20% si las horas trabajadas superan 40. Como se puede observar, el cálculo actual es 1200. Esto solo se puede lograr utilizando sentencias if anidadas; a continuación, se muestran algunos intentos de obtener la misma lógica sin ellas.

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; }

Al principio puede parecer que funciona igual, pero en este caso el trabajador recibirá un aumento extra del 20%, independientemente de si ha completado más de 15 tareas. Ejecuta el código y observa la salida, muestra un valor de 1200, aunque esta vez el trabajador no completó más de 15 tareas.

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; }

En ese caso, puede parecer que debería funcionar como se espera, pero desafortunadamente, también es incorrecto, la salida es 1000. Esto se debe a que si el trabajador completa más de 15 tareas pero no trabaja más de 40 horas, no recibirá nada. Por lo tanto, es necesario utilizar sentencias if anidadas para obtener la implementación correcta.

Las sentencias if anidadas son muy útiles para crear procesos de toma de decisiones y manejar escenarios complejos en tu código. Al diseñar cuidadosamente la estructura de tu código y mantener la legibilidad, puedes aprovechar el poder de las sentencias if anidadas para escribir programas eficientes y fáciles de mantener.

Note
Nota

Las sentencias if anidadas son necesarias en algunos casos pero no siempre. En la tercera sección, se analizará cuándo, por qué y cómo evitarlas.

Tarea

Swipe to start coding

Estás desarrollando un sistema de boletos de cine. Los precios de los boletos varían según la edad del cliente y si es fin de semana o día laborable.

  1. Utiliza sentencias if anidadas para determinar el precio del boleto:
    • Si el cliente es menor de 18 años, cobra:
      • 12.0 en fines de semana
      • 8.0 en días laborables
    • Si el cliente tiene entre 18 y 60 años, cobra:
      • 20.0 en fines de semana
      • 15.0 en días laborables
    • Si el cliente es mayor de 60 años, cobra:
      • 16.0 en fines de semana
      • 10.0 en días laborables
  2. Devuelve el precio del boleto desde la función.

Ejemplo

calculateTicketPrice(16, true)12.0
calculateTicketPrice(30, false)15.0
calculateTicketPrice(70, true)16.0

Solución

solution.cpp

solution.cpp

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 5
single

single

some-alt