Rifa

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;
             }

         }
     }
}

Leave a Reply