Taller - 4º Año “A” - E.E.T.P.
Nº 644 “Gregoria Matorras”
Material N° 9 y Actividad - Introducción a C++ - Ciclos Seguimos con ciclos,
ahora aprenderemos sobre while y do-while
Los ciclos le permiten al programador ejecutar el mismo bloque de código repetidamente. Existen tres estructuras de ciclo
for, que vimos anteriormente y ahora veremos while y do- while.
El Ciclo while
La sintaxis es descrita a continuación:
while (condicion) {
// Este bloque de código se ejecuta repetidamente mientras condición sea true. }
Las declaraciones encerradas por las llaves {...} serán ejecutadas repetidamente hasta que la expresión condición deje de ser
igual a true.
El uso de las llaves {...} en ciclos while es esencial si se desea incluir más de un comando en el ciclo. Por ejemplo,
si escribimos while (x == 4) y += x; x += 1;
sería equivalente a
while (x == 4) {
y += x;
}
x += 1;
Aquí habría un problema pues, aunque línea x += 1; está indentada, solo la primera línea (y += x;) corresponde al ciclo
while. Este sería un gran problema porque la variable involucrada en la condición, x, no cambia, por lo que siempre se
evaluará como true, convirtiendo a este en un ciclo infinito. Esto podría corregirse al contener todas las declaraciones
destinadas a ser parte del cuerpo del ciclo en {...} while ( x == 4 ) {
y += x; x += 1;
}
El ciclo while es en realidad el único tipo de ciclo necesario. El ciclo for, se puede reproducir usando un ciclo while y una
declaración de variable. Con una negación simple !, while puede realizar el mismo comportamiento que un ciclo do-while.
El Ciclo do-while
El ciclo do-while es casi idéntico al ciclo while, pero en lugar de evaluar la declaración condicional antes de que comience
el ciclo, el ciclo do-while comprueba la declaración condicional al final de la primera ejecución, luego continúa con la
siguiente iteración.
La sintaxis es descrita a continuación:
do {
// Este bloque de código se ejecuta repetidamente mientras condición sea true. }
while (condicion);
Como puedes ver, el ciclo se va a ejecutar por lo menos una vez antes de evaluar la declaración condicional.
1
Tanto el while como el do-while son ciclos que funcionan con condición pero también se pueden correr hasta que el usuario diga
basta o hasta fin de archivo para lo cual se debe agregar en la condición !cin.eof() esto indica que hasta que el usuario no de el
fin de archivo sigue el bucle
Ejemplo, prueba el siguiente programa, recuerda para decirle fin de archivo presiona ctrl + z
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int c=0,n;
cin >> n;
while(!cin.eof()){
c++;
cin>>n;
}
cout<<c<<endl;
return 0;
}
Actividades:
Observa el siguiente código:
int i = 0; while (i < 10) {
cout << i << endl;
i++;
}
1.-¿Qué hace el programa, pruébalo y responde?
2.- Este programa se puede hacer con un for, prueba y pega su sintaxis.
3.- Este programa se puede hacer con un do-while prueba y pega su sintaxis.
Ciclos Anidados
También es posible anidar ciclos, o sea meter un ciclo dentro de otro ciclo. Veamos el código:
#include <iostream>
using namespace std;
int main(){
int tamanoDelTriangulo; cin >>
tamanoDelTriangulo; for (int i = 1; i <=
tamanoDelTriangulo; i++) { for (int j =
1; j <= i; j++) { cout <<
j;
} cout
<< " ";
cout << endl;
}
return 0;
}
2
4.- ¿Qué hace este programa?
5.- Cuantas variables utiliza, ¿cuáles?
6.- Se podría reemplazar esta estructura de ciclo por otra. ¿Cómo? Realízalo.
Ciclos Infinitos
Un error de programación común es crear un ciclo infinito. Un ciclo infinito se refiere a un ciclo que, bajo cierta entrada
válida (o al menos plausible), nunca se dejará de repetir.
Procura tener cuidado de examinar todas las entradas posibles en un ciclo para asegurarte de que, para cada conjunto de
entradas de este tipo, haya una condición de salida que eventualmente se alcanzará. Además de evitar que el programa se
cicle (es decir, que nunca termine), el entendimiento de todas las posibles entradas y condiciones de salida demuestra una
sólida comprensión del algoritmo que se está escribiendo.
Los compiladores, depuradores y otras herramientas de programación a veces pueden ayudar al programador a detectar
ciclos infinitos. Pero en general, no es posible detectar automáticamente un ciclo infinito. Esto se conoce como Problema de
la detención. Si bien el problema de detención no se puede resolver en el caso general, es posible determinar si un ciclo se
detendrá en algunos casos específicos. Ejemplo de Ciclo Infinito
#include <iostream> using
namespace std;
int main() { while(1) {
cout << "Ciclo infinito" << endl;
}
return 0;
}
Este código imprimirá "Ciclo infinito" sin parar.
7.- Realiza una tabla donde se compare los tres ciclos estudiados, su sintaxis y características.
8.- Ejercicios, vamos a modificar el ejercicio dado por otro similar usando otro ciclo a.-
Imprimir números cuadrados
Vamos a imprimir sólo los números cuadrados entre 1 y 100 hacer el mismo código, pero utilizando while
#include <iostream> using
namespace std;
int main() {
for (int i = 1; i * i <= 100; i++) {
cout << i * i << endl;
}
return 0;
}
b.- Imprimir números pares
Vamos a imprimir sólo los números pares entre 0 y 100, hacer el mismo código pero utilizando do-while
#include <iostream> using
namespace std;
int main() {
for (int i = 0; i <= 100; i += 2) {
cout << i << endl;
}
return 0;
}
3
c.- Pedir un número par al usuario
Vamos a pedir un número al usuario y si es impar lo vamos a volver a pedir hasta nos de uno que se par. Realizaremos el
mismo código usando el ciclo while.
#include <iostream>
using namespace std ;
int main() {
int numeroDelUsuario;
do {
cin >> numeroDelUsuario;
} while (numeroDelUsuario % 2 != 0);
cout << numeroDelUsuario << endl; return
0;
}
Este texto está basado al curso de C++ de Wikiversity y está disponinble bajo la licencia Creative Commons
AttributionShareAlike. . Subido por: Hugo Dueñas
Práctica en Omega: https://omegaup.com/course/IntProgram2022/assignment/Estruc/#problems