Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Bucle For-While(conveniencias)

Estas en el tema de Bucle For-While(conveniencias) en el foro de C/C++ en Foros del Web. Hola a todos. Tengo un muy buen amigo, ingeniero en computacion, en una excelente universidad, (aunque se graduo en el 2000). Este hombre, me ha ...
  #1 (permalink)  
Antiguo 24/08/2012, 17:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Bucle For-While(conveniencias)

Hola a todos.

Tengo un muy buen amigo, ingeniero en computacion, en una excelente universidad, (aunque se graduo en el 2000). Este hombre, me ha recomendado que solo debo utilizar, en la programacion estructurada, las secuencias, while, y bifurcacion (if-then-else).

Ahora, yo he visto que se usa por todos lados el bucle for. Sin embargo, me ha dicho que no debo utilizar for, que es simplemente una complicacion, que el while lo reemplaza perfectamente, que es mas simple, y que se mas rapido, y que se yo mas...

Me gustaria su opinion, es malo utilizar el bucle for?

Saludos!
  #2 (permalink)  
Antiguo 24/08/2012, 18:09
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Bucle For-While(conveniencias)

...pues haber...si bien es cierto que puedes reemplazar un for por while, cada una de estas instrucciones tiene un fin preciso y por algo existen...para decirlo simple y sin entrar en complicaciones ni casos excepcionales, deberías usar for cuando conoces la cantidad de veces que se debe repetir el ciclo...en cambio, deberias usar while cuando NO CONOCES la cantidad de veces que se debe repetir el ciclo, sino que la cantidad de repeticiones estará dada por la validacion de la condicion...

...con respecto a la velocidad, en la mayoria de los lenguajes de programacion donde se usa for y while prácticamente no tienen diferencias...ahora, si miras este link, muestra como en javascript el while es mas veloz que el for...pero que habria que ver sobre que motor javascript se esta probando...

http://www.stoimen.com/blog/2012/01/...-for-vs-while/
  #3 (permalink)  
Antiguo 24/08/2012, 19:05
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Bucle For-While(conveniencias)

Hola.

En algunos lenguajes la diferencia entre usar for y while es significativa ya que el segundo puede evaluar la condición antes de entrar al ciclo y el primero está limitado a iterar desde un valor inicial a uno final, por otro lado el for ejecutará al menos una vez el ciclo.
Esta diferencia es totalmente nula en C/C++ ya que en estos, el for es una estructura muchísimo mas versátil.

Se puede comprobar con un simple ejemplo:
Código C++:
Ver original
  1. #include<iostream.h>
  2.  
  3. using namespace std;
  4. int main(){
  5.   int c = 0;
  6.   /* while verifica al inicio, no ingresa al ciclo */
  7.   while (c > 0) {
  8.     cout << "Entre al while";
  9.     c--;
  10.   }
  11.   /* for verifica al inicio, no ingresa al ciclo */
  12.   for(; c > 0; c--) cout << "Entre al for";
  13.  
  14.   cin.get();
  15.   return 0;
  16. }
En ningún caso se entra al ciclo.

Particularmente cuando se conoce el valor incial y el final de un ciclo, me parece mucho mas claro el uso de for, de otro modo el while. Por supuesto es una apreciación personal.

En cuanto a la performance no hay diferencias significativas, esto se puede comprobar compilando con salida a assembler y comparando los códigos resultantes.

Un saludo.
  #4 (permalink)  
Antiguo 25/08/2012, 10:19
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Bucle For-While(conveniencias)

Gracias!!!!!!!!!!!

Tengo una idea, para probar podria hacer un while y un for, con las mismas sentencias, y medir el tiempo que tarda con alguna funcion (creo que hay una en milisegundos).

Saludos!!!

Muchas gracias.
  #5 (permalink)  
Antiguo 27/08/2012, 19:01
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Respuesta: Bucle For-While(conveniencias)

amigo, estas 2 instrucciones para tratameinto de ciclos en mi opinion no veo nada que 1 sea mas rapido que el otro a veces el while resuelve cosas mas rapidas que el for, de eso depende los contadores, por ejemplo,

1
si lo que queremos es recorrer 1 arreglo tiene que ser por medio de 1 contador o iteradores, en este caso 1 contador, es obligado para ambas instrucciones usarlo y se consume el mismo tamanno de memoria que es crear 1 INT.

for ( int i =0; i < 4; i++ ) y el otro;;

int j =0;
while( i<4 )
{
i++;
}


estad 2 cosas hacen lo mismo y con 1 sola variable contador i o j.


ahora si sabes cuanto es lo que va a mover el ciclo, por ejemplo 6 repeticiones nada mas entonces puedes hacer esto con ambas cosas y aqui si le gana el while, lo que perderias la cantidad porque se restan, todo es a conveniencia tuya.

int casos = 6;

for (int i =0; i < casos; i++)

while(casos--)
{

}

y ya en este caso el while no tuvo ningun contador, lo que pasa es que casos-- se decrementa hasta 0 y en el for tienes contador pero casos queda siempre con valor 6,
espero te sirva, de todas formas el mejor ciclo es el que mejor sepas usar, con el for se pueden hacer 1000 cosas, incluso programar dentro de su estructura.

s2
cronos
  #6 (permalink)  
Antiguo 28/08/2012, 11:56
 
Fecha de Ingreso: agosto-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Bucle For-While(conveniencias)

Gracias!!!

Etiquetas: bucle, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:14.