1 00:00:00,000 --> 00:00:04,419 Venga, pues vamos a continuar 2 00:00:04,419 --> 00:00:07,980 porque estáis así a medias 3 00:00:07,980 --> 00:00:10,460 nos falta un montón de cosas 4 00:00:10,460 --> 00:00:13,339 concentración 5 00:00:13,339 --> 00:00:17,199 bueno, pues entonces 6 00:00:17,199 --> 00:00:20,579 tenemos clarísimo que nuestras aplicaciones 7 00:00:20,579 --> 00:00:22,960 trabajan con datos, eso está claro 8 00:00:22,960 --> 00:00:23,820 trabajan con datos 9 00:00:23,820 --> 00:00:28,339 entonces, nosotros 10 00:00:28,339 --> 00:00:30,980 hemos tenido que decidir cuando hemos arrancado 11 00:00:30,980 --> 00:00:33,259 nuestros programas y nuestras aplicaciones 12 00:00:33,259 --> 00:00:34,899 esos datos a donde 13 00:00:34,899 --> 00:00:35,479 iban a ir 14 00:00:35,479 --> 00:00:38,899 entonces en nuestro caso iban a 15 00:00:38,899 --> 00:00:39,320 variables 16 00:00:39,320 --> 00:00:42,439 primitivas 17 00:00:42,439 --> 00:00:44,780 iban pues a lo mejor a una 18 00:00:44,780 --> 00:00:47,259 variable n o a lo mejor a 2 19 00:00:47,259 --> 00:00:50,600 si teníamos una cadena de texto 20 00:00:50,600 --> 00:00:52,659 pues conocíamos un tipo que era 21 00:00:52,659 --> 00:00:54,780 un pelín más sofisticado que los tipos 22 00:00:54,780 --> 00:00:56,219 primitivos que era el string 23 00:00:56,219 --> 00:00:59,579 para guardar una cadena de texto 24 00:00:59,579 --> 00:01:01,460 pero eso es lo único 25 00:01:01,460 --> 00:01:03,820 que conocemos para guardar datos 26 00:01:03,820 --> 00:01:05,579 variables sueltas 27 00:01:05,579 --> 00:01:07,480 de los tipos de datos primitivos 28 00:01:07,480 --> 00:01:08,540 variables sueltas 29 00:01:08,540 --> 00:01:10,760 o variables string 30 00:01:10,760 --> 00:01:12,879 y en todo caso son variables sueltas 31 00:01:12,879 --> 00:01:15,200 entonces si una aplicación 32 00:01:15,200 --> 00:01:17,019 tiene que conservar 33 00:01:17,019 --> 00:01:18,159 mil datos 34 00:01:18,159 --> 00:01:20,599 pues tenemos que declararnos 35 00:01:20,599 --> 00:01:21,799 mil de estos 36 00:01:21,799 --> 00:01:24,060 con lo que conocemos hasta ahora 37 00:01:24,060 --> 00:01:25,680 lógicamente 38 00:01:25,680 --> 00:01:28,319 eso no es operativo y no es lo que vamos a hacer 39 00:01:28,319 --> 00:01:30,260 entonces 40 00:01:30,260 --> 00:01:32,159 hay situaciones en las cuales va a ser 41 00:01:32,159 --> 00:01:34,400 necesario guardar muchísimo de algo 42 00:01:34,400 --> 00:01:35,659 ¿no? muchísimo 43 00:01:35,659 --> 00:01:37,280 por ejemplo 44 00:01:37,280 --> 00:01:39,900 ¿recordáis 45 00:01:39,900 --> 00:01:42,480 la... el ejercicio 46 00:01:42,480 --> 00:01:43,540 que hicimos el otro día 47 00:01:43,540 --> 00:01:45,379 de sacar cifras decimales 48 00:01:45,379 --> 00:01:48,379 hicimos un ejercicio de sacar cifras decimales 49 00:01:48,379 --> 00:01:50,019 en el que íbamos haciendo 50 00:01:50,019 --> 00:01:51,260 un bucle de este estilo 51 00:01:51,260 --> 00:01:54,040 mientras el 52 00:01:54,040 --> 00:01:55,879 cociente sea mayor 53 00:01:55,879 --> 00:01:57,219 que cero. 54 00:02:01,109 --> 00:02:01,870 Hacíamos 55 00:02:01,870 --> 00:02:05,129 muéstrame 56 00:02:05,129 --> 00:02:10,750 esta cifra decimal 57 00:02:10,750 --> 00:02:13,030 y ahora ya 58 00:02:13,030 --> 00:02:15,110 x igual a x entre 59 00:02:15,110 --> 00:02:15,490 10. 60 00:02:17,409 --> 00:02:19,090 Este era el programita para mostrar 61 00:02:19,090 --> 00:02:21,210 las cifras decimales de x, ¿verdad? 62 00:02:22,830 --> 00:02:24,949 Entonces, primero nos mostraba 63 00:02:24,949 --> 00:02:27,210 las unidades, luego ya 64 00:02:27,210 --> 00:02:29,009 nos quedábamos 65 00:02:29,009 --> 00:02:30,909 con el cociente, volvíamos 66 00:02:30,909 --> 00:02:32,949 arriba y al hacer el resto 67 00:02:32,949 --> 00:02:34,750 de nuevo de ese cociente 68 00:02:34,750 --> 00:02:36,090 nos mostraba las decenas 69 00:02:36,090 --> 00:02:38,430 nos quedábamos con el cociente 70 00:02:38,430 --> 00:02:40,770 al volver a hacer el resto 71 00:02:40,770 --> 00:02:42,569 con 10, nos mostraba las centenas 72 00:02:42,569 --> 00:02:43,949 es el ejercicio que hicimos, ¿no? 73 00:02:44,449 --> 00:02:44,810 ¿sí o no? 74 00:02:46,289 --> 00:02:48,849 entonces, vale, estaba bien, lo que pasa es que 75 00:02:48,849 --> 00:02:51,009 bueno, que si x era 76 00:02:51,009 --> 00:02:54,490 315 77 00:02:54,490 --> 00:02:57,009 pues no había tutía, esto funcionaba 78 00:02:57,009 --> 00:02:58,469 primero me muestra el 5 79 00:02:58,469 --> 00:03:00,830 luego ya cociente 31 80 00:03:00,830 --> 00:03:02,610 resto de dividir 31 81 00:03:02,610 --> 00:03:05,069 pues el 1, cociente 3 82 00:03:05,069 --> 00:03:06,830 resto de dividir 3 83 00:03:06,830 --> 00:03:08,590 el 3, cociente ya 0 84 00:03:08,590 --> 00:03:10,030 no volvía a entrar, así funcionaba 85 00:03:10,030 --> 00:03:11,650 nos sacaba 5, 1, 3 86 00:03:11,650 --> 00:03:15,129 entonces si hubiéramos querido cambiar este programa 87 00:03:15,129 --> 00:03:16,729 para que me mostrara 88 00:03:16,729 --> 00:03:18,590 primero el 3, luego 1, luego el 5 89 00:03:18,590 --> 00:03:20,349 pues no podíamos 90 00:03:20,349 --> 00:03:21,930 porque no podemos adivinar el futuro 91 00:03:21,930 --> 00:03:24,729 yo las iba mostrando según me iban llegando 92 00:03:24,729 --> 00:03:26,289 ¿verdad? según me iban llegando 93 00:03:26,289 --> 00:03:27,110 las iba mostrando 94 00:03:27,110 --> 00:03:29,409 entonces hombre, podríais decir 95 00:03:29,409 --> 00:03:31,569 hombre, no pasa nada, tú habilítate 96 00:03:31,569 --> 00:03:32,409 tres variables 97 00:03:32,409 --> 00:03:35,590 n1, n2 y n3 98 00:03:35,590 --> 00:03:37,710 y en lugar de mostrarlo 99 00:03:37,710 --> 00:03:39,189 pues ve guardando 100 00:03:39,189 --> 00:03:41,729 si estoy en la primera iteración, guarda en n1 101 00:03:41,729 --> 00:03:43,629 pero si estás en la segunda 102 00:03:43,629 --> 00:03:45,150 iteración, guarda en n2 103 00:03:45,150 --> 00:03:47,629 si estás en la tercera, guarda en n3 104 00:03:47,629 --> 00:03:48,750 menudo rollo 105 00:03:48,750 --> 00:03:51,270 menudo rollo 106 00:03:51,270 --> 00:03:53,629 primero, porque tengo aquí 107 00:03:53,629 --> 00:03:55,250 que distinguir en qué iteración estoy 108 00:03:55,250 --> 00:03:57,550 para decidir si guardo en N1 este numerito 109 00:03:57,550 --> 00:03:59,729 o lo guardo en N2 o lo guardo en N3 110 00:03:59,729 --> 00:04:01,069 eso primero, que es un pollo 111 00:04:01,069 --> 00:04:03,449 y segundo, ¿cómo generalizo esto 112 00:04:03,449 --> 00:04:05,270 a cualquier tamaño? 113 00:04:05,969 --> 00:04:07,770 no lo puedo generalizar a cualquier tamaño 114 00:04:07,770 --> 00:04:08,430 es imposible 115 00:04:08,430 --> 00:04:11,349 entonces con lo que sabemos hasta ahora 116 00:04:11,349 --> 00:04:13,129 no podríamos hacer este programa 117 00:04:13,129 --> 00:04:15,370 de mostrar las cifras decimales 118 00:04:15,370 --> 00:04:17,649 pero en orden inverso al que me van llegando 119 00:04:17,649 --> 00:04:19,370 bueno, pues 120 00:04:19,370 --> 00:04:21,930 si tuviéramos una especie de caja 121 00:04:21,930 --> 00:04:23,610 en la que 122 00:04:23,610 --> 00:04:25,689 pudiéramos irlas guardando, según me llegan, 123 00:04:25,889 --> 00:04:27,790 es decir, en lugar de mostrarla, yo la guardo. 124 00:04:28,709 --> 00:04:28,889 Vale. 125 00:04:29,750 --> 00:04:32,050 Ahora esta, en lugar de mostrarla, yo la guardo. 126 00:04:32,730 --> 00:04:33,790 Ahora esta, en lugar de 127 00:04:33,790 --> 00:04:34,930 mostrarla, yo la guardo. 128 00:04:36,029 --> 00:04:37,490 ¿Vale? Y así las que me van llegando. 129 00:04:37,569 --> 00:04:39,250 Una caja de un tamaño muy grandote. 130 00:04:40,129 --> 00:04:41,610 Pues si yo pudiera irlo guardando 131 00:04:41,610 --> 00:04:44,009 en una caja, con casillas, 132 00:04:44,269 --> 00:04:45,149 ¿no? En una tablita, 133 00:04:46,069 --> 00:04:47,790 pues cuando ya este bucle ha terminado, 134 00:04:47,910 --> 00:04:49,829 lo que hago es, como las tengo todas 135 00:04:49,829 --> 00:04:50,850 aquí guardadas, 136 00:04:50,850 --> 00:04:54,149 pues las voy sacando 137 00:04:54,149 --> 00:04:55,610 de la caja al revés, empiezo 138 00:04:55,610 --> 00:04:57,250 en lugar de empezar desde aquí, empiezo desde aquí 139 00:04:57,250 --> 00:04:58,410 como están todas guardadas 140 00:04:58,410 --> 00:05:01,589 bueno, pues este es un ejemplo 141 00:05:01,589 --> 00:05:03,370 entonces 142 00:05:03,370 --> 00:05:05,829 el array es esto 143 00:05:05,829 --> 00:05:07,129 esto es un array 144 00:05:07,129 --> 00:05:11,069 ¿vale? ¿qué es un array? 145 00:05:11,250 --> 00:05:13,329 un array es una estructura 146 00:05:13,329 --> 00:05:15,829 una variable, un array es una variable 147 00:05:15,829 --> 00:05:17,689 en realidad, es una variable, pero ¿qué me permite 148 00:05:17,689 --> 00:05:19,730 esa variable? guardar muchos 149 00:05:19,730 --> 00:05:20,910 datos del mismo tipo 150 00:05:20,910 --> 00:05:23,769 por ejemplo, en este caso me vendría estupendo 151 00:05:23,769 --> 00:05:25,810 una variable que me permite 152 00:05:25,810 --> 00:05:27,350 guardar muchos datos 153 00:05:27,350 --> 00:05:28,730 numéricos 154 00:05:28,730 --> 00:05:32,230 yo los voy metiendo ahí y ya está 155 00:05:32,230 --> 00:05:41,319 pues esto es un array 156 00:05:41,319 --> 00:05:43,319 luego es un tipo nuevo de dato 157 00:05:43,319 --> 00:05:44,699 ya tenemos 158 00:05:44,699 --> 00:05:47,420 ya 159 00:05:47,420 --> 00:05:51,319 tenéis el cambio de clase, el recreo para hablar 160 00:05:51,319 --> 00:05:52,040 ya 161 00:05:52,040 --> 00:05:53,980 vale 162 00:05:53,980 --> 00:05:57,379 he estado pensando en una forma 163 00:05:57,379 --> 00:05:58,560 yo creo que se podría hacer 164 00:05:58,560 --> 00:06:01,019 y por demostrarlo al revés 165 00:06:01,019 --> 00:06:02,360 yo creo que se podría hacer también 166 00:06:02,360 --> 00:06:06,639 en vez de 167 00:06:06,639 --> 00:06:09,720 o sea, hacer las operaciones de otra manera 168 00:06:09,720 --> 00:06:11,560 claro, para que sea al revés 169 00:06:11,560 --> 00:06:12,839 sí, lo que pasa es que 170 00:06:12,839 --> 00:06:15,480 para cualquier tipo de edad, para cualquier longitud 171 00:06:15,480 --> 00:06:19,279 yo creo que sí 172 00:06:19,279 --> 00:06:21,160 hombre, a ver, tendrías que contar las cifras 173 00:06:21,160 --> 00:06:22,300 sí, por un lado 174 00:06:22,300 --> 00:06:24,339 Entonces, una vez que cuentas las cifras, como ya sabes 175 00:06:24,339 --> 00:06:26,180 la cantidad de veces que tienes que hacerlo, puedes 176 00:06:26,180 --> 00:06:27,959 hacer un follow. O sea, puedes hacer, sí. 177 00:06:29,339 --> 00:06:30,199 Como si tienes 178 00:06:30,199 --> 00:06:31,899 siete cifras, tienes que hacerlo siete veces. 179 00:06:32,279 --> 00:06:34,060 Lo vas sacando y lo vas haciendo. 180 00:06:34,199 --> 00:06:34,740 Ya, pero bueno. 181 00:06:36,339 --> 00:06:37,240 La idea es otra, ¿no? 182 00:06:37,519 --> 00:06:39,220 La idea es enseñar. 183 00:06:40,439 --> 00:06:42,439 Efectivamente. Esto es una motivación 184 00:06:42,439 --> 00:06:44,060 para decir que hay situaciones 185 00:06:44,060 --> 00:06:46,060 en las cuales nos viene bien 186 00:06:46,060 --> 00:06:47,920 poder guardar a la vez muchos datos 187 00:06:47,920 --> 00:06:49,480 del mismo tipo. ¿Vale? 188 00:06:50,079 --> 00:06:51,959 Muchos. 50, 100, 189 00:06:51,959 --> 00:06:53,779 200, hasta ahora 190 00:06:53,779 --> 00:06:55,800 guardar 50, 100, 200 191 00:06:55,800 --> 00:06:57,740 exige que yo haga 192 00:06:57,740 --> 00:06:59,000 50 variables 193 00:06:59,000 --> 00:07:02,220 100 variables, no es operativo 194 00:07:02,220 --> 00:07:03,839 bueno, pues un array ¿qué es? 195 00:07:04,019 --> 00:07:05,959 un array es un nuevo tipo de datos 196 00:07:05,959 --> 00:07:08,120 ¿vale? entonces ya conocemos 197 00:07:08,120 --> 00:07:09,660 los 8 tipos de datos primitivos 198 00:07:09,660 --> 00:07:12,139 by, short, in, long, etc, etc 199 00:07:12,139 --> 00:07:14,139 y el state, conocemos esos 200 00:07:14,139 --> 00:07:16,139 y ahora vamos a conocer un nuevo tipo 201 00:07:16,139 --> 00:07:18,100 de datos, bueno pues este tipo 202 00:07:18,100 --> 00:07:19,860 de datos me permite 203 00:07:19,860 --> 00:07:22,720 guardar un montón de valores 204 00:07:22,720 --> 00:07:24,339 a la vez del mismo tipo 205 00:07:24,339 --> 00:07:28,439 luego es un tipo de dato complejo 206 00:07:28,439 --> 00:07:55,420 ¿Vale? Luego es una caja 207 00:07:55,420 --> 00:07:57,439 donde puedo guardar yo un montón 208 00:07:57,439 --> 00:07:59,339 de elementos, un montón de elementos 209 00:07:59,339 --> 00:08:00,139 del mismo tipo 210 00:08:00,139 --> 00:08:03,259 ¿Vale? ¿Qué ventaja tiene? Que la caja 211 00:08:03,259 --> 00:08:05,160 recibe un único nombre, es decir 212 00:08:05,160 --> 00:08:07,339 es una única variable, la caja entera es una única 213 00:08:07,339 --> 00:08:08,199 variable con su nombre 214 00:08:08,199 --> 00:08:11,300 y a partir de ese nombre ya veremos cómo yo puedo 215 00:08:11,300 --> 00:08:13,439 ir sacando todos y cada uno de los elementos 216 00:08:13,439 --> 00:08:15,399 según la posición 217 00:08:15,399 --> 00:08:18,120 luego el array físicamente 218 00:08:18,120 --> 00:08:19,240 es esto 219 00:08:19,240 --> 00:08:25,370 recibe un nombre, un único nombre, el que a mí me dé la gana 220 00:08:25,370 --> 00:08:27,250 pues números, por ejemplo 221 00:08:27,250 --> 00:08:30,959 y ahora, bajo este 222 00:08:30,959 --> 00:08:32,840 nombre, números, se esconde 223 00:08:32,840 --> 00:08:34,960 todo este conjunto de elementos 224 00:08:34,960 --> 00:08:36,879 y yo podré acceder 225 00:08:36,879 --> 00:08:38,820 a ellos por separado 226 00:08:38,820 --> 00:08:39,759 por suposición 227 00:08:39,759 --> 00:08:43,039 luego los tengo todos juntos, bajo un único 228 00:08:43,039 --> 00:08:43,460 nombre 229 00:08:43,460 --> 00:08:46,759 que si yo los declaro así por 230 00:08:46,759 --> 00:08:48,779 separado es un rollo, claro, n1, n2 231 00:08:48,779 --> 00:08:50,059 cada uno tiene su nombre 232 00:08:50,059 --> 00:08:52,820 pero podría estos tres números 233 00:08:52,820 --> 00:08:55,200 meterlos en un único array de tres 234 00:08:55,200 --> 00:08:57,379 ese array 235 00:08:57,379 --> 00:08:58,679 recibe un único nombre 236 00:08:58,679 --> 00:09:00,740 luego solo tengo una variable con un nombrecito 237 00:09:00,740 --> 00:09:01,799 y ahora 238 00:09:01,799 --> 00:09:04,960 por posición ya puedo 239 00:09:04,960 --> 00:09:06,980 decidir cuál saco, si el primero, el segundo 240 00:09:06,980 --> 00:09:08,840 luego el array es una 241 00:09:08,840 --> 00:09:10,879 estructura que tiene orden 242 00:09:10,879 --> 00:09:12,840 es decir, tiene posiciones 243 00:09:12,840 --> 00:09:15,000 la primera sería la cero 244 00:09:15,000 --> 00:09:16,419 la uno, la dos 245 00:09:16,419 --> 00:09:19,679 así hasta la última que yo haya decidido que tengo 246 00:09:19,679 --> 00:09:22,000 luego esto es físicamente 247 00:09:22,000 --> 00:09:24,000 se le da un nombre 248 00:09:24,000 --> 00:09:25,500 tiene posiciones 249 00:09:25,500 --> 00:09:27,539 empezando desde la cero 250 00:09:27,539 --> 00:09:29,259 y lo que va adentro 251 00:09:29,259 --> 00:09:30,779 son los elementos 252 00:09:30,779 --> 00:09:32,259 el elemento que a mí me dé la gana 253 00:09:32,259 --> 00:09:34,059 del tipo de dato 254 00:09:34,059 --> 00:09:35,679 que he decidido para el array 255 00:09:35,679 --> 00:09:38,940 entonces situaciones en las que identifique 256 00:09:38,940 --> 00:09:41,139 que me viene bien tener un montón de datos guardados 257 00:09:41,139 --> 00:09:42,159 del mismo tipo a la vez 258 00:09:42,159 --> 00:09:43,679 pues pongo un array 259 00:09:43,679 --> 00:09:46,799 aquí por ejemplo podría haber venido bien 260 00:09:46,799 --> 00:09:49,179 oye, pues en lugar de irlos mostrando 261 00:09:49,179 --> 00:09:50,840 ve guardándolos 262 00:09:50,840 --> 00:09:52,559 en posiciones consecutivas de un array 263 00:09:52,559 --> 00:09:54,659 este en lugar de mostrarlo a la 0 264 00:09:54,659 --> 00:09:57,279 este en lugar de mostrarlo 265 00:09:57,279 --> 00:09:58,919 a la 1, este siguiente 266 00:09:58,919 --> 00:10:00,779 en lugar de mostrarlo a la 2, ve guardándolos 267 00:10:00,779 --> 00:10:01,759 en lugar de mostrarlos 268 00:10:01,759 --> 00:10:04,600 y ahora ya, cuando ya he terminado el bucle 269 00:10:04,600 --> 00:10:06,679 muestro ese array al revés y listo 270 00:10:06,679 --> 00:10:08,120 y ya tendría las cifras 271 00:10:08,120 --> 00:10:10,559 desde esta hasta esta porque estoy mostrando al revés 272 00:10:10,559 --> 00:10:11,259 por ejemplo 273 00:10:11,259 --> 00:10:15,279 bueno, pues entonces ya sabiendo lo que es 274 00:10:15,279 --> 00:10:17,399 y para que es interesante 275 00:10:17,399 --> 00:10:19,200 vamos a ver cómo se declara 276 00:10:19,200 --> 00:10:21,820 cómo se declara para utilizarlo en mi programa 277 00:10:21,820 --> 00:10:30,860 vale, pues primero 278 00:10:30,860 --> 00:10:32,879 tenemos que decidir qué tipo de 279 00:10:32,879 --> 00:10:33,840 dato va a ir dentro 280 00:10:33,840 --> 00:10:37,080 porque todos tienen que ser iguales, o son todos números 281 00:10:37,080 --> 00:10:38,879 o son todos 282 00:10:38,879 --> 00:10:40,600 cadenas, o son todos double 283 00:10:40,600 --> 00:10:42,940 pero lo que hay dentro, todos los 284 00:10:42,940 --> 00:10:44,860 elementos tienen que ser del mismo tipo, todos 285 00:10:44,860 --> 00:10:46,799 del mismo, vale 286 00:10:46,799 --> 00:10:48,620 luego con lo de la herencia y con todo eso 287 00:10:48,620 --> 00:10:50,480 ya esto se puede matizar, pero ahora mismo 288 00:10:50,480 --> 00:10:52,480 con lo que sabemos, todos del mismo tipo 289 00:10:52,480 --> 00:10:54,840 bueno, pues por ejemplo, vamos a crear 290 00:10:54,840 --> 00:10:55,779 un array 291 00:10:55,779 --> 00:10:57,940 de números enteros 292 00:10:57,940 --> 00:10:59,620 pues entonces 293 00:10:59,620 --> 00:11:02,259 ponemos int 294 00:11:02,259 --> 00:11:04,279 vale, pero para 295 00:11:04,279 --> 00:11:06,600 he decidido el nombre, pues venga, voy a meter 296 00:11:06,600 --> 00:11:07,840 ahí números, pues números 297 00:11:07,840 --> 00:11:12,759 vale, ahora para indicar que 298 00:11:12,759 --> 00:11:14,639 esto es un array, no 299 00:11:14,639 --> 00:11:17,059 una variable número suelta 300 00:11:17,059 --> 00:11:18,940 una única variable suelta, para indicar 301 00:11:18,940 --> 00:11:20,799 que es un array, tenemos que 302 00:11:20,799 --> 00:11:22,759 poner estos corchetes abriendo 303 00:11:22,759 --> 00:11:23,240 y cerrando. 304 00:11:25,480 --> 00:11:26,120 Acabáramos. 305 00:11:26,580 --> 00:11:28,820 Entonces, con estos corchetes abriendo y cerrando, 306 00:11:29,320 --> 00:11:30,399 esto ya es 307 00:11:30,399 --> 00:11:32,360 un array de números enteros. 308 00:11:33,240 --> 00:11:33,399 ¿Vale? 309 00:11:34,820 --> 00:11:36,840 Luego, esto 310 00:11:36,840 --> 00:11:38,679 es una 311 00:11:38,679 --> 00:11:40,059 única variable entera, 312 00:11:40,700 --> 00:11:41,840 n, una variable entera, 313 00:11:42,960 --> 00:11:44,639 que se llama n para guardar solo un 314 00:11:44,639 --> 00:11:46,460 entero, y sin embargo 315 00:11:46,460 --> 00:11:48,080 números es otra cosa. 316 00:11:48,940 --> 00:11:50,899 números es otra cosa 317 00:11:50,899 --> 00:11:54,639 vamos a ver qué es números 318 00:11:54,639 --> 00:11:55,679 cómo se construye 319 00:11:55,679 --> 00:11:59,139 porque efectivamente diríais, vale, pero ¿cuántos puedo meter? 320 00:11:59,639 --> 00:12:01,100 bueno, pues con esta declaración 321 00:12:01,100 --> 00:12:02,659 de aquí, con ir números 322 00:12:02,659 --> 00:12:03,519 hacia paloseco 323 00:12:03,519 --> 00:12:06,159 lo único que 324 00:12:06,159 --> 00:12:07,500 hemos hecho 325 00:12:07,500 --> 00:12:10,100 es declarar esta variable 326 00:12:10,100 --> 00:12:10,779 números 327 00:12:10,779 --> 00:12:13,740 que en lo que realmente 328 00:12:13,740 --> 00:12:16,379 tiene dentro es una dirección 329 00:12:16,379 --> 00:12:18,159 de memoria que va 330 00:12:18,159 --> 00:12:20,340 apuntar a la verdadera 331 00:12:20,340 --> 00:12:20,980 tablita 332 00:12:20,980 --> 00:12:23,639 con las posiciones 333 00:12:23,639 --> 00:12:25,860 pero números como tal 334 00:12:25,860 --> 00:12:27,539 es la dirección de memoria sin más 335 00:12:27,539 --> 00:12:29,940 luego un array es un objeto exactamente 336 00:12:29,940 --> 00:12:32,240 igual que era un string, cuando declarábamos 337 00:12:32,240 --> 00:12:34,019 un string ya dijimos en su momento 338 00:12:34,019 --> 00:12:36,320 aunque lo estamos usando igual que cualquier 339 00:12:36,320 --> 00:12:38,279 tipo, que sepamos 340 00:12:38,279 --> 00:12:39,860 que ese en realidad 341 00:12:39,860 --> 00:12:42,620 es una dirección de memoria 342 00:12:42,620 --> 00:12:43,960 que nos lleva 343 00:12:43,960 --> 00:12:46,480 a la parte 344 00:12:46,480 --> 00:12:48,340 de la memoria RAM donde estén los datos 345 00:12:48,340 --> 00:12:49,539 la cadena 346 00:12:49,539 --> 00:12:52,799 físicamente es esto 347 00:12:52,799 --> 00:12:54,399 aunque para nosotros a ese 348 00:12:54,399 --> 00:12:55,500 le podíamos agregar 349 00:12:55,500 --> 00:12:58,139 inicializar con hola tranquilamente 350 00:12:58,139 --> 00:12:59,480 como si fuera un dato 351 00:12:59,480 --> 00:13:01,360 un tipo de dato normal 352 00:13:01,360 --> 00:13:02,320 primitivo 353 00:13:02,320 --> 00:13:05,960 pero string dijimos cuidado que string 354 00:13:05,960 --> 00:13:08,360 aunque ahora mismo para el uso que hacemos 355 00:13:08,360 --> 00:13:09,480 no tiene implicaciones 356 00:13:09,480 --> 00:13:11,879 esto es un tipo de dato objeto 357 00:13:11,879 --> 00:13:14,179 lo que realmente tiene dentro es la dirección 358 00:13:14,179 --> 00:13:16,179 que lleva a donde está 359 00:13:16,179 --> 00:13:18,299 realmente el contenido, que en este 360 00:13:18,299 --> 00:13:19,779 caso son un montón de caracteres. 361 00:13:21,820 --> 00:13:22,500 Bueno, pues el array 362 00:13:22,500 --> 00:13:24,200 igual. El array es un objeto 363 00:13:24,200 --> 00:13:26,460 también. Luego, al ser 364 00:13:26,460 --> 00:13:28,679 un objeto, números, 365 00:13:28,960 --> 00:13:30,179 lo que realmente es 366 00:13:30,179 --> 00:13:32,440 es 367 00:13:32,440 --> 00:13:33,860 una dirección de memoria 368 00:13:33,860 --> 00:13:36,480 que me lleva al espacio 369 00:13:36,480 --> 00:13:38,240 ya de memoria donde van a estar 370 00:13:38,240 --> 00:13:38,960 esos elementos. 371 00:13:41,019 --> 00:13:42,299 Bueno, pues cuando yo lo declaraba así 372 00:13:42,299 --> 00:13:44,440 sin hacer nada, ¿a qué espacio me lleva 373 00:13:44,440 --> 00:13:45,600 y qué tamaño tiene 374 00:13:45,600 --> 00:13:47,720 y que me lleva a la nada 375 00:13:47,720 --> 00:13:49,799 porque todavía no he creado ese espacio 376 00:13:49,799 --> 00:13:52,179 me lleva a la nada 377 00:13:52,179 --> 00:13:54,279 si yo intento usar este array 378 00:13:54,279 --> 00:13:55,679 para meter cosas en él 379 00:13:55,679 --> 00:13:57,259 me va a decir 380 00:13:57,259 --> 00:13:58,799 nada, error 381 00:13:58,799 --> 00:14:02,100 porque todavía no está creado el espacio 382 00:14:02,100 --> 00:14:03,820 en ese momento 383 00:14:03,820 --> 00:14:06,200 a donde estará apuntando es a una cosa que se llama null 384 00:14:06,200 --> 00:14:08,379 ¿vale? 385 00:14:08,600 --> 00:14:09,899 null es una palabra 386 00:14:09,899 --> 00:14:11,620 que ya la podemos incorporar 387 00:14:11,620 --> 00:14:13,159 es una palabra reservada de Java 388 00:14:13,159 --> 00:14:16,159 que significa espacio de memoria 389 00:14:16,159 --> 00:14:18,360 que no está habilitado, en el que no hay nada 390 00:14:18,360 --> 00:14:20,299 espacio de memoria en el que no hay nada 391 00:14:20,299 --> 00:14:22,320 con lo cual este array números 392 00:14:22,320 --> 00:14:24,139 recién declarado así tal cual 393 00:14:24,139 --> 00:14:25,779 me está llevando a la nada 394 00:14:25,779 --> 00:14:27,500 a lo que Java llama null 395 00:14:27,500 --> 00:14:30,139 entonces si intentáramos usarlo 396 00:14:30,139 --> 00:14:32,620 para guardar algo, tal y como se usa 397 00:14:32,620 --> 00:14:34,200 nos saldría 398 00:14:34,200 --> 00:14:35,139 en letras rojas 399 00:14:35,139 --> 00:14:36,840 esta excepción 400 00:14:36,840 --> 00:14:40,460 null pointer 401 00:14:40,460 --> 00:14:42,720 exception 402 00:14:42,720 --> 00:14:44,879 Que diría, oye, ojo 403 00:14:44,879 --> 00:14:47,440 Estás intentando acceder a la nada 404 00:14:47,440 --> 00:14:49,399 En la nada no puedes guardar cosas 405 00:14:49,399 --> 00:14:50,379 No puedes hacer nada 406 00:14:50,379 --> 00:14:53,059 Te diría eso, null pointer exception 407 00:14:53,059 --> 00:14:55,980 Vale, entonces 408 00:14:55,980 --> 00:14:59,000 Lo que tenemos que hacer para poder usar ya realmente 409 00:14:59,000 --> 00:15:01,059 Este array números 410 00:15:01,059 --> 00:15:02,600 El siguiente paso 411 00:15:02,600 --> 00:15:05,019 Es crear físicamente el espacio en memoria 412 00:15:05,019 --> 00:15:05,960 Crearlo 413 00:15:05,960 --> 00:15:09,899 Para que esto deje de apuntar a null 414 00:15:09,899 --> 00:15:11,720 Y empiece a apuntar de algún sitio 415 00:15:11,720 --> 00:15:14,039 Vale, ¿cómo se crea el espacio en memoria? 416 00:15:14,419 --> 00:15:19,440 pues con el operador new 417 00:15:19,440 --> 00:15:24,610 como se crean los objetos 418 00:15:24,610 --> 00:15:26,669 porque esto es un objeto, se crean con new 419 00:15:26,669 --> 00:15:27,730 aunque ahora mismo 420 00:15:27,730 --> 00:15:30,289 entonces 421 00:15:30,289 --> 00:15:33,009 igual que scanner se creaba con new 422 00:15:33,009 --> 00:15:34,809 porque era un objeto, pues el array también 423 00:15:34,809 --> 00:15:36,330 porque es un objeto, new 424 00:15:36,330 --> 00:15:38,649 el tipo primitivo, el tipo del que 425 00:15:38,649 --> 00:15:40,409 pertenece y aquí 426 00:15:40,409 --> 00:15:42,809 la cantidad de posiciones 427 00:15:42,809 --> 00:15:44,610 que queremos darle, ahí es donde 428 00:15:44,610 --> 00:15:46,230 decidimos cuantas posiciones 429 00:15:46,230 --> 00:15:48,169 quiero que tenga 430 00:15:48,169 --> 00:15:50,529 10, pues ahí tenemos 431 00:15:50,529 --> 00:15:52,570 por el 10, eso no se puede quedar vacío 432 00:15:52,570 --> 00:15:54,029 tiene que tener 433 00:15:54,029 --> 00:15:56,690 las 90 posiciones que queremos, no se puede quedar vacío 434 00:15:56,690 --> 00:15:58,570 entonces cuando 435 00:15:58,570 --> 00:15:59,889 ya hemos instanciado 436 00:15:59,889 --> 00:16:02,470 esto, new in 10 437 00:16:02,470 --> 00:16:04,730 pues ahora ya aparece automáticamente 438 00:16:04,730 --> 00:16:05,110 aquí 439 00:16:05,110 --> 00:16:13,440 la tablita 440 00:16:13,440 --> 00:16:15,620 con 10 posiciones 441 00:16:15,620 --> 00:16:21,350 ¿no se puede poner algo con infinito o algo así? 442 00:16:21,629 --> 00:16:22,110 no 443 00:16:22,110 --> 00:16:25,289 ¿cómo vas a crear una de infinitas posiciones? 444 00:16:25,289 --> 00:16:26,970 ¿qué ordenador tiene una RAM infinita? 445 00:16:26,970 --> 00:16:29,409 lo que podrías 446 00:16:29,409 --> 00:16:30,789 es decir 447 00:16:30,789 --> 00:16:32,450 lo que uno diría, a ver 448 00:16:32,450 --> 00:16:34,389 lo dejo por definir 449 00:16:34,389 --> 00:16:36,649 y luego según voy usándolo 450 00:16:36,649 --> 00:16:38,809 que se vaya agrandando 451 00:16:38,809 --> 00:16:40,990 pero eso lo tendrías 452 00:16:40,990 --> 00:16:41,830 que programar 453 00:16:41,830 --> 00:16:44,070 y eso son ya otra cosa 454 00:16:44,070 --> 00:16:46,990 es el array 455 00:16:46,990 --> 00:16:49,110 esto es lo que hay 456 00:16:49,110 --> 00:16:50,850 esto es lo único que hay para guardar 457 00:16:50,850 --> 00:16:52,789 varios del mismo tipo, lo que viene de serie 458 00:16:52,789 --> 00:16:55,269 cualquier otra cosa hay que programarla 459 00:16:55,269 --> 00:16:56,090 ¿vale? 460 00:16:56,970 --> 00:17:00,210 ya vienen programadas algunas estructuras 461 00:17:00,210 --> 00:17:01,950 que ya veremos para facilitar 462 00:17:01,950 --> 00:17:04,170 el uso, pero esto 463 00:17:04,170 --> 00:17:06,210 es una estructura de datos 464 00:17:06,210 --> 00:17:07,650 que es estática 465 00:17:07,650 --> 00:17:10,250 desde el momento en que tú le has dado el tamaño 466 00:17:10,250 --> 00:17:12,349 y se lo tienes que dar, no hay alternativa 467 00:17:12,349 --> 00:17:13,269 se lo tienes que dar 468 00:17:13,269 --> 00:17:15,930 esta tabla se queda valiendo 10 469 00:17:15,930 --> 00:17:18,430 y se va a quedar valiendo 10 para siempre jamás 470 00:17:18,430 --> 00:17:20,230 no puede 471 00:17:20,230 --> 00:17:21,089 cambiar de tamaño 472 00:17:21,089 --> 00:17:24,509 a ver, que tú en un momento dado haces esto 473 00:17:24,509 --> 00:17:30,089 Números igual a new int 3 474 00:17:30,089 --> 00:17:33,519 Pues entonces, ¿qué ocurre? 475 00:17:33,920 --> 00:17:35,440 Que esta desaparece 476 00:17:35,440 --> 00:17:37,279 Esta desaparece 477 00:17:37,279 --> 00:17:39,180 La que tenías antes desaparece 478 00:17:39,180 --> 00:17:41,900 Se crea una nueva con 3 479 00:17:41,900 --> 00:17:45,960 Y ahora números empieza a apuntar a esta 480 00:17:45,960 --> 00:17:49,160 Pero esta la has tirado a la basura con todos sus datos 481 00:17:49,160 --> 00:17:49,559 Con todos los valores dentro 482 00:17:49,559 --> 00:17:54,140 No, no, no, no, no es que se acorde y se quede con los tres primeros 483 00:17:54,140 --> 00:17:55,819 esta se fue a la basura 484 00:17:55,819 --> 00:17:58,920 porque la hemos sobrescrito 485 00:17:58,920 --> 00:18:00,900 con esta otra que se queda limpia de nuevas 486 00:18:00,900 --> 00:18:02,920 claro 487 00:18:02,920 --> 00:18:04,200 o sea 488 00:18:04,200 --> 00:18:06,859 esta la he puesto como si fuera encima de esta 489 00:18:06,859 --> 00:18:08,099 en realidad no es que la haya pisado 490 00:18:08,099 --> 00:18:09,880 es que he creado otra nueva 491 00:18:09,880 --> 00:18:13,299 números, empieza a apuntar 492 00:18:13,299 --> 00:18:14,279 a esta dirección 493 00:18:14,279 --> 00:18:16,119 y a esta pobre que le ha pasado 494 00:18:16,119 --> 00:18:18,859 que se ha quedado sin nadie que le apunte 495 00:18:18,859 --> 00:18:20,819 pero sigue ahí en memoria 496 00:18:20,819 --> 00:18:22,839 Nando Guerra, sigue ahí en memoria 497 00:18:22,839 --> 00:18:25,900 pero ¿qué ocurre? que nadie la está apuntando 498 00:18:25,900 --> 00:18:27,680 con lo cual es imposible 499 00:18:27,680 --> 00:18:29,500 ir a ella, es imposible 500 00:18:29,500 --> 00:18:31,259 porque no hay ninguna variable que la apunte 501 00:18:31,259 --> 00:18:33,279 entonces diríais 502 00:18:33,279 --> 00:18:36,079 pues se va llenando la memoria RAM 503 00:18:36,079 --> 00:18:37,480 de cosas que se han quedado ahí 504 00:18:37,480 --> 00:18:39,019 pues sí, se va llenando 505 00:18:39,019 --> 00:18:41,720 pero afortunadamente la máquina virtual 506 00:18:41,720 --> 00:18:42,900 de Java tiene un proceso 507 00:18:42,900 --> 00:18:44,900 que es el recolector de basura 508 00:18:44,900 --> 00:18:55,240 tiene un proceso que está continuamente 509 00:18:55,240 --> 00:18:56,180 despertándose 510 00:18:56,180 --> 00:18:58,579 e identificando qué estructuras 511 00:18:58,579 --> 00:19:00,299 se han quedado sin nadie que les apunte 512 00:19:00,299 --> 00:19:02,619 porque las que se han quedado sin nadie 513 00:19:02,619 --> 00:19:04,519 que les apunte, es imposible 514 00:19:04,519 --> 00:19:06,539 recuperarlas, no se puede recuperar 515 00:19:06,539 --> 00:19:08,259 esa memoria otra vez, o sea, esa dirección 516 00:19:08,259 --> 00:19:10,559 porque ya no hay ninguna variable que la tenga 517 00:19:10,559 --> 00:19:12,380 pues el recolector de basura 518 00:19:12,380 --> 00:19:14,920 periódicamente, todas esas variables 519 00:19:14,920 --> 00:19:16,480 que se han quedado sin nadie 520 00:19:16,480 --> 00:19:17,819 que les apunte, a la basura 521 00:19:17,819 --> 00:19:20,299 por ejemplo, un segundito 522 00:19:20,299 --> 00:19:21,240 un segundito y ahora 523 00:19:21,240 --> 00:19:24,140 el recolector de basura también 524 00:19:24,140 --> 00:19:26,519 actuaría, imaginaos que 525 00:19:26,519 --> 00:19:30,650 hacemos esto, tenemos aquí 526 00:19:30,650 --> 00:19:31,450 una cadena 527 00:19:31,450 --> 00:19:34,910 igual a ola, por ejemplo 528 00:19:34,910 --> 00:19:36,630 y ahora 529 00:19:36,630 --> 00:19:37,650 yo hago cad 530 00:19:37,650 --> 00:19:43,819 esto para nosotros 531 00:19:43,819 --> 00:19:45,740 y no nos preocupa 532 00:19:45,740 --> 00:19:47,940 como lo hace por dentro, para nosotros es que cadena 533 00:19:47,940 --> 00:19:49,759 pasa de tener este texto 534 00:19:49,759 --> 00:19:51,559 a tener este y ya está y trabajamos con eso 535 00:19:51,559 --> 00:19:53,019 y lo que pase por debajo nos da igual 536 00:19:53,019 --> 00:19:55,279 pero físicamente ¿qué está pasando? 537 00:19:55,920 --> 00:19:57,579 pues que cad era 538 00:19:57,579 --> 00:19:59,640 la dirección de memoria 539 00:19:59,640 --> 00:20:01,420 de una porción de memoria 540 00:20:01,420 --> 00:20:02,400 donde ponía hola 541 00:20:02,400 --> 00:20:04,319 si ahora hacemos esto 542 00:20:04,319 --> 00:20:07,200 ahora otra porción de memoria 543 00:20:07,200 --> 00:20:08,799 donde pone adiós se habilita 544 00:20:08,799 --> 00:20:10,819 y Kat empieza a apuntar a ella 545 00:20:10,819 --> 00:20:13,240 y esta pobre porción de memoria 546 00:20:13,240 --> 00:20:15,140 en la que ponía hola se ha quedado vacía 547 00:20:15,140 --> 00:20:16,640 sin que nadie la referencie 548 00:20:16,640 --> 00:20:18,799 con lo cual 549 00:20:18,799 --> 00:20:21,140 es imposible recuperar 550 00:20:21,140 --> 00:20:23,460 esta porción de memoria porque nadie la referencia 551 00:20:23,460 --> 00:20:25,460 es imposible por código acceder a ella 552 00:20:25,460 --> 00:20:27,180 luego el recolector de basura 553 00:20:27,180 --> 00:20:28,980 está todo el rato borrando cosas 554 00:20:28,980 --> 00:20:30,740 cada vez que un objeto 555 00:20:30,740 --> 00:20:33,059 y ahora mismo tenemos ejemplos solamente 556 00:20:33,059 --> 00:20:35,359 de dos tipos de objetos, los string 557 00:20:35,359 --> 00:20:37,019 y los arrays, cada vez que 558 00:20:37,019 --> 00:20:39,500 sobrescribimos un objeto 559 00:20:39,500 --> 00:20:41,460 como aquí, lo estamos sobrescribiendo 560 00:20:41,460 --> 00:20:43,440 con otro valor, o como aquí 561 00:20:43,440 --> 00:20:44,599 lo estamos escribiendo con otro 562 00:20:44,599 --> 00:20:47,180 el objeto antiguo se queda ahí suelto 563 00:20:47,180 --> 00:20:49,440 y la referencia esta 564 00:20:49,440 --> 00:20:50,839 empieza a apuntar al nuevo 565 00:20:50,839 --> 00:20:52,859 no hay manera 566 00:20:52,859 --> 00:20:55,599 entonces el recolector de basura va eliminando 567 00:20:55,599 --> 00:20:57,599 Para todo eso que se va quedando sin referencia 568 00:20:57,599 --> 00:20:59,099 Si supieras la memoria 569 00:20:59,099 --> 00:21:02,920 Real de eso 570 00:21:02,920 --> 00:21:03,839 No podrías recuperarla 571 00:21:03,839 --> 00:21:05,039 Es que no la sabes 572 00:21:05,039 --> 00:21:06,279 Tú no puedes 573 00:21:06,279 --> 00:21:09,539 Es decir, tú podrías 574 00:21:09,539 --> 00:21:11,400 Claro, antes de haber hecho esto 575 00:21:11,400 --> 00:21:13,339 Haber guardado esto en un auxiliar 576 00:21:13,339 --> 00:21:14,920 Pero si lo has guardado en un auxiliar 577 00:21:14,920 --> 00:21:16,359 Ya está apuntado con una variable 578 00:21:16,359 --> 00:21:19,019 Entonces el recolector de basura no lo elimina 579 00:21:19,019 --> 00:21:21,440 Elimina solo la memoria que se ha quedado 580 00:21:21,440 --> 00:21:23,740 Sin apuntar 581 00:21:23,740 --> 00:21:24,440 Por nadie 582 00:21:24,440 --> 00:21:26,480 Un segundito, tú ibas a preguntar algo 583 00:21:26,480 --> 00:21:29,200 Imagínate si en vez de poner el número 10 584 00:21:29,200 --> 00:21:32,099 Pusiera, o sea, si me ganara una variable 585 00:21:32,099 --> 00:21:33,700 In, le pongo el nombre que sea 586 00:21:33,700 --> 00:21:34,700 También, también 587 00:21:34,700 --> 00:21:37,019 O sea, sí, lo que importa es que aquí 588 00:21:37,019 --> 00:21:38,660 En última instancia hay un número entero 589 00:21:38,660 --> 00:21:41,460 Me da igual que lo pongas a capón o que sea un número 590 00:21:41,460 --> 00:21:43,180 O que pongas una variable 591 00:21:43,180 --> 00:21:44,960 Que tiene un número entero dentro, da igual 592 00:21:44,960 --> 00:21:46,740 Con que haya aquí un número entero es suficiente 593 00:21:46,740 --> 00:21:49,039 Si lo cambias a flow, a método 594 00:21:49,039 --> 00:21:51,460 ¿Te acepta un decimario? 595 00:21:51,460 --> 00:21:54,720 a ver, pero si lo cambias 596 00:21:54,720 --> 00:21:56,279 a float todo, tienes que declararla 597 00:21:56,279 --> 00:21:57,400 de nuevas 598 00:21:57,400 --> 00:22:00,480 o sea, esta tal y como está declarada 599 00:22:00,480 --> 00:22:02,980 solo puede guardar enteros 600 00:22:02,980 --> 00:22:04,940 si tú quieres un array de float 601 00:22:04,940 --> 00:22:06,839 pues entonces 602 00:22:06,839 --> 00:22:07,720 tendrás que hacer 603 00:22:07,720 --> 00:22:10,400 esto, claro 604 00:22:10,400 --> 00:22:12,319 float 605 00:22:12,319 --> 00:22:14,900 esto y aquí el nombrecito 606 00:22:14,900 --> 00:22:15,380 que sea 607 00:22:15,380 --> 00:22:18,700 y ya tienes un array para guardar float 608 00:22:18,700 --> 00:22:19,539 vale 609 00:22:19,539 --> 00:22:23,519 claro, new flow app 610 00:22:23,519 --> 00:22:24,660 el tamaño que quieras 611 00:22:24,660 --> 00:22:26,599 entonces declarar una array siempre es 612 00:22:26,599 --> 00:22:29,519 aquí pones el tipo al que tú quieres 613 00:22:29,519 --> 00:22:31,339 que pertenezcan los elementos que van dentro 614 00:22:31,339 --> 00:22:33,400 todo es el mismo, van a ser 615 00:22:33,400 --> 00:22:35,880 los cochetes 616 00:22:35,880 --> 00:22:37,519 claro, y aquí el nombre 617 00:22:37,519 --> 00:22:38,900 que tú le quieres dar a esa variable 618 00:22:38,900 --> 00:22:41,299 como de costumbre, el nombre lo más explicativo posible 619 00:22:41,299 --> 00:22:43,779 y ahora, para que se cree 620 00:22:43,779 --> 00:22:45,700 el espacio de verdad, porque si no el espacio 621 00:22:45,700 --> 00:22:47,180 no se crea, para que se cree 622 00:22:47,180 --> 00:22:50,119 hay que hacer new el mismo tipo de dato 623 00:22:50,119 --> 00:22:51,180 de la declaración 624 00:22:51,180 --> 00:22:53,180 y el tamaño que sea 625 00:22:53,180 --> 00:22:56,200 esto un número entero siempre porque es el número de posiciones 626 00:22:56,200 --> 00:22:57,980 ¿vale? esto tiene que ser 627 00:22:57,980 --> 00:22:59,980 el número de posiciones del array 628 00:22:59,980 --> 00:23:09,839 ¿vale? entonces esto lo podemos 629 00:23:09,839 --> 00:23:11,660 poner pues aquí seguido a la vez que 630 00:23:11,660 --> 00:23:12,980 lo creamos y inicializamos 631 00:23:12,980 --> 00:23:14,039 y ya está 632 00:23:14,039 --> 00:23:17,880 son 10 pasos pero empiezan del 0 al 9 633 00:23:17,880 --> 00:23:19,619 entonces, claro, la posición 634 00:23:19,619 --> 00:23:21,619 es del 0 al 9 635 00:23:21,619 --> 00:23:24,000 ahora cuando lo recorramos veremos como luego el contenido 636 00:23:24,000 --> 00:23:25,359 el que sea, el que uno meta 637 00:23:25,359 --> 00:23:27,480 inicialmente el array 638 00:23:27,480 --> 00:23:29,980 no tiene nada, pero es imposible no tener nada 639 00:23:29,980 --> 00:23:31,640 entonces por defecto la máquina virtual 640 00:23:31,640 --> 00:23:32,480 lo va a poner a cero 641 00:23:32,480 --> 00:23:35,799 pero luego la aplicación no cuenta con ello 642 00:23:35,799 --> 00:23:37,599 la aplicación nos diría 643 00:23:37,599 --> 00:23:38,619 está sin inicializar 644 00:23:38,619 --> 00:23:40,039 se puede meter en guays 645 00:23:40,039 --> 00:23:43,759 es una variable más, puedes hacer con ella lo que quieras 646 00:23:43,759 --> 00:23:45,740 entonces puedo hacer infinitos 647 00:23:45,740 --> 00:23:46,279 números 648 00:23:46,279 --> 00:23:49,740 yo creo que se puede hacer infinito 649 00:23:49,740 --> 00:23:50,079 con esto 650 00:23:50,079 --> 00:23:53,740 el infinito no existe 651 00:23:53,740 --> 00:23:55,519 desde ya siento defraudarte 652 00:23:55,519 --> 00:23:56,299 pero no existe 653 00:23:56,299 --> 00:24:02,740 bueno a ver 654 00:24:02,740 --> 00:24:05,259 tienes razón que existe 655 00:24:05,259 --> 00:24:07,299 el infinito y se 656 00:24:07,299 --> 00:24:09,099 trabaja en topología 657 00:24:09,099 --> 00:24:11,000 obviamente y de los límites 658 00:24:11,000 --> 00:24:12,140 las derivadas, todo eso 659 00:24:12,140 --> 00:24:14,839 pero estamos hablando en el mundo matemático 660 00:24:14,839 --> 00:24:16,339 que es un constructo axiomático 661 00:24:16,339 --> 00:24:18,960 entonces ahí sí 662 00:24:18,960 --> 00:24:21,460 pero es que en las matemáticas sigue sus reglas 663 00:24:21,460 --> 00:24:23,420 entonces en las reglas de la física 664 00:24:23,420 --> 00:24:24,920 que es las nuestras 665 00:24:24,920 --> 00:24:26,359 el infinito no existe 666 00:24:26,359 --> 00:24:27,420 lo siento mucho 667 00:24:27,420 --> 00:24:29,660 ni en el universo 668 00:24:29,660 --> 00:24:30,460 si quieren 669 00:24:30,460 --> 00:24:36,440 se supone que es finito 670 00:24:36,440 --> 00:24:38,539 ya han medido hasta el tamaño y todo 671 00:24:38,539 --> 00:24:40,799 hay como un límite 672 00:24:40,799 --> 00:24:43,160 que es lo máximo que podemos llegar a medir 673 00:24:43,160 --> 00:24:44,859 pero no significa que no haya más 674 00:24:44,859 --> 00:24:47,079 simplemente que es el máximo que podemos llegar a medir 675 00:24:47,079 --> 00:24:49,299 porque la luz que ha llegado desde ahí 676 00:24:49,299 --> 00:24:52,519 es un limbo 677 00:24:52,519 --> 00:24:54,619 Ya, ya, ya, pero ¿qué te hace pensar 678 00:24:54,619 --> 00:24:56,440 que eso se extienda hasta el infinito? 679 00:24:56,519 --> 00:24:58,180 ¿Cómo decir que te hace pensar que existe Dios? 680 00:24:58,359 --> 00:24:59,619 Es lo mismo, tú puedes creer en el infinito 681 00:24:59,619 --> 00:25:01,859 y no creer, pero no hay señales de eso. 682 00:25:02,920 --> 00:25:04,119 En vez de creer en alguien 683 00:25:04,119 --> 00:25:05,720 si es creer en el infinito, no creer en el infinito. 684 00:25:06,460 --> 00:25:07,960 Claro que... 685 00:25:07,960 --> 00:25:09,640 ¿Y si el infinito es nuestro Dios? 686 00:25:11,019 --> 00:25:12,140 El infinito es nuestro Dios. 687 00:25:12,140 --> 00:25:12,819 Ah, yo lo he gustado mucho. 688 00:25:13,180 --> 00:25:13,740 ¿Puede ser? 689 00:25:16,440 --> 00:25:18,440 Bueno, en programación no existe. 690 00:25:18,740 --> 00:25:18,960 Ok. 691 00:25:18,960 --> 00:25:22,019 ¿Y cuando llamas a esa variable? 692 00:25:22,519 --> 00:25:24,920 ¿Tú puedes especificarle 693 00:25:24,920 --> 00:25:27,099 qué es lo que quieres 694 00:25:27,099 --> 00:25:28,160 que utilice? 695 00:25:29,119 --> 00:25:30,220 ¿Cómo que es lo que quieres que utilice? 696 00:25:30,940 --> 00:25:33,279 Tú cuando llamas a esa variable 697 00:25:33,279 --> 00:25:35,380 para acceder 698 00:25:35,380 --> 00:25:35,920 a los datos. 699 00:25:36,380 --> 00:25:39,059 ¿Tú les puedes especificar la posición 700 00:25:39,059 --> 00:25:40,380 que quieres que utilice? 701 00:25:40,400 --> 00:25:42,579 Claro, es que si no, no nos valdría para nada. 702 00:25:43,220 --> 00:25:45,400 La idea es poder usar las posiciones 703 00:25:45,400 --> 00:25:46,339 independientes. 704 00:25:46,779 --> 00:25:48,900 Cuando yo quiera acceder a esta o esta 705 00:25:48,900 --> 00:25:51,019 vamos a ver ahora ya cómo acceder al array 706 00:25:51,019 --> 00:25:52,839 Para darle valores, para recuperarlo 707 00:25:52,839 --> 00:25:53,779 ¿Vale? 708 00:25:54,740 --> 00:25:56,720 Entonces, con esto, dime 709 00:25:56,720 --> 00:25:59,220 Ya por preguntar 710 00:25:59,220 --> 00:26:00,759 Al lado de los cachetes de lindos 711 00:26:00,759 --> 00:26:02,779 ¿No puedes especificar ahí las posiciones que quieres? 712 00:26:02,980 --> 00:26:03,180 No 713 00:26:03,180 --> 00:26:06,779 Ahí se pone lo que hay 714 00:26:06,779 --> 00:26:08,859 Nada, nada, así, tal cual 715 00:26:08,859 --> 00:26:10,500 No puedes poner nada, no debes poner nada 716 00:26:10,500 --> 00:26:12,220 Y el otro 717 00:26:12,220 --> 00:26:14,759 Aquí tienes que poner algo 718 00:26:14,759 --> 00:26:16,700 Obligatorio, no lo puedes dejar vacío 719 00:26:16,700 --> 00:26:17,700 Obligatorio, vale 720 00:26:17,700 --> 00:26:20,640 También se admite como sintaxis 721 00:26:20,640 --> 00:26:23,720 poner los corchetes después del nombre 722 00:26:23,720 --> 00:26:24,440 de la variable 723 00:26:24,440 --> 00:26:27,579 también se admite como sintaxis 724 00:26:27,579 --> 00:26:29,339 esto, porque así se hacía 725 00:26:29,339 --> 00:26:30,940 antiguamente en C 726 00:26:30,940 --> 00:26:33,039 pero a mí esta 727 00:26:33,039 --> 00:26:34,599 esta sintaxis 728 00:26:34,599 --> 00:26:36,960 que también se admite, me parece 729 00:26:36,960 --> 00:26:38,279 muy fea, para mí 730 00:26:38,279 --> 00:26:41,180 es como si el nombre de la variable tuviera corchetes 731 00:26:41,180 --> 00:26:42,960 no me gusta esta sintaxis, aunque se admite 732 00:26:42,960 --> 00:26:44,420 me gusta más decir 733 00:26:44,420 --> 00:26:46,700 la variable se llama números 734 00:26:46,700 --> 00:26:48,059 ¿y de qué tipo es? 735 00:26:48,059 --> 00:26:50,660 de este, de Array 736 00:26:50,660 --> 00:26:52,539 me parece mucho más claro 737 00:26:52,539 --> 00:26:54,599 y es la genuina 738 00:26:54,599 --> 00:26:56,140 de Java, pero se admite la otra 739 00:26:56,140 --> 00:26:57,779 bueno, por tradición del pasado 740 00:26:57,779 --> 00:27:00,019 pero para qué 741 00:27:00,019 --> 00:27:02,019 para qué me lo quieres hacer raro 742 00:27:02,019 --> 00:27:04,180 si me lo puedes hacer bien, no lo entiendo 743 00:27:04,180 --> 00:27:06,480 y si soy raro, ¿qué pasa? 744 00:27:06,980 --> 00:27:07,519 pues te vas 745 00:27:07,519 --> 00:27:09,819 pues si eres raro te normalizamos en un repás 746 00:27:09,819 --> 00:27:11,180 no pasa nada 747 00:27:11,180 --> 00:27:13,779 cosas más raras hemos hecho 748 00:27:13,779 --> 00:27:14,819 ¿como cuáles? 749 00:27:16,720 --> 00:27:17,900 cuenta propio, cuenta 750 00:27:17,900 --> 00:27:21,440 que no, que luego os asustáis rápido 751 00:27:21,440 --> 00:27:23,119 anécdota, anécdota del año pasado 752 00:27:23,119 --> 00:27:25,180 bueno, el año pasado 753 00:27:25,180 --> 00:27:26,519 si estaban aquí los del año pasado 754 00:27:26,519 --> 00:27:27,599 de años 755 00:27:27,599 --> 00:27:31,900 el pasado queda en el pasado 756 00:27:31,900 --> 00:27:35,539 que no, vamos a centrarnos en esto 757 00:27:35,539 --> 00:27:36,539 venga 758 00:27:36,539 --> 00:27:39,359 buen intento pero no 759 00:27:39,359 --> 00:27:42,140 ¿cuánto es el máximo que puedes poner 760 00:27:42,140 --> 00:27:44,200 de número de tamaño de la cuenta? 761 00:27:45,099 --> 00:27:46,019 no está limitado 762 00:27:46,019 --> 00:27:49,740 a ver, tanto como te quepa 763 00:27:49,740 --> 00:27:50,880 en una variable 764 00:27:50,880 --> 00:27:52,359 porque si no te va a desbordar 765 00:27:52,359 --> 00:27:54,720 pero si pones dos variables 766 00:27:54,720 --> 00:27:55,920 bueno, claro 767 00:27:55,920 --> 00:27:58,420 aquí hay que pasarlo en un número entero 768 00:27:58,420 --> 00:28:01,099 si tú le pasas este número entero 769 00:28:01,099 --> 00:28:03,200 y te pasas de lo que cabe 770 00:28:03,200 --> 00:28:05,619 te va a decir, oye, que no me cabe tanto en un número entero 771 00:28:05,619 --> 00:28:06,299 ya, ya, ya 772 00:28:06,299 --> 00:28:13,779 bueno, en el array, es que como no vas a poder declarar 773 00:28:13,779 --> 00:28:15,319 no va a poder existir 774 00:28:15,319 --> 00:28:17,299 El máximo value de lint 775 00:28:17,299 --> 00:28:19,700 caben 10 máximos values. 776 00:28:19,700 --> 00:28:20,900 Ah, sí, sí, sí. 777 00:28:22,000 --> 00:28:22,539 A ver, dime. 778 00:28:22,759 --> 00:28:25,079 ¿Cómo era para escoger el elemento justo? 779 00:28:25,400 --> 00:28:26,859 Ahora, ahora, que no lo hemos hecho todavía. 780 00:28:27,380 --> 00:28:28,680 Porque no tengo que preguntar. 781 00:28:29,660 --> 00:28:30,619 Es que no nos ha dado tiempo. 782 00:28:30,880 --> 00:28:32,700 Una pregunta. A ver, tú metes un 783 00:28:32,700 --> 00:28:33,579 máximo. 784 00:28:35,579 --> 00:28:37,259 Y vas metiendo cifras 785 00:28:37,259 --> 00:28:37,960 en ese máximo. 786 00:28:38,440 --> 00:28:39,299 ¿Cómo que metes un máximo? 787 00:28:39,779 --> 00:28:42,680 Tú metes 10. 788 00:28:43,319 --> 00:28:45,079 Y metes 10 789 00:28:45,079 --> 00:28:47,720 si tú ahora lo haces 5 790 00:28:47,720 --> 00:28:48,259 esos valores 791 00:28:48,259 --> 00:28:50,319 desaparecen 792 00:28:50,319 --> 00:28:53,339 se borran 793 00:28:53,339 --> 00:28:56,700 cuando estabas pensando en otra cosa 794 00:28:56,700 --> 00:28:58,019 es cuando lo hemos dicho 795 00:28:58,019 --> 00:29:03,519 en fin 796 00:29:03,519 --> 00:29:06,319 bueno, pues como declararlo y crearlo 797 00:29:06,319 --> 00:29:06,940 ya está, ¿no? 798 00:29:13,619 --> 00:29:15,500 vale, pues después de declararlo 799 00:29:15,500 --> 00:29:18,000 tenemos esta cosa tan mona 800 00:29:18,000 --> 00:29:21,720 ¿Habéis visto qué bonito? 801 00:29:25,279 --> 00:29:27,480 Lo único mono que vamos a ver en la matita 802 00:29:27,480 --> 00:29:30,880 Oye, haz el favor, ¿eh? 803 00:29:30,880 --> 00:29:31,539 Todo es bonito 804 00:29:31,539 --> 00:29:37,880 Venga, a ver 805 00:29:37,880 --> 00:29:40,720 Ahora ya podemos usarla para guardar cosas 806 00:29:40,720 --> 00:29:42,059 Que es para la que la hemos declarado 807 00:29:42,059 --> 00:29:45,720 Si no, ¿pa' qué cojones nos sirve? 808 00:29:45,720 --> 00:29:53,539 bueno, pues cada 809 00:29:53,539 --> 00:29:55,400 posición tiene asociada 810 00:29:55,400 --> 00:29:57,720 una posición, efectivamente 811 00:29:57,720 --> 00:29:59,799 entonces, las podemos 812 00:29:59,799 --> 00:30:01,440 usar por libre, por separado 813 00:30:01,440 --> 00:30:03,839 que yo quiero guardar en la primera posición 814 00:30:03,839 --> 00:30:05,519 el 7 815 00:30:05,519 --> 00:30:07,200 pues así 816 00:30:07,200 --> 00:30:09,920 el número de la RAI 817 00:30:09,920 --> 00:30:11,339 el nombre de la RAI, perdón 818 00:30:11,339 --> 00:30:19,670 si yo pongo 819 00:30:19,670 --> 00:30:21,950 el nombre del array y entre corchetes 820 00:30:21,950 --> 00:30:23,250 una posición 821 00:30:23,250 --> 00:30:25,329 por ejemplo esta 822 00:30:25,329 --> 00:30:27,069 me estoy refiriendo 823 00:30:27,069 --> 00:30:28,630 a esta 824 00:30:28,630 --> 00:30:31,630 y esto ya es como si fuera una variable más 825 00:30:31,630 --> 00:30:33,829 bueno pues por ejemplo que hago esto 826 00:30:33,829 --> 00:30:35,150 pues ya está 827 00:30:35,150 --> 00:30:37,849 a la posición 3 del array números 828 00:30:37,849 --> 00:30:38,890 le asigno el 7 829 00:30:38,890 --> 00:30:40,869 bueno pues ya está 830 00:30:40,869 --> 00:30:43,289 que ahora hago esto otro 831 00:30:43,289 --> 00:30:49,609 números 0 832 00:30:49,609 --> 00:30:54,740 Igual a números 3 833 00:30:54,740 --> 00:30:56,960 Esto ya es como variables sueltas 834 00:30:56,960 --> 00:30:57,460 En realidad 835 00:30:57,460 --> 00:30:58,660 Si pones los cortetes solos 836 00:30:58,660 --> 00:31:00,779 Igual a tal, te lo añade al siguiente 837 00:31:00,779 --> 00:31:02,900 Que haya, al siguiente hueco libre 838 00:31:02,900 --> 00:31:04,660 ¿Cómo? 839 00:31:04,880 --> 00:31:06,900 Si pusiera números, en vez de indicarle posición 840 00:31:06,900 --> 00:31:07,579 Te dejas vacío 841 00:31:07,579 --> 00:31:09,559 No puedes dejarlo vacío 842 00:31:09,559 --> 00:31:11,839 Y no puedes hacer que te vayan añadiendo a la array 843 00:31:11,839 --> 00:31:13,480 Uno tras otro 844 00:31:13,480 --> 00:31:16,720 Por programa sí, o sea, esto no puedes dejarlo vacío 845 00:31:16,720 --> 00:31:18,279 Entonces ahora ya lo que tú quieras hacer 846 00:31:18,279 --> 00:31:19,779 Ya lo podemos hacer con bucles, lo que sea 847 00:31:19,779 --> 00:31:21,400 Ahora mismo simplemente lo que estamos 848 00:31:21,400 --> 00:31:23,839 indicando es que ahora ya cada 849 00:31:23,839 --> 00:31:25,880 posición en realidad es como 850 00:31:25,880 --> 00:31:27,839 si fuera una variable independiente unas de otras 851 00:31:27,839 --> 00:31:29,819 y sus nombres son, esta será 852 00:31:29,819 --> 00:31:32,059 números 0, números 853 00:31:32,059 --> 00:31:33,519 1, números 2 854 00:31:33,519 --> 00:31:36,019 ¿vale? entonces operamos 855 00:31:36,019 --> 00:31:38,039 lo que queramos, lo de arriba pues sería 856 00:31:38,039 --> 00:31:39,079 meter el 7 aquí 857 00:31:39,079 --> 00:31:42,160 esta sería a la variable 858 00:31:42,160 --> 00:31:43,740 número 0 que es esta 859 00:31:43,740 --> 00:31:46,279 asígnale números 3 860 00:31:46,279 --> 00:31:48,039 que tiene 7, pues estaríamos 861 00:31:48,039 --> 00:31:49,940 haciendo esto y ya está y lo podemos 862 00:31:49,940 --> 00:31:51,920 trabajar así. Bueno, pues 863 00:31:51,920 --> 00:31:54,019 ¿qué hemos ganado respecto a hacer n1 864 00:31:54,019 --> 00:31:55,920 n2, n3? Pues que 865 00:31:55,920 --> 00:31:57,700 ahora las variables 866 00:31:57,700 --> 00:31:59,980 su nombre se diferencia por el numerito 867 00:31:59,980 --> 00:32:01,980 entero que pongamos aquí. Pues si 868 00:32:01,980 --> 00:32:03,960 ponemos un contador que se 869 00:32:03,960 --> 00:32:05,400 vaya incrementando, por ejemplo 870 00:32:05,400 --> 00:32:07,839 podemos hacer un barrido por 871 00:32:07,839 --> 00:32:10,059 todo el array, cosa que no podríamos 872 00:32:10,059 --> 00:32:11,960 hacer si las variables están sueltas 873 00:32:11,960 --> 00:32:13,359 n1, n2, n3 874 00:32:13,359 --> 00:32:16,099 pero ahora son n0, n1 875 00:32:16,099 --> 00:32:17,799 n2, entonces 876 00:32:17,799 --> 00:32:18,440 por ejemplo 877 00:32:18,440 --> 00:32:22,019 Vamos a asignar un 1 878 00:32:22,019 --> 00:32:24,059 A todos los valores del array 879 00:32:24,059 --> 00:32:27,000 Obviamente podríamos hacer esto 880 00:32:27,000 --> 00:32:27,940 Pero que es un rollo, ¿no? 881 00:32:27,960 --> 00:32:29,700 ¿Puedo hacer un array de arrays? 882 00:32:30,000 --> 00:32:30,880 Sí, sí, sí 883 00:32:30,880 --> 00:32:32,660 Ahora ya lo... 884 00:32:32,660 --> 00:32:35,299 Un array de millones de arrays 885 00:32:35,299 --> 00:32:40,259 Vale, a ver 886 00:32:40,259 --> 00:32:41,819 Vamos a poner a 1 887 00:32:41,819 --> 00:32:43,539 Todas las posiciones del array 888 00:32:43,539 --> 00:32:45,599 Podríamos hacerlo así, ¿verdad? 889 00:32:45,720 --> 00:32:46,440 Y una por una 890 00:32:46,440 --> 00:32:48,180 Podríamos ir una por una 891 00:32:48,180 --> 00:32:50,000 n0, n1, n2 892 00:32:50,000 --> 00:32:51,920 pero entonces sí que no hemos ganado nada 893 00:32:51,920 --> 00:32:54,720 no hemos ganado nada respecto a usarlo 894 00:32:54,720 --> 00:32:56,619 como variables sueltas 895 00:32:56,619 --> 00:33:02,039 no habríamos ganado nada 896 00:33:02,039 --> 00:33:03,480 luego es una tontería hacer un array 897 00:33:03,480 --> 00:33:06,059 para luego trabajar con él igual que 898 00:33:06,059 --> 00:33:08,039 trabajamos con variables sueltas, es una tontería 899 00:33:08,039 --> 00:33:09,539 luego no lo haríamos así 900 00:33:09,539 --> 00:33:11,579 nos aprovechamos de 901 00:33:11,579 --> 00:33:13,359 esto de aquí dentro 902 00:33:13,359 --> 00:33:15,319 nos aprovechamos de esto de aquí dentro 903 00:33:15,319 --> 00:33:17,359 y ahora ya 904 00:33:17,359 --> 00:33:20,220 el bucle que más se adapta 905 00:33:20,220 --> 00:33:21,400 para trabajar con for 906 00:33:21,400 --> 00:33:24,079 perdón, para trabajar con a raíz es el for 907 00:33:24,079 --> 00:33:26,180 porque tiene dentro una variable 908 00:33:26,180 --> 00:33:27,599 índice que yo puedo poner 909 00:33:27,599 --> 00:33:31,339 entonces 910 00:33:31,339 --> 00:33:33,500 esto mismo 911 00:33:33,500 --> 00:33:35,859 sería mucho mejor hacerlo así 912 00:33:35,859 --> 00:33:47,089 claro 913 00:33:47,089 --> 00:33:49,630 entonces este for se ejecuta 914 00:33:49,630 --> 00:33:51,450 para igual a 0, para igual a 1 915 00:33:51,450 --> 00:33:53,309 para igual a 2, pues yo me aprovecho 916 00:33:53,309 --> 00:33:55,910 y está ahí que vaya siendo 917 00:33:55,910 --> 00:33:57,869 los sucesivos índices 918 00:33:57,869 --> 00:34:00,450 las sucesivas posiciones, me aprovecho de eso 919 00:34:00,450 --> 00:34:03,309 y ahora ya 920 00:34:03,309 --> 00:34:06,450 solamente con una única 921 00:34:06,450 --> 00:34:08,369 sentencia for, estoy haciendo 922 00:34:08,369 --> 00:34:10,070 n0 igual a 1, n0 igual a 2 923 00:34:10,070 --> 00:34:10,949 n0 igual a 3 924 00:34:10,949 --> 00:34:12,090 en este tema nos quedaremos un ratito 925 00:34:12,090 --> 00:34:15,090 porque quiero decir, esto tiene chicha 926 00:34:15,090 --> 00:34:16,949 bueno, claro, ahora ahí se pueden hacer 927 00:34:16,949 --> 00:34:18,889 ya muchísimas cosas y claro, tenemos un listado 928 00:34:18,889 --> 00:34:20,070 de nuestros ejercicios para practicar 929 00:34:20,070 --> 00:34:22,929 no digo que 930 00:34:22,929 --> 00:34:24,969 nos dejes un tiempo 931 00:34:24,969 --> 00:34:25,829 a asimilarlo 932 00:34:25,829 --> 00:34:27,269 Que sí, hombre, que sí, que sí, que sí. 933 00:34:27,449 --> 00:34:29,250 No os asustéis. Tranquilos. 934 00:34:30,789 --> 00:34:31,230 Vale. 935 00:34:34,050 --> 00:34:35,230 Pero realmente 936 00:34:35,230 --> 00:34:36,809 esto es todo. 937 00:34:37,630 --> 00:34:39,030 Lo que pasa es que ahora hay que 938 00:34:39,030 --> 00:34:41,710 saber programar para hacer 939 00:34:41,710 --> 00:34:43,389 los algoritmos con los clientes. 940 00:34:44,070 --> 00:34:45,409 Ya sabemos todo y ya sabemos programar. 941 00:34:45,750 --> 00:34:47,630 Pues de programación estructurada lo sabéis 942 00:34:47,630 --> 00:34:48,369 todo. 943 00:34:48,369 --> 00:34:49,489 Lo sabéis estructurado. 944 00:34:50,389 --> 00:34:52,050 Lo que pasa es que estamos en... 945 00:34:52,050 --> 00:34:53,369 Nos falta programación. 946 00:34:53,469 --> 00:34:54,309 Vamos a trabajar. 947 00:34:54,309 --> 00:34:57,050 No, hablamos de estructurada 948 00:34:57,050 --> 00:34:57,969 Pero orientada a objetos 949 00:34:57,969 --> 00:34:59,690 Bueno, te falta mucha información 950 00:34:59,690 --> 00:35:03,889 Vale, pues esto es 951 00:35:03,889 --> 00:35:06,329 El for es el bucle 952 00:35:06,329 --> 00:35:09,289 El bucle ideal 953 00:35:09,289 --> 00:35:12,010 Para recorrer las posiciones de un array 954 00:35:12,010 --> 00:35:13,650 Porque este mismo i 955 00:35:13,650 --> 00:35:15,090 Que solemos poner dentro 956 00:35:15,090 --> 00:35:17,010 Lo usamos para ir barriendo 957 00:35:17,010 --> 00:35:19,690 Bueno, puesto n debería haber puesto números 958 00:35:19,690 --> 00:35:20,949 Debería haber puesto números, ¿no? 959 00:35:20,949 --> 00:35:21,710 Que es el nombre del array 960 00:35:21,710 --> 00:35:23,849 para que no quede tan feo 961 00:35:23,849 --> 00:35:25,849 vamos a ponerlo así 962 00:35:25,849 --> 00:35:28,090 y así no parece que me he equivocado 963 00:35:28,090 --> 00:35:32,690 que no parezca 964 00:35:32,690 --> 00:35:33,690 que me he equivocado 965 00:35:33,690 --> 00:35:34,369 así 966 00:35:34,369 --> 00:35:36,349 ¿vale? 967 00:35:37,329 --> 00:35:39,530 entonces ya está, respondiendo a tu pregunta 968 00:35:39,530 --> 00:35:41,650 pues a las posiciones sueltas 969 00:35:41,650 --> 00:35:42,789 tú accedes con el índice 970 00:35:42,789 --> 00:35:45,309 ¿que estás accediendo todas en fin una tras otra? 971 00:35:45,469 --> 00:35:47,550 sí, imaginaos que queremos 972 00:35:47,550 --> 00:35:49,150 acceder solamente a las pares 973 00:35:49,150 --> 00:35:51,610 pues hombre, pongamos aquí 974 00:35:51,610 --> 00:35:54,329 y más igual 2, por ejemplo 975 00:35:54,329 --> 00:35:56,769 ponemos y más igual 2 976 00:35:56,769 --> 00:35:57,909 y estamos haciendo solo las pares 977 00:35:57,909 --> 00:35:59,949 a 0, a 2, a 4 978 00:35:59,949 --> 00:36:02,329 ya uno juega con esto y hace lo que quiera 979 00:36:02,329 --> 00:36:02,909 dime 980 00:36:02,909 --> 00:36:08,610 en este ejemplo estoy poniendo 981 00:36:08,610 --> 00:36:10,409 uno en todas, pero cada uno 982 00:36:10,409 --> 00:36:12,530 hace lo que le da la gana, lo que necesite 983 00:36:12,530 --> 00:36:14,429 a lo mejor puedes saber 984 00:36:14,429 --> 00:36:16,429 introduzca valor, lo lees 985 00:36:16,429 --> 00:36:17,690 y se lo asignas a esa 986 00:36:17,690 --> 00:36:20,449 entonces cada posición del array tendrá la que 987 00:36:20,449 --> 00:36:21,550 se haya metido por teclado 988 00:36:21,550 --> 00:36:23,230 lo que sea que te hayan dicho 989 00:36:23,230 --> 00:36:25,650 entonces los arrays es una forma cómoda 990 00:36:25,650 --> 00:36:27,389 de manejar un montón de variables 991 00:36:27,389 --> 00:36:29,690 del mismo tipo, porque tú te declaras 992 00:36:29,690 --> 00:36:31,469 una única variable array con el 993 00:36:31,469 --> 00:36:32,670 tamaño que te dé la gana 994 00:36:32,670 --> 00:36:35,409 y luego recorrerla para 995 00:36:35,409 --> 00:36:36,730 hacer cosas, para 996 00:36:36,730 --> 00:36:39,369 rellenarla, para ver los valores 997 00:36:39,369 --> 00:36:41,429 que tiene, pues es mucho 998 00:36:41,429 --> 00:36:43,369 más sencillo, con variables sueltas 999 00:36:43,369 --> 00:36:44,590 sería una locura 1000 00:36:44,590 --> 00:36:51,840 ¿vale? aquí lo único 1001 00:36:51,840 --> 00:36:53,760 claro, cuidado, si uno 1002 00:36:53,760 --> 00:36:55,940 trata de acceder a una posición del array 1003 00:36:55,940 --> 00:36:57,980 para lo cual no hay valor, imaginaos que 1004 00:36:57,980 --> 00:37:00,320 hacemos n de 10 1005 00:37:00,320 --> 00:37:02,139 igual a 7 1006 00:37:02,139 --> 00:37:03,840 por ejemplo, la máquina 1007 00:37:03,840 --> 00:37:06,019 virtual, claro, se va a la posición 10 1008 00:37:06,019 --> 00:37:07,900 y ya no la tiene, porque tiene 1009 00:37:07,900 --> 00:37:10,219 de la acera la 9, pues automáticamente 1010 00:37:10,219 --> 00:37:11,679 saldría una excepción 1011 00:37:11,679 --> 00:37:14,599 a raíz 1012 00:37:14,599 --> 00:37:15,920 y de 1013 00:37:15,920 --> 00:37:18,199 ¿Puedes darle a la raíz n 1014 00:37:18,199 --> 00:37:20,159 el tamaño i? 1015 00:37:23,400 --> 00:37:23,599 ¿Eh? 1016 00:37:24,320 --> 00:37:24,880 ¿Eh? 1017 00:37:26,639 --> 00:37:27,639 Vale, entonces 1018 00:37:27,639 --> 00:37:30,000 un segundito 1019 00:37:30,000 --> 00:37:32,519 id quedándoos con los nombres de las excepciones 1020 00:37:32,519 --> 00:37:34,699 si de repente vuestro programa 1021 00:37:34,699 --> 00:37:36,800 se ha parado y ha salido en rojo 1022 00:37:36,800 --> 00:37:37,420 y os dice 1023 00:37:37,420 --> 00:37:40,340 Array in the sound of monosception, ¿qué os está diciendo? 1024 00:37:41,039 --> 00:37:42,840 vete corriendo donde hayas recorrido 1025 00:37:42,840 --> 00:37:44,400 un array, porque en algún momento 1026 00:37:44,400 --> 00:37:46,659 le has dado una posición que no existe 1027 00:37:46,659 --> 00:37:48,099 entonces tú dices 1028 00:37:48,099 --> 00:37:49,639 ah, este error va por ahí, te vas 1029 00:37:49,639 --> 00:37:52,420 como cuando nos salía el string 1030 00:37:52,420 --> 00:37:53,920 out of monosception 1031 00:37:53,920 --> 00:37:55,619 uy, cuidado, se ha hecho un charar 1032 00:37:55,619 --> 00:37:57,460 de una posición que no está 1033 00:37:57,460 --> 00:37:59,039 vale, pues lo mismo 1034 00:37:59,039 --> 00:38:01,460 si puedes crear, por ejemplo 1035 00:38:01,460 --> 00:38:03,500 la n la creas dentro del port 1036 00:38:03,500 --> 00:38:04,519 y le das 1037 00:38:04,519 --> 00:38:06,280 tamaño y 1038 00:38:06,280 --> 00:38:08,460 pero entonces estarías creando muchos arrays 1039 00:38:08,460 --> 00:38:10,940 o sea, te lo estaría volando cada vez 1040 00:38:10,940 --> 00:38:13,400 claro, a ver, con esto estarías creando 1041 00:38:13,400 --> 00:38:15,579 si tú puedes hacer esto siempre 1042 00:38:15,579 --> 00:38:17,019 que quieras, el tema es que quieres 1043 00:38:17,019 --> 00:38:19,320 aquí estarías creando uno de cero posiciones 1044 00:38:19,320 --> 00:38:21,239 que puedes, un array de cero se puede 1045 00:38:21,239 --> 00:38:23,719 otro de uno, pero arrays distintos 1046 00:38:23,719 --> 00:38:25,519 y cada vez sobre escribiendo 1047 00:38:25,519 --> 00:38:27,559 la anterior, cae sobre escribiendo 1048 00:38:27,559 --> 00:38:28,619 la anterior. Yo quería que 1049 00:38:28,619 --> 00:38:31,539 me guardase tantas posiciones como recorriese 1050 00:38:31,539 --> 00:38:33,420 ahí, en el mismo array, pero 1051 00:38:33,420 --> 00:38:35,460 sabiendo, sin saber la cantidad 1052 00:38:35,460 --> 00:38:36,559 de posiciones que va a recorrer ahí. 1053 00:38:38,179 --> 00:38:39,300 O sea, siempre se tiene que saber 1054 00:38:39,300 --> 00:38:41,599 qué cantidad va a usar toda la cantidad. Cuando tú declaras un array 1055 00:38:41,599 --> 00:38:43,860 tienes que, de partida, decirle 1056 00:38:43,860 --> 00:38:45,619 el tamaño, y ese ya se 1057 00:38:45,619 --> 00:38:46,460 queda para siempre. 1058 00:38:47,840 --> 00:38:49,260 Tú puedes crearte otro nuevo 1059 00:38:49,260 --> 00:38:51,539 pisando el que había, pero pisas los datos también, 1060 00:38:51,539 --> 00:38:52,280 lo pisas todo. 1061 00:38:53,199 --> 00:38:54,880 O sea, el tamaño nunca puede ser 1062 00:38:54,880 --> 00:39:00,440 Sí, lo puedes meter por escáner 1063 00:39:00,440 --> 00:39:02,099 Guardar una variable y ponerlo aquí 1064 00:39:02,099 --> 00:39:04,739 Pero ahora ya se va a quedar para ese valor siempre 1065 00:39:04,739 --> 00:39:06,840 El array se va a quedar para ese valor siempre 1066 00:39:06,840 --> 00:39:10,239 Si vuelves a hacer un newIn 1067 00:39:10,239 --> 00:39:11,119 Con otro valor 1068 00:39:11,119 --> 00:39:14,340 Este array desaparece y se crea uno nuevo limpio 1069 00:39:14,340 --> 00:39:15,820 ¿Y si editas el valor que ya estaba? 1070 00:39:16,139 --> 00:39:17,260 ¿Cómo que si editas? 1071 00:39:17,539 --> 00:39:20,199 Lo has puesto en un principio en newIn 10 1072 00:39:20,199 --> 00:39:22,480 Ahora, en vez de poner 10 1073 00:39:22,480 --> 00:39:24,460 Te confundes por lo que se haya 1074 00:39:24,460 --> 00:39:26,239 un dato 2 y poner 12 1075 00:39:26,239 --> 00:39:28,360 en ese mismo 1076 00:39:28,360 --> 00:39:30,119 yoing poner 12 1077 00:39:30,119 --> 00:39:31,719 bueno, pues será 12 1078 00:39:31,719 --> 00:39:33,880 pero se caerían los datos juntos 1079 00:39:33,880 --> 00:39:36,539 se quitarían los datos, no me imagino 1080 00:39:36,539 --> 00:39:37,219 sí, seguro 1081 00:39:37,219 --> 00:39:40,639 o sea, crearía uno nuevo con 12 1082 00:39:40,639 --> 00:39:42,500 y el otro a la basura 1083 00:39:42,500 --> 00:39:43,519 o sea, que no te puedes arrepentir 1084 00:39:43,519 --> 00:39:46,039 bueno, pero tienes que hacer las cosas bien 1085 00:39:46,039 --> 00:39:47,500 es que yo he de hacerlas bien 1086 00:39:47,500 --> 00:39:50,860 entonces, esto es una estructura estática 1087 00:39:50,860 --> 00:39:51,460 que se llama 1088 00:39:51,460 --> 00:39:53,920 estática porque no se puede mover 1089 00:39:53,920 --> 00:39:57,460 pero nosotros la vamos a hacer dinámica 1090 00:39:57,460 --> 00:39:58,739 para moverse 1091 00:39:58,739 --> 00:39:59,360 ya 1092 00:39:59,360 --> 00:40:02,659 porque lo podemos hacer con lo que sabemos 1093 00:40:02,659 --> 00:40:04,699 sabemos hacer prácticamente todo 1094 00:40:04,699 --> 00:40:06,840 imaginaos 1095 00:40:06,840 --> 00:40:07,960 que hemos cambiado de idea 1096 00:40:07,960 --> 00:40:10,820 y digo, ay, que ahora el usuario 1097 00:40:10,820 --> 00:40:12,840 me dice que quiere un numerito más 1098 00:40:12,840 --> 00:40:14,440 pues uno podría 1099 00:40:14,440 --> 00:40:16,760 crear un array con una posición 1100 00:40:16,760 --> 00:40:17,880 más de las que tiene esto 1101 00:40:17,880 --> 00:40:20,420 copiar este en el antiguo 1102 00:40:20,420 --> 00:40:22,380 y luego sobre escribirlo, o sea, todo 1103 00:40:22,380 --> 00:40:23,900 podemos hacer todo lo que queramos 1104 00:40:23,900 --> 00:40:26,099 todo, ¿vale? Lo iremos incorporando 1105 00:40:26,099 --> 00:40:26,860 en los ejercicios. 1106 00:40:27,659 --> 00:40:29,139 Vale, antes de parar, un segundo. 1107 00:40:30,480 --> 00:40:30,920 Sí. 1108 00:40:31,760 --> 00:40:32,239 Por favor. 1109 00:40:32,239 --> 00:40:32,420 Por favor. 1110 00:40:34,500 --> 00:40:38,920 ¿Tiene una cavitaria? 1111 00:40:39,239 --> 00:40:40,539 Porque le hemos dicho a los dos. 1112 00:40:41,739 --> 00:40:42,219 Yo veo 1113 00:40:42,219 --> 00:40:43,360 hay mucha sincronización. 1114 00:40:44,280 --> 00:40:44,460 Bueno. 1115 00:40:48,420 --> 00:40:49,420 Venga, venga, venga. 1116 00:40:50,940 --> 00:40:52,139 Vamos a irnos más tarde 1117 00:40:52,139 --> 00:40:52,760 por vuestra culpa. 1118 00:40:52,760 --> 00:41:02,480 si accedéis a una posición que no existe 1119 00:41:02,480 --> 00:41:03,940 va a salir esto de aquí 1120 00:41:03,940 --> 00:41:05,440 luego es típico 1121 00:41:05,440 --> 00:41:07,699 que uno ponga aquí un numerito 1122 00:41:07,699 --> 00:41:09,519 y a lo mejor no lo haya mirado bien 1123 00:41:09,519 --> 00:41:11,380 y no sea el que ha puesto aquí 1124 00:41:11,380 --> 00:41:14,239 entonces si el que has puesto aquí es mayor 1125 00:41:14,239 --> 00:41:15,480 que el que has puesto aquí 1126 00:41:15,480 --> 00:41:17,960 cuando el force salga por abajo 1127 00:41:17,960 --> 00:41:19,699 te va a decir el de la urban exception 1128 00:41:19,699 --> 00:41:20,619 para el programa no sé qué 1129 00:41:20,619 --> 00:41:22,940 entonces, ¿qué ocurre? 1130 00:41:23,619 --> 00:41:25,679 yo he dicho que esto es un objeto 1131 00:41:25,679 --> 00:41:28,000 entonces los objetos 1132 00:41:28,000 --> 00:41:29,840 pueden llamar a cosas 1133 00:41:29,840 --> 00:41:31,960 igual que una cadena 1134 00:41:31,960 --> 00:41:33,820 stream podría llamar 1135 00:41:33,820 --> 00:41:34,300 a len 1136 00:41:34,300 --> 00:41:37,380 y esto nos decía 1137 00:41:37,380 --> 00:41:39,900 cuántos caracteres tenía 1138 00:41:39,900 --> 00:41:41,860 pues el array 1139 00:41:41,860 --> 00:41:43,900 por ser un objeto, con el operador punto 1140 00:41:43,900 --> 00:41:45,940 también puede llamar a cosas, esa suerte tenemos 1141 00:41:45,940 --> 00:41:47,480 bueno, pues en particular 1142 00:41:47,480 --> 00:41:48,800 este array n 1143 00:41:48,800 --> 00:41:51,500 puede llamar a una cosa 1144 00:41:51,500 --> 00:41:52,579 que se llama length 1145 00:41:52,579 --> 00:41:56,019 que te dice el tamaño 1146 00:41:56,019 --> 00:41:57,579 con el que tú lo has declarado 1147 00:41:57,579 --> 00:41:58,360 claro, claro 1148 00:41:58,360 --> 00:41:59,900 en teoría ya lo sabes 1149 00:41:59,900 --> 00:42:00,920 hombre 1150 00:42:00,920 --> 00:42:04,340 sí, a ver 1151 00:42:04,340 --> 00:42:07,139 pero si te vas a mirar mil líneas más arriba 1152 00:42:07,139 --> 00:42:09,059 vale 1153 00:42:09,059 --> 00:42:10,780 y aparte 1154 00:42:10,780 --> 00:42:12,900 si te lo han pasado por parámetro 1155 00:42:12,900 --> 00:42:14,260 entonces cada vez usamos un programa 1156 00:42:14,260 --> 00:42:16,139 pero si te han pasado la raíz por parámetro 1157 00:42:16,139 --> 00:42:18,599 es imposible, puedes saber, porque lo ha declarado 1158 00:42:18,599 --> 00:42:20,639 otro programa, entonces ahí es imprescindible 1159 00:42:20,639 --> 00:42:22,579 que se puede declarar desde otra clase y usarlo 1160 00:42:22,579 --> 00:42:24,619 exacto, entonces ahí es imprescindible 1161 00:42:24,619 --> 00:42:26,639 ahora mismo como lo tenemos todo en el mismo código 1162 00:42:26,639 --> 00:42:28,940 con mirar arriba y ya está 1163 00:42:28,940 --> 00:42:30,480 ¿vale? un segundito, entonces 1164 00:42:30,480 --> 00:42:32,300 lo ideal, pero este es sin paréntesis 1165 00:42:32,300 --> 00:42:34,360 el de sin es con paréntesis 1166 00:42:34,360 --> 00:42:36,380 y este es sin, el de los arrays es sin 1167 00:42:36,380 --> 00:42:38,780 entonces ponemos esto aquí 1168 00:42:38,780 --> 00:42:40,880 y mucho más seguro 1169 00:42:40,880 --> 00:42:42,559 nos evita más problemas, dime 1170 00:42:42,559 --> 00:42:44,300 hay una forma de leer absolutamente 1171 00:42:44,300 --> 00:42:45,780 todos los números que ha puesto cada vez 1172 00:42:45,780 --> 00:42:48,380 con un for 1173 00:42:48,380 --> 00:42:50,679 con un for y pones el system out 1174 00:42:50,679 --> 00:42:51,519 o el numerito i 1175 00:42:51,519 --> 00:42:54,559 vale, pues venga, paramos aquí 1176 00:42:54,559 --> 00:42:58,500 un ratico