Estructuras Cíclicas
Rifa
Las estructuras cíclicas nos permiten repetir una serie de instrucciones mientras una condición se cumpla y son muy utilizadas en la mayoría de lenguajes de programación estructurada.
Permiten que el programa se mantenga en cierto estado entre tanto esperamos a que cambie la situación por una acción externa o interna del programa.

Ejercicio:
Rifa
En el siguiente ejercicio el programa generará un número aleatorio entre 1 y 10 y el usuario deberá adivinarlo ingresando números desde el teclado, cuando el usuario acierte el programa lo informará y finalizará
En Java
Declaramos 2 variables enteras, una para el número aleatorio y otra para el ingresado
int ingresado, guardado;
Generamos el número con el método Math.random() que generar números aleatorios de de 0 a 1 de tipo double. Será necesario multiplicarlo por 10, luego sumarle 1 y finalmente convertirlo en entero con (int). Lo almacenaremos en la variable “guardado”
guardado = (int)(Math.random()*10+1);
Recibimos el número desde el teclado y lo guardamos en “ingresado”
Scanner dato = new Scanner(System.in);
La idea es que el usuario acierte al número que se generó aleatoriamente y que mientras no lo logre siga intentando, es decir que el programa seguirá pidiéndole que ingrese números (permanecerá dentro del ciclo) y solo finalizará (saldrá del ciclo) cuando el número ingresado sea igual al generado.
En java y en la mayoría de los lenguajes existe un ciclo llamado While que se escribe de la siguiente forma
while(condición){
instrucciones a ejecutar
mientras se cumpla la condición
…
…
}
se continua con el resto del programa
En nuestro caso la condición será que “ingresado” sea diferente a “guardado” por que mientras eso pase se debe seguir pidiendo el número al usuario. Nuestro ciclo while quedará:
while(ingresado != guardado){
System.out.println(“Lo siento intenta de nuevo”);
ingresado = dato.nextInt();
}
Cuando el usuario ingrese el mismo número guardado (acierte al número generado) “ingresado” será igual a “guardado” y la condición (ingresado != guardado) no se cumplirá, por lo que el ciclo while finalizará. El programa le indicará al usuario que acertó:
System.out.println(“Felicitaciones has acertado”);
El código quedará:
package rifa;
import java.util.Scanner;
public class Rifa {
public static void main(String[] args) {
int ingresado, guardado;
guardado = (int)(Math.random()*10+1);
Scanner dato = new Scanner(System.in);
System.out.println(“Adivina el número escondido\n\nIngresa un número de 1 a 10”);
ingresado = dato.nextInt();
while(ingresado != guardado){
System.out.println(“Lo siento intenta de nuevo”);
ingresado = dato.nextInt();
}
System.out.println(“Felicitaciones has acertado”);
}
}
En Python
Para trabajar números aleatorios python tiene el módulo “random” que debemos importar
import random
Generaremos un número entero aleatorio con el método “randint(a, b)” que recibe como parámetro a -> número inicial, y b -> número final, esté número lo almacenaremos en una variable.
guardado = random.randint(1,10)
Pediremos al usuario que ingrese un número, recibiremos, convertiremos el dato en un número entero y lo almacenaremos en una variable
ingresado = int(input(“Adivina el número escondido\n\nIngresa un número de 1 a 10\n”))
Si no acierta al número escondido deberá intentarlo de nuevo hasta que acierte, para ellos usaremos la estructura “while” que funciona de la siguiente forma.
while condición:
instrucciones a ejecutar
si la condición se mantiene
instrucciones a ejecutar
cuando la condición ya no es verdadera
En nuestro caso la condición (para que siga ingresando números) será que el valor ingresado sea diferente al valor guardado
ingresado != guardado
Si eso pasa se le seguirá pidiendo un nuevo número
ingresado = int(input(“Lo siento, intenta de nuevo\n”))
La estructura quedará
while ingresado != guardado:
ingresado = int(input(“Lo siento, intenta de nuevo\n”))
Cuando acierte con el número los dos números serán iguales y ya no se cumplirá la condición, entonces saldrá de la estructura “while” y le diremos al usuario que ha acertado
print(“Felicitaciones has acertado”)
El código quedará:
import random
guardado = random.randint(1,10)
ingresado = int(input(“Adivina el número escondido\n\nIngresa un número de 1 a 10\n”))
while ingresado != guardado:
ingresado = int(input(“Lo siento, intenta de nuevo\n”))
print(“Felicitaciones has acertado”)
Recordemos que para ejecutar este código debemos guardarlo con extensión .py y luego ejecutarlo desde consola con
python rifa.py
En C++
Declaramos 2 variables enteras, una para el número aleatorio y otra para el ingresado
int ingresado, guardado;
Para generar números aleatorios C++ podemos usar la función “rand()” que se encuentra en la librería “cstdlib” que por lo tanto debemos incluir
#include <cstdlib>
“rand()” genera números aleatorios pero debemos establecer un límite al comienzo y al final para un rango de 1 a 10 y luego guardar el número generado en la variable “guardado”
guardado = 1 + rand() % 10;
Pedimos al usuario que ingrese un número:
cout<<“Adivina el número escondido\n\nIngresa un número de 1 a 10\n”;
Recibimos el número desde el teclado y lo guardamos en “ingresado”
cin>>ingresado;
La idea es que el usuario acierte al número que se generó aleatoriamente y que mientras no lo logre siga intentando, es decir que el programa seguirá pidiendole que ingrese números (permanecerá dentro del ciclo) y solo finalizará (saldra del ciclo) cuando el número ingresado sea igual al generado.
En C++ y en la mayoría de los lenguajes existe un ciclo llamado While que se escribe de la siguiente forma
while(condición){
instrucciones a ejecutar
mientras se cumpla la condición
…
…
}
se continua con el resto del programa
En nuestro caso la condición será que “ingresado” sea diferente a “guardado” por que mientras eso pase se debe seguir pidiendo el número al usuario. Nuestro ciclo while quedará:
while(ingresado != guardado){
cout<<“Lo siento, intenta de nuevo\n”;
cin>>ingresado;
}
Cuando el usuario ingrese el mismo número guardado (acierte al número generado) “ingresado” será igual a “guardado” y la condición (ingresado != guardado) no se cumplirá, por lo que el ciclo while finalizará. El programa le indicará al usuario que acertó:
cout<<“Felicitaciones has acertado”;
El Código será:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int guardado, ingresado;
guardado = 1 + rand() % 10;
cout<<“Adivina el número escondido\n\nIngresa un número de 1 a 10\n”;
cin>>ingresado;
while(ingresado != guardado){
cout<<“Lo siento, intenta de nuevo\n”;
cin>>ingresado;
}
cout<<“Felicitaciones has acertado”;
}
En Ruby
Para trabajar números aleatorios Ruby tiene el método “rand()” que genera números decimales de 0 a 1, pero si colocamos parámetros 1..10 generará números del 1 al 10. Entonces después de generarlo lo almacenaremos en una variable “guardado”
guardado = rand(1..10)
Pediremos al usuario que ingrese un número,
puts “Adivina el número escondido\n\nIngresa un número de 1 a 10\n”
Recibiremos, convertiremos el dato en un número entero y lo almacenaremos en una variable “ingresado”
ingresado = gets.to_i
Si no acierta al número escondido deberá intentarlo de nuevo hasta que acierte, para ellos usaremos la estructura “while” que funciona de la siguiente forma.
while condición
instrucciones a ejecutar
si la condición se mantiene
end
instrucciones a ejecutar
cuando la condición ya no es verdadera
En nuestro caso la condición (para que siga ingresando números) será que el valor ingresado sea diferente al valor guardado
ingresado != guardado
Si eso pasa se le seguirá pidiendo un nuevo número
puts “Lo siento, intenta de nuevo\n”
ingresado = gets.to_i
La estructura quedará
while ingresado != guardado
puts “Lo siento, intenta de nuevo\n”
ingresado = gets.to_i
end
Cuando acierte con el número los dos números serán iguales y ya no se cumplirá la condición, entonces saldra de la estructura “while” y le diremos al usuario que ha acertado
puts “Felicitaciones has acertado”
El Código será:
guardado = rand(1..10)
puts guardado
puts “Adivina el número escondido\n\nIngresa un número de 1 a 10\n”
ingresado = gets.to_i
while ingresado != guardado
puts “Lo siento, intenta de nuevo\n”
ingresado = gets.to_i
end
puts “Felicitaciones has acertado”
En C#
Declaramos 2 variables enteras, una para el número aleatorio y otra para el ingresado
int ingresado, guardado;
Generamos el número con el método Next() de la clase Random que generar números aleatorios para ello debemos instanciar un objeto de esta clase
Random rnd = new Random();
Ya con el objeto “rdn” creado podemos usar el método Next(), como queremos generar números de 1 a 10 colocaremos como párametros 1, 11 y almacenamos en la variable “guardado”
guardado = rnd.Next(1, 11);
Solicitamos al usuario que ingrese un número
Console.WriteLine(“Adivina el número escondido\n\nIngresa un número de 1 a 10\n”);
Recibimos el número desde el teclado y lo guardamos en “ingresado”
ingresado = int.Parse(Console.ReadLine());
La idea es que el usuario acierte al número que se generó aleatoriamente y que mientras no lo logre siga intentando, es decir que el programa seguirá pidiéndole que ingrese números (permanecerá dentro del ciclo) y solo finalizará (saldrá del ciclo) cuando el número ingresado sea igual al generado.
En C# y en la mayoría de los lenguajes existe un ciclo llamado While que se escribe de la siguiente forma
while(condición)
{
instrucciones a ejecutar
mientras se cumpla la condición
…
…
}
se continua con el resto del programa
En nuestro caso la condición será que “ingresado” sea diferente a “guardado” por que mientras eso pase se debe seguir pidiendo el número al usuario. Nuestro ciclo while quedará:
while(ingresado != guardado)
{
Console.WriteLine(“Lo siento, intenta de nuevo\n”);
ingresado = int.Parse(Console.ReadLine());
}
Cuando el usuario ingrese el mismo número guardado (acierte al número generado) “ingresado” será igual a “guardado” y la condición (ingresado != guardado) no se cumplirá, por lo que el ciclo while finalizará. El programa le indicará al usuario que acertó:
Console.WriteLine(“Felicitaciones has acertado”);
namespace minicalculadoraCs
{
class Program
{
static void Main(string[] args)
{
float num1, num2;
char ope;
Console.WriteLine(“Ingrese un número”);
num1 = float.Parse(Console.ReadLine());
Console.WriteLine(“Ingrese un operador”);
ope = Console.ReadLine().ToCharArray()[0];
Console.WriteLine(“Ingrese otro número”);
num2 = float.Parse(Console.ReadLine());
switch (ope)
{
case ‘+’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 + num2} “);
break;
case ‘-‘:
Console.WriteLine($”{num1} {ope} {num2} = {num1 – num2} “);
break;
case ‘*’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 * num2} “);
break;
case ‘/’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 / num2} “);
break;
default: Console.WriteLine(“Operadpr no valido”);
break;
}
}
}
}