Bucles en C y C++ – Part 2

En programación, a veces es necesario realizar alguna operación más de una vez o (digamos) n número de veces. Los bucles se utilizan cuando necesitamos ejecutar repetidamente un bloque de instrucciones. 

Por ejemplo : supongamos que queremos imprimir «Hello World» 10 veces. Esto se puede hacer de dos maneras como se muestra a continuación: 

Método manual (general) (Método iterativo)

Manualmente, tenemos que escribir print() para C y cout para la declaración de C++ 10 veces. Digamos que tienes que escribirlo 20 veces (seguramente tomaría más tiempo escribir 20 declaraciones) ahora imagina que tienes que escribirlo 100 veces, sería muy agitado volver a escribir la misma declaración una y otra vez. Entonces, aquí los bucles tienen su papel.

C

// C program to illustrate need of loops
#include <stdio.h>
 
int main()
{
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
    printf( "Hello World\n");
     
    return 0;
}

C++

// C++ program to illustrate need of loops
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    cout << "Hello World\n";
    return 0;
}
Producción: 

Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

 

Uso de bucles

En Loop, la declaración debe escribirse solo una vez y el bucle se ejecutará 10 veces como se muestra a continuación. En programación informática, un bucle es una secuencia de instrucciones que se repite hasta que se alcanza una determinada condición. 

  • Se realiza una operación, como obtener un elemento de datos y cambiarlo, y luego se verifica alguna condición, como si un contador ha alcanzado un número prescrito.
  • Contador no alcanzado: si el contador no ha alcanzado el número deseado, la siguiente instrucción de la secuencia vuelve a la primera instrucción de la secuencia y la repite.
  • Contador alcanzado: si se ha alcanzado la condición, la siguiente instrucción «falla» a la siguiente instrucción secuencial o se bifurca fuera del bucle.

Existen principalmente dos tipos de bucles:  

  1. Bucles controlados de entrada : en este tipo de bucle, la condición de prueba se prueba antes de ingresar al cuerpo del bucle. For Loop y While Loop son bucles controlados por entrada.
  2. Bucles controlados de salida : en este tipo de bucle, la condición de prueba se prueba o evalúa al final del cuerpo del bucle. Por lo tanto, el cuerpo del bucle se ejecutará al menos una vez, independientemente de si la condición de prueba es verdadera o falsa. el ciclo do- while es un ciclo controlado por salida.

Loops in C and C++

S. No. Tipo de bucle y descripción
1. while loop – Primero verifica la condición, luego ejecuta el cuerpo.
2. for loop : primero inicializa, luego, verifica la condición, ejecuta el cuerpo, actualiza.
3. do-while : en primer lugar, ejecutar el cuerpo y luego la verificación de condición

 en bucle

Un bucle for es una estructura de control de repetición que nos permite escribir un bucle que se ejecuta un número específico de veces. El bucle nos permite realizar n número de pasos juntos en una línea. 
Sintaxis: 

for (initialization expr; test expr; update expr)
{    
     // body of the loop
     // statements we want to execute
}

Ejemplo:

for(int i = 0; i < n; i++){
}

En for loop, se utiliza una variable de bucle para controlar el bucle. Primero, inicialice esta variable de bucle en algún valor, luego verifique si esta variable es menor o mayor que el valor del contador. Si la declaración es verdadera, entonces se ejecuta el cuerpo del bucle y se actualiza la variable del bucle. Los pasos se repiten hasta que llega la condición de salida. 

  • Expresión de inicialización : en esta expresión, tenemos que inicializar el contador de bucle a algún valor. por ejemplo: int i=1;
  • Expresión de prueba : en esta expresión, tenemos que probar la condición. Si la condición se evalúa como verdadera, ejecutaremos el cuerpo del ciclo e iremos a actualizar la expresión; de lo contrario, saldremos del ciclo for a. Por ejemplo: i <= 10;
  • Actualizar expresión : después de ejecutar el cuerpo del ciclo, esta expresión incrementa/disminuye la variable del ciclo en algún valor. por ejemplo: i++;

Diagrama de flujo equivalente para lazo: 
 

Equivalent flow diagram for loops in C and C++

Ejemplo:
 

C

// C program to illustrate for loop
#include <stdio.h>
 
int main()
{
    int i=0;
     
    for (i = 1; i <= 10; i++)
    {
        printf( "Hello World\n");    
    }
 
    return 0;
}

C++

// C++ program to illustrate for loop
#include <iostream>
using namespace std;
 
int main()
{
    for (int i = 1; i <= 10; i++)
    {
        cout << "Hello World\n";
    }
 
    return 0;
}
Producción: 

Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

 

  
Mientras bucle

Al estudiar for loop , hemos visto que el número de iteraciones se conoce de antemano , es decir, conocemos el número de veces que se necesita ejecutar el cuerpo del bucle. Los bucles while se utilizan en situaciones en las que no sabemos de antemano el número exacto de iteraciones del bucle . La ejecución del bucle se termina sobre la base de las condiciones de prueba.
Sintaxis : ya hemos dicho que un bucle consta principalmente de tres declaraciones: expresión de inicialización, expresión de prueba y expresión de actualización. La sintaxis de los tres bucles: For, while y do while difiere principalmente en la ubicación de estas tres declaraciones. 

initialization expression;
while (test_expression)
{
   // statements
 
  update_expression;
}

Diagrama de flujo
 

flow diagram for While Loop in C and C++

Ejemplo:
 

C

// C program to illustrate while loop
#include <stdio.h>
 
int main()
{
    // initialization expression
    int i = 1;
 
    // test expression
    while (i < 6)
    {
        printf( "Hello World\n");    
 
        // update expression
        i++;
    }
 
    return 0;
}

C++

// C++ program to illustrate while loop
#include <iostream>
using namespace std;
 
int main()
{
    // initialization expression
    int i = 1;
 
    // test expression
    while (i < 6)
    {
        cout << "Hello World\n";
 
        // update expression
        i++;
    }
 
    return 0;
}
Producción: 

Hello World
Hello World
Hello World
Hello World
Hello World

 

bucle do-while

En los bucles do-while también se termina la ejecución del bucle en función de las condiciones de prueba. La principal diferencia entre un ciclo do-while y el ciclo while es que en el ciclo do-while la condición se prueba al final del cuerpo del ciclo, es decir, el ciclo do-while está controlado por la salida mientras que los otros dos ciclos son controlados por la entrada. 
Nota : en un bucle do-while, el cuerpo del bucle se ejecutará al menos una vez independientemente de la condición de prueba.
Sintaxis

initialization expression;
do
{
   // statements

   update_expression;
} while (test_expression);

Nota : observe el punto y coma («;») al final del bucle.
Diagrama de flujo
 

flow diagram for do while Loop in C and C++

Ejemplo:
 

C

// C program to illustrate do-while loop
#include <stdio.h>
 
int main()
{
    int i = 2; // Initialization expression
 
    do
    {
        // loop body
        printf( "Hello World\n");    
 
        // update expression
        i++;
 
    }  while (i < 1);   // test expression
 
    return 0;
}

C++

// C++ program to illustrate do-while loop
#include <iostream>
using namespace std;
 
int main()
{
    int i = 2; // Initialization expression
 
    do
    {
        // loop body
        cout << "Hello World\n";
 
        // update expression
        i++;
 
    }  while (i < 1);   // test expression
 
    return 0;
}
Producción: 

Hello World

 

En el programa anterior, la condición de prueba (i<1) se evalúa como falsa. Pero aun así, como el bucle es una salida controlada, el cuerpo del bucle se ejecutará una vez.
 

¿Qué pasa con un bucle infinito?

Un bucle infinito (a veces llamado bucle sin fin) es una pieza de codificación que carece de una salida funcional, por lo que se repite indefinidamente. Un ciclo infinito ocurre cuando una condición siempre se evalúa como verdadera. Por lo general, esto es un error. 
Usando el bucle For:

C

// C program to demonstrate infinite loops
// using for and while
// Uncomment the  sections to see the output
 
#include <stdio.h>
 
int main ()
{
    int i;
 
    // This is an infinite for loop as the condition
    // expression is blank
    for ( ; ; )
    {
       printf("This loop will run forever.\n");
    }
 
    // This is an infinite for loop as the condition
    // given in while loop will keep repeating infinitely
    /*
    while (i != 0)
    {
        i-- ;
        printf( "This loop will run forever.\n");
    }
    */
 
    // This is an infinite for loop as the condition
    // given in while loop is "true"
    /*
    while (true)
    {
        printf( "This loop will run forever.\n");
    }
    */
}

C++

// C++ program to demonstrate infinite loops
// using for and while
// Uncomment the  sections to see the output
 
#include <iostream>
using namespace std;
int main ()
{
    int i;
 
    // This is an infinite for loop as the condition
    // expression is blank
    for ( ; ; )
    {
        cout << "This loop will run forever.\n";
    }
 
    // This is an infinite for loop as the condition
    // given in while loop will keep repeating infinitely
    /*
    while (i != 0)
    {
        i-- ;
        cout << "This loop will run forever.\n";
    }
    */
 
    // This is an infinite for loop as the condition
    // given in while loop is "true"
    /*
    while (true)
    {
        cout << "This loop will run forever.\n";
    }
    */
}

Producción: 
 

This loop will run forever.
This loop will run forever.
................... 

Usando el ciclo while:

C

#include <stdio.h>
 
int main() {
 
    while (1)
        printf("This loop will run forever.\n");
    return 0;
}

C++

#include <iostream>
using namespace std;
 
int main()
{
 
    while (1)
        cout << "This loop will run forever.\n";
    return 0;
}

Producción: 
 

This loop will run forever.
This loop will run forever.
................... 

Usando el ciclo Do-While:

C

#include <stdio.h>
 
int main() {
 
    do{
        printf("This loop will run forever.\n");
    }
      while(1);
    return 0;
}

C++

#include <iostream>
using namespace std;
 
int main() {
  
    do{
        cout << "This loop will run forever.\n";
    } while(1);
  
    return 0;
}

Producción:

This loop will run forever.
This loop will run forever.
................... 

Técnicas de bucle más avanzadas

Puntos importantes:

  • Utilice el ciclo for cuando se conoce un número de iteraciones de antemano, es decir, se conoce el número de veces que se necesita ejecutar el cuerpo del ciclo.
  • Use bucles while, donde no se conoce un número exacto de iteraciones pero se conoce la condición de terminación del bucle.
  • Use do while loop si el código debe ejecutarse al menos una vez como en los programas controlados por menús

Artículos relacionados:

Este artículo es una contribución de Harsh Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *