Ciclos en c++


Los ciclos o estructuras repetitivas, son estructuras que permiten indicar dentro de un programa, que un bloque de instrucciones se ejecutará un número finito de veces. También conocidos como bucles, son una estructura de control esencial al momento de programar. Tanto C como C++ y la mayoría de los lenguajes utilizados actualmente, nos permiten hacer uso de estas estructuras. Permite repetir una o varias instrucciones cuantas veces lo necesitemos, por ejemplo, si quisiéramos escribir los números del uno al cien no tendría sentido escribir cien líneas mostrando un numero en cada una, para esto y para muchísimas cosas más, es útil un ciclo, permitiéndonos hacer una misma tarea en una cantidad de líneas muy pequeña y de forma prácticamente automática.
Existen diferentes tipos de ciclos o bucles, cada uno tiene una utilidad para casos específicos y depende de nuestra habilidad y conocimientos poder determinar en qué momento es bueno usar alguno de ellos. Tenemos entonces a nuestra disposición los siguientes tipos de ciclos en C++:
·         Ciclo for en C++
·         Ciclo while en C++
·         Ciclo do-while en C++
El ciclo FOR:
Es un ciclo numérico, basado en el uso de un contador, el cual no es otra cosa que una variable a la cual le damos un valor inicial y a la que le iremos incrementando de forma fija su valor, para que nos permita contar el número de veces o iteraciones que el ciclo ejecuta.

Dado que el ciclo FOR está basado en usar un contador, debemos de saber con certeza cuántas iteraciones realizará, antes de entrar a él, su sintaxis es muy simple
FOR (inicio; condición; incremento)


 Como podemos ver en la imagen, en la línea 8, definimos un ciclo, FOR en donde la variable “i” que va a ser el contador del ciclo, se le asigna un valor inicial de 0, se le indica que el ciclo se ejecutará mientras el valor de i sea menor de 3; al final vemos la notación de postincremento i++, que equivale a i=i+1, es decir, incrementar el valor de i en 1 en cada iteración.
La llave que esta después del paréntesis marca el inicio del bloque de instrucciones que se ejecutará mientras i sea menor de 3, dicho bloque son las líneas 9 y 10, ya que en la línea 11 vemos la llave que cierra el bloque del ciclo FOR, por lo que, lo que esté después se ejecutará hasta que termine el ciclo.
Los ciclos while:
 Son también una estructura cíclica, que nos permite ejecutar una o varias líneas de código de manera repetitiva sin necesidad de tener un valor inicial e incluso a veces sin siquiera conocer cuando se va a dar el valor final que esperamos, los ciclos while, no dependen directamente de valores numéricos, sino de valores booleanos, es decir su ejecución depende del valor de verdad de una condición dada, verdadera o falso, nada más. De este modo los ciclos while, son mucho más efectivos para condiciones indeterminadas, que no conocemos cuando se van a dar a diferencia de los ciclos for, con los cuales se debe tener claro un principio, un final y un tamaño de paso.
¿Cómo funciona un Ciclo While?
Para comprender mejor el funcionamiento del ciclo while, pongamos un buen ejemplo, imaginemos que por algún motivo, queremos pedirle a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100. Como vemos, aquí no podríamos utilizar un ciclo for, pues no tenemos ni idea de cuándo al usuario se le va a ocurrir ingresar un número mayor que 100, es algo indeterminado para nosotros, sin embargo el ciclo while nos permite ejecutar una acción de forma infinita hasta que se cumpla alguna condición específica, en nuestro caso sería que el numero ingresado sea mayor a 100. De modo que si el usuario nos ingresa de manera sucesiva los siguientes número 1,50,99, 49, 21, 30, 100 ..., nuestro programa no finalizara, pues ninguno de estos números es mayor que 100, sin embargo si nos ingresara el número 300, el programa finalizaría inmediatamente.
Ejemplo: Pedir números por pantalla hasta que alguno sea mayor a 100
Vamos a retomar el ejemplo anterior, donde queremos hacer que nuestro programa le pida a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100, una vez mas es un ejemplo sencillo con el que nos aseguraremos de haber comprendido bien todos los conceptos anteriores:
Solución Ejemplo 1:
Para solucionar esto, debemos tener clara cuál va a ser la condición que se debe cumplir para que el ciclo este pidiendo el numero contantemente, el ciclo se va a detener solo cuando el numero ingresado sea mayor que 100, así que la condición para que se siga ejecutando es que el numero sea menor a 100, ¿Comprender la lógica?, es simple si para que se detenga el numero debe ser mayor a 100, entonces para seguirse ejecutando el numero debe ser menor o igual a 100, veámoslo entonces…

 En efecto los ciclos while, son bastante útiles, sin embargo desde el punto de vista de la eficiencia al igual que con los ciclos for, es recomendable evitarlos en la medida de lo posible, siempre que vayas a usar un ciclo while o cualquier tipo de ciclo en realidad, deberías preguntarte primero si es totalmente necesario o si existe una manera más efectiva de hacerlo. Evidentemente habrá situaciones en las que será casi que imprescindible usar el ciclo, pues por algo existen, esta entonces en nuestra habilidad determinar cuándo usarlos y mejor aun como usarlos de manera efectiva.
