📙 Ciclo Repetitivo for - Java#

Tabla de Contenido#

  • 1 - Instalar Java

  • 2 - Ejemplos ciclo for

    • 2.1 - Ejemplos for simples

    • 2.2 - Ejemplos for con condicionales

    • 2.3 - Ejemplos for anidados

  • 3 - Recorrer String

  • 4 - Ejercicios

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 ciclo for#

Ejemplos for simples#

Ejemplo 1:#

Realizar un programa que imprima los numeros de dos en dos (paso igual a \(2\)) entre \(-50\) y \(50\).

for (int i=-50; i<=50; i+=2){
    System.out.println(i);
}
-50
-48
-46
-44
-42
-40
-38
-36
-34
-32
-30
-28
-26
-24
-22
-20
-18
-16
-14
-12
-10
-8
-6
-4
-2
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50

Ejemplo 2:#

Realizar un programa que dado un rango de numeros ingresado por el usuario imprima con paso igual a \(5\).

Scanner scn = new Scanner(System.in);

// Leer numeros
System.out.println("Ingrese el numero inicial del rango: ");
int start = scn.nextInt();
System.out.println("Ingrese el numero final del rango: ");
int end = scn.nextInt();

// Validación con ciclo while (se explica en la siguiente clase)
while(start>=end){
  System.out.println("Ingrese NUEVAMENTE el numero inicial del rango: ");
  start = scn.nextInt();
  System.out.println("Ingrese NUEVAMENTE el numero final del rango: ");
  end = scn.nextInt();
}
// Ciclo
for (int num=start; num<=end; num+=5){
    System.out.println(num);
}
Ingrese el numero inicial del rango: 
19
Ingrese el numero final del rango: 
9
Ingrese NUEVAMENTE el numero inicial del rango: 
20
Ingrese NUEVAMENTE el numero final del rango: 
1
Ingrese NUEVAMENTE el numero inicial del rango: 
3
Ingrese NUEVAMENTE el numero final del rango: 
10
3
8

Ejemplo 3:#

Realizar un programa que imprima una tabla de multiplicar. El usuario debe ingresar el numero de la tabla a mostrar. Por simplicidad solo imprima hasta \(\times 10\).

Tip. La función String.valueOf() convirte un entero a String. En este ejemplo no se necesita pero puedes usarlo.

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el numero de la tabla: ");
int num = scn.nextInt();

// Ciclo
for (int i=1; i<=10; i++){
    System.out.println(i + " x " + String.valueOf(num) + " = " + i*num);
}
Ingrese el numero de la tabla: 
5
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
int n,m;
n=2;
m=3;
System.out.println(n+m);
String x=String.valueOf(n);
String y=String.valueOf(m);
System.out.println(x+y)
5
23

Ejemplo 4:#

Reliza el programa anterior con las siguientes modificaciones:

  • Imprime en reversa la tabla de multiplicar.

  • El usuario debe ingresar el numero hasta donde mostrar la tabla.

Scanner scn = new Scanner(System.in);

// Leer numeros
System.out.println("Ingrese el numero de la tabla: ");
int num = scn.nextInt();
System.out.println("Ingrese el numero final: ");
int end = scn.nextInt();

// Ciclo
for (int i=end; i>=1; i--){
    System.out.println(i + " x " + num + " = " + i*num);
}
Ingrese el numero de la tabla: 
6
Ingrese el numero final: 
15
15 x 6 = 90
14 x 6 = 84
13 x 6 = 78
12 x 6 = 72
11 x 6 = 66
10 x 6 = 60
9 x 6 = 54
8 x 6 = 48
7 x 6 = 42
6 x 6 = 36
5 x 6 = 30
4 x 6 = 24
3 x 6 = 18
2 x 6 = 12
1 x 6 = 6

Ejemplo 5:#

Realiza un programa que imprima la siguiente figura. El numero de lineas a imprimir debe ingresarlo el usuario.

x
xx
xxx
xxxx
Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el numero de lineas: ");
int num = scn.nextInt();

// Linea para separar la figura
System.out.println("");

// Ciclo
String var = "x";
for (int i=1; i<=num; i++){
    System.out.println(var);
    var += "x";
}
Ingrese el numero de lineas: 
4

x
xx
xxx
xxxx
i
5

Ejemplos for con condicionales#

Ejemplo 6:#

Realizar un programa que me imprima solamente los numeros pares entre un rango de numeros ingresado por el usuario.

Scanner scn = new Scanner(System.in);

// Leer numeros
System.out.println("Ingrese el numero inicial: ");
int start = scn.nextInt();
System.out.println("Ingrese el numero final: ");
int end = scn.nextInt();

System.out.println("Numeros pares entre " + start + " y " + end + ": ");
// Ciclo
for (int i=start; i<=end; i++){
    if (i % 2 == 0){
        System.out.println(i);
    }
}
Ingrese el numero inicial: 
2
Ingrese el numero final: 
10
Numeros pares entre 2 y 10: 
2
4
6
8
10

Ejemplo 7:#

Realizar un programa que imprima el cubo de los numeros entre 15 y 30. Si el cubo es mayor a \(20000\) debe comenzar a imprimir "¿Capital de Bangladesh?" y ademas si es mayor a \(20000\) y el numero es impar debe imprimir "Crunchis".

Nota. Debe imprimir el cubo de i es x. Donde i es la variable indice y x es el resultado de la operación para cada i.

  • La expresión (int) en (int) Math.pow(i, 3) se realiza para convertir un tipo de dato double retornado por Math.pow(i, 3) a un entero. A esto se le denomina casteo o casting.

for (int i=15; i<=30; i++){
    int cubo = (int) Math.pow(i, 3);
    System.out.println("El cubo de " + i + " es " + cubo);
    if (cubo > 20000){
        System.out.println("  ¿Capital de Bangladesh?");
        if (cubo % 2 != 0){
            System.out.println("  Crunchis");
        }
    }
}
El cubo de 15 es 3375
El cubo de 16 es 4096
El cubo de 17 es 4913
El cubo de 18 es 5832
El cubo de 19 es 6859
El cubo de 20 es 8000
El cubo de 21 es 9261
El cubo de 22 es 10648
El cubo de 23 es 12167
El cubo de 24 es 13824
El cubo de 25 es 15625
El cubo de 26 es 17576
El cubo de 27 es 19683
El cubo de 28 es 21952
  ¿Capital de Bangladesh?
El cubo de 29 es 24389
  ¿Capital de Bangladesh?
  Crunchis
El cubo de 30 es 27000
  ¿Capital de Bangladesh?

Ejemplo 8:#

Realizar un programa que calcule la siguiente sumatoria:

\[ \sum_{i=1}^{12} (3i+\frac{i}{2})i \]

Ademas debe imprimir el resultado de la sumatoria cuando \(i\) sea mayor o igual a \(10\).

Nota. Inicialice la variable indice como tipo float o double de lo contrario no funcionará correctamente el programa.

float sumatoria = 0f;

for (float i=1; i<=12; i++){
    sumatoria += ((3*i) + (i/2)) * i;
    if (i >= 10) {
        System.out.println("Resultado en la iteración " + (int) i + ": " + (int)sumatoria);
    }
}

System.out.println("\nEl resultado final es " + (int)sumatoria);
Resultado en la iteración 10: 1347
Resultado en la iteración 11: 1771
Resultado en la iteración 12: 2275

El resultado final es 2275

Ejemplos for anidados#

Ejemplo 9:#

Realice un programa que imprima un cuadrado de celdas blancas y negras como la siguiente figura.

Las celdas blancas se representan con \(1\) y las celdas negras con \(0\). El usuario debe ingresar el tamaño del cuadrado.

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el tamaño del cuadrado: ");
int size = scn.nextInt();

int total=0;
String line = "";

for (int fil=1; fil<=size; fil++){
    for (int col=1; col<=size; col++){
        total = fil + col;
        if (total%2 == 0) {
            line += "0 ";
        } else {
            line += "1 ";
        }
    }
    System.out.println(line);
    line = "";
}
Ingrese el tamaño del cuadrado: 
4
0 1 0 1 
1 0 1 0 
0 1 0 1 
1 0 1 0 

Otra forma

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el tamaño del cuadrado: ");
int size = scn.nextInt();

String line = "";

for (int fil=1; fil<=size; fil++){
    for (int col=1; col<=size; col++){
        if(fil %2!=0) {
          if(col %2!=0){
            line += "0 ";
          }
          else{
            line += "1 ";
          }
        }
         else{
           if(col%2==0){
             line += "0 ";
           }
           else{
             line += "1 ";
           }
         }
    }
    System.out.println(line);
    line="";
  }
Ingrese el tamaño del cuadrado: 
4
0 1 0 1 
1 0 1 0 
0 1 0 1 
1 0 1 0 

Ejemplo 10:#

Realice un programa que imprima la siguiente figura. El usuario debe ingresar el ancho de la figura, en este caso el ancho es igual a \(11\).

image.png

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el ancho de la figura: ");
int ancho = scn.nextInt();

String line = "";

for (int fil=1; fil<=ancho; fil++) {
    for (int col=fil; col<=fil*10; col+=fil) {
        line += col + "  ";
    }
    System.out.println(line);
    line = "";
}
Ingrese el ancho de la figura: 
11
1  2  3  4  5  6  7  8  9  10  
2  4  6  8  10  12  14  16  18  20  
3  6  9  12  15  18  21  24  27  30  
4  8  12  16  20  24  28  32  36  40  
5  10  15  20  25  30  35  40  45  50  
6  12  18  24  30  36  42  48  54  60  
7  14  21  28  35  42  49  56  63  70  
8  16  24  32  40  48  56  64  72  80  
9  18  27  36  45  54  63  72  81  90  
10  20  30  40  50  60  70  80  90  100  
11  22  33  44  55  66  77  88  99  110  

Otra forma#

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese el ancho de la figura: ");
int ancho = scn.nextInt();

String line = "";

for (int fil=1; fil<=ancho; fil++) {
    for (int col=1; col<=10; col++) {
        line += fil*col + "  ";
    }
    System.out.println(line);
    line = "";
}
Ingrese el ancho de la figura: 
11
1  2  3  4  5  6  7  8  9  10  
2  4  6  8  10  12  14  16  18  20  
3  6  9  12  15  18  21  24  27  30  
4  8  12  16  20  24  28  32  36  40  
5  10  15  20  25  30  35  40  45  50  
6  12  18  24  30  36  42  48  54  60  
7  14  21  28  35  42  49  56  63  70  
8  16  24  32  40  48  56  64  72  80  
9  18  27  36  45  54  63  72  81  90  
10  20  30  40  50  60  70  80  90  100  
11  22  33  44  55  66  77  88  99  110  

Ejemplo 11:#

Realizar un programa que imprima la siguiente figura

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15

El usuario debe ingresar el numero de filas/lineas que se van a imprimir.

En este ejemplo se usa System.out.print(), que es similar a System.out.println(), con la diferencia que no da un salto de linea.

Scanner scn = new Scanner(System.in);

// Leer numero
System.out.println("Ingrese las filas: ");
int filas = scn.nextInt();

System.out.println("");
int cont = 1;

for (int i=filas; i>=1; i--) {
    for (int j=i; j<=filas; j++) {
        System.out.print(cont + " ");
        cont++;
    }
	  System.out.println("");
}
Ingrese las filas: 
6

1 
2 3 
4 5 6 
7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 21 

Recorrer un String en Java#

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

String word = "Cuadrado";

for (char letra: word.toCharArray()) {
    System.out.println(letra);
    //System.out.print(letra);
}
C
u
a
d
r
a
d
o
Scanner scn = new Scanner(System.in);

System.out.println("Ingrese una frase: ");
String frase = scn.nextLine();

for (char letra: frase.toCharArray()) {
    System.out.println(letra);
}
Ingrese una frase: 
Hola rei lindo
H
o
l
a
 
r
e
i
 
l
i
n
d
o

Ejercicios#

Ejercicio 1:#

Realizar un programa que imprima la sumatoria de la siguiente expresión

1 + 11 + 111 + 1111 + ... + n terminos

El usuario debe ingresar los n terminos y el programa debe imprimir cada termino.

Por ejemplo, con n=5 la suma debe ser 12345.

Ejercicio 2:#

Realice un programa que de solución a la siguiente sumatoria

\[ 1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+...+\frac{x^n}{n!} \]

El usuario debe ingresar los valores \(n\) y \(x\).

Ejercicio 3:#

Realizar un programa que imprima la siguiente figura

1
2 2
3 3 3
4 4 4 4

El usuario debe ingresar el numero de filas que se imprimirán.

Ejercicio 3:#

Realizar un programa que imprima la siguiente figura

1
2 2
3 3 3
4 4 4 4

El usuario debe ingresar el numero de filas que se imprimirán.