Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 21-11-23 - 1 - 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:
Venga, pues vamos a continuar, vale un poquito, solo un poco.
00:00:00
Bueno, pues ahora, vale, entiendo que ahora llegados ya a este punto,
00:00:09
todos tenemos claro y vemos en nuestra cabeza que los Arrays son unas estructuras de datos maravillosas,
00:00:19
cuando yo necesito recoger como datos de mi aplicación un montón de valores del mismo tipo,
00:00:27
¿verdad?, son unas estructuras de datos maravillosas para eso,
00:00:33
que en mi aplicación yo tengo que trabajar con mesas del aula,
00:00:37
son muchas mesas, a lo mejor cada mesa se identifica con una variable de tipo string,
00:00:43
mesa 1, mesa 2, mesa 3, bueno como tengo que trabajar con muchas mesas,
00:00:50
mesa 1, mesa 2, mesa 3, en lugar de 14 variables string independientes,
00:00:57
pues puedo declarar un Array de variables string,
00:01:06
¿verdad?, un Array de 14 posiciones de tipo string y en cada posición de esa Array va una mesa,
00:01:09
esta, esta, esta, esta, ¿vale?, esa es la idea de los Arrays,
00:01:18
que son variables estructuras de datos estupendas cuando mi aplicación tiene que trabajar
00:01:22
con un montón de datos del mismo tipo, no los declaro por separado,
00:01:26
porque entonces luego recorrer todos esos sería imanejable,
00:01:31
sino que los declaro todos juntos en un Array, ¿vale?,
00:01:36
bueno pues el Array, los Arrays tal y como los habéis visto hasta ahora,
00:01:39
y luego todos sus matices de una vez que tengo mi variable Array declarada e inicializada
00:01:43
y su espacio creado, pues como puedo recorrerla de forma sencilla con un Array
00:01:49
para acceder a sus posiciones, todo eso es lo que asumimos que está claro, ¿no?,
00:01:54
vale, bueno pues los Arrays entonces me son muy fáciles para simular situaciones reales,
00:01:59
que es de lo que se trata la programación,
00:02:07
la programación tiene que resolver problemas de la realidad,
00:02:09
nosotros hacemos aplicaciones para resolver problemas relacionados con
00:02:13
gestionar mis clientes y mis facturas, gestionar los alumnos y las matrículas del instituto,
00:02:18
para eso hacemos las aplicaciones y los programas, para gestionar problemas reales,
00:02:23
cosas que están en la realidad, que existen, para eso los hacemos,
00:02:28
por eso el ejemplo que yo he puesto antes,
00:02:33
y yo tengo que gestionar las mesas del aula, para tomar decisiones sobre ella,
00:02:35
para lo que sea, pues como son muchas, un Array de un montón de objetos mesa
00:02:41
o de strings y cada vez una string, vale,
00:02:46
bueno pues ahora imaginémonos otra situación real,
00:02:49
otra situación real, que es esta la que digo,
00:02:52
vale, mi aplicación tiene que gestionar a lo mejor las mesas de este aula,
00:02:54
una variable para cada mesa, vale,
00:03:00
cada mesa es una variable, tiene que ser una variable,
00:03:03
vale, bueno pues hemos dicho, como son muchas, un Array,
00:03:06
son muchas, ¿no?, pues un Array, estupendo,
00:03:09
bueno, pero el siguiente salto que podríamos dar es,
00:03:12
vale, pero a ver, mi aplicación también va a necesitar como información
00:03:15
la posición de la mesa, es decir, la fila y la columna,
00:03:20
vale, no solo el color, sino la fila y la columna,
00:03:24
bueno, pues yo tengo que modelar, ¿cómo modelo eso?,
00:03:29
pues bueno, tengo que pensar como diseño una aplicación que me modele
00:03:32
esa situación, que me permita trabajar con la información de la posición
00:03:36
de forma sencilla, lo que es una situación que se me plantea, ¿no?,
00:03:41
que yo tengo que trabajar con mesas del aula,
00:03:45
cada mesa va a ir a una variable y además se me plantea
00:03:48
que la posición de la mesa, la fila y la columna es interesante,
00:03:52
la posición del plano, entonces ahí se me puede ocurrir
00:03:58
usar entonces para guardar cada variable mesa,
00:04:02
en lugar de un Array y ponerlas todas en fila,
00:04:06
vale, o sea, imaginad que la información de la mesa
00:04:09
la guardamos en una variable string,
00:04:12
entonces según eso, todas mis mesas las podría yo guardar aquí, ¿verdad?,
00:04:15
mesas igual a new string 14,
00:04:21
vale, entonces mesa 0 es esa mesa de ahí,
00:04:29
mesa 1 es esa, mesa 2 es esta, mesa 3 es esta,
00:04:33
mesa 4 es esa, mesa 5 es esa, hasta ahí está claro, ¿no?,
00:04:36
y luego mesa 0 es un string, pues la información que yo quiera
00:04:40
de la mesa en ese string, su color, lo que yo quiero,
00:04:44
mesa 0, mesa 1, mesa 2, mesa 3, mesa 4, mesa 5,
00:04:46
vale, pues puedo plantearme trabajar con mis variables mesa,
00:04:49
que cada una es un string, en esta estructura de datos,
00:04:54
un Array, mesa 0, 1, 2, 3, 4, vale,
00:04:57
pero ahora resulta que la información, lo que he dicho antes,
00:05:00
que la información de la posición, la fila y la columna me interesa,
00:05:03
entonces si la información de la posición me interesa,
00:05:07
¿cómo mezclo yo eso con esto?, pues se me hace un poco complicado,
00:05:11
bueno, pues en cada mesa, que es un string mesa 0,
00:05:15
por ejemplo, que además de la información de la mesa en ese string,
00:05:18
recorra la posición, recoja la posición,
00:05:21
mesa 0 color tal, fila 1, fila 2, fila 1, columna 2,
00:05:24
bueno, se me pueden ocurrir cosas para que además,
00:05:28
en esta estructura de datos, en este Array,
00:05:32
esté recogida la información de la posición,
00:05:34
en realidad, lo único que se me podría ocurrir es esto,
00:05:36
que es bueno, pues cada mesa, mesa 0,
00:05:39
además de tener la información de la mesa que yo quiero,
00:05:43
imaginemos que es el color, pues que tenga también la fila y la columna,
00:05:46
bueno, pero eso es luego más difícil de trabajar con ello,
00:05:51
más difícil, tengo que sacar yo luego del string esto de aquí,
00:05:59
vale, entonces, ¿qué cosas se nos pueden seguir ocurriendo?,
00:06:02
ala, pues resulta que los Arrays que hemos visto,
00:06:09
igual que existen Arrays que son de una única dimensión,
00:06:16
es decir, que son sólo una lista de cosas,
00:06:21
de 10, de 20, de 5.000,
00:06:26
pues también existen Arrays que tienen dos dimensiones,
00:06:29
este tiene sólo una dimensión,
00:06:33
pero también podemos, ahora veremos cómo,
00:06:36
declarar estructuras de datos que no sean solamente filas,
00:06:39
sino que sean matrices,
00:06:43
es decir, esta estructura de datos también se puede declarar,
00:06:48
no sólo esta, la fila de cosas,
00:06:52
que es el Array unidimensional, el único que conocemos,
00:06:54
no sólo esta, sino que esto también se puede declarar,
00:06:57
también, y aquí iría una variable,
00:07:01
igual que aquí va una variable, y aquí va otra,
00:07:03
y aquí va otra, y aquí va otra, y así todas,
00:07:05
pues aquí iría una, y aquí otra, y aquí otra,
00:07:07
y aquí otra, y aquí otra, y aquí una,
00:07:09
y aquí otra, y aquí otra,
00:07:11
vale, entonces, también podemos declarar estructuras de datos
00:07:13
que no sean exclusivamente una fila,
00:07:16
sino que sean esto, una matriz, un casillero,
00:07:19
como lo queráis llamar,
00:07:23
¿cuál es la ventaja de declarar esto?,
00:07:26
pues que aquí cada dato,
00:07:30
cada dato además tiene una posición asociada en el plano,
00:07:32
aquí cada dato solamente tiene asociada
00:07:36
una posición dentro de una única fila,
00:07:39
dentro de una única fila,
00:07:41
pero aquí cada elemento tiene asociada dos valores,
00:07:43
la fila en la que está y la columna en la que está,
00:07:47
entonces, esas variables yo las puedo distribuir en un plano,
00:07:51
es decir, esta está en la fila cero, columna cero,
00:07:54
esta está en la fila cero, columna uno,
00:07:57
esta está en la fila cero, columna dos,
00:08:00
entonces distribuyo mis datos,
00:08:02
distribuyo mis variables,
00:08:04
a lo largo de filas y columnas,
00:08:06
y eso me da una información añadida,
00:08:10
esto representa la realidad de las mesas de un aula,
00:08:14
la representa muchísimo mejor que esto,
00:08:20
porque las mesas de un aula no están en fila,
00:08:24
las mesas de un aula están en un plano,
00:08:26
es decir, tienen una posición dada por dos dimensiones,
00:08:28
están en un plano,
00:08:31
entonces esto representa mucho mejor esa realidad que esto,
00:08:33
entonces, si yo quiero trabajar con objetos,
00:08:38
con cosas que estén distribuidas en planos,
00:08:42
en los cuales puedo decir fila, columna,
00:08:46
o coordenada X, coordenada Y,
00:08:49
como os guste entenderlo,
00:08:51
entonces, esta estructura de datos
00:08:53
va a ser mucho más realista,
00:08:56
se va a aproximar más que esta,
00:08:58
y me va a facilitar extraer información,
00:09:00
por ejemplo, pues la mesa en la que está sentado él,
00:09:03
esa mesa cuál es, la de fila cero, columna uno,
00:09:07
pues esa mesa es directamente esta,
00:09:10
sin embargo, si yo las tengo todas,
00:09:12
las he serializado y las he puesto todas así,
00:09:14
pues es mucho más complicado,
00:09:17
porque aquí iría,
00:09:19
aquí tiene que ir la de fila cero, columna cero,
00:09:20
aquí la de fila cero, columna uno,
00:09:22
aquí la de fila cero, columna dos,
00:09:24
aquí ya la de fila uno, columna cero,
00:09:26
o sea, aquí es muy complicado
00:09:28
ahora ya distinguir cuál es la de cada uno,
00:09:30
porque están todas serializadas ahí en filita,
00:09:32
aquí ya están directamente puestas en su posición real,
00:09:35
ya están directamente puestas en su posición real,
00:09:38
entonces, esto,
00:09:41
el extenderlos a raíz de una dimensión a dos dimensiones,
00:09:43
como ahora veremos,
00:09:46
¿para qué sirve?
00:09:47
pues sirve simplemente para reproducir
00:09:49
una situación real,
00:09:52
reproducirla,
00:09:54
y así que me sea mucho más manejable,
00:09:55
entendible y luego programable esto,
00:09:58
¿vale?
00:10:00
ha sido para eso,
00:10:01
nada más,
00:10:02
uno usa raíz bidimensionales
00:10:04
cuando le facilite la tarea,
00:10:06
porque la realidad que está modelando
00:10:08
es algo que está en un plano,
00:10:10
si es algo que está en un plano,
00:10:12
pues ya está,
00:10:13
si no, no usas raíz bidimensionales,
00:10:14
en los programas hasta ahora,
00:10:16
programa que lee números hasta no sé qué,
00:10:18
pues esos números que estén todos en filita,
00:10:20
para qué quiero yo que estén en dos dimensiones,
00:10:22
¿no? ¿qué más me da?
00:10:24
si la posición de los números en un plano
00:10:25
no pinta nada,
00:10:27
me están dando números uno tras otro,
00:10:28
pues números uno tras otro,
00:10:29
ya está,
00:10:30
pero cuando estoy modelando realidades
00:10:31
en los cuales cada elemento
00:10:33
sí está ubicado en una posición de un plano,
00:10:35
cuando estoy modelando tipo realidades,
00:10:37
pues esto viene fenomenal,
00:10:39
¿vale?
00:10:41
entonces uno elige la estructura de datos
00:10:42
en función de esos datos
00:10:45
qué significado tienen,
00:10:47
qué significado real tienen,
00:10:49
porque hay estructuras de datos
00:10:51
que se adaptan mejor
00:10:53
a unos significados reales que a otros,
00:10:54
y de elegir bien una estructura de datos
00:10:56
depende que esa aplicación
00:10:59
luego es una aplicación buena,
00:11:01
eficiente y con sentido,
00:11:03
¿vale?
00:11:05
bueno, esta sería la motivación
00:11:06
de por qué complicar los arrays
00:11:08
de una dimensión
00:11:11
que ya vemos cómo funcionan,
00:11:12
que son facilísimos de trabajar con ellos, etc.
00:11:13
¿por qué complicarlos?
00:11:15
dándoles otra dimensión más,
00:11:17
¿por qué complicarlos?
00:11:18
pues la razón de por qué los complicamos
00:11:19
es porque al hacerlos bidimensionales
00:11:22
representan algo muy real,
00:11:25
que es que las cosas están situadas en planos,
00:11:27
¿vale?
00:11:30
si uno hace un programa de ajedrez
00:11:31
de tres en raya,
00:11:32
pues cada posición en realidad
00:11:33
está en un plano,
00:11:35
pues hombre,
00:11:36
va a quedar mucho mejor modelado
00:11:37
un tablero de ajedrez
00:11:38
con esto,
00:11:40
que con esto,
00:11:41
va a quedar mucho mejor modelado,
00:11:42
va a quedar un tablero de ajedrez
00:11:43
así que con esto,
00:11:44
¿vale?
00:11:46
bueno,
00:11:47
pues esta sería la razón
00:11:48
de por qué nos complicamos,
00:11:49
por qué le metemos otra dimensión,
00:11:50
ahora ya vamos a ver
00:11:52
cómo se declaran
00:11:53
y cómo se utilizan
00:11:55
los arrays de dos dimensiones.
00:11:56
Vale,
00:12:13
pues a ver,
00:12:14
bueno,
00:12:15
para no arrastrar el string
00:12:16
que es muy largo,
00:12:17
vamos a hacerlo con numeritos,
00:12:18
con int,
00:12:19
que es el más cordito de cualquiera,
00:12:20
bueno,
00:12:21
resulta que queremos guardar
00:12:22
un montón de números,
00:12:23
un montón de números,
00:12:25
vale,
00:12:26
pero no los vamos a guardar
00:12:27
todos en una fila,
00:12:28
no los vamos a guardar
00:12:29
todos en una fila,
00:12:30
los vamos a guardar
00:12:31
en una matriz,
00:12:32
una matriz,
00:12:34
en un casillero,
00:12:35
como lo queréis llamar,
00:12:36
en términos matemáticos
00:12:37
una matriz,
00:12:38
¿no?
00:12:39
vale,
00:12:40
bueno,
00:12:41
pues entonces,
00:12:42
¿cómo se define una matriz?
00:12:43
El tipo de dato
00:12:45
es impepinable,
00:12:47
qué datos va a contener
00:12:48
cada elemento entero,
00:12:49
y ahora,
00:12:50
como tiene filas y columnas,
00:12:51
en lugar de solo
00:12:53
uno de esos corchetes,
00:12:55
ponemos dos,
00:12:56
ya está,
00:12:58
ponemos dos,
00:12:59
eso significa
00:13:00
que la estructura de datos
00:13:01
que hemos declarado ahora
00:13:02
la puedo yo ya visualizar
00:13:04
en mi cabeza,
00:13:05
la puedo visualizar
00:13:07
en mi cabeza,
00:13:08
no como una única fila,
00:13:09
sino como esto,
00:13:11
así la tengo que visualizar
00:13:13
en mi cabeza,
00:13:15
desde el momento
00:13:16
en que decimos
00:13:17
que tiene dos dimensiones,
00:13:18
la visualizamos así,
00:13:19
obviamente luego esto,
00:13:21
la matriz virtual
00:13:22
lo mapea en la RAM,
00:13:23
no en una matriz,
00:13:24
porque la RAM
00:13:25
son una secuencia de posiciones,
00:13:26
pero eso nos da igual,
00:13:27
lo que importa
00:13:28
es cómo lo visualizamos
00:13:29
en nuestra cabeza,
00:13:30
pues cuando declaramos
00:13:31
una array así,
00:13:32
con dos dimensiones,
00:13:33
dos corchetes,
00:13:34
automáticamente
00:13:35
en la cabeza
00:13:36
ya tenemos que visualizar
00:13:37
que la estructura
00:13:38
de datos que tenemos
00:13:39
tiene esta forma,
00:13:40
es un casillero
00:13:42
con celdillas,
00:13:43
ya no es solo
00:13:44
una fila larga,
00:13:45
ya no es solo
00:13:46
una fila larga,
00:13:47
vale, repito,
00:13:48
si hemos optado
00:13:49
por esto,
00:13:50
es porque nos interesa,
00:13:51
no por las buenas,
00:13:54
porque para
00:13:55
una fila larga
00:13:56
es muy fácil de usar,
00:13:57
ya lo hemos visto
00:13:58
que un vector
00:13:59
es una cosa muy cómoda,
00:14:00
una array
00:14:01
muy estupenda,
00:14:02
vale,
00:14:03
entonces yo no elijo esto
00:14:04
porque me da la gana,
00:14:05
lo elijo
00:14:06
porque cuando estamos
00:14:07
declarando,
00:14:08
pues se presta precisamente
00:14:09
a ser reflejada
00:14:10
en un plano,
00:14:11
bueno,
00:14:12
pues con esto
00:14:13
ya visualizamos
00:14:14
que lo que,
00:14:15
la estructura
00:14:16
que estamos
00:14:17
declarando
00:14:18
es esta,
00:14:19
como cualquier variable
00:14:20
hay que darle un nombre,
00:14:21
eso sí,
00:14:22
vale,
00:14:23
como cualquier variable,
00:14:24
pues venga,
00:14:25
yo que sé,
00:14:26
vamos a poner
00:14:27
tablero,
00:14:28
ala,
00:14:29
el nombre que me dé la gana,
00:14:30
el nombre de la variable,
00:14:31
ya sabéis que elegimos
00:14:32
el nombre que queramos,
00:14:33
y esto es otra variable más,
00:14:34
lo que pasa es que este,
00:14:36
¿qué tipo de variable es?
00:14:38
es un tipo de variable
00:14:39
array de dos dimensiones,
00:14:40
igual que esta,
00:14:43
es un tipo de variable
00:14:45
igual array de una dimensión,
00:14:47
e igual que esta,
00:14:50
es un tipo de variable
00:14:51
igual a un entero,
00:14:52
bueno,
00:14:55
pues este es una variable
00:14:56
de tipo array de dos dimensiones,
00:14:57
o matriz,
00:14:58
o casillero,
00:15:00
como lo queráis llamar,
00:15:01
bueno,
00:15:03
pues exactamente igual
00:15:04
que en el caso
00:15:05
de los arrays de una dimensión,
00:15:06
con esta declaración sin más,
00:15:08
yo todavía
00:15:10
el espacio en memoria
00:15:11
no lo tengo,
00:15:12
lo que tenemos aquí
00:15:14
ya lo sabemos,
00:15:15
porque ya es lo mismo
00:15:17
que en el caso
00:15:18
de declarar un array,
00:15:19
cuando nosotros
00:15:20
declaramos un array,
00:15:21
ya insistimos en eso
00:15:23
ayer otra vez,
00:15:24
imaginamos que declaramos
00:15:26
un array,
00:15:27
y en el caso
00:15:29
de declarar un array
00:15:30
con esta declaración
00:15:32
tenemos una variable num,
00:15:34
y esta variable num
00:15:37
que se ha creado,
00:15:38
es una dirección
00:15:41
de memoria simplemente,
00:15:42
esta variable num
00:15:44
es una dirección de memoria,
00:15:45
que apunta a donde,
00:15:46
por ahora a nada,
00:15:48
por ahora a nada,
00:15:50
para que aparezca
00:15:51
realmente el array,
00:15:52
para que aparezca
00:15:54
físicamente en memoria
00:15:55
el array,
00:15:56
ya pueda yo acceder
00:15:57
a las posiciones,
00:15:58
a la cero,
00:15:59
a la uno,
00:16:00
a la dos,
00:16:01
teníamos que hacer esto,
00:16:02
¿verdad?,
00:16:03
inicializarlo,
00:16:04
con new
00:16:06
tipo de dato,
00:16:07
el que fuera
00:16:08
y las posiciones
00:16:09
que yo quiera,
00:16:10
hay que darle unas posiciones,
00:16:11
eso si que no lo podemos
00:16:12
eludir,
00:16:13
hay que darle unas,
00:16:14
vale,
00:16:15
una vez que ya
00:16:16
hacemos esto,
00:16:17
este espacio en memoria
00:16:18
se crea,
00:16:19
con las posiciones
00:16:20
que ya he puesto aquí,
00:16:21
de la cero
00:16:22
a la veintinueve
00:16:23
en este caso,
00:16:24
vale,
00:16:25
pues con el de dos dimensiones
00:16:26
pasa lo mismo,
00:16:27
con la declaración
00:16:28
que hemos hecho hasta ahora,
00:16:29
es declarar una variable
00:16:32
que se llama tablero,
00:16:33
que contiene
00:16:35
una dirección de memoria,
00:16:37
pero por ahora
00:16:39
de una zona
00:16:40
inusable,
00:16:41
que no me vale para nada,
00:16:42
por ahora una zona inusable,
00:16:43
igual que cuando
00:16:45
hacíamos esto,
00:16:46
cuando hacemos esto
00:16:48
tengo una dirección de memoria
00:16:49
de algo que no puedo utilizar,
00:16:50
claro,
00:16:52
pues nos falta efectivamente
00:16:53
inicializar
00:16:54
este array doble,
00:16:55
este array de dos dimensiones,
00:16:57
nos falta crear el espacio
00:16:58
para poder usarlo,
00:17:00
igual que en el array,
00:17:01
bueno,
00:17:04
pues lo creamos
00:17:05
exactamente igual
00:17:06
que creábamos el espacio
00:17:07
para un array,
00:17:08
con el operador new,
00:17:09
el tipo de dato,
00:17:11
y aquí,
00:17:14
como el espacio
00:17:15
que estamos creando
00:17:16
es un plano,
00:17:18
con filas y columnas
00:17:20
tenemos que decirle
00:17:21
cuantas filas
00:17:22
queremos que tenga
00:17:23
y cuantas columnas,
00:17:24
pues que quiero yo
00:17:26
de esto,
00:17:27
algo así en mi cabeza,
00:17:34
la idea que yo tengo
00:17:35
es algo así en mi cabeza,
00:17:36
esto es lo que yo necesito
00:17:37
para modelar la realidad
00:17:38
que estoy,
00:17:39
pues esto serían
00:17:40
cuatro filas
00:17:41
y tres columnas,
00:17:43
vale,
00:17:46
pues entonces pongo aquí
00:17:47
cuatro filas
00:17:49
y tres columnas,
00:17:52
vale,
00:17:55
entonces aquí
00:17:56
automáticamente
00:17:57
ya sí que ha aparecido
00:17:58
este espacio en memoria,
00:17:59
ahora ya sí,
00:18:00
y ya esta dirección tablero,
00:18:02
ya efectivamente
00:18:04
ahora ya sí,
00:18:05
se queda apuntando
00:18:06
a una estructura
00:18:07
de este tipo,
00:18:09
ahora ya sí,
00:18:10
ya este espacio existe
00:18:12
y ya lo puedo utilizar,
00:18:13
utilizar para qué,
00:18:15
para guardar números enteros,
00:18:16
que es para lo que
00:18:17
lo he declarado,
00:18:18
para guardar números enteros,
00:18:19
vale,
00:18:20
pues ahora ya puedo
00:18:21
meter números enteros aquí,
00:18:22
igual que antes
00:18:24
yo tenía una única fila,
00:18:25
pues ahora los puedo meter aquí,
00:18:27
vale,
00:18:30
pero claro,
00:18:31
la diferencia
00:18:32
y la única diferencia
00:18:33
que hay con los arrays
00:18:34
de una dimensión
00:18:35
es que ahora
00:18:36
para acceder a una posición
00:18:37
necesito una información
00:18:40
de uno,
00:18:41
la fila
00:18:42
y la columna,
00:18:43
en una array normal
00:18:44
para acceder a una posición
00:18:46
necesito solo una información,
00:18:47
que es la posición
00:18:50
en la fila,
00:18:51
si es la posición
00:18:52
cero de la fila,
00:18:53
si es la uno de la fila,
00:18:54
la dos de la fila
00:18:55
y ya está,
00:18:56
la única información
00:18:57
que necesito para acceder
00:18:58
a una posición,
00:18:59
la posición de la fila,
00:19:00
aquí necesito dos informaciones,
00:19:01
la fila donde está
00:19:03
el numerito
00:19:04
al que quiero acceder
00:19:05
y la columna
00:19:06
donde está el numerito
00:19:07
al que quiero acceder,
00:19:08
es la única diferencia,
00:19:09
la única,
00:19:10
vale,
00:19:11
por ejemplo,
00:19:12
si yo quisiera,
00:19:17
si yo quisiera
00:19:19
inicializar ahora
00:19:20
todas las posiciones
00:19:22
de este tablero
00:19:23
con cero,
00:19:24
vale,
00:19:27
a lo mejor esto podría ser,
00:19:28
esto podría simular
00:19:29
a lo mejor
00:19:30
un juego de,
00:19:31
un juego de un tablero
00:19:33
donde uno va poniendo fichas
00:19:35
y uno podría haber decidido,
00:19:36
vale,
00:19:38
cuando en una posición
00:19:39
haya un cero,
00:19:40
he puesto una ficha
00:19:41
y cuando en una posición
00:19:42
haya un uno,
00:19:43
he puesto la ficha uno,
00:19:45
por ejemplo,
00:19:46
vale,
00:19:47
es decir,
00:19:49
lo que quiero decir
00:19:50
es que seleccionar
00:19:51
esta estructura
00:19:52
es,
00:19:53
si tiene sentido,
00:19:54
porque lo que yo estoy modelando
00:19:55
le pega,
00:19:56
si no,
00:19:57
es mucho más complejidad
00:19:58
que una fila,
00:19:59
no voy a meter ahí
00:20:01
esa estructura
00:20:02
que es mucho más compleja
00:20:03
que una fila,
00:20:04
alegremente,
00:20:05
pero en ese ejemplo,
00:20:06
yo estoy simulando
00:20:07
un jueguito de un tablero,
00:20:08
vale,
00:20:09
pues,
00:20:10
el tablero
00:20:11
queda perfectamente
00:20:12
bien representado con esto,
00:20:13
ya yo tendría que decir,
00:20:15
vale,
00:20:16
en cada posición
00:20:17
que van,
00:20:18
bueno,
00:20:19
pues pueden ir dos fichas,
00:20:20
entonces,
00:20:21
bueno,
00:20:22
pues yo la simulo
00:20:23
con que una de las fichas
00:20:24
es el número cero
00:20:25
y otra es el número uno,
00:20:26
vale,
00:20:27
pues estupendo,
00:20:28
mi tablero que sea
00:20:29
de números enteros
00:20:30
y cada uno de ellos
00:20:31
tendrá un cero o un uno
00:20:32
en función de la ficha
00:20:33
que tenga,
00:20:34
por ejemplo,
00:20:35
y cada jugador
00:20:36
va poniendo
00:20:37
en cada posición
00:20:38
el cero,
00:20:39
el uno,
00:20:40
lo que sea,
00:20:41
entonces en un ejemplito
00:20:42
como ese,
00:20:43
usar esta estructura
00:20:44
viene muy bien,
00:20:45
porque tengo
00:20:46
perfectamente clavado
00:20:47
ahí ya el tablero,
00:20:48
pero como yo clave
00:20:49
en una fila,
00:20:50
lo tengo complicadísimo
00:20:51
para identificar,
00:20:52
para asociar luego
00:20:53
cada posición
00:20:54
a mi tablero físico real,
00:20:55
al que yo estoy viendo
00:20:56
con los ojos,
00:20:57
lo tengo muy complicado,
00:20:58
esta es esta,
00:20:59
esta es esta,
00:21:00
esta es esta,
00:21:01
esta es esta,
00:21:02
rollo,
00:21:03
pero si mi variable,
00:21:04
mi estructura de datos
00:21:05
es esta,
00:21:06
esto es que es directamente
00:21:07
ya el tablero real
00:21:08
que yo estoy viendo
00:21:09
con los ojos,
00:21:10
ya es directamente él,
00:21:11
lo reproduce mucho mejor,
00:21:12
mucho más fácil
00:21:13
el programa,
00:21:14
¿no?
00:21:15
que llevarme
00:21:16
el tablero real
00:21:18
el que veo con los ojos
00:21:19
a una fila
00:21:20
y serializarlo todo largo,
00:21:21
esto no le pega nada,
00:21:22
bueno,
00:21:23
vale,
00:21:24
pues entonces,
00:21:25
ahora,
00:21:26
en lo que estábamos,
00:21:27
ahora ya para acceder
00:21:28
a las posiciones,
00:21:29
que es de lo que se trata
00:21:30
de acceder a las posiciones,
00:21:31
necesito fila y columna,
00:21:32
¿vale?
00:21:33
igual que en los array,
00:21:34
las primeras empezaban
00:21:35
con la cero,
00:21:36
aquí también,
00:21:37
la cero,
00:21:38
la cero,
00:21:39
la cero,
00:21:40
la cero,
00:21:41
la cero,
00:21:42
la cero,
00:21:43
la cero,
00:21:44
la cero,
00:21:45
aquí también,
00:21:46
las filas empiezan,
00:21:47
cero,
00:21:48
uno,
00:21:49
dos,
00:21:50
en este caso,
00:21:51
y tres,
00:21:52
porque tengo cuatro filas,
00:21:53
y las columnas empiezan
00:21:54
en la cero,
00:21:55
uno y dos,
00:21:56
porque tengo tres,
00:21:57
cero,
00:21:58
uno y dos,
00:21:59
porque son tres en total,
00:22:00
cero,
00:22:01
uno,
00:22:02
dos y tres,
00:22:03
porque son cuatro filas en total,
00:22:04
¿vale?
00:22:05
filas y columna,
00:22:06
¿qué quiere inicializarlo
00:22:07
todo a cero?
00:22:08
por ejemplo,
00:22:09
hombre,
00:22:10
pues puede uno ir a lo bestia,
00:22:11
para acceder a la fila cero,
00:22:12
columna cero,
00:22:13
pues como podéis intuir,
00:22:14
tengo dos posiciones,
00:22:15
la primera a la fila,
00:22:16
y la segunda a la columna,
00:22:17
con esto estoy accediendo
00:22:18
a esta,
00:22:19
porque es fila cero,
00:22:20
columna cero,
00:22:21
¿vale?
00:22:22
con el array de una dimensión,
00:22:23
con poner esto era suficiente,
00:22:24
pero con el array de dos,
00:22:25
tengo que poner la fila,
00:22:26
y dentro de la fila
00:22:27
la columna,
00:22:28
¿vale?
00:22:29
pues esta variable,
00:22:30
ahora ya es una única variable
00:22:31
entera,
00:22:32
que es esta,
00:22:33
y con esa variable entera
00:22:34
hago lo que me dé la gana,
00:22:35
pues por ejemplo,
00:22:36
asignarle el cero,
00:22:37
¿vale?
00:22:38
así,
00:22:39
así,
00:22:40
así,
00:22:41
así,
00:22:42
así,
00:22:43
para asignarle cero,
00:22:44
¿vale?
00:22:45
¿que quiero asociar cero,
00:22:46
asignar cero a todos los demás?
00:22:47
pues tengo que escribir
00:22:48
doce asignaciones de estas,
00:22:49
¿no?
00:22:50
Cuatro por tres,
00:22:51
doce elementos tiene eso,
00:22:52
y así tendría que escribir
00:22:53
doce veces esto.
00:22:54
Tablero,
00:22:55
cero,
00:22:56
uno,
00:22:57
esta sería
00:22:58
la posición cero,
00:22:59
columna uno,
00:23:00
para hacer con ella
00:23:01
lo que yo quiera,
00:23:02
por ejemplo asignarle a un cero,
00:23:03
volvemos a escrever
00:23:04
el assemble,
00:23:05
miren aquí,
00:23:06
con esta variable,
00:23:07
tendría que escribir
00:23:08
la columna doce,
00:23:09
y lo que sería
00:23:10
la regulación al respecto.
00:23:11
Y así,
00:23:14
poner,
00:23:15
esta de aquí,
00:23:16
¿cuál sería?
00:23:17
Tablero,
00:23:18
dos,
00:23:19
uno.
00:23:20
O sea,
00:23:21
si quiero yo
00:23:22
acceder a todas
00:23:23
para asignar el cero,
00:23:24
haciéndolo de esta manera,
00:23:25
pues hombre,
00:23:26
tengo que escribir
00:23:27
doce líneas,
00:23:28
un poco pesado.
00:23:29
Claro,
00:23:30
pero para eso
00:23:31
tenemos los for,
00:23:32
¿verdad?
00:23:33
La ventaja de los Arrays
00:23:34
es que mediante
00:23:35
un bucle
00:23:36
podemos acceder
00:23:37
a todas sus posiciones,
00:23:38
porque ese bucle
00:23:39
me da un índice
00:23:40
y ese índice
00:23:41
va cambiando.
00:23:42
Entonces,
00:23:44
las iteraciones del for
00:23:45
me van accediendo a
00:23:46
posiciones consecutivas
00:23:48
del Array.
00:23:50
Esa es la ventaja
00:23:51
de los Arrays,
00:23:52
que mediante un sencillo
00:23:53
bucle for
00:23:54
podemos acceder
00:23:55
en un código
00:23:56
de dos líneas
00:23:57
a todas sus posiciones.
00:23:58
Bueno,
00:23:59
pues el Array
00:24:00
de dos dimensiones
00:24:01
también,
00:24:02
afortunadamente,
00:24:03
podemos recorrerlo
00:24:04
con un bucle for.
00:24:05
Pero claro,
00:24:08
aquí el recorrido
00:24:09
se complica un poco,
00:24:10
porque yo tengo que ir
00:24:11
por aquí,
00:24:12
voy por aquí,
00:24:13
luego tengo que
00:24:14
volver a bajar aquí,
00:24:15
luego tengo que
00:24:16
volver a bajar aquí.
00:24:17
Entonces,
00:24:18
¿cómo podemos
00:24:19
hacer el recorrido?
00:24:20
Tendremos que hacerlo
00:24:21
con dos bucles for,
00:24:22
uno dentro de otro.
00:24:23
Un primer bucle
00:24:24
for externo
00:24:25
que se va colocando
00:24:26
en la fila
00:24:27
en la que está.
00:24:28
Y en cada fila
00:24:31
otro pequeño bucle
00:24:32
for dentro
00:24:33
que ya va
00:24:34
recorriendo las columnas.
00:24:35
Cuando
00:24:37
esta iteración
00:24:38
ha terminado,
00:24:39
saltamos a esta iteración
00:24:40
del bucle de fuera
00:24:41
y arranca
00:24:42
el bucle de dentro
00:24:43
que va por éste,
00:24:44
por éste
00:24:45
y por éste.
00:24:46
Cuando esta iteración
00:24:47
del bucle de fuera
00:24:48
ha terminado,
00:24:49
saltamos a esta fila,
00:24:50
arranca a la iteración
00:24:51
del bucle de dentro
00:24:52
que va por éste,
00:24:53
por éste
00:24:54
y por éste.
00:24:55
Luego un bucle
00:24:56
que recorre las filas
00:24:57
y dentro de cada fila
00:24:58
un bucle
00:24:59
pequeñito
00:25:00
que recorre las columnas.
00:25:01
Un bucle
00:25:02
dentro de otro.
00:25:03
Entonces se traduciría
00:25:04
en esto.
00:25:05
Esto de recorrer
00:25:06
todas las posiciones
00:25:07
para asignar cero,
00:25:08
hecho con
00:25:09
bucles FOR
00:25:10
se traduciría
00:25:12
en esto de aquí.
00:25:13
El primer FOR de fuera
00:25:15
un bucle
00:25:18
que va a ir pasando
00:25:19
fila por fila.
00:25:20
Filas, ¿cuántas hay?
00:25:21
De cero a tres
00:25:23
hay cuatro.
00:25:24
Pues un índice
00:25:25
que empieza valiendo cero
00:25:27
mientras sea menor
00:25:30
que el número de filas.
00:25:31
En mi caso cuatro.
00:25:33
¿Vale?
00:25:35
Así
00:25:36
paso por la cero,
00:25:37
la uno,
00:25:38
la dos y la tres
00:25:39
incrementando ahí.
00:25:40
Y ahora
00:25:42
para cada fila
00:25:43
para cada fila
00:25:44
tengo que hacer un bucle
00:25:46
que vaya pasando
00:25:47
por la columna cero
00:25:48
la uno y la dos.
00:25:49
Luego para cada fila
00:25:50
para cada í
00:25:52
para cada í
00:25:57
hay que recorrer
00:25:58
toda la fila otra vez.
00:26:00
Pues para recorrer
00:26:07
toda la fila
00:26:08
para cada í
00:26:09
tendré que hacer otro FOR dentro.
00:26:10
Ahora este FOR dentro
00:26:12
tiene que utilizar otra variable
00:26:14
claro, porque la í
00:26:16
ya está usada.
00:26:17
La í es la variable
00:26:18
que me dice la fila
00:26:19
en la que estoy.
00:26:20
En la primera iteración
00:26:21
estará en la cero.
00:26:22
En la segunda
00:26:24
estará en la uno.
00:26:25
La í me dice la fila
00:26:26
en la que estoy.
00:26:27
Pues para cada í
00:26:28
ahora yo avanzo
00:26:29
por cada columna.
00:26:30
Desde j igual a cero
00:26:32
mientras j sea menor
00:26:34
que el número de columnas.
00:26:35
Que el número de columnas
00:26:38
que en mi caso es tres
00:26:39
incrementando j.
00:26:40
Y ahora ya dentro de este FOR
00:26:42
si yo hago
00:26:44
tablero de í
00:26:46
j
00:26:48
ya tengo todas las posiciones.
00:26:50
Por ejemplo, si yo hago esto
00:26:52
pues esto
00:26:56
me irá recorriendo
00:26:58
todas las posiciones.
00:26:59
Para i igual a cero
00:27:00
entra en el FOR de dentro
00:27:02
que hace la cero
00:27:03
cero, cero, uno, cero, dos
00:27:04
y saltamos arriba.
00:27:06
Para i igual a uno
00:27:08
entramos en el bucle de dentro
00:27:09
que hace
00:27:10
uno, cero, uno, uno, uno, dos.
00:27:11
Y saltamos al bucle de arriba.
00:27:14
Para i igual a dos
00:27:16
entramos al bucle de dentro
00:27:17
que hace
00:27:19
dos, cero, dos, uno y dos, dos.
00:27:20
Y saltamos otra vez arriba.
00:27:22
Para i igual a tres
00:27:24
entramos al bucle de dentro
00:27:26
que me hace
00:27:27
tres, cero, tres, uno, tres, dos.
00:27:28
Luego el orden de recorrido
00:27:30
este bucle FOR va a ir recorriendo
00:27:32
tablero, pongo la T solo
00:27:35
cero, cero,
00:27:37
tablero, cero, uno,
00:27:39
tablero, cero, dos
00:27:42
y tablero, cero, tres.
00:27:44
Estos serán
00:27:48
todas las iteraciones
00:27:49
del bucle de dentro
00:27:50
cuando yo es igual a cero.
00:27:51
Saltamos arriba otra vez.
00:27:52
Para i igual a uno
00:27:54
pues para i igual a uno
00:27:56
otra vez
00:27:57
T, uno, cero
00:27:58
T, uno, uno
00:28:00
T, uno, dos
00:28:03
y T, uno, tres
00:28:06
Este bucle acabó.
00:28:10
Saltamos otra vez.
00:28:12
Ahora T es igual a dos
00:28:13
bucle de dentro
00:28:15
T, dos, cero
00:28:17
T, dos, uno
00:28:19
T, dos, dos
00:28:23
y T, dos, tres
00:28:27
Y bueno, nos faltaría ya
00:28:29
la última iteración
00:28:30
que ya no la escribo
00:28:32
para i igual a tres
00:28:33
este iría pasando
00:28:35
por todos los valores
00:28:36
T, tres, cero
00:28:37
T, tres, uno
00:28:38
T, tres, dos
00:28:39
T, tres, tres
00:28:40
Luego el resultado
00:28:41
de estos dos bucles FOR
00:28:42
uno dentro de otro
00:28:43
es efectivamente
00:28:44
recorrer todas las doce posiciones
00:28:45
pasando por esta
00:28:48
bajando por aquí
00:28:49
bajando por aquí
00:28:50
bajando por aquí
00:28:51
para hacer yo lo que quiera
00:28:52
con esas posiciones
00:28:53
lo que quiera
00:28:54
en este caso
00:28:55
lo que estoy haciendo es
00:28:56
asignarle cero
00:28:57
pero podría querer hacer
00:29:00
cualquier otra cosa
00:29:01
¿vale?
00:29:03
Vale, pues
00:29:06
vamos a poner aquí
00:29:11
un pequeño
00:29:12
enunciado
00:29:15
para que hagáis ahora
00:29:17
a ver si esto está
00:29:18
claro
00:29:20
Venga
00:29:31
Programa que solicite primero
00:29:33
un número de filas
00:29:34
y otro número de columnas
00:29:35
Una vez que tiene
00:29:50
ese número de filas
00:29:51
y ese número de columnas
00:29:52
declaro una raíz
00:29:53
de dos dimensiones
00:29:54
con ese número
00:29:56
de filas y columnas
00:29:57
¿vale?
00:30:00
Luego ¿qué va a hacer?
00:30:12
En lugar de rellenarlo
00:30:14
con valores leídos
00:30:15
por teclado
00:30:16
que vais a estar luego
00:30:17
haciendo la prueba
00:30:18
un montón de rato
00:30:19
metiendo números
00:30:20
pa pa pa
00:30:21
que los rellene
00:30:22
con valores aleatorios
00:30:23
todo ese array
00:30:25
entre cero y cincuenta
00:30:26
por ejemplo
00:30:27
¿vale?
00:30:30
Vale, y ahora
00:30:47
viene la complicación
00:30:48
y ahora
00:30:50
pedirá un número de filas
00:30:53
y sumará
00:30:56
todos los valores
00:30:58
que haya en esa fila
00:31:00
dirá
00:31:02
los valores de esa fila
00:31:03
suman patatín
00:31:04
¿vale?
00:31:31
Pues venga
00:31:37
Entonces, lo primero
00:31:40
de rellenar
00:31:42
con valores aleatorios
00:31:43
una vez declarado
00:31:44
es bueno
00:31:45
es calcar ese for
00:31:46
que hemos escrito
00:31:47
calcarlo
00:31:48
pero en lugar de asignarle cero
00:31:49
se hace un número aleatorio
00:31:50
y luego ya
00:31:51
habrá que volverlo
00:31:52
a recorrer
00:31:53
y el resultado
00:31:54
será hacer una suma acumulativa
00:31:55
pero claro
00:31:57
esa variable suma
00:31:58
que inicializáis a cero
00:31:59
y va tomando resultados
00:32:00
a variable suma
00:32:01
tiene que incorporar
00:32:02
solamente en su suma
00:32:04
de todo el recorrido
00:32:06
que hagáis
00:32:07
las posiciones
00:32:08
cuyo índice de fila
00:32:10
sea
00:32:11
el que habéis pedido
00:32:12
¿vale?
00:32:13
Esa es la complicación
00:32:14
luego hacer un último recorrido
00:32:15
para ir haciendo la suma
00:32:17
pero en esa suma
00:32:19
no sumarlos todos
00:32:20
sino meter un if
00:32:21
para que se sumen
00:32:22
todas aquellas posiciones
00:32:23
cuyo
00:32:25
índice de fila
00:32:26
sea la que
00:32:28
se ha pedido antes
00:32:29
¿vale?
00:32:33
Es un recorrido
00:32:34
para hacer la suma acumulativa
00:32:35
pero metiendo un if dentro
00:32:36
a ver
00:32:37
¿vale?
00:32:39
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 7
- Fecha:
- 21 de noviembre de 2023 - 14:02
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 626.28 MBytes