Los ciclos do-while:
Son una estructura de control cíclica, los cuales nos permiten ejecutar una o varias líneas de código de forma repetitiva sin necesidad de tener un valor inicial e incluso a veces sin siquiera conocer cuando se va a dar el valor final, hasta aquí son similares a los ciclos while, sin embargo el ciclo do-while nos permite añadir cierta ventaja adicional y esta consiste que nos da la posibilidad de ejecutar primero el bloque de instrucciones antes de evaluar la condición necesaria, de este modo los ciclos do-while, son más efectivos para algunas situaciones especificas. En resumen un ciclo do-while, es una estructura de control cíclica que permite ejecutar de manera repetitiva un bloque de instrucciones sin evaluar de forma inmediata una condición especifica, sino evaluándola justo después de ejecutar por primera vez el bloque de instrucciones.
¿Cómo funciona un Ciclo Do-While?
Para comprender mejor el funcionamiento del ciclo while, usemos de nuevo el ejemplo de la sección anterior sobre el ciclo while. Imaginemos entonces que por algún motivo, queremos pedirle a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100. Como vimos anteriormente, esto se puede hacer por medio de un ciclo while, pero vamos ahora a ver como lo podemos hacer usando un ciclo do-while mejorando así un poco nuestro algoritmo, evitando ciertos comandos, tal como se dijo con el ciclo while, en efecto aquí estamos en la situación de no tener ni idea de cuándo al usuario se le va a ocurrir ingresar un número mayor que 100, pues es algo indeterminado para nosotros, sin embargo el ciclo while y en efecto el do-while nos permite ejecutar cierta acción de forma infinita hasta que se cumpla alguna condición especifica, en nuestro caso sería que el numero ingresado sea mayor a 100. De modo que si el usuario nos ingresa de manera sucesiva los siguientes numero 1,50,99, 49, 21, 30, 100 ..., nuestro programa no finalizara, pues ninguno de estos números es mayor que 100, sin embargo si nos ingresara el numero 300, el programa finalizaría inmediatamente.
Ejemplo 1: Pedir números por pantalla hasta que alguno sea mayor a 100
Vamos a retomar el ejemplo anterior, donde queremos hacer que nuestro programa le pida a un usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un número mayor a 100, una vez mas es un ejemplo sencillo con el que nos aseguraremos de haber comprendido bien todos los conceptos anteriores, vamos a ver cómo hacer lo mismo con dos tipos de ciclos diferentes (el while y el do-while), sin embargo vamos a ver como con uno es más eficiente que con el otro:
Solución Ejemplo 1:Para solucionar esto, debemos tener clara cuál va a ser la condición que se debe cumplir para que el ciclo este pidiendo el numero contantemente, el ciclo se va a detener solo cuando el numero ingresado sea mayor que 100, así que la condición para que se siga ejecutando es que el número sea menor a 100, ¿Comprender la lógica?, es simple si para que se detenga el numero debe ser mayor a 100, entonces para seguirse ejecutando el numero debe ser menor o igual a 100, veámoslo entonces…


 Nota: Como podrás comprobar, ambos códigos hacen lo mismo, haciendo uso del ciclo while o del ciclo do while, sin embargo con el ciclo do-while, hemos obtenido un beneficio interesante, primero que todo hemos podido evitar tener que inicializar la variable número, segundo también pudimos eliminar las líneas repetidas donde se pedía el numero por fuera del ciclo y luego al interior del ciclo, aquí lo hicimos solo al interior, pues la condición se evaluaba mucho más abajo.
Nota 2: Si no comprendes alguna de las líneas de estos códigos, te recomiendo visitar los contenidos anteriores (Entrada y Salida de Datos, Librerías ó Comentarios, Estructura de un Programa) o también puedes dejar un comentario al final de la sección con tu pregunta.
En efecto los ciclos do-while, son bastante útiles, sin embargo como con cualquier ciclo desde el punto de vista de la eficiencia al igual que con los ciclos for, es recomendable evitarlos en la medida de lo posible, siempre que vayas a usar un ciclo do-while o cualquier tipo de ciclo en realidad, deberías preguntarte primero si es totalmente necesario o si existe una manera más efectiva de hacerlo. Evidentemente habrá situaciones en las que será casi que imprescindible usar el ciclo, pues por algo existen, está entonces en nuestra habilidad determinar cuándo usarlos y mejor aún como usarlos de manera efectiva.
Bibliografía:

Comentarios

Entradas populares de este blog

Parámetros por valor y por referencia

Instruccion Switch

Proyecto calculadora basica