Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 19 Mayo 2016, 19:22 pm



Título: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: NOB2014 en 19 Mayo 2016, 19:22 pm
Hola a todos.
Bueno esa es mi intriga, estoy haciendo un programa para practicar y note que tiene más de 10 bucles y sin pensar demasiado los hice todos con while, quisiera saber si esto de utilizar uno u otro pude afectar la memoria como a la velocidad del programa. -

Saludos.


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: engel lex en 19 Mayo 2016, 19:28 pm
para nada, una vez compilador while y for terminan siendo indiferentes



Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: HardForo en 19 Mayo 2016, 19:29 pm
- Con while() puede que no necesites una variable de lazo auxiliar  (i,j, etc)

- A nivel de codigo maquina podria haber diferencias minimas pero tampoco de muchas instrucciones (mas bien algun reorden)

- Velocidad: no debe haber diferencia significativa excepto que:


    a) A nivel de maquina haya alguna instruccion de mas (en while vs for)  +

    b) Hagas millones de iteraciones +

    c) El codigo a ser iterado es muy simple y entonces en comparacion (a) podria hacerse mas signifcativo.


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: engel lex en 19 Mayo 2016, 19:32 pm
- Con while() puede que no necesites una variable de lazo auxiliar  (i,j, etc)

con for tampoco

incluso perfectamente puedes hacer

Código
  1. while(i != false){
  2.  //algo
  3. }
  4. //o
  5. for(;i != false;){
  6.  //algo
  7. }
  8.  

ambos ciclos son identicos en funcionamiento

- A nivel de codigo maquina podria haber diferencias minimas pero tampoco de muchas instrucciones (mas bien algun reorden)

con lo eficiente de la compilación actual los códigos podrían ser identicos (la compilación actual es "inteligente" y compila en el orden más optimo, no en relación plana a las instrucciones)


- Velocidad: no debe haber diferencia significativa porque aporta poco en instrucciones (a nivel maquina) respecto de lo que se supone haces en el bucle (excepto sea tambien muy simple y tengas que hacerlo millones de veces)

 a) A nivel de maquina alguna instruccion de mas (en while vs for)  +

    b) Hagas millones de iteraciones +

    c) El codigo a ser iterado es muy simple y entonces en comparacion (a) podria hacerse mas signifcativo.
lo mismo que arriba... probablemente nada de esto termine haciendo diferencias


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: HardForo en 19 Mayo 2016, 19:34 pm
Hay casos donde es irreducible la necesidad de variable de lazo sin embargo @alex @"engel lex" creo tienes razon pero habria que desensamblar para estar seguros y de todas formas existen muchos compiladores como para asegurar.

Creí que Lex venia por Alex  por Alexander y a su vez por Alejandro  :xD



Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: engel lex en 19 Mayo 2016, 19:35 pm
Creo tienes razon alex  ;D
alex? :s


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: NOB2014 en 19 Mayo 2016, 21:41 pm
Hola.
Gracias a ambos por ocuparse, como lamentablemente todavía desconozco cómo desensamblar
un programa me quedo con que es indiferente utilizar uno u otro. -

Saludos.


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: Orubatosu en 20 Mayo 2016, 09:38 am
Si te lo piensas bien, hay una diferencia fundamental entre ambos, que "supongo" puedes ver a simple vista.

Donde se hace la comprobación de la condición del bucle, antes o después de ejecutar el bloque


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: engel lex en 20 Mayo 2016, 14:59 pm
Si te lo piensas bien, hay una diferencia fundamental entre ambos, que "supongo" puedes ver a simple vista.

Donde se hace la comprobación de la condición del bucle, antes o después de ejecutar el bloque

no, no está do while, :P así que si son identicos, ambos comprueban en la entrada


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: NOB2014 en 20 Mayo 2016, 15:39 pm
Hola.
Ufff, lo de Orubatosu me había desconcertado, si la condición es falsa el bucle no se ejecuta nunca tanto en for como en while por qué la misma se verifica al comienzo, en cambio, con do while aunque sea falsa la primera vez se lee lo que está dentro del bloque porqué la condición se encuentra al final, espero estar en lo cierto.-     

Saludos.


Título: Re: Que diferencia hay en utilizar bucle for o while en lenguaje C.
Publicado por: HardForo en 20 Mayo 2016, 16:17 pm
Hola.
Ufff, lo de Orubatosu me había desconcertado, si la condición es falsa el bucle no se ejecuta nunca tanto en for como en while por qué la misma se verifica al comienzo, en cambio, con do while aunque sea falsa la primera vez se lee lo que está dentro del bloque porqué la condición se encuentra al final, espero estar en lo cierto.-     

Saludos.

Esa es la idea del do-while  ;)