Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 14-11-23 - 3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, pues venga, ¿este cuál era? Ejercicio 5, ¿no?
00:00:00
Ejercicio 5, ¿vale? 5, pues venga, esto de aquí.
00:00:10
Vale, pues venga, leemos dos arrays de números enteros. Bueno, voy a copiar el escáner y
00:00:40
lo de leer el array de otro ejercicio. Venga, pues declaramos un array de enteros, array 1.
00:00:55
¿De qué tamaño me dice? Ah, de números enteros n. Luego vamos a leer primero, vamos a leer primero
00:01:13
cuántos números va a introducir antes de declararlo. Antes de nada, ¿cuántos números va a tener el array?
00:01:23
Vale, pues entonces números 1 y números 2, pues los dos van a ser dos arrays de n. Números 2 igual a new int de n.
00:01:33
Vale, entonces dos arrays. Y ahora habrá que hacer el array resultado, el array resultado será un array con el doble de posiciones, 2 por n.
00:01:47
Y ahora ya, si yo me planteo hacer, bueno, vamos a leerlos. Leemos el primer array que es números 1 y ahora vamos a leer el segundo también.
00:02:03
Vale, voy a hacer en el mismo, bueno no, dos por separados para que se vea claro que son los dos arrays distintos.
00:02:25
Y ahora rellenamos el segundo. Vale, me falta esta llave. Vale, pues ya tenemos este bucle para rellenar el primer array y este otro bucle para rellenar el segundo array.
00:02:39
Y ahora ya, si hacemos lo que hemos hecho en la pizarra, pues ahora yo voy recorriendo todas y cada una de esas posiciones.
00:02:54
Desde i igual a cero, mientras i sea menor que n mayúscula y que aumentando i.
00:03:00
Y para cada posición relleno la una del array resultado más su siguiente.
00:03:04
Es decir, tendría que hacer, el array resultado de i sería esto. El de i, perdón, la posición 2i viene de la i de uno de los arrays.
00:03:13
Y la posición 2i más 1 viene de la i del otro de los arrays. Ahora escrito a lo mejor se ve más claro.
00:03:32
A ver, la posición 2 por i va a ser igual a números 1 de i.
00:03:37
Y la posición siguiente a esta, la consecutiva, la siguiente a esta, 2 por i más 1, la consecutiva, viene de la misma posición i pero del otro.
00:03:51
Y ya está, ya hemos terminado. Esto es exactamente lo que yo he puesto aquí.
00:04:03
Para cada i rellenamos la 2i y la 2i más 1. La 2i viene de la i del primer array y la consecutiva, la 2i más 1, viene de la i del segundo array.
00:04:12
Para cada i del primero y para cada i del segundo rellenamos la 2i y su consecutiva.
00:04:23
Para i igual a 0 rellenamos la 0 y la 1. Para i igual a 1 rellenamos la 2 y la 3.
00:04:30
Para i igual a 2 rellenamos la 4 y la 5, que es justo lo que queremos.
00:04:38
Para i igual a 3 rellenamos la 6 y la 7, que es justo lo que queremos.
00:04:43
Vamos a comprobarlo por si algo hubiéramos hecho mal.
00:04:49
Mostramos el resultado del segundo array desde i igual a 0.
00:04:54
Ahora vamos a mostrar el segundo array y el resultado punto length.
00:05:01
Vamos a mostrar el resultado de i y concatenado con un espacio para que se vea seguido, i menor.
00:05:06
Esto es para mostrar el array resultado, todas sus posiciones, las que he ido rellenando.
00:05:26
Vamos a ejecutarlo por si acaso algo estuviera mal. Vamos a poner 3 solo.
00:05:36
Ese es el primer array. 1, 2 y 3.
00:05:42
Ahora viene el segundo array. 4, 5 y 6.
00:05:47
Y es el definitivo. 1 y 4, 2 y 5, 3 y 6. Lo ha ido haciendo correctamente.
00:05:52
Esta es la forma más compacta de hacerlo.
00:05:59
Si no la veis clara, dedicais un ratito luego en casa a terminar de...
00:06:04
Antes de irnos, vamos a ponerlo aquí.
00:06:17
Hay otra forma de recorrer arrays diferente al bucle for con el índice que hemos visto.
00:06:31
Se le suele llamar el bucle for each. Se le llama así, aunque no es que aparezca con ese nombre luego.
00:06:46
Esta es una sintaxis de for que hay específica solo para recorrer arrays.
00:06:58
Porque esta sintaxis de for es genérica.
00:07:05
Yo aquí pongo lo que me dé la gana. Aquí pongo lo que quiera.
00:07:09
Aquí pongo lo que quiera y aquí pongo lo que quiera. Esta es genérica.
00:07:13
Y pongo lo que me interesa para lo que yo quiera hacer.
00:07:16
¿Que quiero recorrer un array? Pues si quiero recorrerlo, lo que me interesa es esto.
00:07:19
Pero si quiero hacer cualquier otra cosa, pongo ahí lo que me interese.
00:07:23
Hay una sintaxis de for que es así que es solo para recorrer arrays.
00:07:27
Solo para eso y para nada más. No como esa que es genérica para lo que me dé la gana.
00:07:32
Hay una que es solo para recorrer arrays. Pongo aquí para recorrer arrays.
00:07:36
En general es para recorrer colecciones de datos. Pero como solo conocemos la de arrays,
00:07:40
pues por eso pongo que es solo para recorrer arrays.
00:07:44
Lo pongo ahí. No vale esta sentencia para ninguna otra cosa. No es como un for genérico.
00:07:48
No es un bucle genérico. Es un bucle solo para esto.
00:07:53
No es un bucle genérico como el while, como el for, que lo uso para lo que quiera.
00:08:00
No. Es un bucle solo para recorrer arrays. Vale. ¿Y cuál es su sintaxis?
00:08:04
Pues vamos a recorrer el array resultado en lugar de con este for de índice.
00:08:09
Vamos a recorrerlo con esta otra sintaxis. Vamos a recorrerlo.
00:08:15
Esa sintaxis sería for y ahora entre paréntesis pongo dos cosas.
00:08:19
Separadas por dos puntos. No por punto y coma esta vez.
00:08:28
Separadas por dos puntos. ¿Qué pongo ahí?
00:08:32
Separadas por dos puntos. Primero pongo el tipo de dato del array que voy a recorrer.
00:08:37
Y aquí un nombrecito de variable, el que me dé la gana. El que yo quiera.
00:08:44
X y N, un nombrecito de variable. Y aquí pongo el nombre del array.
00:08:48
El nombre del array que en mi caso el que quiero recorrer es resultado.
00:08:55
Esta es la sintaxis. Y siempre es esta. El tipo de dato del array que voy a recorrer.
00:08:59
El tipo de dato. Si es string, es string. Si es double, es double.
00:09:06
Un nombre de variable el que a mí me dé la gana.
00:09:09
Y aquí el nombre del array que quiero resolver. Recorrer.
00:09:12
Porque esto, repito, es una sintaxis solo para recorrer arrays.
00:09:16
Para ninguna otra cosa. Solo para eso.
00:09:20
¿Qué significa esto? Ahora ya este bucle va haciendo iteraciones.
00:09:22
Y va haciendo una iteración por cada posición del bucle.
00:09:27
Sí o sí. Hace una iteración por cada posición del bucle.
00:09:32
No es como el for genérico. El for genérico, si yo en lugar de resultado.lenc pongo 2,
00:09:36
pues recorro solo hasta 2. Estupendo.
00:09:42
Si pongo 3, recorro solo hasta 3. Estupendo.
00:09:44
Pero este no. Este bucle se ejecuta una vez por cada posición.
00:09:47
Y eso es inamovible. A menos que no ponga un break ahí.
00:09:53
Pero el del break por ahora nos lo hemos olvidado.
00:09:57
Es que ni sabemos que existe, solo para el case.
00:09:59
Vale. Solo lo sabe el mal programador.
00:10:01
Bueno, pues entonces, este bucle se ejecuta una vez por cada iteración.
00:10:06
Perdón, por cada posición de resultado. Si tiene 20, 20. Eso es así.
00:10:12
Y ahora, en cada iteración, esta variable X toma el valor de esa posición.
00:10:16
Es decir, es como esta variable X es una copia como si fuera resultado de Y.
00:10:23
Si Y fuera la posición.
00:10:29
En la primera iteración, X es una copia de resultado de 0.
00:10:31
En la segunda iteración, X es una copia de resultado de 1.
00:10:36
En la siguiente iteración, X es una copia de resultado de 2.
00:10:41
Entonces, para hacer un recorrido que muestre rápidamente, es más rápido escribir esto.
00:10:45
Entonces, si yo hago esto de aquí, vamos a ponerlo aquí.
00:10:49
X es una copia de cada posición del array.
00:10:54
De hecho, si lo mostramos, vamos a ver que efectivamente...
00:11:01
Vamos a poner aquí un system.println para que se vaya a la siguiente línea.
00:11:07
Si lo mostramos, efectivamente...
00:11:14
Si mostramos esto, veremos que también me muestra el array.
00:11:23
Pero ved que solo vale para eso, para mostrar un array.
00:11:27
Y se ejecuta una vez por cada posición sí o sí.
00:11:31
Y X es una copia de cada posición.
00:11:34
En la primera iteración, X es una copia de la primera posición.
00:11:37
Y en la segunda, X es una copia de la segunda posición.
00:11:41
Vamos a ejecutarlo.
00:11:45
¿Cuándo me va a introducir? 3.
00:11:48
Vale, 1, 2, 3, 4, 5 y 6.
00:11:50
¿Veis? Aquí he mostrado el resultado con el bucle for de índice.
00:11:55
Y aquí lo he mostrado con el for each.
00:12:00
Es lo mismo.
00:12:03
Este bucle for es muy práctico porque es muy rápido cuando yo quiero recorrer un array
00:12:10
de arriba a abajo y todas las posiciones.
00:12:14
Y a veces uno tiene muchas tentaciones de usarlo así alegremente para recorrer.
00:12:17
Pero cuidado importantísimo, que la clave está en que X no es la posición del array.
00:12:22
X es una copia.
00:12:29
Con lo cual, si yo intento rellenar un array con el bucle for asignándole cosas a X,
00:12:31
el array no se entera porque se lo estoy asignando a la variable X que es copia,
00:12:38
no al verdadero array.
00:12:43
Es decir, vamos a suponer que ahora yo hago esto.
00:12:45
Voy a cambiar este array resultado, lo voy a cambiar para que tenga...
00:12:50
Perdonadme.
00:12:54
Vale, pues venga, vamos a plantearnos.
00:13:11
Rellenar de nuevo el array resultado de la lobestia con números cualquiera.
00:13:13
A rellenarlo.
00:13:16
Pero en lugar de recorrerlo para rellenar con el for de índice,
00:13:17
vamos a recorrerlo para rellenar con éste.
00:13:20
A ver qué nos saldría.
00:13:22
Venga, pues la sintaxis de éste es que sí o sí es ésta, no cambia.
00:13:24
Y un tipo de dato del array.
00:13:27
Aquí el nombrecito que a mí me dé la gana.
00:13:29
El que yo quiera.
00:13:31
Porque éste es el nombre de la variable que va a ir siendo una copia de cada posición.
00:13:33
Y ahora aquí el nombre del array.
00:13:39
Y ahora yo hago.
00:13:41
Pues a n asígnale 3.
00:13:43
Vale, con esto yo podría creer que estoy realmente asignando el valor 3
00:13:47
a cada posición del array resultado, ¿verdad?
00:13:55
Podría creer que estoy haciendo eso.
00:13:59
Que estoy haciendo lo mismo que esto de aquí.
00:14:01
Porque vamos a rellenarlo con el for normal.
00:14:03
No tengo más n para allá arriba, ¿no? Para que no haya confusión.
00:14:11
Vamos a rellenar resultado con el for normal aquí abajo.
00:14:13
Las i sea menor que resultado.len
00:14:20
Incrementando i.
00:14:29
Resultado de i igual a 3.
00:14:33
Vale, pues repito.
00:14:39
Cuidado porque uno podría pensar que está haciendo lo mismo.
00:14:41
Está recorriendo el array y a cada posición le asigna el 3.
00:14:44
Está recorriendo el array y a cada posición le asigna el 3.
00:14:49
No estamos haciendo lo mismo.
00:14:52
Aquí realmente el resultado de i sí es la posición real del array.
00:14:54
Sí es la posición real.
00:14:58
Allá arriba n es una variable que se ha creado localmente.
00:15:00
Que en cada iteración va cogiendo una copia de lo que hay ahí.
00:15:06
En la primera iteración coge x1.
00:15:09
Si es para mostrar, muestro x1.
00:15:12
Perfecto, estupendo.
00:15:14
En la siguiente iteración ahora ya coge lo que hay aquí.
00:15:16
Si es para mostrar, estupendo.
00:15:19
Es una copia, lo muestra.
00:15:21
En la siguiente iteración coge lo que hay aquí.
00:15:22
Si es para mostrar, muy bien, lo muestro.
00:15:24
Pero ojo, si es para rellenar, lo de arriba no.
00:15:26
Porque a quien le estoy asignando los 3 es a esta copia, no al array.
00:15:29
El array no se está enterando.
00:15:32
Le estoy asignando los 3 es aquí.
00:15:34
Esta variable no vale para nada.
00:15:36
Cuando el for each ha terminado, eso ha desaparecido.
00:15:38
Y el array seguía con lo que tenía.
00:15:41
Vamos, de hecho, a mostrar lo que tiene después de haber esto este for.
00:15:46
Vamos a mostrar lo que tiene.
00:15:50
Vamos a volver a mostrarlo.
00:15:56
Vamos a volver a mostrarlo.
00:16:01
Voy a mostrar lo que tiene el array.
00:16:05
Voy a poner aquí para que no nos liemos de que estamos en la última parte.
00:16:16
Un más, más, más.
00:16:21
Estamos en la última parte.
00:16:22
Ya hemos entrado en la última parte.
00:16:27
En la última parte.
00:16:29
Hacemos esto.
00:16:30
Que uno podría pensar que está rellenando el array con 3 posiciones.
00:16:31
Ahora, vamos a mostrar lo que tiene ese array.
00:16:34
A ver qué tiene.
00:16:37
Y ahora vamos a volver a rellenarlo con 3 es.
00:16:39
Pero ahora con este for de aquí.
00:16:46
Y vamos a volver a mostrar lo que tiene.
00:16:48
Para mostrar, ya hemos dicho que el for each es perfecto.
00:16:50
Vamos a volver a mostrarlo.
00:16:55
Pues venga, vamos a ver qué pasa aquí.
00:16:58
Dos números para que sea más fácil.
00:17:07
Ese es el primer array.
00:17:09
Uno y dos.
00:17:10
Ese es el segundo array.
00:17:12
Tres y cuatro.
00:17:13
Esto es lo de intercalados con un método.
00:17:16
Intercalados con otro.
00:17:19
Y ahora, esto es el resultado del array después de haber hecho esto.
00:17:22
Después de haber hecho esto.
00:17:32
Como veis, el array ni se ha enterado.
00:17:34
El array resultado ni se ha enterado.
00:17:36
Sigue teniendo lo que tenía antes.
00:17:38
Esto de aquí.
00:17:41
Ni se ha enterado.
00:17:42
Claro, porque a lo que le hemos estado dando el 3 es a esta variable n
00:17:43
que va teniendo la copia de cada posición.
00:17:48
Ni se ha enterado.
00:17:50
Pero ahora, cuando yo ya lo relleno así, ahora sí que se ha enterado.
00:17:51
Porque esto ya sí que es la verdadera posición del array.
00:17:54
Ahora ya sí que se ha enterado.
00:17:57
Y por eso cuando lo muestro, ahora ya sí.
00:17:58
Entonces, esta sintaxis es muy cómoda para recorrer arrays.
00:18:02
Muy cómoda.
00:18:06
Pero su uso se limita cuando yo quiero recorrer para mostrar simplemente.
00:18:07
Si es para asignarle valores, no.
00:18:15
Porque entonces estaréis asignando la copia.
00:18:17
Vale.
00:18:20
Bueno.
00:18:24
Pero entonces, ¿para qué usas un for each?
00:18:28
O sea, si tú luego quieres, te tendrás que declararte un i arriba.
00:18:30
Porque en el for each no puedes declararte ningún i.
00:18:34
Entonces, tienes que un i arriba.
00:18:37
Irlo incrementando.
00:18:39
Ir poniendo.
00:18:40
Pero es que todo esto no te vale para nada.
00:18:41
Aparece un for each y ya está.
00:18:43
Claro, ¿a qué?
00:18:44
Entonces, esa es una forma rápida de recorrer un array para mostrarlo.
00:18:47
Pero con la limitación.
00:18:50
Pero que no se olvide que ese es su uso.
00:18:52
Vale.
00:18:55
Venga, pues ya está.
00:18:56
Pues vamos a...
00:18:57
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 6
- Fecha:
- 14 de noviembre de 2023 - 14:23
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 361.68 MBytes