Poseemos la mejor solución que descubrimos en internet. Esperamos que te resulte de ayuda y si deseas aportar algo que nos pueda ayudar a perfeccionar nuestra información hazlo con total libertad.
Solución:
Su primer paso en este tipo de problemas siempre es hacer una tabla lógica.
A | B | Result
-------------------
T | T | do action C
T | F | ...
F | T | do action C
F | F | do action C
Una vez que hayas hecho la tabla, la solución es clara.
if (A && !B)
...
else
do action C
Tenga en cuenta que esta lógica, aunque más corta, puede ser difícil de mantener para los futuros programadores.
Tienes dos opciones:
-
Escribe una función que realice la “acción C”.
-
Reorganice su lógica para que no tenga tantas declaraciones if anidadas. Pregúntese qué condiciones hacen que ocurra la “acción C”. Me parece que sucede cuando la “condición B” es true o “condición A” es false. Podemos escribir esto como “NO A NI B”. Traduciendo esto a código C, obtenemos
if (!A || B) action C else ...
Para obtener más información sobre este tipo de expresiones, sugiero buscar en Google “álgebra booleana”, “lógica de predicados” y “cálculo de predicados”. Estos son temas matemáticos profundos. No necesitas aprenderlo todo, solo lo básico.
También debe aprender sobre la “evaluación de cortocircuito”. Debido a esto, el orden de las expresiones es importante para duplicar exactamente la lógica original. Tiempo B || !A
es lógicamente equivalente, usando esto como la condición ejecutará la “acción C” cuando B
es true independientemente del valor de A
.
Puedes simplificar la declaración de esta manera:
if ((A && B) || (!A)) // or simplified to (!A || B) as suggested in comments
do C
De lo contrario, coloque el código para ‘C’ en una función separada y llámelo:
DoActionC()
....
// code for Action C
if (condition A)
if(condition B)
DoActionC(); // call the function
else
...
else
DoActionC(); // call the function
Puedes sostener nuestra función añadiendo un comentario y dejando una valoración te damos las gracias.