AnteriorPosterior

4.3. El bucle for

Por: Nacho Cabanes
Actualizado: 20-04-2019 09:39
Tiempo de lectura estimado: 6 min.

 

C++

4.3. for

Ésta es la orden que usaremos habitualmente para crear partes del programa que se repitan un cierto número de veces. El formato de “for” es

for (valorInicial; CondiciónRepetición; Incremento)
    sentencia;

Así, para contar del 1 al 10, tendríamos 1 como valor inicial, <=10 como condición de repetición, y el incremento sería de 1 en 1. Por tanto, el programa quedaría:

// Introducción a C++, Nacho Cabanes
// Ejemplo 04.03:
// Uso básico de "for" 
 
#include <iostream>
using namespace std;
 
int main()
{
    int contador;
 
    for (contador=1; contador<=10; contador++)
        cout << contador << " ";
 
    return 0;
}

Recordemos que “contador++” es una forma abreviada de escribir “contador=contador+1”, de modo que en este ejemplo aumentamos la variable de uno en uno.

Ejercicios propuestos:

  • (4.3.1) Crear un programa que muestre los números del 15 al 5, descendiendo (pista: en cada pasada habrá que descontar 1, por ejemplo haciendo i--).
  • (4.3.2) Crear un programa que muestre los primeros ocho números pares (pista: en cada pasada habrá que aumentar de 2 en 2, o bien mostrar el doble del valor que hace de contador).

En un “for”, realmente, la parte que hemos llamado “Incremento” no tiene por qué incrementar la variable, aunque ése es su uso más habitual. Es simplemente una orden que se ejecuta cuando se termine la “Sentencia” y antes de volver a comprobar si todavía se cumple la condición de repetición.

Por eso, si escribimos la siguiente línea:

for (contador=1; contador<=10; )

la variable “contador” no se incrementa nunca, por lo que nunca se cumplirá la condición de salida: nos quedamos encerrados dando vueltas dentro de la orden que siga al “for”.

Un caso todavía más exagerado de algo a lo que se entra y de lo que no se sale sería la siguiente orden:

for ( ; ; )

Los bucles “for” se pueden anidar (incluir uno dentro de otro), de modo que podríamos escribir las tablas de multiplicar del 1 al 5 con:

// Introducción a C++, Nacho Cabanes
// Ejemplo 04.04:
// "for" anidados - tablas de multiplicar
 
#include <iostream>
using namespace std;
 
int main()
{
    int tabla, numero;
 
    for (tabla=1; tabla<=5; tabla++)
        for (numero=1; numero<=10; numero++)
            cout << tabla <<  " por " <<  numero
                << " es " << tabla*numero << endl;
 
    return 0;
}

En estos ejemplos que hemos visto, después de “for” había una única sentencia. Si queremos que se hagan varias cosas, basta definirlas como un bloque (una sentencia compuesta) encerrándolas entre llaves. Por ejemplo, si queremos mejorar el ejemplo anterior haciendo que deje una línea en blanco entre tabla y tabla, sería:

// Introducción a C++, Nacho Cabanes
// Ejemplo 04.05:
// "for" anidados (2) - tablas de multiplicar separadas
 
#include <iostream>
using namespace std;
 
int main()
{
    int tabla, numero;
 
    for (tabla=1; tabla<=5; tabla++)
    {
        for (numero=1; numero<=10; numero++)
            cout << tabla <<  " por " <<  numero
                << " es " << tabla*numero << endl;
        cout << endl;
    }
 
  return 0;
}

Al igual que ocurría con "if" y con "while", suele ser buena costumbre incluir siempre las llaves, aunque haya una única orden que se repita en el "for", para evitar funcionamientos incorrectos si después hay que añadir más sentencias que deban repetirse y se olvida incluir las llaves en ese momento.

Para “contar” no necesariamente hay que usar números. Por ejemplo, podemos contar con letras así:

// Introducción a C++, Nacho Cabanes
// Ejemplo 04.06:
// "for" que usa "char"
 
#include <iostream>
using namespace std;
 
int main()
{
    char letra;
 
    for (letra='a'; letra<='z'; letra++)
        cout << letra;
 
    return 0;
}

Como se ve en este ejemplo, el tipo de datos que se utiliza para almacenar una letra es el tipo "char" (carácter). Los valores de un carácter se indican entre comillas simples.

En este caso, empezamos en la “a” y terminamos en la “z”, aumentando de uno en uno.

Si queremos contar de forma decreciente, o de dos en dos, o como nos interese, basta indicarlo en la condición de finalización del “for” y en la parte que lo incrementa:

// Introducción a C++, Nacho Cabanes
// Ejemplo 04.07:
// "for" que descuenta
 
#include <iostream>
using namespace std;
 
int main()
{
    char letra;
 
    for (letra='z'; letra>='a'; letra-=2)
        cout << letra;
 
    return 0;
}

19054 visitas desde el 20-04-2019

AnteriorPosterior