Herramientas de usuario

Herramientas del sitio


curso-cpp:estructuras-repetitivas

¡Esta es una revisión vieja del documento!


Estructuras de control repetitivas

Hasta ahora, la cantidad de instrucciones de nuestro programa que se ejecutarán está acotada: Esto es, siempre especificamos una lista de instrucciones, y cada una se ejecutará como mucho una vez (y algunas podrían no ejecutarse, si utilizamos las estructuras de control selectivas).

Sin embargo, si queremos realizar una tarea una única vez, generalmente podríamos realizarla manualmente y listo: nos interesa utilizar la computadora para automatizar tareas repetitivas, en las que haya que repetir cómputos mecánicamente una y otra vez, hasta llegar a un resultado. Veremos en esta lección cómo se puede lograr esto en C++.

La instrucción while

La instrucción while sirve para instruir a la computadora a que lleve a cabo un determinado conjunto de instrucciones, mientras se cumpla una condición específica.

La sintaxis (forma de escritura) de esta instrucción es idéntica al if común (sin else), pero utilizando en su lugar la palabra while:

while (condicion)
{
    instruccion1;
    instruccion2;
    ...
    instruccionFinal;
}

Al igual que ocurría con el if, los paréntesis alrededor de la condición son obligatorios, y las instrucciones del while se encuentran en un bloque encerrado entre llaves. También es posible omitir las llaves si el while contiene una sola instrucción, como en el caso del if.

Cuando la computadora se topa con un while, se determina si la condición indicada en el while es cierta: si no lo es, se saltean todas las instrucciones del while, exactamente igual que ocurre con el if. La diferencia es que, si la condición ocurre, entonces el bloque de instrucciones se ejecuta por completo como ocurría con el if, pero luego de eso se vuelve a revisar la condición desde el comienzo nuevamente: la computadora continuará repitiendo el bloque de instrucciones entre llaves una y otra vez, hasta que llegue un punto en que la condición no ocurre. En otras palabras, la computadora continuará ejecutando las instrucciones mientras que la condición sea verdadera.

Veamos un primer ejemplo sencillo de esto, en el siguiente programa:

#include <iostream>

using namespace std;

int main()
{
    int x;
    cin >> x;
    while (x > 0)
    {
        cout << "Recibido " << x << ", que es positivo." << endl;
        cin >> x;
    }
    cout << "El numero " << x << " no es positivo!" << endl;
    return 0;
}

Si ejecutamos es programa, por cada número que ingresemos, el programa nos mostrará por pantalla un mensaje con dicho número, y continuará haciendo esto mientras que el número que ingresamos sea positivo. Esto es porque en cada paso, se examina la condición x > 0, para ver si es positivo el valor almacenado en x, y mientras que lo sea se continúa ejecutando el cuerpo del while: es decir, se muestra el mensaje y se lee en x un nuevo valor ingresado por el usuario.

Recomendamos al lector ejecutar este programa para ver el efecto que tiene, y analizar cómo siguiendo las instrucciones mecánicamente de la forma que hemos explicado, se explica perfectamente el comportamiento de la computadora.

La instrucción for

La instrucción do-while

Ejercicios

  • Escribir un programa que lea un numero N, y luego imprima la suma de los primeros N naturales.
  • Escribir un programa que lea una palabra, y la imprima encerrada en un cuadrado de asteriscos. Ejemplos:
          Si lee "pollo" imprime:
           *******
           *pollo*
           *******
          Si lee "pan" imprime:
           *****
           *pan*
           *****
  • Escribir un programa que lea N numeros, y visualice el maximo, el minimo y la suma. El valor de N se solicita al comenzar.
  • Escribir un programa que lea una palabra, y la imprima al revés (leída de derecha a izquierda).
  • Un numero es perfecto, cuando la suma de sus divisores es igual al mismo numero. Crear un programa que busque y encuentre los primeros 3 numeros perfectos.
  • Un numero es primo, cuando no tiene divisores que no sean 1 o el mismo numero. Hacer un programa que imprima los primos hasta N, para N dado por la entrada.
curso-cpp/estructuras-repetitivas.1486426328.txt.gz · Última modificación: 2017/02/07 00:12 por santo