Diario de un programador día 86
Estructuras repetitivas. While, Do, For.
En esta clase (que es casi un
copy/paste de la anterior), se mostrará la sintaxis de esas estructuras en C++.
La explicación de esas estructuras
fue mostrada en su momento, durante los capítulos 9, 10 y 11, por lo que
solamente mostraré su sintaxis, con la finalidad de avanzar rápidamente para llegar a estudiar lo nuevo que nos
ofrece este lenguaje y ver sus posibilidades.
1.- WHILE
La sintaxis es:
while(condicion
verdadera){
instrucciones;
}
Como se puede ver, su construcción es similar a la instrucción IF. La
condición va entre paréntesis y el bloque de instrucciones va entre llaves { }
Ejemplo:
#include<iostream>
int main(void){
int num = 0;
while(num != 5){
std::cout << "Ingresa un 5 para
continuar ";
std::cin >> num;
if (num != 5){
std::cout << "Debes ingresar
un 5\n";
}
}//fin while
std::cout << "Numero 5 ingresado,
gracias!!!";
return 0;
}
Otro ejemplo:
#include<iostream>
#include<stdlib.h>
int main(void){
int continuar = 1;
int edad;
while(continuar
== 1){
std::cout << "Ingresa tu edad:
";
std::cin >> edad;
if(edad >= 18){
std::cout << "Eres mayor de edad\n";
}
else{
std::cout << "Eres menor de
edad\n";
}
std::cout << "\nOtro
Ingreso??\n1 = Si\nOtro numero = No: ";
std::cin >> continuar;
if (continuar == 1){
system("cls");
}
}//fin while
std::cout << "Hasta
Luego!!!\n";
return 0;
}
2.- DO
La sintaxis
es:
do {
instrucciones;
}while(condicion
verdadera);
Como se puede ver, la condición a evaluar se
encuentra al final del bloque, por lo que esta estructura siempre se ejecutará
al menos una vez (la primera) y dependiendo de la condición, se volverá a
ejecutar o finalizará el ciclo.
Ejemplo:
Utilizaré el mismo ejemplo anterior pero adaptado a esta instrucción,
después de todo, el resultado es el mismo.
#include<stdio.h>
int main(void){
int num;
do{
printf("Ingresa un 5 para
continuar...");
scanf("%d", &num);
if(num != 5){
printf("Debes ingresar un 5\n");}
}while(num != 5);//fin do
printf("Numero 5 ingresado,
gracias!!!\n");
return 0;
}
Si hacen lo mismo ¿cuál es la diferencia o cuando escoger uno u otro?
Bueno, en el caso de DO yo lo escogería siempre que necesite que algo se
ejecute al menos 1 vez y si no consigo el resultado que quiero, entonces que se
vuelva a repetir. En cambio, en el caso de WHILE, yo lo escogería solamente si
necesito que algo se ejecute bajo ciertas condiciones y no siempre, como ocurre
en el caso de DO. Aquí colocaré un ejemplo de ambos casos.
//La
maldición del 13
#include<iostream>
int main(void){
int num, maldad;
do{
std::cout << "Si ingresas un 13,
algo malo puede ocurrir\n";
std::cout << "Yo recomiendo
ingresar cualquier otro numero: ";
std::cin >> num;
if(num != 13){
std::cout << "Estamos a salvo
del 13\n";
}
if(num == 13){
while(num
== 13){
std::cout << "Has caido en
la trampa Ja ja ja!!!. Presiona Ctrl + c para cerrar\n";
}//fin while
}//fin if
std::cout << "\nHas salido sano y
salvo de la maldicion del 13!!!\n";
std::cout << "Quieres
continuar??\n1 = Si\nOtro = No ";
std::cin >> num;
}while(num == 1);//fin do
return 0;
}
Este programa integra ambas estructuras, pero aquí se
puede comprobar que en el caso de la estructura DO, SIEMPRE se ejecuta como
mínimo 1 vez. En el caso de la estructura WHILE, ésta solamente se ejecutará
bajo condiciones específicas, en este caso, si el usuario ingresa el número 13,
donde caerá en un ciclo infinito XD, pero aquí la gran diferencia. Puede que el
usuario jamás ingrese el número 13 y por lo tanto, esa estructura nunca se
ejecute.
3.- FOR
La sintaxis es:
for(variable inicio ; variable final ; incremento/decremento){
instrucciones;
}
Al igual que en small basic y lo que se explicó en el
capítulo 9, esta instrucción ejecuta las instrucciones que se encuentran en su
bloque la cantidad de veces según se lo indiquemos. La variable inicio, es la
que indica el valor inicial del ciclo, la variable final es la que indica el
final de éste y el incremento o decremento, corresponde al valor por el cual se
irá incrementando o disminuyendo la variable en cuestión.
Ejemplo, sencillo y barato. Se mostrará una secuencia
del 1 al 10
#include<iostream>
int main(void){
int num;
for(num
= 1; num <= 10; num++){
std::cout << num <<
"\n";
}
return 0;
}
El primer término "num = 1" indica el
inicio del valor de la variable. El segundo término indica el valor final de la
variable, es en este lugar donde se indica cuando finalizará el ciclo. En este
caso, el ciclo finalizará cuando la variable tenga un valor de 10. El tercer
término es el incremento, en este caso está indicado como "num++" el
++ indica que se irá incrementando uno en uno. Esto es equivalente a escribir
"num = num + 1" Se utiliza ++ simplemente para abreviar lo anterior.
Si se quisiera hacer un decremento de uno en uno, en vez de escribir
"variable = variable - 1" se puede escribir "variable--" y
sería lo mismo. Si quisiera aumentar con otro valor distinto a 1, no me sirve
el ++ ahí tendría que usar por ejemplo "var = var + 2" si quisiera
por ejemplo mostrar los múltiplos de 2
El siguiente ejemplo, muestra una tabla de
multiplicar según el numero que ingrese el usuario:
#include<iostream>
int main(void){
int num1, tabla;
std::cout << "Ingresa un
numero: ";
std::cin >> num1;
for(tabla = 1; tabla <= 10; tabla++){
std::cout << num1 << " x
" << tabla << " = " << num1 * tabla <<
"\n";
}//fin
for
return 0;
}
Esto es todo por ahora, espero se entienda.
Gustavo J. Cerda Nilo
No hay comentarios:
Publicar un comentario