Yo, por lógica xD, pienso que las anidadas deberían de ser más eficientes, porque si la condición que se está evaluando está al principio del "nido", pues ya no se tendrán que ejecutar las otras; sin embargo si no son anidadas, aunque la condición que se cumpla esté al principio o al final, se tendrán que evaluar todas las condiciones o estructuras if...else. Pero en el libro de "La escencia de la lógica" de Omar Trejos, en el capítulo 7 dice que un programa con más estructuras if...else, es más eficiente que otro que tenga menos... y eso contrario a mi razonamiento, aunque por lo que dice antes, creo se equivocó.
Lo cito textualmente: " Es importante anotar que tomar una decisión, por simple que ésta sea, le toma mucho tiempo al computador realizarla ya que aunque para nosotros es muy sencillo determinar si 9 es mayor que 5 para el computador no lo es pues debe realizar algunas operaciones para obtener la respuesta correcta.
"De esta manera es útil saber que es mas eficiente un programa que tenga mas decisiones que otro
que tenga menos toda vez que ambos busquen lograr el mismo objetivo. "
Como ejemplo tengo este código en javascript:
[b}Anidada[/b]
Código
if (cargo == 'gerente' || cargo == 'Gerente' || cargo == 'GERENTE') { gp=10000; } else { if (cargo == 'secretaria' || cargo == 'Secretaria' || cargo == 'SECRETARIA' || cargo == 'secretario' || cargo == 'Secretario' || cargo == 'SECRETARIO') { gp=5000; } else { if (cargo == 'mensajero' || cargo == 'Mensajero' || cargo == 'MENSAJERO' || cargo == 'mensajera' || cargo == 'Mensajera' || cargo == 'MENSAJERA') { gp=2000; } else { gp=0; } } }
Secuencial
Código
if (cargo == 'gerente' || cargo == 'Gerente' || cargo == 'GERENTE') { gp=10000; } if (cargo == 'secretaria' || cargo == 'Secretaria' || cargo == 'SECRETARIA' || cargo == 'secretario' || cargo == 'Secretario' || cargo == 'SECRETARIO') { gp=5000; } if (cargo == 'mensajero' || cargo == 'Mensajero' || cargo == 'MENSAJERO' || cargo == 'mensajera' || cargo == 'Mensajera' || cargo == 'MENSAJERA') { gp=2000; } else { gp=0; }
Y bueno también quedaría pendiente por analizar la estructura de casos...
Ya se que en casos pequeños como ese no se nota la diferencia, pero creo que es bueno crearse los buenos hábitos de programación desde que se pueda. Y tal vez si puede afectar notablemente más adelante.