📙 Ciclos while y do-while#

Tabla de Contenido#

  • 1 - Instalar Java

  • 2 - Ejemplos foreach

  • 3 - Ejemplos while

  • 4 - Ejemplos do-while

Instalar Java#

Descargar el kernel

Ejecuta la siguiente celda. No la modifiques!

%%sh
wget -q https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip
unzip -q ijava-1.3.0.zip
python install.py

wget -qO- https://gist.github.com/SpencerPark/e2732061ad19c1afa4a33a58cb8f18a9/archive/b6cff2bf09b6832344e576ea1e4731f0fb3df10c.tar.gz | tar xvz --strip-components=1
python install_ipc_proxy_kernel.py --kernel=java --implementation=ipc_proxy_kernel.py
Installed java kernel into "/usr/local/share/jupyter/kernels/java"
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/install_ipc_proxy_kernel.py
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/ipc_proxy_kernel.py
Moving java kernel from /usr/local/share/jupyter/kernels/java...
Wrote modified kernel.json for java_tcp in /usr/local/share/jupyter/kernels/java_tcp/kernel.json
Installing the proxy kernel in place of java in /usr/local/share/jupyter/kernels/java
Installed proxy kernelspec: {"argv": ["/usr/bin/python3", "/usr/local/share/jupyter/kernels/java/ipc_proxy_kernel.py", "{connection_file}", "--kernel=java_tcp"], "env": {}, "display_name": "Java", "language": "java", "interrupt_mode": "message", "metadata": {}}
Proxy kernel installed. Go to 'Runtime > Change runtime type' and select 'java'
/content/install.py:164: DeprecationWarning: replace is ignored. Installing a kernelspec always replaces an existing installation
  install_dest = KernelSpecManager().install_kernel_spec(

Instrucciones para activar el kernel

Dirigite a Entorno de ejecución > Cambiar tipo de entorno de ejecución > Elige la opción Java > Da click en Guardar

Importar Librerias#

// Libreria para usar potencia y otras funciones matemáticas
import java.lang.Math;

// Libreria para usar el objeto Scanner (leer variables)
import java.util.Scanner;

Ejemplos foreach#

Para recorrer un tipo de dato String con Java debemos convertir cada letra/caracter a tipo char. Para esto utilizamos la función .toCharArray() que tiene cada tipo de dato String.

Solo debemos definir un tipo de dato String y escribir .toCharArray(). Por ejemplo:

String nombre = "Juan Perez";
nombre.toCharArray()

Nota. .toCharArray() solo debe escribirse dentro del for.

Tambien debemos recorrer el String con una variante de la sintaxis del ciclo for, denominada “forEach”. Funciona de la siguiente forma:

image.png

Ejemplo 1.

Recorra un string e imprima cada letra.

String word = "Hola Mundo";

for (char letra: word.toCharArray()) {
    System.out.println(letra);
}
H
o
l
a
 
M
u
n
d
o

Ejemplo 2.

Ingrese por teclado un string y cuente cuantas letras mayusculas tiene la palabra u oración.

Scanner input = new Scanner(System.in);
System.out.print("Ingrese un palabra u oración: ");
String palabra_s = input.nextLine();
int contMayus = 0;

for(char letra: palabra_s.toCharArray()){
    char letraMayus = Character.toUpperCase(letra);
    if (letra == letraMayus && letra != ' '){
        contMayus++;
    }
}

System.out.println("El string ingresado tiene " + contMayus + " mayuscula(s)");
Ingrese un palabra u oración: Rei Lindo
El string ingresado tiene 2 mayuscula(s)

Ejemplos while#

Ejemplo 1.

Implemente la siguiente formula (sumatoria). Donde \(n\) debe ingresarlo el usuario.

\[ \sum_{i=1}^{n}\dfrac{i(i+1)}{2} \]

La sumatoria se define de la siguiente manera:

\[ \sum_{i=1}^{n}X_i = X_1 + X_2 + X_3 + ... + X_n \]
Scanner input = new Scanner(System.in);
System.out.print("Ingrese n: ");
int n = input.nextInt();

int contN = 1;
double sum = 0;

while (contN <= n){
    sum += (double) (contN * (contN + 1))/2;
    contN++;
}

System.out.println("El resultado de la sumatoria es: " + sum);
Ingrese n: 3
El resultado de la sumatoria es: 10.0

Ejemplo 2.

Implemente la siguiente fórmula matemática (productorio). Donde \(n\) debe ingresarlo el usuario.

\[ \prod_{i=1}^{n}\dfrac{i+1}{2i} \]

La productoria o productorio se define de la siguiente manera:

\[ \prod_{i=1}^{n} X_i = X_1 \cdot X_2 \cdot X_3 \cdot ... \cdot X_n \]
Scanner input = new Scanner(System.in);
System.out.print("Ingrese n: ");
int n = input.nextInt();

int contN = 1;
double prod = 1;

while (contN <= n){
    prod *= (double) (contN + 1)/(2 * contN);
    contN++;
}

System.out.println("El resultado del productorio es: " + prod);
Ingrese n: 3
El resultado del productorio es: 0.5

Ejemplo 3.

Realice un programa que cuente el numero de palabras de una oración ingresada por el usuario.

Scanner input = new Scanner(System.in);
System.out.print("Ingrese la oración: ");
String oracion = input.nextLine();

int lenString =  oracion.length();
int cont = 0;
int contPalabras = 1;

while (cont < lenString){
    char letra = oracion.charAt(cont);
    if (letra == ' '){
        contPalabras++;
    }
    cont++;
}

System.out.println("La oración tiene: " + contPalabras + " palabras");
Ingrese la oración: Rei Lindo
La oración tiene: 2 palabras

Ejemplo 4.

Realiza un juego para adivinar un número \(X\). Dado un número ingresado por el usuario verifica si es el número ganador. Tambien debe mostrar el número de intentos que le llevo adivinar el número.

El rango de valores lo podemos definir nosotros, en este caso el numero a adivinar está entre 1 y 50. Y el numero a adivinar será elegido aleatoriamente.

Scanner num = new Scanner(System.in);

// Generar un número aleatorio entre 1 y 50
int numeroAleatorio = (int) (Math.random() * 50) + 1;

int contIntentos = 0;
int numeroIngresado = 0;

while (numeroIngresado != numeroAleatorio) {
    System.out.print("Adivina el número (entre 1 y 50): ");
    numeroIngresado = num.nextInt();

    contIntentos++;

    if (numeroIngresado == numeroAleatorio) {
        System.out.println("¡Felicitaciones! Adivinaste el número en " + contIntentos + " intentos.");
    } else if (numeroIngresado < numeroAleatorio) {
        System.out.println("El número ingresado es menor que el número a adivinar.");
    } else {
        System.out.println("El número ingresado es mayor que el número a adivinar.");
    }
}
2
Adivina el número (entre 1 y 50): 2
¡Felicitaciones! Adivinaste el número en 1 intentos.

Ejemplo 5.

Escribe un programa que dada una palabra ingresada por el usuario me imprima la palabra invertida.

Si ingreso Banana el programa debe imprimir ananaB

Scanner input = new Scanner(System.in);

System.out.print("Ingrese una palabra: ");
String palabra = input.nextLine();

String palabraInv = "";
int longitud = palabra.length();

while (longitud > 0) {
    palabraInv = palabraInv + palabra.charAt(longitud-1);
    longitud--;
}

System.out.println("La palabra normal es: " + palabra);
System.out.println("La palabra invertida es: " + palabraInv);
Ingrese una palabra: reinel
La palabra normal es: reinel
La palabra invertida es: lenier

Ejemplos do-while#

Ejemplo 1.

Realiza una calculadora de exponentes con un ciclo do-while. El usuario debe ingresar la base y hasta que exponente desea que se muestre.

Por ejemplo si ingresa base 2 y exponente 4 el programa debe mostrar el siguientre resultado:

  2 ^ 0 = 1
  2 ^ 1 = 2
  2 ^ 2 = 4
  2 ^ 3 = 8
  2 ^ 4 = 16
Scanner input = new Scanner(System.in);

System.out.print("Ingrese la base: ");
int base = input.nextInt();

System.out.print("Ingrese el exponente: ");
int exponente = input.nextInt();

int contador = 0;

do {
    double resultado = Math.pow(base, contador);
    System.out.println(base + " ^ " + contador + " = " + resultado);
    contador++;
} while (contador <= exponente);
Ingrese la base: 2
Ingrese el exponente: 4
2 ^ 0 = 1.0
2 ^ 1 = 2.0
2 ^ 2 = 4.0
2 ^ 3 = 8.0
2 ^ 4 = 16.0

Ejemplo 2.

Escribe un programa que simule una meta de ahorro. El programa debe pedir al usuario un valor objetivo y luego le pedirá que ingrese una cantidad hasta que llegue a la meta.

El programa debe decir cuanto ha ahorrado hasta el momento. Ademas, si se pasa de la meta debe decir el valor que se excedió.

Scanner input = new Scanner(System.in);

System.out.print("Ingrese el objetivo de ahorro: $ ");
double objetivo = input.nextDouble();

double ahorroTotal = 0;
double ahorroParcial;

do {
    System.out.print("Ingrese la cantidad que desea ahorrar: $");
    ahorroParcial = input.nextDouble();

    ahorroTotal += ahorroParcial;
    System.out.println("Llevas ahorrado un total de $" + ahorroTotal);
} while (ahorroTotal < objetivo);

if (ahorroTotal == objetivo){
    System.out.println("¡Felicidades, has alcanzado tu objetivo de ahorro de $" + objetivo + "!");
} else {
    System.out.println("¡Felicidades, has alcanzado tu objetivo de ahorro de $" + objetivo + " y te quedan $" + (ahorroTotal-objetivo) + " libres.");
}
Ingrese el objetivo de ahorro: $ 1000
Ingrese la cantidad que desea ahorrar: $200
Llevas ahorrado un total de $200.0
Ingrese la cantidad que desea ahorrar: $300
Llevas ahorrado un total de $500.0
Ingrese la cantidad que desea ahorrar: $500
Llevas ahorrado un total de $1000.0
¡Felicidades, has alcanzado tu objetivo de ahorro de $1000.0!