for, while o do-while? ¡Este es el dilema!
Comparemos el potencial de las 3 instrucciones realizando este sencillo ejercicio.
Suma de los primeros 10 enteros positivos.
Esto significa que debe realizar la suma 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10. Este cálculo particular se puede interpretar como una ecuación. Si tomamos en consideración solo la suma 1 + 2 se puede calcular como 1 + 1 + 1 o usando las variables:
Si x = 1 e i = 1, la suma 1 + 2 se puede escribir como x = x + (i + 1) . Si insertamos esta operación en un ciclo, aumentando la "i" en 1 en cada reingreso al ciclo, a la décima vez tendremos el mismo resultado que la suma 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10.
• for
int principal () {
int x = 1;
for (int i = 1; i <10; i ++) {
x = x + (i + 1);
}
printf ("%d \n", x);
}
• while
int principal () {
int x = 1;
int i = 1;
while (i <10) {
x = x + (i + 1);
i++;
}
printf ("%d \n", x);
}
• do while
int principal () {
int x = 1;
int i = 1;
hacer {
x = x + (i + 1);
i++;
} while (i <10);
printf ("%d \n", x);
}
No hay una diferencia real, los tres son buenos para resolver la mayoría de los problemas que necesitan instrucciones iterativas. El consejo que te doy es que uses el " for" cuando necesites una variable incremental; de hecho, solucionamos este problema en menos líneas de código que usando while y do-while.
Otro posible uso del "for" es poder crear bucles infinitos, pero infinito también significa la imposibilidad de salir del for y cerrar automáticamente el programa.
#incluir <stdio.h>
int principal () {
por (;;) {
printf ("Soy un bucle infinito \ n");
}
}
Uno de los principios fundamentales de la programación en C es que un programa comienza y termina en un tiempo definido (puede ser largo pero tarde o temprano terminará), con este procedimiento el ciclo infinito no permite la terminación natural del programa.
Para detener un bucle infinito, necesariamente debe finalizar la ejecución presionando la tecla "detener" de su IDE.
Sin embargo, estos errores no se dan solo con el uso del for (;;), basta con confundir la condición de evaliación de un bucle (ya sea for o while...) para que por arte de magia se atasque en un bucle infinito.
Pausa y parada de un ciclo.
Para resolver el problema de los bucles infinitos, es una buena idea detener la ejecución manualmente:
Piense en un programa que finaliza su ejecución después de que la suma de un número indefinido de números sea igual a 100. Sin saber a priori los números introducidos por un usuario, es útil utilizar bucles infinitos.
para poder salir del ciclo, se utiliza la palabra clave "break" (ya la utilizamos para salir del "case" del "switch"). Una vez alcanzada la suma == 100 invocaremos "break" que detendrá el ciclo.
#incluir <stdio.h>
int principal () {
int x = 0;
int suma = 0;
printf ("Suma x números hasta llegar a 100 \ n");
for (;;) {
printf ("ingrese un número: \n");
scanf ("%d", &x);
suma = suma + x;
printf ("suma =%d\n", suma);
if (suma > 100) {
printf ("¡ha superado el límite máximo de 100! \n");
printf ("restablecer la aplicación \n");
suma = 0;
x = 0;
}
if (suma == 100) {
printf ("ha llegado a 100 \n");
break; // cuando se llega a 100, el break sale del ciclo
}
}
printf ("Salí del ciclo for porque se invocó la instrucción break \n");
}
No hay comentarios:
Publicar un comentario