Páginas: [1]
|
 |
|
Autor
|
Tema: Uso de while (Leído 332 veces)
|
HJZR4
Desconectado
Mensajes: 99
C0N0C1M13NT0
|
Es una pregunta tonta (según por donde lo mires). En los tutoriales de C y eso, no dice nada de la función while, si es mala costumbre usarla y tal. Pero pregunto esto porque veo while como goto... Y dicen que goto no es bueno usarlo... Mi pregunta es: ¿Es mala costumbre usar while? Ejemplo práctico: Con goto: // ... etiqueta: if (variable != 1) { goto etiqueta; } else { // ... }
// ...
Con while: // ... int vale;
while (vale != 0) { if (variable == 1) { vale = 0; } else { vale = -1; } }
// ...
Gracias. HJZR$
|
|
|
|
« Última modificación: 30 Noviembre 2007, 18:15 por HJZR4 »
|
En línea
|
Para aprender solo hay una solución: LeeR y Preguntar
|
|
|
E0N
Lab &
Colaborador
Desconectado
Mensajes: 2.756
http://e0n-productions.blogspot.com/
|
No, usar while no esta "mal visto", lo q si esta mal visto es usar goto (nunca entendi por q, pero weno..)eso es solo un ejemplo de como evitar el uso de goto usando while 
|
|
|
|
|
En línea
|
|
|
|
BETA_V
Desconectado
Mensajes: 104
Yeah, my pen is a Pistola
|
hola¡¡¡lo que esta mal considerado usar,es el goto,continue y break...aunque el break es impresindible en algunos casos.pero no se deberian usar,,por que estas instrucciones modifican el flujo del programa...pero el while,,do while,, for no estan mal vistas,,
|
|
|
|
|
En línea
|
|
|
|
EvilGoblin
Desconectado
Mensajes: 882
LAIN IS LAIN
|
continue y break?.. no sabia que tambien eran de mal gusto =\ int i; i=0; /*Escribimos las primeras 15 variables evitando la Numero 3 y si encontramos el valor q terminamos*/ while(variable[i] <= 15) { if(variable[i] == 3) continue; if(variable[i]=='q') break; printf(variable[i]); i++; } 
|
|
|
|
|
En línea
|
 Experimental Serials Lain
|
|
|
brenda hg
Desconectado
Mensajes: 8
hay poder en lo que quieres! just do it!
|
umm weno io siempre uso while, pero goto para que ¿?  , la verdad no se ni como se usa, y tambien por lo que he leido en tutoriales, no es recomendable ahhh, mejor usa while jeje asi ia no t complicas tantoo  saludos!!
|
|
|
|
|
En línea
|
...LA GLORIA SE PUEDE ALCANZAR...!!
|
|
|
EvilGoblin
Desconectado
Mensajes: 882
LAIN IS LAIN
|
umm weno io siempre uso while, pero goto para que ¿?  , la verdad no se ni como se usa, y tambien por lo que he leido en tutoriales, no es recomendable ahhh, mejor usa while jeje asi ia no t complicas tantoo  saludos!! goto seria una instruccion que genera salto hacia....... x lugar del programa (nada q no pueda solucionarse con funciones) es demasiado engorroso trabajar con el, ya dejaria de ser estructurado. quizas en un programa de 30 lineas de codigo funcione de maravilla, pero en un programa de 1500 lineas de codigo dudo que funcione bien y sobretodo que lo entiendas. Es por eso que NO es recomendable usarlo ejemplo: int main() { int salir; funcion1: printf("di 1, si quieres salir "); scanf("%i",&salir); if(salir !=1) goto funcion1;
printf("saliste del programa\n");
return 0; }
como veras no es nada lindo =\.. y eso q son 5 lineas imaginate si haces 20 funciones y las tienes desparramadas por todo el code. te volverias loco para que funcione correctamente ^^ suerte =D
|
|
|
|
|
En línea
|
 Experimental Serials Lain
