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

         }
     }
}

Deja una respuesta