20241031 ProgrEstruct-Arrays-ejercicios_7 - 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:
Porque la idea es, la idea es, este es el array, ya muy pintorrojeado, entonces, esta por ejemplo, Daniel, perdón, ya, es que se ha escondido detrás de la torre, esta es la posición a eliminar, vale, entonces, ¿cómo vamos a hacer?
00:00:00
Pues podemos visualizarlo así
00:00:26
Voy a ir desde esta posición hasta el final
00:00:29
Y en cada posición copio su siguiente
00:00:33
Con lo cual, si en este array tengo
00:00:36
Pues por ejemplo, en esta posición tengo 7
00:00:40
En esta otra tuviera 8, por ejemplo
00:00:42
En esta otra posición tuviera el 9
00:00:47
vale, entonces
00:00:52
el 8 lo copio en el 7
00:00:54
fenomenal, el 7 desapareció, pues es lo que quería
00:00:57
el 8 se queda replicado en los dos sitios
00:00:59
pero es que luego en la siguiente iteración
00:01:01
el 9 va a ir al 8
00:01:03
entonces voy a conseguir ese efecto
00:01:05
entonces mi bucle force será
00:01:07
desde la posición
00:01:09
hasta el penúltimo
00:01:11
copiando el siguiente en la posición
00:01:13
luego habréis hecho algo como este
00:01:16
en mi ejemplo
00:01:19
este es mi array
00:01:21
de números y esta es mi
00:01:23
posición a eliminar, para no meterla
00:01:25
por teclado y ser más rápidos
00:01:27
este es mi array y esta es mi posición
00:01:29
podríamos probarlo con cualquier otra combinación
00:01:30
y ahora desde esta posición
00:01:33
hasta la penúltima, es decir
00:01:35
desde esta hasta la penúltima
00:01:37
copio
00:01:39
la siguiente en ella
00:01:41
la siguiente en ella
00:01:43
entonces el efecto final
00:01:45
si lo muestro
00:01:47
es efectivamente haber perdido
00:01:48
La posición a eliminar
00:01:51
Porque habré copiado
00:01:53
Esta en esta
00:01:55
Esta en esta
00:01:56
Entonces si ejecutamos esto, le doy la posición 2
00:01:58
El 3 efectivamente lo va a eliminar
00:02:03
El 3 lo va a eliminar
00:02:05
Lo ejecutamos
00:02:07
Y
00:02:09
Efectivamente el 3 lo ha eliminado
00:02:10
Y el 4 y el 5 los ha subido para allá
00:02:13
Pero claro, la última posición
00:02:15
Al desplazarlas todas, la última se ha quedado duplicada
00:02:19
Pero es que esa está ahí sobrante
00:02:21
Pero antes de hablar de eso
00:02:23
Lo que importa es que este código
00:02:26
Este claro
00:02:28
Lo que hemos hecho y por qué lo hemos hecho así
00:02:30
Más o menos
00:02:32
Baja, baja
00:02:34
Esto es para mostrar solo
00:02:38
¿Vale?
00:02:40
A ver, tú mira
00:02:43
Tú mira
00:02:44
Tienes aquí este array
00:02:50
¿Vale? Tienes aquí este array
00:02:52
Con estas posiciones
00:02:55
¿Vale?
00:02:58
Y ahora te dicen
00:03:02
Vamos a eliminar esta de aquí
00:03:04
Por ejemplo
00:03:07
Esta que tiene el circulito, vamos a eliminarlo
00:03:07
Entonces, ¿qué es lo que estoy haciendo yo?
00:03:10
¿Vale? Pues vámonos con un bucle for
00:03:12
Desde esta posición
00:03:14
Hasta la penúltima
00:03:16
Luego por eso tengo aquí un for
00:03:18
Desde
00:03:21
Desde la posición a eliminar, quizá aquí se ve más claro, si en lugar del 2 pongo posición a eliminar.
00:03:22
Y así si la voy cambiando, pues la cambio ahí.
00:03:29
Desde la posición a eliminar, desde la posición a eliminar, que es esta, o la que sea en este caso, hasta la penúltima, ¿qué hacemos?
00:03:32
Pues la siguiente, que es i más 1 en i, que es lo que he hecho aquí.
00:03:41
La siguiente, que es i más 1 en i.
00:03:45
luego si este array tuviera
00:03:48
imagínate que tiene
00:03:51
aquí tiene un 7
00:03:52
aquí tiene un
00:03:54
8 por ejemplo
00:03:57
aquí tiene un 10 por ejemplo
00:03:59
por poner algo
00:04:03
pues este bucle for que va haciendo
00:04:04
cuando estamos en esta iteración
00:04:06
de aquí
00:04:09
a la posición
00:04:09
i más 1
00:04:13
le asigna la i más 1
00:04:13
que es esta sentencia
00:04:16
A la posición i le asigna la i más 1, que es la sentencia de ahí.
00:04:18
Luego, el 7 se queda sobrescrito, ahí ha desaparecido, este 7 se queda sobrescrito, y el 8 se ha guardado ahí.
00:04:23
¿Vale? Entonces el 8 en este caso se ha quedado duplicado, claro, el 8 se ha guardado aquí, pero aquí sigue estando el 8.
00:04:34
Ahora, siguiente iteración.
00:04:40
Lo que hay aquí se va aquí, vale, ya el 8 se pilló, se pisó, y ahora tiene el 10.
00:04:43
Claro, pero el 10 sigue duplicado
00:04:48
Y así todo el rato
00:04:50
Entonces al final
00:04:51
El último número se queda duplicado
00:04:52
Porque este ya no se pisa con nadie
00:04:55
Porque este ya no tiene nadie detrás para que le pisen
00:04:56
Por eso esta ejecución ha quedado así
00:04:58
Han pasado todos arriba
00:05:01
El 4 pisó el 3, el 5 pisó el 4
00:05:04
Pero el 5 se ha quedado
00:05:07
Porque no tiene nadie detrás que le pise a él
00:05:08
Vale, las interacciones están yendo así
00:05:10
Este pisa a este
00:05:15
y aquí se han quedado ya dos 8
00:05:17
pero ahora el 10 pisa el 8
00:05:19
y ahora se han quedado aquí ya dos 10
00:05:22
ahora este número pisará este
00:05:23
y se quedará aquí dos veces
00:05:26
este número pisará este
00:05:28
y se quedará aquí dos veces, que es lo que nos ha pasado
00:05:29
y ya está, y los dos últimos
00:05:32
se quedan iguales, porque ya no tenemos uno más
00:05:34
que pise a este otro
00:05:36
Pablo y yo será
00:05:38
girar a la derecha
00:05:42
desplazarme a la derecha
00:05:47
¿Ah, sí?
00:05:48
Porque en este bucle
00:05:54
en el que voy copiando
00:05:55
con el siguiente 1
00:05:57
me tengo que dar el penúltimo
00:06:00
porque si me llegara el último
00:06:01
este me intentaría hacer el i más 1
00:06:03
que es este al i
00:06:05
y no existe i más 1
00:06:06
entonces me quedo en el penúltimo
00:06:07
para que este lo copie aquí
00:06:09
por eso me he quedado en el penúltimo
00:06:11
Bueno, entonces este código entendido
00:06:13
vale, lo que pasa es que esto
00:06:16
está claro, ¿no? más o menos
00:06:20
como código, más o menos
00:06:22
bueno, la idea está
00:06:24
luego hay que
00:06:26
volver a mirarla y
00:06:28
vale, pues entonces, este código está
00:06:30
precisamente hace algo
00:06:32
que nos interesa hacer muy a menudo, que es
00:06:34
hay un elemento
00:06:36
de un array, me da igual que sea una cadena
00:06:39
lo que sea, que no me gusta
00:06:41
quiero sacarlo del array
00:06:42
pero claro, como ya hemos dicho
00:06:44
el array es un elemento de tamaño fijo
00:06:46
estático, una vez que lo hemos
00:06:48
declarado con 5 posiciones
00:06:50
como es este, se va a quedar con 5 siempre
00:06:52
entonces yo he desplazado los demás
00:06:54
para que este se vaya
00:06:56
pero el array sigue teniendo 5 posiciones
00:06:57
entonces la última
00:07:00
ahora es una posición inútil
00:07:01
la última es inútil
00:07:03
porque está ahí duplicándolo del último
00:07:05
que ha subido para arriba, es una posición inútil
00:07:08
entonces hombre, este código sería mucho
00:07:10
más bonito si dijéramos
00:07:12
oye, pero recórtalo
00:07:13
recórtalo, si has eliminado uno
00:07:15
los demás han subido
00:07:18
pues el último
00:07:19
ese no nos interesa
00:07:21
vamos a recortarlo
00:07:23
¿se puede recortar un array? pues no se puede
00:07:24
pero sí que se puede
00:07:28
crear uno más pequeño
00:07:30
y copiar la parte
00:07:32
que nos interesa
00:07:34
y esa es la única manera de hacerlo
00:07:35
así es como funciona, que yo quiero un array
00:07:37
y de repente tres elementos me sobran
00:07:39
desplazo los demás
00:07:41
se van a quedar tres posiciones al final
00:07:42
que no me sirven para nada
00:07:45
pues me falta la parte final que sería
00:07:46
me voy a crear array 1
00:07:49
con las posiciones que realmente me importan
00:07:51
y copio esas posiciones
00:07:53
y las sobrantes que se han quedado duplicadas
00:07:54
ya está
00:07:57
y esa es la única manera de hacerlo
00:07:58
lo que pasa es que claro, uno no se está todo el rato
00:08:00
cuando quieren sacar elementos del array
00:08:03
creando un array nuevo, copiando
00:08:05
porque ese código ya está hecho
00:08:09
en funciones de librería
00:08:11
ya está hecho y ya lo veremos
00:08:12
con las colecciones de datos
00:08:15
pero ahora estamos aprendiendo a programar
00:08:16
no estamos aprendiendo a usar funciones de librería
00:08:18
eso lo sabe hacer cualquiera
00:08:20
¿sí?
00:08:22
la función de librería la sabe hacer cualquiera
00:08:25
programar no la sabe hacer cualquiera
00:08:26
entonces esa es vuestra diferencia
00:08:27
vale, pues entonces
00:08:29
vamos a
00:08:31
nosotros tenemos que crear funciones de librería
00:08:33
justo, hacer un código
00:08:38
hacer códigos que otros puedan usar
00:08:40
para hacer diferentes cosas, claro
00:08:42
vamos a, como se ha quedado
00:08:43
se ha quedado
00:08:46
la última posición
00:08:49
se ha quedado duplicada e inútil
00:08:51
no la queremos para nada
00:08:53
vale, pues vamos a crearnos
00:08:54
un array de una posición menos
00:09:10
que va a ser el resultado
00:09:13
entonces, si el otro
00:09:15
se llamaba números
00:09:24
pues ala, este array result
00:09:25
tiene una posición menos
00:09:31
y ahora tenemos que copiar
00:09:34
las primeras posiciones
00:09:36
Salvo la última
00:09:38
En este otro array
00:09:39
Y ya este otro array mío sería el definitivo
00:09:41
Entonces
00:09:43
Copiar un array en otro a mogollón
00:09:44
No se puede
00:09:50
Hay que hacerlo por código
00:09:51
Otra cosa es que haya funciones de librerías que lo hagan
00:09:53
Pero hay que hacerlo por código
00:09:55
No hay un operador como la suma, la resta
00:09:57
Que se hace directamente Java lo sabe hacer
00:09:59
No, esto hay que programarlo
00:10:02
Pues tendremos que copiar
00:10:03
Uno por uno
00:10:05
Vamos a copiar
00:10:06
Claro, es copiar uno por uno
00:10:10
Posición por posición
00:10:15
En result
00:10:16
Excepto la última posición
00:10:25
Que la última ya no la queremos
00:10:28
Claro
00:10:29
Recorremos
00:10:32
Desde i igual a 0
00:10:34
Mientras i sea menor que
00:10:35
El tamaño de result, que es una menos que el otro
00:10:38
Bueno, porque
00:10:40
Estoy usando result ya, que ya tiene una menos
00:10:43
Y ahora ya a result
00:10:46
De i
00:10:50
Números de i
00:10:52
Y este sería mi array ya recortado
00:10:55
Entonces ya la jugada final es
00:10:59
Oye mi array de entrada era este
00:11:01
Yo quiero que mi resultado final
00:11:06
Este en mi array
00:11:08
Pues ya la jugada final es
00:11:09
Lo mismo con el contrario
00:11:12
No, números
00:11:14
Igual a result
00:11:16
Y con esto ya nos quedamos
00:11:17
Tan anchos
00:11:19
Claro. Entonces, ¿qué estamos haciendo aquí?
00:11:20
A ver.
00:11:26
No, vacía no, es que ya no existe.
00:11:35
A ver.
00:11:40
Claro, a ver.
00:11:43
¿Qué hemos hecho? A ver, importante entender
00:11:46
esto que hemos hecho, vamos a
00:11:48
vale
00:11:50
vale, teníamos
00:11:52
nuestro array
00:11:57
números
00:11:58
nuestro array números
00:11:59
que tenían los numeritos
00:12:04
que fueran
00:12:06
7, 3, 12, 4
00:12:07
y 1, por ejemplo, vale
00:12:10
ahora hemos hecho, mediante ese bucle
00:12:12
for, le hemos dicho, oye
00:12:14
vamos a eliminar esta posición, por ejemplo
00:12:16
entonces hemos empezado un bucle for que empezaba aquí
00:12:18
y acababa en el penúltimo y en cada iteración
00:12:21
este copialo aquí, entonces ya nos quedaba
00:12:24
12, 12, 4 y 1, siguiente iteración
00:12:27
este copialo aquí, ya nos quedaba
00:12:30
12, 4, 4 y 1
00:12:33
vale, siguiente iteración
00:12:36
este copialo aquí, vale, ya nos quedaba
00:12:37
el 12
00:12:41
4, 1 y el 1
00:12:44
que es el que se ha quedado replicado
00:12:47
después de haber hecho
00:12:49
ese primer for de desplazar
00:12:51
el array se ha quedado así efectivamente
00:12:53
se ha quedado así
00:12:55
¿vale? se ha quedado
00:12:56
7, el 3 se ha quedado pisado por el 12
00:12:58
el 4
00:13:01
ha subido donde estaba el 12
00:13:03
el 1 ha subido donde estaba el 4
00:13:04
y se ha quedado este 1 ahí sobrado
00:13:07
vale, este es nuestro array final
00:13:09
nuestro array números después de haber
00:13:11
hecho estas copias
00:13:13
pero nuestro resultado final
00:13:14
querríamos que no fuera este
00:13:16
sino querríamos que esta posición no existiera
00:13:19
querríamos que números
00:13:21
se convirtiera en un array
00:13:23
de cuatro posiciones
00:13:25
en vez de cinco, o sea, querríamos
00:13:27
esta tirarla a la basura
00:13:28
pero no se puede, un array una vez que
00:13:30
se ha creado
00:13:33
con cinco posiciones va a tener siempre cinco posiciones
00:13:33
vale, pues ¿qué invento nos hemos
00:13:37
hecho? nos hemos creado
00:13:39
un array result
00:13:41
de cuatro posiciones solo
00:13:42
un array distinto, result
00:13:46
Y ahora hemos llevado la 7 aquí, la 12 aquí, la 4 aquí y la 1 aquí.
00:13:48
Esta no la hemos llevado a ningún sitio.
00:13:56
Ahí se queda en números.
00:13:58
Y ahora, este array result queremos que se convierta en nuestro array de partida.
00:14:00
En nuestro array de partida.
00:14:07
Pues ahora ya la última sentencia que hemos hecho es esta.
00:14:09
Result, perdón, números.
00:14:13
Hemos hecho esta.
00:14:16
números igual a result
00:14:18
y con esta
00:14:21
sentencia, números
00:14:23
igual a result, ahora ya
00:14:25
números
00:14:27
deja de apuntar al array
00:14:29
números a donde estaba apuntando, deja de apuntar
00:14:31
esto desaparece
00:14:34
y números ahora ya empieza a apuntar
00:14:35
a result
00:14:38
¿vale? luego ya mi array de partida
00:14:38
números se ha convertido
00:14:41
en este otro, que es mi resultado
00:14:43
final bueno
00:14:45
y este de aquí
00:14:46
que se quedaba con ese 1 duplicado
00:14:48
ya ha perdido su referencia
00:14:51
no tiene nadie que le apunte
00:14:53
¿qué ocurría con eso?
00:14:55
pues que el recolector de basura
00:14:57
en cuanto se despierte dentro de unos cuantos milisegundos
00:14:58
lo tirará a la basura
00:15:02
luego el resultado final de este código
00:15:03
es
00:15:07
que mi array número se ha convertido
00:15:08
en este otro
00:15:11
que es un array distinto con una posición menos
00:15:12
donde la que estaba entre medias
00:15:15
desapareció
00:15:17
luego el efecto final es ese, que la raíz se ha encogido
00:15:19
expulsando al 3
00:15:22
es el efecto final, la raíz se ha encogido
00:15:25
expulsando al 3, pero la raíz no se ha encogido
00:15:27
porque la raíz no se puede encoger
00:15:30
si lo hemos creado como 5, son 5
00:15:31
pero sí que podemos crear uno de 4
00:15:33
copiar la parte
00:15:36
que nos interesa
00:15:37
y ahora ya sustituir esta variable
00:15:38
números para que sea esta
00:15:41
y este array ya
00:15:43
ya no vale para nada
00:15:44
¿vale?
00:15:46
porque es importante que entendáis que
00:15:53
una variable array en realidad
00:15:56
es la dirección de memoria
00:15:58
de donde cuelgan las posiciones
00:15:59
entonces si yo, si a esta variable
00:16:02
array mío números
00:16:04
le asigno esta dirección result
00:16:05
pues mi variable array números automáticamente
00:16:07
se convierte en esta variable array
00:16:10
y si yo hago
00:16:12
números de 0 pues será este, claro
00:16:14
números de 1 será este, etc.
00:16:15
Vale
00:16:17
Entonces después de
00:16:21
Haber hecho ya este número result
00:16:23
Si yo muestro
00:16:29
El array números
00:16:31
Vamos a mostrar el original aquí
00:16:33
Para que se vea bien
00:16:42
Array original
00:16:44
Vamos a mostrarle aquí
00:16:46
Bueno voy a
00:16:47
Vale voy a mostrar array números
00:16:53
Antes de hacer nada
00:16:56
Antes de hacer nada
00:16:58
Vamos a mostrar como es
00:17:01
Mostramos el array números antes de hacer nada
00:17:02
Ahora ya hacemos todo lo que hemos dicho
00:17:06
Y volvemos a mostrar
00:17:08
Ese mismo array números
00:17:11
Volvemos a mostrarlo
00:17:12
Voy a poner un system.println
00:17:13
Para que se vaya el n de abajo
00:17:16
Que baje la cosa
00:17:18
La vida subiendo, bajando
00:17:20
Metiendo, sacando
00:17:27
Todas las combinaciones posibles
00:17:28
Venga
00:17:30
Me falta aquí poner un
00:17:32
Voy a poner un system.out.println
00:17:34
Para que se salte
00:17:37
Pues vamos a ver el efecto de esto
00:17:38
Lo ejecutamos
00:17:40
Joder, algo
00:17:41
Ah bueno, porque es que le he mostrado dos veces el original
00:17:44
Vale, a ver
00:17:46
¿Dónde tengo yo un...?
00:17:47
Aquí muestro el que acabo de crear
00:17:50
Me hago toda esa combinación
00:17:52
Este es el que me sobra
00:17:55
Me hago esto y lo vuelvo a mostrar
00:17:56
vale, pues si lo ejecuto
00:18:01
efectivamente, este es mi
00:18:04
array números original
00:18:06
y este es mi array números final
00:18:07
el aspecto, la impresión
00:18:10
que da es que se ha cortado o no se ha cortado
00:18:12
a veces que he creado uno nuevo, he copiado la parte que me
00:18:14
interesa y he
00:18:16
sustituido luego uno por el otro
00:18:18
que cambiamos la posición a eliminar
00:18:20
voy a cambiar la posición
00:18:25
vamos a eliminar la 1
00:18:26
por ejemplo, posición a eliminar la 1
00:18:29
lo ejecuto
00:18:31
Y ha efectivamente eliminado la 1
00:18:32
Ha eliminado la 1
00:18:35
Que es esta
00:18:37
Pues echar el día a perros
00:18:38
Eso es lo que hacen
00:18:47
Pues no lo descartes
00:18:48
Cuanto más grites más van aprobados
00:18:51
Aprobaste gritos
00:18:54
Este ya tiene asignatura
00:18:55
Hombre la asignatura
00:18:57
Asignatura disfraz de Halloween
00:18:59
Asignatura de gritos
00:19:01
Claro
00:19:02
Bueno pues
00:19:04
Así que cuidadín
00:19:09
Que el cuchillo lo maneja y que da gusto
00:19:31
¿Cómo?
00:19:33
Eso es de Scream
00:19:35
Venga, pues entonces, dime
00:19:36
Claro que sí
00:19:46
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 10
- Fecha:
- 3 de noviembre de 2024 - 19:47
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 19′ 51″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 78.57 MBytes