|
|
|
brenda hg
Desconectado
Mensajes: 8
hay poder en lo que quieres! just do it!
|
umm weno io siempre uso while, pero goto para que ¿?  , la verdad no se ni como se usa, y tambien por lo que he leido en tutoriales, no es recomendable ahhh, mejor usa while jeje asi ia no t complicas tantoo  saludos!! goto seria una instruccion que genera salto hacia....... x lugar del programa (nada q no pueda solucionarse con funciones) es demasiado engorroso trabajar con el, ya dejaria de ser estructurado. quizas en un programa de 30 lineas de codigo funcione de maravilla, pero en un programa de 1500 lineas de codigo dudo que funcione bien y sobretodo que lo entiendas. Es por eso que NO es recomendable usarlo ejemplo: int main() { int salir; funcion1: printf("di 1, si quieres salir "); scanf("%i",&salir); if(salir !=1) goto funcion1;
printf("saliste del programa\n");
return 0; }
como veras no es nada lindo =\.. y eso q son 5 lineas imaginate si haces 20 funciones y las tienes desparramadas por todo el code. te volverias loco para que funcione correctamente ^^ suerte =D uhh wow jeje si tienes mucha razon se comprende el porquè de no usarla  wow a veces me dejan hcer programas con muxas lineas  , y para trabajar con goto puff la veo mal jeje gracias x la breve explicacion saludos !! 
|
|
|
|
|
En línea
|
...LA GLORIA SE PUEDE ALCANZAR...!!
|
|
|
HJZR4
Desconectado
Mensajes: 99
C0N0C1M13NT0
|
A eso exactamente me refería, si es mala costumbre usar while y porque es mala elección el goto, aunque me lo imaginaba. Si le quitas a un programa la "gracia" de que sea estructurado.. xD Lo que no sabía es que el break y continue eran tambien malas opciones... grcias 
|
|
|
|
|
En línea
|
Para aprender solo hay una solución: LeeR y Preguntar
|
|
|
|
Ragnarok
|
El goto está mal considerado porque hace difícil seguir el programa, más que nada porque salta de un sitio a otro y no sabes lo que hace. El while no tiene nada de malo, pero en raras ocasiones tendrás un while en lugar de un for, en el que no sólo se especifica la condición de parada sino también la inicialización de las variables involucradas en la condición de parada y las modificaciones que se hacen a las mismas en cada paso. Creo que es más difícil saber qué hace este programa que lo que hace el de EvilGoblin. int main(){ int a, b = 100; scanf("%i",&a); e1:if(a<10) goto e2; a = a/2; e2:b=a*a; if(b<100) goto e1; return b; }
|
|
|
|
|
En línea
|
|
|
|
|
Karman
|
no es de ninguna manera malo utilizar while, lo que estaba mal visto era utilizar while para bucles infinitos ya que: while(1){ <- cada vez que llega a este punto se comprueba la valides de 1 ... }
for(;;){ <- no hay comparaciones... ... }
en el nivel más básico (assembler) la primera instrución sería algo así: .bucle: .mover condición a acumulador .condición verdadera? .saltar a fin ... ... .saltar a bucle .fin:
mientras que un for(;  .bucle: ... ... .saltar a bucle
como se ve hay 3 instrucciones inútiles que se ejecutan por cada vuelta del bucle, aunque esto era antes, hoy en día los compiladores tienen suficiente "inteligencia" para corregir estos errores por lo que en la mayoría se compila directamente como un for... con respecto a lo del break y continue no es tan así, en los switch la única forma de finalizar una condición es con break, el tema del continue es por la misma razón de goto... para no complicarle la vida a quien vea el código, esto no quiere decir que no se pueda utilizar... solo que no se debe abusar de dichas instrucciones ya que en algunas situaciones el uso de estas instrucciones puede simplificar el código, básicamente está bien utilizarlas cuando con if anidados se complicaría mucho el código... S2
|
|
|
|
« Última modificación: 01 Diciembre 2007, 03:29 por Karman »
|
En línea
|
|
|
|
BETA_V
Desconectado
Mensajes: 104
Yeah, my pen is a Pistola
|
hola¡¡¡cuando dije lo del break y el continue,,,,especifique tambien que era necesario para algunas situaciones 
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|