Blog

Categorías

X Cerrar

Categorías

Ciclos o Bucles - Nociones de programación

May 25 2017 | Programación, Web

En muchas ocasiones a la hora de programar es necesario ejecutar repetidas veces un conjunto de instrucciones; duplicar código parece una solución lógica cuando se está aprendiendo a programar, pero en realidad no es la más conveniente. Duplicar código puede acarrear varios problemas: lo primero es que se harán innecesariamente más extensos los archivos, en el caso de requerirse mantenimiento o actualización del código, será muy engorroso realizar este trabajo, además si el número de repeticiones es elevado haría prácticamente imposible cumplir con el cometido.

Los ciclos o bucles permiten ejecutar repetidas veces una instrucción o un bloque de ellas; deben estar construidos de manera tal que se pueda tener control de la cantidad de repeticiones a realizar, de lo contrario se generaría un ciclo de ejecución infinita que podría desencadenar un desborde de memoria y en consecuencia un fallo de la aplicación, o un bloqueo de la misma porque el flujo de ejecución quedaría estancado en el ciclo, sobrecargando de tareas al procesador de la máquina que ejecuta el programa.

Existen diversas estructuras cíclicas, su disponibilidad depende del lenguaje de programación, entre las más comunes se encuentran:

Estructura (ciclo) for: Es una de las más usadas, su construcción y funcionamiento depende de 3 elementos: El primero es la variable de inicialización (contador) que comúnmente es declarada con el nombre i (por convención, esta puede tomar cualquier nombre), el segundo es la condición, que por medio de ella se determina si el ciclo continúa o no su ejecución, normalmente el contador hace parte de la condición; y por último el modificador, donde se altera el valor del contador para que en un momento determinado la condición no se cumpla y el ciclo pare de realizar repeticiones.

for (inicialización; condición; modificador) {
  // Bloque de instrucciones
}

Para que un ciclo realice su trabajo, se debe proporcionar la configuración necesaria para que este se ejecute por lo menos una vez, de lo contrario sería una declaración de código inservible. Cuando el flujo de ejecución llega hasta la estructura cíclica, se examina si la condición declarada se cumple, de ser así se ejecuta el bloque de instrucciones contenido en el ciclo, al llegar al final del bloque de instrucciones el flujo de ejecución se devuelve hasta el inicio del ciclo, ejecuta el modificador, evalúa nuevamente la condición, si esta se cumple ejecuta el bloque de instrucciones y regresa nuevamente al inicio del ciclo, este comportamiento se repite hasta que la condición deje de cumplirse, una vez no se cumpla la condición, el bloque de instrucciones es ‘ignorado’ y el flujo de ejecución se desplaza al final del ciclo, para continuar con las instrucciones siguientes.

int suma = 0;
for (int i = 0; i<5; i++) {
  suma += i;
}
printf(suma);

Teniendo en cuenta el fragmento de código anterior, el ciclo se ejecuta siempre y cuando el valor de la variable i sea menor que 5, en otras palabras, se realiza la suma cuando i está en el rango de cero a cuatro, en consecuencia, la variable suma al final de la ejecución tiene un valor de 10. Hay que recordar que la instrucción: suma+=i, es equivalente a: suma=suma+i.

Estructura (ciclo) while: Al igual que el ciclo for, el ciclo while permite ejecutar repetidas veces un bloque de instrucciones, su construcción consta únicamente de una condición, pero no hay que olvidar que se debe tener un mecanismo para que el ciclo termine su ejecución o este quedará ejecutándose infinitamente.

while (condición) {
  // Bloque de instrucciones
}

Cuando se dan los primeros pasos en programación y se comienzan a tratar los ciclos, por lo general sale a flote una incógnita: ¿Cómo identifico cuándo debo usar un ciclo while o un ciclo for? y aunque un ciclo while puede configurarse de manera tal que su comportamiento sea similar al del ciclo for, existe una manera fácil de identificar cuándo usar uno u otro; esta es revisar si se tiene una cantidad definida o indefinida de repeticiones, cuando es definida lo más práctico es usar un ciclo for, de lo contrario es recomendable utilizar un ciclo while. Por ejemplo: si se necesitan mostrar 50 mensajes, leer 100 números, registrar 200 empleados, se tiene un número definido de repeticiones a realizar, en este caso lo más conveniente es usar un ciclo for. Ahora, si por ejemplo se necesitaran leer una serie números y que termine esta lectura cuando se ingrese el número cero o si se requiere registrar nombres de personas hasta que alguna de ellas supere los 80 años de edad, la cantidad de lecturas o registros no será igual en cada ejecución, es decir, una cantidad indefinida de repeticiones, casos en los cuales se recomienda hacer uso del ciclo while.

int numero = 1;
while (numero != 0) {
  numero = rand();
  printf(numero);
}

El ejemplo anterior muestra por pantalla números generados de manera aleatoria y termina la ejecución cuando el número generado es igual a cero. Dicho de otra manera, se muestran números en pantalla siempre y cuando el número sea diferente de cero, tal como indica la condición. La declaración numero = 1 se realiza únicamente para asegurar que la condición se cumpla y el ciclo se ejecute por lo menos una vez, dentro del ciclo a la variable numero se le asigna un valor aleatorio por medio de la función rand() (disponible en la mayoría de lenguajes), con esto se asegura que en cada repetición la variable tome un valor distinto, el cual en algún momento será cero, lo que hará que la condición no se cumpla y rompa la ejecución del ciclo.

Existen más estructuras repetitivas que poco a poco se irán abordando en la serie javascript, por el momento es todo, nos leemos en la próxima entrega. ¡Saludos!