20251117 EjerArrays_5_incluyeFOREACH - 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:
Pues venga, 14.
00:00:00
Aquí ya tengo la primera parte.
00:00:01
A ver, lo he hecho para que en lugar de 10
00:00:04
sea una cantidad de tamaño genérica.
00:00:06
Para que no sea exactamente 10,
00:00:09
pero da igual, no cambia nada.
00:00:11
Pide al usuario tamaño del array
00:00:12
con el que va a trabajar.
00:00:14
N, que se mete aquí.
00:00:16
Y lo que hago es reservar un array
00:00:18
con una posición más.
00:00:22
Porque lo que va a hacer el programa
00:00:24
es insertar uno nuevo.
00:00:25
Entonces, al insertar uno nuevo
00:00:27
y desplazar los otros necesita un espacio más
00:00:29
por eso he reservado
00:00:31
un espacio más
00:00:33
que los números que realmente va a meter el usuario
00:00:35
al principio
00:00:37
vale, pues primero rellenamos las
00:00:38
n primeras posiciones
00:00:41
con números aleatorios
00:00:43
para no andar con teclado
00:00:45
aquí simplemente
00:00:46
estoy mostrando el array para ver
00:00:49
lo que ha
00:00:51
lo que ha generado, mostramos el array
00:00:52
y ahora ya
00:00:55
Posición en la que quieres insertar
00:00:57
Y nuevo número a insertar
00:00:59
Vale, a partir de aquí es donde ya empieza
00:01:01
El problema
00:01:03
¿Vale?
00:01:04
Entonces, esto de nuevo
00:01:07
Pues esto de nuevo
00:01:09
Lo podemos plantear
00:01:24
A ver
00:01:29
Vale, pues yo tengo aquí
00:01:30
Mi
00:01:43
Perdido la práctica con esto
00:01:44
Rápida que era el año pasado
00:01:49
Vale
00:01:52
Vale, tenemos nuestro array
00:01:53
De n posiciones
00:01:56
Y esta última
00:01:57
Vale, esta última de aquí
00:01:59
Es una adicional
00:02:02
Porque como todos se van a mover
00:02:05
Hacia, vale
00:02:06
Aquí tengo mi array
00:02:08
Vale, entonces luego me dicen
00:02:10
Posición en la que vas a
00:02:12
A meter el dato
00:02:14
Pues por ejemplo aquí
00:02:17
Ahí voy a meter el dato
00:02:18
Vale, el nuevo dato que me den
00:02:20
El 3, el 4, el numerito que sea
00:02:22
Lo voy a insertar ahí
00:02:24
Bueno, pues entonces, ¿cuál es mi problema?
00:02:25
La asignación de este nuevo número
00:02:28
A esta posición, está clara
00:02:30
A la posición en la que me han dado
00:02:32
Llamémosla pos
00:02:34
O llamémosla como sea
00:02:36
A la posición en la que me han dado
00:02:37
Esta pos
00:02:40
Pues nada, yo le asigno el 3
00:02:41
Pero claro, antes tengo que haberme preocupado
00:02:44
De mover estos
00:02:46
todos una posición hacia arriba
00:02:48
tengo que haber preocupado de esto
00:02:51
entonces una vez que los he movido todos
00:02:53
una posición hacia arriba, ya puedo asignar
00:02:55
a la posición pos
00:02:57
ya podré asignar
00:02:59
a esta posición ya podré asignar este numerito
00:03:01
entonces
00:03:03
¿cómo los voy moviendo hacia arriba?
00:03:05
no puedo hacer directamente
00:03:07
a la posición i más 1
00:03:08
asígnale i, y así todo el rato
00:03:11
porque entonces borramos
00:03:13
la i más 1 y cuando haya que copiar
00:03:15
Esta en esta ya la hemos perdido
00:03:17
Entonces tenemos que ir de arriba hacia abajo
00:03:18
Que es
00:03:21
Oye, a esta posición
00:03:22
Copia lo que hay aquí
00:03:24
Ala, muy bien
00:03:26
Este ya se ha movido aquí
00:03:28
Aquí queda el que estaba
00:03:30
Pero ahora ya a esta posición
00:03:32
Copia el que hay aquí
00:03:34
Se queda este duplicado, muy bien
00:03:36
Y ahora, a esta posición
00:03:38
Copia el que hay aquí
00:03:40
Se queda este duplicado, así hasta que lleguemos
00:03:41
A esta posición, copia el que hay aquí
00:03:44
se queda este duplicado, cuando ya hemos terminado
00:03:46
asignamos a esta posición el número
00:03:49
y se acabó
00:03:51
entonces tenemos que hacer un bucle
00:03:52
que va desde la última
00:03:54
hasta la que
00:03:57
tengo que insertar
00:03:59
y en cada una de ellas asigno
00:04:00
a esa posición su anterior
00:04:03
cuando ya he hecho eso
00:04:04
a esta de aquí que se me ha quedado duplicada
00:04:06
le copio el nuevo número y ya está
00:04:08
vale, pues entonces
00:04:11
esto, un for
00:04:15
mientras si
00:04:18
empezando en la última
00:04:22
vale, empezando en la última
00:04:24
mientras si sea
00:04:27
mayor o igual
00:04:28
que la posición en la que tengo que insertarlo
00:04:29
porque voy desde arriba
00:04:33
hacia abajo
00:04:35
y decrementando
00:04:35
y
00:04:37
n es
00:04:37
el tamaño
00:04:43
del array
00:04:46
los números que hay en el array
00:04:47
este es mi array
00:04:49
que tiene
00:04:50
n mayúscula números más 1
00:04:52
que he reservado yo aquí
00:04:55
entonces la posición n es esta
00:04:56
¿cómo se llama la raíz?
00:04:59
la raíz se llama números
00:05:04
y lo he declarado
00:05:05
de n más 1
00:05:08
posiciones
00:05:09
has puesto el tamaño
00:05:10
claro, para que no sea 10
00:05:12
que sea el tamaño que él me diga
00:05:14
entonces, él me va a decir
00:05:17
voy a meter 7 números
00:05:19
Pues yo lo declaro con una posición más extra
00:05:21
Una más extra
00:05:24
Vale, y ahora ya
00:05:25
Pues desde arriba hacia abajo
00:05:28
¿Qué voy a hacer? Pues en números
00:05:30
De i
00:05:31
Asignale
00:05:33
La que tiene antes
00:05:35
Asignale la que tiene antes
00:05:37
Y ya está, con este primer for
00:05:44
Con este primer for de aquí
00:05:48
A ver si esto se abre
00:05:51
vale, pues que estamos haciendo aquí
00:05:53
tenemos
00:06:01
este es el array
00:06:07
que yo le he reservado
00:06:10
n más una posiciones
00:06:12
vale, le he reservado
00:06:14
n más una
00:06:16
para que tenga aquí una extra
00:06:18
ya que tiene que hacer el desplazamiento
00:06:22
y esta es la posición 0
00:06:24
la 1, la 2, la 3
00:06:27
así hasta la posición
00:06:28
n
00:06:30
vale
00:06:31
hasta la posición n, perdón, no, esta no es
00:06:33
la posición n
00:06:36
que es esta, ¿vale?
00:06:40
es decir, tiene n más una posiciones
00:06:45
desde la 0 hasta la n
00:06:47
están rellenas estas de aquí
00:06:49
estas son las que están rellenas
00:06:51
esta no la hemos rellenado porque está
00:06:52
extra reservada
00:06:55
simplemente para que se muevan a la derecha
00:06:56
tantos como sean
00:06:59
necesarios hasta dejar uno
00:07:01
bueno, pues entonces imaginamos que queremos meter en esta
00:07:03
posición de aquí
00:07:05
esa es la posición que me han dado
00:07:06
la posición que me han dado es igual a 3
00:07:08
y quiero meter el número que sea
00:07:11
me da lo mismo, el nuevo número que he leído yo por ahí
00:07:13
este nuevo número
00:07:15
vale, pues entonces, ¿qué es lo que estoy haciendo
00:07:16
con este bucle?
00:07:19
pues partiendo desde n
00:07:20
hasta
00:07:22
posición
00:07:24
desde n hasta posición
00:07:25
a esta posición
00:07:28
le asigno el numerito que hay aquí
00:07:30
por ejemplo, si esto tiene 1, 3
00:07:33
5, 4, 0
00:07:34
1, 7 y aquí este
00:07:37
estaría indefinido, pues a esta
00:07:39
posición le asigno lo que hay aquí
00:07:41
a la posición i le asigno
00:07:42
la i-1, el 7 se queda duplicado, muy bien
00:07:45
el 7 ya ha avanzado
00:07:47
ahora, mi bucle
00:07:48
avanza hacia abajo, ahora estoy aquí
00:07:51
a esta quien le asigno lo que tiene la anterior
00:07:52
luego el 7 se ve pisado por el 1
00:07:55
el 1 se ha quedado duplicado
00:07:57
muy bien, ahora sigo bajando
00:07:59
al 1 que le asigno lo que tiene mi anterior
00:08:01
la 0, el 1 desaparece
00:08:03
y se convierte en el 0
00:08:05
no hay problema, el 1 es que ya había viajado
00:08:06
hacia allí, ahora en esta
00:08:08
¿qué tengo que hacer en esta? pues en esta
00:08:10
le asigno lo que hay en la anterior, que es el 4
00:08:12
el 0 desaparece y se me queda en 4
00:08:15
entonces todos
00:08:17
se van moviendo hacia allá, a cada uno le asigno
00:08:18
la anterior, a este
00:08:20
le asigno su anterior, a este su anterior
00:08:22
cada vez que hago una asignación
00:08:24
piso el que había, pero no hay problema porque lo pise
00:08:26
porque ya previamente lo había llevado arriba
00:08:29
ya previamente lo había llevado aquí
00:08:31
entonces cuando ya he terminado este bucle
00:08:32
todos se han ido hacia allá
00:08:34
al 4 le asigno el anterior
00:08:36
3 y ya ha terminado
00:08:39
entonces
00:08:41
ahora ya en la posición
00:08:42
en la que hay que insertar, este ya se ha quedado
00:08:44
duplicado porque todos han pasado hacia arriba
00:08:47
se ha quedado duplicado, pues a este ya me falta
00:08:49
asignar a esa posición el nuevo
00:08:51
y ya está
00:08:53
entonces el copiar
00:08:54
en cada uno su anterior
00:08:57
lo estoy haciendo de izquierda a derecha
00:08:58
porque si lo hiciera
00:09:01
de derecha a izquierda, estaría borrando
00:09:03
todos los números
00:09:05
si estos fueran mis números, por ejemplo
00:09:05
vale, si yo primero voy a copiar
00:09:16
este
00:09:22
aquí, vale, pues entonces
00:09:23
el 4 se asigna aquí
00:09:26
muy bien, el 4 ya lo he movido
00:09:27
pero es que ahora, aquí tendría que copiar
00:09:29
el que había antes, lo acabo de perder
00:09:31
lo acabo de perder, no puedo mover aquí
00:09:33
el 5 que había antes, porque lo acabo de perder
00:09:36
entonces no puedo hacer las copias
00:09:38
de izquierda a derecha, sino al revés
00:09:39
sale abajo arriba
00:09:42
sino así, vale, voy sacando
00:09:44
este lo copio aquí
00:09:46
se queda duplicado, no hay problema
00:09:47
ahora, este 9 lo llevo aquí
00:09:50
muy bien, se quedan
00:09:51
los dos 9, ahora este se lo he pisado
00:09:54
por el 7, vale
00:09:56
hasta que ya se me quedan duplicados
00:09:58
estos dos, pero es que este es el que ya
00:10:00
se pisa con el nuevo
00:10:02
vale
00:10:03
Bueno, a ver si
00:10:14
Si cambias los índices
00:10:20
Y pones el I más 1 aquí
00:10:23
Pero vamos, que siempre tienes que copiar
00:10:25
Que ir llevándote
00:10:28
En este sentido
00:10:30
Porque si no, si tú lo haces
00:10:31
En el otro sentido
00:10:34
Pisas el siguiente a copiar
00:10:35
Y no puedes pisar el siguiente
00:10:38
A copiar, porque lo has perdido
00:10:40
Claro, lo puse en general
00:10:41
para que no tuviera que ser 10
00:10:49
estrictamente
00:10:51
Es que es un plan complicado
00:10:53
A ver, primero voy a terminar
00:11:05
Lo que todavía me falta, asignar
00:11:18
A la posición nueva
00:11:19
A números de pos
00:11:21
Me falta asignarle la nueva
00:11:23
Nuevo num
00:11:26
Vale, me falta asignarle la nueva
00:11:27
Entonces, con esto
00:11:29
A la n
00:11:30
le asigno lo anterior y así hasta que
00:11:34
llegue a la posición
00:11:36
¿vale? entonces aquí
00:11:36
mayor que pos
00:11:41
creo que sería mayor
00:11:42
estrictamente ¿no? porque
00:11:46
a que duplico es pos
00:11:48
sería ¿verdad?
00:11:49
sea mayor
00:11:52
vamos a probar así con este
00:11:53
con el límite como lo tenía antes
00:11:57
porque si es un error lo cambiamos y ya está
00:11:59
vale entonces esta sería la idea
00:12:01
ahora vamos a probarlo a ver si en algún
00:12:04
momento del límite hemos copiado
00:12:06
una de más, tenemos que parar antes
00:12:08
ya veremos, pero bueno
00:12:10
voy a mostrar el array
00:12:11
voy a mostrar el array antes y después
00:12:13
a ver si se ha insertado
00:12:18
vale, pues venga
00:12:21
ejecutamos
00:12:24
venga, 10 posiciones
00:12:25
el array
00:12:30
que me ha generado es este
00:12:32
de 10 posiciones, aunque tiene una más
00:12:34
libre, que no he mostrado ahí
00:12:36
ahí no la he mostrado, porque el for
00:12:38
de arriba que muestra
00:12:40
Este primer for que he usado para mostrar
00:12:41
Muestra las n primeras
00:12:44
O sea, la siguiente que he generado
00:12:46
Como está todavía sin rellenar, ni la muestro
00:12:48
Tendría un 0 porque se lo ha dado por defecto
00:12:50
Vale
00:12:52
¿Dónde estamos?
00:12:54
Aquí
00:12:56
Ahora, introduzca posición insertar
00:12:57
Venga, vamos a insertar en la 2
00:12:59
¿Qué nuevo número quiere insertar?
00:13:01
El 11
00:13:05
Que no está
00:13:07
Vale
00:13:07
el array es 23, 17
00:13:08
y efectivamente en la
00:13:12
posición 2, 0, 1, 2
00:13:13
en la 2
00:13:16
ha insertado
00:13:17
el 11, 9, 22, 18
00:13:19
y los dos las ha desplazado
00:13:21
pero me falta uno por mostrar
00:13:23
pero eso es un error
00:13:25
de que cuando
00:13:26
he mostrado el último array
00:13:29
el último array
00:13:31
me interesan las n más 1 posiciones
00:13:33
No, tiene N más una
00:13:34
Le he rellenado una más
00:13:39
Porque como se desplazan todas
00:13:40
Necesito un hueco más
00:13:42
Estos son los números que él ha metido
00:13:43
Un 3, ¿dónde?
00:13:47
Estos son los que el usuario va a meter
00:13:55
Pero yo reservo una más
00:13:57
Porque como los voy a desplazar una
00:13:59
¿Vale?
00:14:01
Entonces vamos
00:14:02
No sé qué he hecho
00:14:03
Vale, pues por ejemplo
00:14:04
8 posiciones
00:14:05
Vamos a insertar el 99
00:14:07
Uy, no, no, esto no
00:14:10
La posición 99 no está
00:14:12
Así que esto fallaría
00:14:14
Lo paro directamente
00:14:16
Vale
00:14:17
Me he equivocado
00:14:18
8, posición, en la posición 3
00:14:20
¿Qué vamos a insertar?
00:14:24
El 99
00:14:25
Pues ahora ya sí
00:14:26
En la posición 3, que es donde estaba
00:14:28
El 24, 0, 1, 2 y 3
00:14:31
En la posición 3
00:14:33
Ha metido el 99, lo ha colado
00:14:34
Y el 24, 15, 1, 3, 8
00:14:37
Se han ido todos
00:14:39
Hacia allá
00:14:40
¿Vale?
00:14:41
¿N?
00:14:45
¿N es el tamaño de la array?
00:14:45
¿N es el tamaño de la array?
00:14:52
Que yo le pido al usuario
00:14:54
Entonces, él va a decir
00:14:55
Él va a meter 7 números
00:14:58
Por ejemplo, entonces yo reservo
00:14:59
Una posición más, porque sé que luego
00:15:01
Voy a insertar otro después
00:15:03
Entonces como voy a insertar otro y se van a tener que mover
00:15:05
¿Vale?
00:15:07
Vale
00:15:17
Vamos a aprovechar
00:15:17
Este código
00:15:20
¿Qué?
00:15:22
¿Vale?
00:15:31
Después de leer los datos, lo que es el programa en sí
00:15:32
El que hace la inserción
00:15:34
Es esto, esas líneas de ahí
00:15:36
¿Vale?
00:15:38
Esas líneas son las que lo mueven todo
00:15:40
Uno a la derecha
00:15:42
Y luego mete en el nuevo
00:15:44
¿Y está igualico?
00:15:46
¿Perdón?
00:16:10
¿Se podría poner ahí otra array?
00:16:11
¿Aquí? No hombre, aquí no puedes poner otra array
00:16:13
Porque en esta variable cae
00:16:15
Cada una de las posiciones de la array
00:16:16
A ver, si tuvieras una array de arrays
00:16:19
Sí, pero es otra cosa la que nos hemos metido
00:16:20
Es decir, esta variable
00:16:23
Se va cargando con lo que tiene
00:16:24
Cada... a ver
00:16:27
Es decir, sí
00:16:29
la primera diferencia es esa
00:16:31
pero claro, es importante porque luego tiene otra gorda
00:16:38
este bucle
00:16:40
si mi array es este
00:16:46
se ejecuta una vez por iteración
00:16:48
ahí no hay alternativa, ¿vale?
00:16:53
una vez por iteración
00:16:55
y ahora, declaro una variable n local
00:16:56
esta variable es local a este bucle
00:16:59
desaparece
00:17:02
cuando yo llego a este punto
00:17:03
la variable n ya ha desaparecido
00:17:04
la variable n solo tiene uso aquí dentro de este for
00:17:06
solo tiene uso ahí
00:17:09
cuando yo he salido del for ya ha desaparecido esa variable
00:17:10
y ahora esta variable que le va pasando
00:17:13
pues imaginaos
00:17:15
que ahora tengo yo que sé esto
00:17:17
pues en la primera vuelta en la variable n
00:17:18
cae el 3
00:17:21
y ya está y en esa vuelta yo hago lo que sea
00:17:22
en este caso ha sido mostrar
00:17:25
en la siguiente vuelta del for
00:17:26
en la variable n ya desaparece el 3
00:17:29
y cae el 4
00:17:31
y ya hago lo que sea con el 4
00:17:32
en la siguiente vuelta de ese for
00:17:34
en la variable n
00:17:37
desaparece lo que hubiera y cae el 3
00:17:38
luego esta es una variable temporal
00:17:41
que va recogiendo en cada
00:17:43
vuelta o en cada iteración
00:17:45
todos y cada uno de los valores
00:17:47
para que yo haga con ellos
00:17:49
lo que quiero, entonces lo que yo voy a hacer
00:17:51
es consultar, sumar
00:17:53
pues me da igual trabajar con una copia
00:17:54
con el propio valor
00:17:56
pero ojo
00:17:57
cuidado porque si estamos rellenando
00:18:00
una array y yo por ahorrarme tiempo
00:18:04
digo, oye, voy a rellenarlo con un for it
00:18:06
porque como lo voy a recorrer entero
00:18:08
pues ahí ya he liado, por ejemplo
00:18:09
imaginaos que pretendemos rellenar este array
00:18:12
de nuevo con unos
00:18:14
por ejemplo
00:18:16
y yo digo, venga, voy a recorrerlo así
00:18:17
que es más cómodo
00:18:19
imaginaos que uno dice, oye
00:18:20
voy a rellenar
00:18:28
mi array con unos
00:18:30
pues de esta manera
00:18:33
porque es más cómodo de recorrer
00:18:35
que poner ahí el it, vale
00:18:36
pues que estamos haciendo aquí, pues una cagada
00:18:37
¿qué estaríamos haciendo aquí?
00:18:41
yo tengo mi array números
00:18:45
mi array números
00:18:47
con todas sus posiciones
00:18:48
y tengo mi variable n
00:18:51
que es una variable auxiliar
00:18:53
que está aquí para quedarse con una copia
00:18:54
de cada cosa que yo vaya pasando
00:18:58
entonces ¿qué es lo que hacemos en la primera iteración?
00:19:00
mi variable
00:19:03
imaginaos que el array originalmente
00:19:03
tiene lo que tuviera
00:19:05
esto, yo que sé
00:19:06
primera vuelta del for
00:19:08
lo primero que hace el for each
00:19:11
a mi variable n
00:19:13
le copia el 3
00:19:15
eso es lo primero que hace
00:19:17
y ahora ya que hago yo
00:19:20
asigna n igual a 1
00:19:22
vale muy bien n igual a 1
00:19:23
y ahí se queda el 1, el 1 no está aquí
00:19:25
no he usado el 1 para rellenar el array
00:19:27
no, el 1 se ha quedado
00:19:30
en la variable n que es la copia
00:19:32
se ha quedado aquí el 1
00:19:34
con lo cual no estoy rellenando el array haciendo esto
00:19:35
estoy dando valores a la copia
00:19:38
solamente
00:19:40
cuando la iteración vuelve otra vez
00:19:40
ahora es el 7
00:19:43
el que se copia en la variable
00:19:45
esta temporal, se copia el 7
00:19:47
y ahora yo le vuelvo a dar un 1
00:19:49
vale, le vuelvo a dar un 1
00:19:51
es decir, estoy dando unos todo el rato
00:19:52
a esta variable copia
00:19:55
el array
00:19:56
no se está rellenando de unos
00:19:59
no se está rellenando de unos
00:20:01
luego, este bucle for
00:20:02
con esta sintaxis
00:20:05
este for each, tiene sentido
00:20:07
cuando yo lo único que quiero hacer es
00:20:08
operar con estos números
00:20:10
pero sin cambiarles el valor
00:20:12
para hacer cosas, porque me da igual operar con ellos
00:20:14
que con la copia, ¿vale?
00:20:16
porque con esta sintaxis
00:20:18
es con la copia
00:20:20
con la que opero, pero me da igual
00:20:22
operar con una copia que con el valor original
00:20:24
si voy a operar para obtener
00:20:26
resultados, pero si lo que quiero
00:20:28
es modificar lo que hay aquí, modificarlo
00:20:30
no puedo hacerlo con esto
00:20:33
porque estaré modificando esta
00:20:35
si quiero modificar
00:20:36
para la posición 3 darle
00:20:38
un valor a la posición 4 darle otro si quiero modificar esto y así que tengo
00:20:40
que ir con el for normal que a través del y me lleva ya al valor
00:20:45
vale pues venga vamos a pararlo aquí
00:20:51
- 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:
- 1
- Fecha:
- 17 de noviembre de 2025 - 18:32
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 20′ 59″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 433.79 MBytes