cpp-bucle-for

Qué es y cómo usar el bucle FOR en C++

Un bucle for en C++ es una estructura de control que permite ejecutar un bloque de código un número determinado de veces. Es una de las estructuras de control más utilizadas.

Sintaxis básica

La sintaxis de un bucle for en C++ se compone de tres partes principales: inicialización, condición y actualización.

Estas partes se especifican dentro de los paréntesis del bucle for y están separadas por punto y coma.

for (inicialización; condición; actualización)
{
    // Instrucciones a ejecutar en cada iteración
}
  • Inicialización: Se utiliza para establecer los valores iniciales de las variables que controlarán el bucle. Por lo general, se usa para inicializar un contador.
  • Condición: Es una expresión booleana que se evalúa antes de cada iteración. Si la condición es verdadera, el bucle continúa ejecutándose; si es falsa, se sale del bucle.
  • Actualización: Se realiza una acción para modificar el valor de las variables de control del bucle. Generalmente se usa para incrementar o decrementar un contador.
  • Instrucciones a ejecutar: Aquí se especifican las acciones que se deben realizar en cada iteración del bucle.

Ejemplo básico

Veamos un ejemplo sencillo donde usamos un bucle for para imprimir los números del 1 al 10:

#include <iostream>

int main() {
    for (int i = 1; i <= 10; i++)
    {
        std::cout << i << std::endl;
    }
    return 0;
}

En este ejemplo:

  • La inicialización int i = 1 establece el valor inicial de i en 1.
  • La condición i <= 10 asegura que el bucle se ejecute mientras i sea menor o igual a 10.
  • La actualización i++ incrementa i en 1 después de cada iteración.
  • Dentro del bucle, utilizamos std::cout para imprimir el valor actual de i en la consola.

El resultado es que se mostrarán los números del 1 al 10 en la pantalla.

Modificación del flujo del bucle

Salto de Iteraciones con continue

La instrucción continue se utiliza para saltar la iteración actual y pasar directamente a la siguiente iteración del bucle.

#include <iostream>

int main() {
    for (int i = 0; i < 10; i++)
    {
        if (i % 2 == 0)
        {
            continue; // Saltar los números pares
        }
        std::cout << i << std::endl;
    }
    return 0;
}

Interrupción del bucle con break

La instrucción break permite salir del bucle antes de que se cumpla la condición. Esto es útil cuando se encuentra un valor específico y no es necesario seguir iterando.

#include <iostream>

int main() {
    for (int i = 0; i < 10; i++)
    {
        if (i == 5)
        {
            break; // Salir del bucle cuando i es 5
        }
        std::cout << i << std::endl;
    }
    return 0;
}

Casos Particulares

Uso de variables externas

Es posible utilizar una variable declarada fuera del bucle for como la variable de control. Esto puede llevar a confusión si no se maneja adecuadamente:

#include <iostream>

int main() {
    int i = 0;
    for (i = 0; i < 5; i++)
    {
        std::cout << i << std::endl;
    }
    std::cout << "Valor de i después del bucle: " << i << std::endl;
    return 0;
}

En este caso, i conserva su valor después de que el bucle ha terminado, que será 5.

Declaraciones múltiples

En la sección de inicialización y actualización, se pueden incluir múltiples declaraciones separadas por comas. Esto es útil cuando se necesitan varias variables de control:

#include <iostream>

int main() {
    for (int i = 0, j = 10; i < j; i++, j--)
    {
        std::cout << "i: " << i << ", j: " << j << std::endl;
    }
    return 0;
}

Ejemplos prácticos

Generar una tabla de multiplicar

En este ejemplo, generamos una tabla de multiplicar para un número específico usando un bucle for.

#include <iostream>

int main() {
    int numero = 5; // Número para el cual se genera la tabla de multiplicar

    for (int i = 1; i <= 10; i++) // Itera del 1 al 10
    {
        std::cout << numero << " x " << i << " = " << numero * i << std::endl; // Imprime la multiplicación del número por 'i'
    }
    return 0;
}

Iteración sobre Arrays

Una de las aplicaciones más comunes del bucle for es iterar sobre los elementos de un array. Aquí hay un ejemplo que suma todos los elementos de un array:

#include <iostream>

int main() {
    int numeros[] = { 1, 2, 3, 4, 5 }; // Declaramos el array
    int suma = 0; // Variable para almacenar la suma

    for (int i = 0; i < sizeof(numeros) / sizeof(numeros[0]); i++)
    {
        suma += numeros[i]; // Suma cada elemento del array a 'suma'
    }

    std::cout << "La suma de los elementos es: " << suma << std::endl;
    return 0;
}

Iteración con paso diferente

El valor de la actualización no siempre tiene que ser un incremento de uno. Puede ser cualquier expresión que modifique la variable de control. Por ejemplo, iterar en pasos de dos:

#include <iostream>

int main() {
    for (int i = 0; i < 10; i += 2) // Incrementa 'i' en 2 en cada iteración
    {
        std::cout << i << std::endl; // Imprime el valor actual de 'i'
    }
    return 0;
}

Bucle for decreciente

También se puede usar el bucle for para iterar en orden decreciente:

#include <iostream>

int main() {
    for (int i = 10; i > 0; i--) // Decrementa 'i' en 1 en cada iteración
    {
        std::cout << i << std::endl; // Imprime el valor actual de 'i'
    }
    return 0;
}

Búsqueda de un elemento en un Array

#include <iostream>

int main() {
    int numeros[] = { 1, 2, 3, 4, 5 }; // Declaramos el array
    int buscar = 3; // Número a buscar
    bool encontrado = false; // Variable para indicar si el número fue encontrado

    for (int i = 0; i < sizeof(numeros) / sizeof(numeros[0]); i++)
    {
        if (numeros[i] == buscar) // Compara cada elemento con el número buscado
        {
            encontrado = true; // Marca que el número fue encontrado
            break; // Sale del bucle
        }
    }

    if (encontrado)
    {
        std::cout << "El número " << buscar << " se encuentra en el array." << std::endl;
    }
    else
    {
        std::cout << "El número " << buscar << " no se encuentra en el array." << std::endl;
    }
    return 0;
}

Estos ejemplos tienen el propósito de mostrar cómo utilizar el bucle FOR. No significa que sea la mejor forma de resolver el problema que abordan. Lo normal es que haya alternativas mejores