Saltar navegación

20241031 ProgrEstruct-Arrays-ejercicios_7 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 3 de noviembre de 2024 por Raquel G.

10 visualizaciones

Descargar la transcripción

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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid