elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)  (Leído 7,375 veces)
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« en: 12 Junio 2011, 21:28 pm »

A veces tenemos la posibilidad de elegir entre decisiones anidadas o independientes, esto siempre y cuando el programa tenga los mismos resultados estructurandolas de una forma u otra... Entonces ¿Cuál es más eficiente? ¿Cuál gasta menos recursos, se ejecuta más rápido?

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
  1. if (cargo == 'gerente' || cargo == 'Gerente' || cargo == 'GERENTE')
  2. {
  3. gp=10000;
  4. }
  5.  
  6. else
  7. {
  8. if  (cargo == 'secretaria' || cargo == 'Secretaria' || cargo == 'SECRETARIA' || cargo == 'secretario' || cargo == 'Secretario' || cargo == 'SECRETARIO')
  9. {
  10. gp=5000;
  11. }
  12.  
  13. else
  14. {
  15. if (cargo == 'mensajero' || cargo == 'Mensajero' || cargo == 'MENSAJERO' || cargo == 'mensajera' || cargo == 'Mensajera' || cargo == 'MENSAJERA')
  16. {
  17. gp=2000;
  18. }
  19.  
  20. else
  21. {
  22. gp=0;
  23. }
  24. }
  25.  
  26.  
  27.  
  28. }

Secuencial
Código
  1. if (cargo == 'gerente' || cargo == 'Gerente' || cargo == 'GERENTE')
  2. {
  3. gp=10000;
  4. }
  5.  
  6. if (cargo == 'secretaria' || cargo == 'Secretaria' || cargo == 'SECRETARIA' || cargo == 'secretario' || cargo == 'Secretario' || cargo == 'SECRETARIO')
  7. {
  8. gp=5000;
  9. }
  10.  
  11. if (cargo == 'mensajero' || cargo == 'Mensajero' || cargo == 'MENSAJERO' || cargo == 'mensajera' || cargo == 'Mensajera' || cargo == 'MENSAJERA')
  12. {
  13. gp=2000;
  14. }
  15.  
  16. else
  17. {
  18.  
  19. gp=0;
  20. }
  21.  

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.


« Última modificación: 12 Junio 2011, 21:42 pm por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« Respuesta #1 en: 12 Junio 2011, 22:05 pm »

Si, la condición anidada es mejor. Pero yo haría otra cosa antes de hacer la condición: convierte la cadena a minúsculas o mayúsculas y así te ahorras muchas condiciones.

Saludos.


En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« Respuesta #2 en: 12 Junio 2011, 22:25 pm »

Y si lo haces asi:

Código
  1. switch (cargo.ToLowerCase) {
  2.  
  3.  case "gerente":
  4.    gp = 10000;
  5.      break;
  6.  
  7.  case "secretaria":
  8.    gp = 5000
  9.      break;
  10.  
  11.  case "mensajero":
  12.    gp = 2000;
  13.      break;
  14.  
  15.  default:
  16.    gp = 0;
  17.      break;}
  18.  

Es mejor aun?
En línea

Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« Respuesta #3 en: 13 Junio 2011, 00:06 am »

Entonces Omar se equivocó  :P

xxx-zeroxxx Claro así se ve mucho más limpio el código, pero no conocía lo de "ToLowerCase". Soy principiante :P
En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« Respuesta #4 en: 13 Junio 2011, 00:14 am »

yo no estaria seguro de la diferencia entre switch y los if anidados, habria que ver el codigo desamblado para ser objetivos
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: ¿Cuál pedazo de código es más eficiente? (estructura if...else anidada o no)
« Respuesta #5 en: 13 Junio 2011, 01:32 am »

Yo tambien soy principiante, y el codigo ese lo escribi por aca, no se si esta bien escrito lowercase.

El switch funcionara de la misma forma que if else anidada solo que se usa para que puedas organizarte mejor?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines