1 00:00:00,000 --> 00:00:12,740 Bueno, habíamos hecho la funcionalidad 1 de insertar, para lo cual habíamos puesto esta variable adicional, 2 00:00:13,460 --> 00:00:21,620 que era una variable que tenía un uso muy concreto, que es saber en cada momento cuántos alumnos había. 3 00:00:21,620 --> 00:00:28,660 Entonces, inicialmente hay cero, pero cuando ya se inserta el primer alumno, POS se queda incrementado. 4 00:00:28,660 --> 00:00:30,980 entonces pos es un contador de alumnos 5 00:00:30,980 --> 00:00:32,539 pero ya no solo un contador de alumnos 6 00:00:32,539 --> 00:00:35,000 sino el que cada vez que insertamos uno 7 00:00:35,000 --> 00:00:37,159 nos permite acceder 8 00:00:37,159 --> 00:00:39,100 a la posición en la que 9 00:00:39,100 --> 00:00:40,240 toca insertar el nuevo 10 00:00:40,240 --> 00:00:42,979 inicialmente cuando la aplicación arranca 11 00:00:42,979 --> 00:00:44,880 pos es cero, cero alumnos 12 00:00:44,880 --> 00:00:46,880 y efectivamente es en cero 13 00:00:46,880 --> 00:00:48,299 donde insertaremos ese nuevo 14 00:00:48,299 --> 00:00:50,659 pero sin embargo 15 00:00:50,659 --> 00:00:52,939 cuando insertemos el 16 00:00:52,939 --> 00:00:54,960 segundo alumno, pos habrá quedado 17 00:00:54,960 --> 00:00:56,399 valiendo uno, hay uno alumnos 18 00:00:56,399 --> 00:00:58,380 y efectivamente será en uno 19 00:00:58,380 --> 00:01:00,259 donde tengo que insertar el siguiente 20 00:01:00,259 --> 00:01:01,100 será en 1 21 00:01:01,100 --> 00:01:03,259 entonces POS tiene ese doble uso 22 00:01:03,259 --> 00:01:06,219 contador de cuántos alumnos hay en un momento dado 23 00:01:06,219 --> 00:01:08,120 realmente en este array 24 00:01:08,120 --> 00:01:09,459 que tiene 100 huecos 25 00:01:09,459 --> 00:01:12,019 y también indicar 26 00:01:12,019 --> 00:01:13,879 cuál es la primera posición libre 27 00:01:13,879 --> 00:01:15,379 la primera posición libre 28 00:01:15,379 --> 00:01:18,060 cuando la aplicación arranca la primera posición libre es la 0 29 00:01:18,060 --> 00:01:19,819 pero cuando tenemos un alumno 30 00:01:19,819 --> 00:01:21,859 la primera posición libre es la 1 31 00:01:21,859 --> 00:01:23,019 porque está ocupada la 0 32 00:01:23,019 --> 00:01:24,879 ¿No deberíamos hacer también aquí para dejar 33 00:01:24,879 --> 00:01:26,900 el array de alumnos valiendo 34 00:01:26,900 --> 00:01:30,959 ¿Cómo? 35 00:01:31,099 --> 00:01:33,400 Para dejar el array de alumnos valiendo la posición total 36 00:01:33,400 --> 00:01:35,319 de los alumnos, no deberíamos hacer en el bucle 37 00:01:35,319 --> 00:01:37,180 meter lo del ejercicio anterior 38 00:01:37,180 --> 00:01:39,060 de una array auxiliar 39 00:01:39,060 --> 00:01:41,319 que los copie y luego los devuelva a un array 40 00:01:41,319 --> 00:01:43,500 de tamaño total. Vale, a ver, o sea 41 00:01:43,500 --> 00:01:45,519 lo que pasa es, si queremos no tener 42 00:01:45,519 --> 00:01:47,540 ese array ahí, pero en principio esta sería 43 00:01:47,540 --> 00:01:49,560 una solución, ¿no? Yo tengo hasta un máximo de 44 00:01:49,560 --> 00:01:51,379 100, y luego ese 100 45 00:01:51,379 --> 00:01:53,420 a veces está ocupado hasta aquí, a veces hasta aquí, a veces 46 00:01:53,420 --> 00:01:55,140 hasta aquí. Es una posibilidad, ¿vale? 47 00:01:55,180 --> 00:01:56,579 Luego vamos a hacer una versión 2. 48 00:01:57,340 --> 00:01:59,019 ¿Vale? Pero esta es una opción sencilla. 49 00:01:59,459 --> 00:02:01,079 Yo digo, como mucho voy a tener 100. 50 00:02:01,200 --> 00:02:01,760 Como mucho. 51 00:02:03,120 --> 00:02:05,159 Que luego la aplicación cambia y te dicen, 52 00:02:05,260 --> 00:02:07,120 oye, que a lo mejor tienes hasta 1000. 53 00:02:07,599 --> 00:02:09,240 Pues no te queda más remedio que entrar 54 00:02:09,240 --> 00:02:11,000 y poner aquí un 0 más. 55 00:02:11,780 --> 00:02:13,360 ¿Vale? Entonces es una versión 56 00:02:13,360 --> 00:02:15,740 bueno, regularcilla, 57 00:02:15,900 --> 00:02:17,759 porque si me cambian las condiciones 58 00:02:17,759 --> 00:02:19,819 y me dicen, oye, no, que puede 59 00:02:19,819 --> 00:02:21,699 que tengas 150. Pues tienes que venir al 60 00:02:21,699 --> 00:02:23,280 código, cambiarlo 61 00:02:23,280 --> 00:02:25,740 volverlo a compilar para volverlo 62 00:02:25,740 --> 00:02:27,520 ya a ejecutar, luego habría 63 00:02:27,520 --> 00:02:29,280 la versión 2 en la cual efectivamente 64 00:02:29,280 --> 00:02:31,379 vamos a que este programa 65 00:02:31,379 --> 00:02:33,500 estire y encoge la 66 00:02:33,500 --> 00:02:35,360 raíz según van llegando, con lo cual si llegan 67 00:02:35,360 --> 00:02:37,680 150, estira hasta 150, no hay problema 68 00:02:37,680 --> 00:02:39,500 vale, pero esta versión es la más 69 00:02:39,500 --> 00:02:41,620 sencilla y esta versión necesita 70 00:02:41,620 --> 00:02:43,580 esta variable adicional con esa 71 00:02:43,580 --> 00:02:44,740 función que hemos dicho 72 00:02:44,740 --> 00:02:47,479 contador de alumnos en un 73 00:02:47,479 --> 00:02:49,439 momento dado y también 74 00:02:49,439 --> 00:02:51,400 sirve como indicador 75 00:02:51,400 --> 00:02:53,759 de primera posición libre en la que no hay alumnos. 76 00:02:53,919 --> 00:02:54,900 Primera en la que no hay alumnos. 77 00:02:55,919 --> 00:02:57,120 Vale, pues con eso 78 00:02:57,120 --> 00:02:59,560 insertar era eso. Leíamos el 79 00:02:59,560 --> 00:03:01,639 nombre, lo guardábamos en la posición 80 00:03:01,639 --> 00:03:03,300 que tocaba, la nota 81 00:03:03,300 --> 00:03:05,780 la poníamos a cero cuando insertábamos un alumno, 82 00:03:06,360 --> 00:03:07,419 la guardamos en la posición 83 00:03:07,419 --> 00:03:09,439 que toca y esta se queda incrementada. El caso dos 84 00:03:09,439 --> 00:03:10,419 es el que nos saltamos. 85 00:03:11,379 --> 00:03:13,180 El caso tres, poner la nota a un alumno 86 00:03:13,180 --> 00:03:15,520 pues era 87 00:03:15,520 --> 00:03:17,379 sencillo también 88 00:03:17,379 --> 00:03:19,599 porque nos daban 89 00:03:19,599 --> 00:03:21,419 nombre del alumno al que le quieres poner la nota. 90 00:03:21,659 --> 00:03:23,599 Esta nota que quieres poner, esta otra. 91 00:03:24,300 --> 00:03:25,400 Recorríamos el array 92 00:03:25,400 --> 00:03:27,780 hasta las 93 00:03:27,780 --> 00:03:29,500 posiciones ocupadas solo. 94 00:03:30,240 --> 00:03:31,680 Recorríamos el array solo hasta 95 00:03:31,680 --> 00:03:32,840 las posiciones ocupadas. 96 00:03:34,120 --> 00:03:35,719 Y para cada alumno 97 00:03:35,719 --> 00:03:37,319 si coincidía con este nombre 98 00:03:37,319 --> 00:03:39,080 le asignábamos la nota 99 00:03:39,080 --> 00:03:41,520 a ese alumno en esa posición y que habíamos 100 00:03:41,520 --> 00:03:43,960 encontrado que coincidía con el nombre a buscar. 101 00:03:44,699 --> 00:03:45,840 Nombre es el nombre de búsqueda. 102 00:03:47,039 --> 00:03:47,740 En cuanto 103 00:03:47,740 --> 00:03:49,419 encontrábamos la posición y 104 00:03:49,419 --> 00:03:51,840 dentro del for, la posición y 105 00:03:51,840 --> 00:03:53,919 en la que teníamos un alumno con ese 106 00:03:53,919 --> 00:03:55,780 nombre, pues en esa misma 107 00:03:55,780 --> 00:03:58,240 posición pero del array paralelo notas 108 00:03:58,240 --> 00:03:59,759 le poníamos la nota 109 00:03:59,759 --> 00:04:01,919 y ya está, y además avisábamos de que lo habíamos 110 00:04:01,919 --> 00:04:03,419 encontrado, avisábamos 111 00:04:03,419 --> 00:04:06,020 y esto nos permitía 112 00:04:06,020 --> 00:04:07,800 que si no lo encontrábamos 113 00:04:07,800 --> 00:04:09,780 la aplicación nos avisara y así queda 114 00:04:09,780 --> 00:04:11,259 más bonita 115 00:04:11,259 --> 00:04:14,120 claro, porque si ejecutamos 116 00:04:14,120 --> 00:04:16,040 esto y le decimos 117 00:04:16,040 --> 00:04:17,800 venga, vamos a insertar un alumno 118 00:04:17,800 --> 00:04:19,560 Puesala 119 00:04:19,560 --> 00:04:21,319 Pepito 120 00:04:21,319 --> 00:04:23,980 Y ahora ya está insertado 121 00:04:23,980 --> 00:04:25,899 Vamos a poner nota a un alumno 122 00:04:25,899 --> 00:04:27,379 Nombre de alumno 123 00:04:27,379 --> 00:04:28,540 Juanito 124 00:04:28,540 --> 00:04:30,519 Nota que quiere poner alumno, 5 125 00:04:30,519 --> 00:04:33,120 Pues ese alumno no existe 126 00:04:33,120 --> 00:04:34,680 ¿Cómo? 127 00:04:36,870 --> 00:04:37,189 ¿Vale? 128 00:04:39,810 --> 00:04:41,709 ¿Pero por qué hacéis ruido todo el rato? 129 00:04:46,709 --> 00:04:47,790 Están llamando a alguien 130 00:04:47,790 --> 00:04:55,269 Venga, a ver, entonces 131 00:04:55,269 --> 00:04:58,129 Y luego habíamos hecho la funcionalidad del listado de notas 132 00:04:58,129 --> 00:05:00,689 Para comprobar que lo que hacíamos funcionaba 133 00:05:00,689 --> 00:05:01,829 ¿Vale? 134 00:05:01,870 --> 00:05:04,050 Un for para recorrer el array de alumnos 135 00:05:04,050 --> 00:05:05,069 Y el array de notas 136 00:05:05,069 --> 00:05:07,829 Un for y este for pues nada 137 00:05:07,829 --> 00:05:10,310 Nos muestra el alumno de posición y 138 00:05:10,310 --> 00:05:12,629 La nota de posición y para todos los alumnos 139 00:05:12,629 --> 00:05:14,189 Dentro del for 140 00:05:14,189 --> 00:05:16,730 Y ya no habíamos hecho más 141 00:05:16,730 --> 00:05:18,430 funcionalidades de estas. 142 00:05:19,110 --> 00:05:20,990 Venga, vamos a 143 00:05:20,990 --> 00:05:22,790 eliminar a un alumno 144 00:05:22,790 --> 00:05:25,189 dado su nombre. Claro, eliminar 145 00:05:25,189 --> 00:05:26,209 a un alumno dado su nombre. 146 00:05:27,009 --> 00:05:29,110 ¿Alguien ha hecho esta de eliminar? Que levante 147 00:05:29,110 --> 00:05:31,029 la mano. ¿Alguien ha hecho 148 00:05:31,029 --> 00:05:32,110 esta de eliminar y le funciona? 149 00:05:33,110 --> 00:05:34,269 Que levante la mano. 150 00:05:36,410 --> 00:05:37,230 Ahí hay una 151 00:05:37,230 --> 00:05:37,850 gran diferencia. 152 00:05:39,850 --> 00:05:41,110 William, ¿tú tampoco la has 153 00:05:41,110 --> 00:05:41,310 hecho? 154 00:05:41,310 --> 00:05:47,149 Nadie la ha hecho 155 00:05:47,149 --> 00:05:49,569 John 156 00:05:49,569 --> 00:05:51,490 John me ha dicho que le elimina todo 157 00:05:51,490 --> 00:05:52,569 Así que no me vale 158 00:05:52,569 --> 00:05:54,430 No me has dicho eso que no te funciona 159 00:05:54,430 --> 00:06:01,370 Bueno, me lo tomaré como un no funciona 160 00:06:01,370 --> 00:06:06,670 Sí, pero la funcionalidad no era eliminar todo 161 00:06:06,670 --> 00:06:07,889 Era eliminar un alumno 162 00:06:07,889 --> 00:06:11,470 Sí, esa es la que es 163 00:06:11,470 --> 00:06:13,709 Examen, cárgate todo 164 00:06:13,709 --> 00:06:15,589 Hace un programa que no funcione 165 00:06:15,589 --> 00:06:16,649 Y que cuelgue el equipo 166 00:06:16,649 --> 00:06:18,290 Veréis como aprobáis todos 167 00:06:18,290 --> 00:06:19,209 Bueno, no es tan fácil 168 00:06:19,209 --> 00:06:21,209 No es tan fácil 169 00:06:21,209 --> 00:06:23,250 Sí, bueno 170 00:06:23,250 --> 00:06:25,769 A ver, pues nada 171 00:06:25,769 --> 00:06:27,310 Para eliminar un nombre 172 00:06:27,310 --> 00:06:29,310 Primero vamos a leer, vamos a decirle 173 00:06:29,310 --> 00:06:32,050 A ver, ¿a qué alumno quiere usted eliminar? 174 00:06:38,329 --> 00:06:39,410 Nombre alumno 175 00:06:39,410 --> 00:06:43,129 Pues nada, leemos el nombre del alumno que tenemos que eliminar. 176 00:06:52,040 --> 00:06:57,500 Y ahora, ahora ya viene que pensemos qué algoritmo usar. 177 00:06:58,060 --> 00:07:08,730 Vale, pues entonces, tendremos, a ver si más o menos lo vemos. 178 00:07:10,490 --> 00:07:16,889 Este es nuestro array de alumnos, con todas sus posiciones. 179 00:07:16,889 --> 00:07:41,970 Entonces, a lo mejor en un momento dado, solamente, a ver, ¿vale? Las que tenemos rellenas en un momento dado son igual, por ejemplo, son estas tres primeras, pues son pos, ¿vale? Estas de aquí, por ejemplo, ¿vale? Tenemos rellenas las tres primeras, por ejemplo, solo. 180 00:07:41,970 --> 00:07:44,430 con lo cual tenemos rellenas la 0, la 1 181 00:07:44,430 --> 00:07:46,089 y la 2 182 00:07:46,089 --> 00:07:47,310 hasta la pos menos 1 183 00:07:47,310 --> 00:07:50,310 vale, entonces vamos a suponer que 184 00:07:50,310 --> 00:07:51,490 me dan un nombre 185 00:07:51,490 --> 00:07:53,509 y yo cuando busque en el array 186 00:07:53,509 --> 00:07:54,649 quiero 187 00:07:54,649 --> 00:07:57,970 he comprobado que es este 188 00:07:57,970 --> 00:08:02,680 vale, pues esto ya lo hemos hecho 189 00:08:02,680 --> 00:08:04,579 lo que tenemos es que todos los que están 190 00:08:04,579 --> 00:08:05,620 a partir de este 191 00:08:05,620 --> 00:08:08,139 subirlos a una posición más arriba 192 00:08:08,139 --> 00:08:10,060 pero esto lo hicimos en otro ejercicio 193 00:08:10,060 --> 00:08:12,519 si empezábamos a subir desde justo 194 00:08:12,519 --> 00:08:13,160 el siguiente 195 00:08:13,160 --> 00:08:15,240 Entonces, al 196 00:08:15,240 --> 00:08:17,540 Ah, bueno, no, en este caso 197 00:08:17,540 --> 00:08:19,600 Sí que subimos este aquí 198 00:08:19,600 --> 00:08:21,779 ¿Vale? Y este se elimina, perfecto 199 00:08:21,779 --> 00:08:22,860 Y este se queda duplicado 200 00:08:22,860 --> 00:08:24,959 Pero no pasa nada porque luego vamos a subir 201 00:08:24,959 --> 00:08:25,959 Este aquí 202 00:08:25,959 --> 00:08:28,959 Y luego vamos a subir este ahí 203 00:08:28,959 --> 00:08:30,800 ¿Vale? Entonces 204 00:08:30,800 --> 00:08:33,919 Desde una posición siguiente 205 00:08:33,919 --> 00:08:35,360 A la que tenemos que eliminar 206 00:08:35,360 --> 00:08:37,159 Desde una posición siguiente, desde esta 207 00:08:37,159 --> 00:08:38,860 Tenemos que empezar con un for 208 00:08:38,860 --> 00:08:41,139 Que vaya desde esta hasta la última 209 00:08:41,139 --> 00:08:42,039 De las rellenas 210 00:08:42,039 --> 00:08:43,799 sea la que sea 211 00:08:43,799 --> 00:08:46,799 hasta pos-1 212 00:08:46,799 --> 00:08:48,299 que es la última que tenemos rellena 213 00:08:48,299 --> 00:08:50,440 tenemos rellena desde 0 hasta pos-1 214 00:08:50,440 --> 00:08:52,320 pues desde la siguiente 215 00:08:52,320 --> 00:08:54,220 a la que tenemos que eliminar, tendremos que hacer 216 00:08:54,220 --> 00:08:56,360 a esta le copias esta 217 00:08:56,360 --> 00:08:58,480 con lo cual este alumno ya desapareció 218 00:08:58,480 --> 00:09:00,240 y este ha subido arriba 219 00:09:00,240 --> 00:09:02,279 y aquí se queda duplicado, claro 220 00:09:02,279 --> 00:09:04,500 porque he asignado este alumno aquí arriba 221 00:09:04,500 --> 00:09:06,559 pero ahora, a este copiaremos el siguiente 222 00:09:06,559 --> 00:09:08,019 hasta pos-1 223 00:09:08,019 --> 00:09:11,000 bueno, hasta pos-1 224 00:09:11,000 --> 00:09:12,340 Ese lo copiarás en el de arriba 225 00:09:12,340 --> 00:09:14,159 Y ya pues menos uno te sobra 226 00:09:14,159 --> 00:09:14,860 Con lo cual 227 00:09:14,860 --> 00:09:17,480 Sí, sí tenemos 228 00:09:17,480 --> 00:09:18,179 A ver 229 00:09:18,179 --> 00:09:19,179 Es que 230 00:09:19,179 --> 00:09:20,220 Sí, a ver 231 00:09:20,220 --> 00:09:21,879 Es que la pizarra es más fácil 232 00:09:21,879 --> 00:09:24,440 Uy, Rosa 233 00:09:24,440 --> 00:09:27,279 La que me habrá echado esta mañana 234 00:09:27,279 --> 00:09:28,179 Cuando ha visto esto 235 00:09:28,179 --> 00:09:28,759 Ya lo dijo 236 00:09:28,759 --> 00:09:29,419 Ya lo ha visto 237 00:09:29,419 --> 00:09:30,200 Ya lo ha visto 238 00:09:30,200 --> 00:09:31,480 Uy, qué suerte 239 00:09:31,480 --> 00:09:33,159 Solo vio la de Paul y ya 240 00:09:33,159 --> 00:09:34,899 Pero ha dado una pertenencia más 241 00:09:34,899 --> 00:09:35,500 Y es que 242 00:09:35,500 --> 00:09:37,500 Me he librado por los pelos 243 00:09:37,500 --> 00:09:38,679 A ver 244 00:09:38,679 --> 00:09:40,139 Ha visto lo de Paul 245 00:09:40,139 --> 00:09:41,419 Madre mía 246 00:09:41,419 --> 00:09:43,960 Ahí ya ha colapsado y ya no ha querido ver más 247 00:09:43,960 --> 00:09:44,539 Prácticamente 248 00:09:44,539 --> 00:09:48,220 Bueno, a ver, entonces 249 00:09:48,220 --> 00:09:50,399 A ver 250 00:09:50,399 --> 00:09:51,759 Este es nuestro array 251 00:09:51,759 --> 00:09:54,419 Tenemos a lo mejor 252 00:09:54,419 --> 00:09:56,240 Rellenas, estas de aquí 253 00:09:56,240 --> 00:09:57,779 Por ejemplo, estas de aquí 254 00:09:57,779 --> 00:09:59,360 Que van de 0 255 00:09:59,360 --> 00:10:01,539 A pos-1 256 00:10:01,539 --> 00:10:03,100 ¿Verdad? 257 00:10:03,639 --> 00:10:06,080 Entonces, por ejemplo, queremos eliminar esta 258 00:10:06,080 --> 00:10:07,779 ¿Pero por qué pos-1? 259 00:10:07,779 --> 00:10:10,100 Hombre, porque tienes posposiciones rellenas 260 00:10:10,100 --> 00:10:11,820 Pues van desde la 0 hasta pos-1 261 00:10:11,820 --> 00:10:16,240 Si pos es 7 262 00:10:16,240 --> 00:10:17,519 Tienes de la 0 a la 6 263 00:10:17,519 --> 00:10:19,000 Pues ya está 264 00:10:19,000 --> 00:10:21,700 Claro, la primera es la 0 265 00:10:21,700 --> 00:10:24,659 Claro, 7 posiciones 266 00:10:24,659 --> 00:10:26,320 Un total de 7 posiciones 267 00:10:26,320 --> 00:10:27,940 Se enumeran desde 0 hasta 6 268 00:10:27,940 --> 00:10:29,879 Un total de 9 posiciones 269 00:10:29,879 --> 00:10:31,279 Se enumeran desde 0 hasta 8 270 00:10:31,279 --> 00:10:33,980 Un total de pos-posiciones 271 00:10:33,980 --> 00:10:35,779 Se enumeran desde 0 hasta pos-1 272 00:10:35,779 --> 00:10:38,799 vale, pues entonces, ese es el que queremos eliminar 273 00:10:38,799 --> 00:10:40,279 pues nuestro objetivo es 274 00:10:40,279 --> 00:10:41,759 que este que está aquí 275 00:10:41,759 --> 00:10:44,759 asignárselo a este 276 00:10:44,759 --> 00:10:46,220 con lo cual 277 00:10:46,220 --> 00:10:48,519 aquí se quedará el PP 278 00:10:48,519 --> 00:10:49,120 este 279 00:10:49,120 --> 00:10:50,899 ¿vale? 280 00:10:52,120 --> 00:10:54,179 y este ya se habrá quedado sobrescrito 281 00:10:54,179 --> 00:10:56,580 aquí se queda duplicado, claro, pero no pasa nada 282 00:10:56,580 --> 00:10:57,580 porque el siguiente 283 00:10:57,580 --> 00:10:59,460 ahora se asignará aquí 284 00:10:59,460 --> 00:11:02,320 con lo cual este se quedará sobrescrito 285 00:11:02,320 --> 00:11:04,360 este PP, pero no pasa nada porque ya antes había 286 00:11:04,360 --> 00:11:05,039 pasado arriba 287 00:11:05,039 --> 00:11:06,840 y así con todos 288 00:11:06,840 --> 00:11:08,700 hasta el pos-1 289 00:11:08,700 --> 00:11:11,799 que es el último que tendremos que asignar 290 00:11:11,799 --> 00:11:12,700 al pos-2 291 00:11:12,700 --> 00:11:15,659 y este se va a quedar duplicado 292 00:11:15,659 --> 00:11:17,659 pero no pasa nada porque lo que 293 00:11:17,659 --> 00:11:19,759 hacemos es, como este ya no nos importa 294 00:11:19,759 --> 00:11:21,399 esta parte de la raya nos importa 295 00:11:21,399 --> 00:11:22,860 cuando ya hemos terminado de hacer esto 296 00:11:22,860 --> 00:11:25,679 a la variable pos, que es el indicador de posiciones 297 00:11:25,679 --> 00:11:26,980 válidas, la decrementamos 298 00:11:26,980 --> 00:11:29,799 de forma que lo que 299 00:11:29,799 --> 00:11:32,000 haya de aquí hacia abajo ya no nos importe 300 00:11:32,000 --> 00:11:33,620 claro, esa información no nos 301 00:11:33,620 --> 00:11:35,460 importa, está ahí hacia abajo 302 00:11:35,460 --> 00:11:37,240 solo nos importa esta 303 00:11:37,240 --> 00:11:39,200 entonces solo tenemos que hacer eso 304 00:11:39,200 --> 00:11:41,639 un for que vaya desde la 305 00:11:41,639 --> 00:11:43,600 que tenemos que eliminar hasta 306 00:11:43,600 --> 00:11:45,840 la penúltima copiando el siguiente 307 00:11:45,840 --> 00:11:47,179 en el anterior, el siguiente en el anterior 308 00:11:47,179 --> 00:11:49,899 y luego decrementar pos al final 309 00:11:49,899 --> 00:11:51,799 ya está, entonces 310 00:11:51,799 --> 00:11:55,080 eso 311 00:11:55,080 --> 00:11:59,320 ahora ya buscamos 312 00:12:06,620 --> 00:12:10,899 Vale, pues entonces ahora ya vamos a buscar, 313 00:12:11,059 --> 00:12:15,460 primero tenemos que buscar en qué posición está el alumno a eliminar, 314 00:12:15,659 --> 00:12:17,600 porque siempre tenemos que pensarlo por partes. 315 00:12:18,419 --> 00:12:20,919 Otra cosa es una vez que ya tenemos las partes hechas, 316 00:12:21,159 --> 00:12:25,700 pues veamos que podemos a lo mejor hacerlo todo en un código más compacto 317 00:12:25,700 --> 00:12:28,720 o aprovechar un mismo bucle para hacer dos cosas a la vez, 318 00:12:29,259 --> 00:12:32,940 pero siempre de partida, sobre todo si estamos orientándonos, 319 00:12:33,379 --> 00:12:34,519 pensémoslo todo por partes. 320 00:12:35,019 --> 00:12:36,580 Entonces ya hemos leído el nombre del alumno. 321 00:12:36,620 --> 00:12:37,779 Muy bien, ¿qué nos falta ahora? 322 00:12:38,460 --> 00:12:40,259 Localizar la posición donde está ese alumno. 323 00:12:41,039 --> 00:12:42,679 Y luego ya hacer eso que hemos dicho ahí. 324 00:12:43,000 --> 00:12:45,019 Pero primero hay que localizar la posición donde está el alumno. 325 00:12:45,700 --> 00:12:47,200 Venga, pues vamos a localizarla. 326 00:12:48,200 --> 00:12:50,740 Claro, vamos a localizar la posición donde está el alumno. 327 00:12:52,080 --> 00:12:55,100 Venga, pues entonces vamos a buscar en este for 328 00:12:55,100 --> 00:12:59,440 que recorre todas las posiciones válidas. 329 00:12:59,440 --> 00:13:12,210 Ahora ya hacemos 330 00:13:12,210 --> 00:13:14,049 Si alumnos de i 331 00:13:14,049 --> 00:13:16,450 Resulta que es igual 332 00:13:16,450 --> 00:13:24,389 Que es igual al nombre que me han eliminado 333 00:13:24,389 --> 00:13:24,850 Ya está 334 00:13:24,850 --> 00:13:28,529 Esa posición i es la que estoy buscando 335 00:13:28,529 --> 00:13:29,929 Esta es la que estoy buscando 336 00:13:29,929 --> 00:13:31,929 Pues la guardo aquí 337 00:13:31,929 --> 00:13:35,320 Ya la habría encontrado 338 00:13:35,320 --> 00:13:37,000 Entonces, esa primera parte 339 00:13:37,000 --> 00:13:38,559 Ese trocito de código 340 00:13:38,559 --> 00:13:40,899 Cuyo uso es exclusivamente 341 00:13:40,899 --> 00:13:42,759 encontrar la posición 342 00:13:42,759 --> 00:13:43,960 donde está el alumno a eliminar 343 00:13:43,960 --> 00:13:45,379 sería esto 344 00:13:45,379 --> 00:13:48,360 recorro el array 345 00:13:48,360 --> 00:13:50,759 en todas las posiciones que tienen algo real 346 00:13:50,759 --> 00:13:54,259 en cuanto encuentre un alumno 347 00:13:54,259 --> 00:13:56,279 en alguna de esas posiciones 348 00:13:56,279 --> 00:13:57,620 cuyo nombre coincide 349 00:13:57,620 --> 00:13:59,899 pues justo esa posición es la que estoy buscando 350 00:13:59,899 --> 00:14:03,259 no, la almaceno en inu 351 00:14:03,259 --> 00:14:04,879 la almaceno en la variable pos 352 00:14:04,879 --> 00:14:07,899 que es la que he preparado 353 00:14:07,899 --> 00:14:08,840 para guardar esa posición 354 00:14:08,840 --> 00:14:12,120 entonces cuando este for 355 00:14:12,120 --> 00:14:13,240 ha terminado 356 00:14:13,240 --> 00:14:16,259 ya en i estará la posición 357 00:14:16,259 --> 00:14:17,179 del alumno 358 00:14:17,179 --> 00:14:20,019 cuyo nombre es el que yo he leído 359 00:14:20,019 --> 00:14:24,269 o no 360 00:14:24,269 --> 00:14:26,629 porque si no hay ningún alumno 361 00:14:26,629 --> 00:14:28,090 con esa posición 362 00:14:28,090 --> 00:14:29,309 si no hay ninguno 363 00:14:29,309 --> 00:14:32,289 entonces nunca jamás 364 00:14:32,289 --> 00:14:33,269 habré entrado en el if 365 00:14:33,269 --> 00:14:36,090 entonces pos alumno se habrá quedado 366 00:14:36,090 --> 00:14:37,730 claro 367 00:14:37,730 --> 00:14:39,830 a ver 368 00:14:39,830 --> 00:14:41,570 físicamente valdrá 0 369 00:14:41,570 --> 00:14:43,889 pero para el compilador estará indefinido 370 00:14:43,889 --> 00:14:45,549 entonces aquí sería bonito 371 00:14:45,549 --> 00:14:47,889 por ejemplo, si le llamamos menos 1 372 00:14:47,889 --> 00:14:49,750 porque entonces ya, cuando salgamos 373 00:14:49,750 --> 00:14:50,870 de este for 374 00:14:50,870 --> 00:14:53,509 la forma de saber si el alumno 375 00:14:53,509 --> 00:14:56,009 apareció o no, es viendo la posición 376 00:14:56,009 --> 00:14:57,090 si es menos 1 377 00:14:57,090 --> 00:14:59,629 es que jamás hemos entrado aquí 378 00:14:59,629 --> 00:15:01,789 luego si es menos 1, es que no hemos 379 00:15:01,789 --> 00:15:03,129 encontrado un alumno que se llame así 380 00:15:03,129 --> 00:15:04,710 porque 381 00:15:04,710 --> 00:15:07,629 y parte desde 0 382 00:15:07,629 --> 00:15:09,669 entonces aquí podríamos 383 00:15:09,669 --> 00:15:10,610 hacer, por ejemplo, 384 00:15:11,409 --> 00:15:12,750 si posalumno 385 00:15:12,750 --> 00:15:17,370 es igual a menos uno, 386 00:15:18,070 --> 00:15:19,649 no hemos entrado 387 00:15:19,649 --> 00:15:20,669 nunca en este if. 388 00:15:22,269 --> 00:15:23,610 ¿Vale? Ves que este if está 389 00:15:23,610 --> 00:15:25,250 ya fuera del for, no he puesto aquí llaves. 390 00:15:25,769 --> 00:15:27,529 Además he puesto ya a propósito para no ser 391 00:15:27,529 --> 00:15:29,490 tan pesado con las llaves. Entonces, al no 392 00:15:29,490 --> 00:15:31,509 haber puesto llaves, este for solo tiene 393 00:15:31,509 --> 00:15:32,929 esta sentencia dentro y no tiene más. 394 00:15:33,470 --> 00:15:35,409 Solo tiene esa sentencia. Este for 395 00:15:35,409 --> 00:15:37,750 es solo para ir comprobando 396 00:15:37,750 --> 00:15:39,669 todos y cada uno de los alumnos de i 397 00:15:39,669 --> 00:15:41,090 a ver cuál de ellos 398 00:15:41,090 --> 00:15:43,610 su nombre es el que me han dado 399 00:15:43,610 --> 00:15:45,309 y si alguno es 400 00:15:45,309 --> 00:15:47,009 su posición 401 00:15:47,009 --> 00:15:48,970 es la que estoy buscando 402 00:15:48,970 --> 00:15:52,070 claro, si es menos uno es imposible 403 00:15:52,070 --> 00:15:53,850 haber entrado en ese i porque las posiciones 404 00:15:53,850 --> 00:15:55,850 no pueden ser menos uno, serán cero o uno 405 00:15:55,850 --> 00:15:56,970 o dos o tres, las que sean 406 00:15:56,970 --> 00:15:59,870 entonces si está en menos uno yo ya le puedo decir 407 00:15:59,870 --> 00:16:01,850 perdona pero ese 408 00:16:01,850 --> 00:16:03,710 alumno que quieres eliminar 409 00:16:03,710 --> 00:16:04,490 es que no existe 410 00:16:04,490 --> 00:16:16,860 entonces si pos es menos uno el alumno no existe 411 00:16:16,860 --> 00:16:18,039 no hace falta que hagamos más 412 00:16:18,039 --> 00:16:20,120 pero si no es menos uno 413 00:16:20,120 --> 00:16:21,740 es que sí lo hemos encontrado 414 00:16:21,740 --> 00:16:24,759 bueno, pues aquí ya sí que es donde habrá que hacer 415 00:16:24,759 --> 00:16:27,080 eso que hemos dicho antes 416 00:16:27,080 --> 00:16:28,360 de ir 417 00:16:28,360 --> 00:16:30,740 desde pos, perdón, desde pos no 418 00:16:30,740 --> 00:16:32,440 desde la posición alumno copiando 419 00:16:32,440 --> 00:16:34,340 el siguiente en el de arriba, el siguiente en el de arriba 420 00:16:34,340 --> 00:16:35,039 el siguiente en el de arriba 421 00:16:35,039 --> 00:16:37,720 entonces esto lo podríamos hacer 422 00:16:37,720 --> 00:16:40,789 pues venga 423 00:16:40,789 --> 00:16:46,080 desde igual a cero, perdón, no 424 00:16:46,080 --> 00:16:48,960 desde la posición del alumno eliminar 425 00:16:48,960 --> 00:16:51,980 ¿vale? 426 00:16:51,980 --> 00:16:56,600 mientras sí sea menor que pos-1. 427 00:16:57,019 --> 00:16:58,100 Porque lo que voy a hacer, 428 00:16:58,460 --> 00:17:02,039 en cada posición copio el siguiente en esa. 429 00:17:02,399 --> 00:17:04,859 En cada posición copio el siguiente en esa. 430 00:17:05,519 --> 00:17:06,859 Luego me quedo en la penúltima, 431 00:17:07,000 --> 00:17:09,579 porque ya en la penúltima copiaré la siguiente, 432 00:17:09,720 --> 00:17:10,900 que es la última, en esa. 433 00:17:18,069 --> 00:17:18,869 Pues, ¿qué hacemos? 434 00:17:18,869 --> 00:17:21,410 Pues lo que hacemos es 435 00:17:21,410 --> 00:17:23,670 alumnos 436 00:17:23,670 --> 00:17:24,809 de 437 00:17:24,809 --> 00:17:26,869 i 438 00:17:26,869 --> 00:17:29,130 le asignamos 439 00:17:29,130 --> 00:17:31,410 alumnos de i 440 00:17:31,410 --> 00:17:32,849 más 1 441 00:17:32,849 --> 00:17:40,920 no, a cada una 442 00:17:40,920 --> 00:17:42,500 le asigno la que tiene por debajo 443 00:17:42,500 --> 00:17:43,500 i más 1 444 00:17:43,500 --> 00:17:48,799 porque estamos subiendo los de abajo 445 00:17:48,799 --> 00:17:49,400 hacia arriba 446 00:17:49,400 --> 00:17:55,210 a ver, no es que esté recorriendo al revés 447 00:17:55,210 --> 00:17:55,869 estoy recorriendo desde aquí 448 00:17:55,869 --> 00:17:57,849 esta es posalumno 449 00:17:57,849 --> 00:17:59,730 empiezo en esta, ¿qué hago? 450 00:17:59,730 --> 00:18:01,710 a esta, le asigno esta 451 00:18:01,710 --> 00:18:02,750 que es i más uno 452 00:18:02,750 --> 00:18:05,630 luego, cuando pase hasta de aquí, a esta 453 00:18:05,630 --> 00:18:07,690 le asigno esta, que es i más uno 454 00:18:07,690 --> 00:18:09,710 o sea, mi i va variando 455 00:18:09,710 --> 00:18:11,549 desde posalumno, posalumno más uno 456 00:18:11,549 --> 00:18:12,789 va variando, y en cada i 457 00:18:12,789 --> 00:18:15,549 le asigno la que tiene debajo, que la que tiene debajo 458 00:18:15,549 --> 00:18:17,210 es i más uno, ¿vale? 459 00:18:18,930 --> 00:18:19,710 pero vamos, si algo 460 00:18:19,710 --> 00:18:21,150 hemos hecho mal, va ahora cuando 461 00:18:21,150 --> 00:18:23,309 lo ejecutemos 462 00:18:23,309 --> 00:18:24,509 cantará 463 00:18:24,509 --> 00:18:27,549 vale, pero cuidadín 464 00:18:27,549 --> 00:18:30,329 Porque igual que subo los nombres de alumnos 465 00:18:30,329 --> 00:18:31,390 Tengo que subir las notas 466 00:18:31,390 --> 00:18:33,049 Que van en paralelo los dos a raíz 467 00:18:33,049 --> 00:18:34,849 Van en paralelo 468 00:18:34,849 --> 00:18:36,690 Entonces que no se nos olvide 469 00:18:36,690 --> 00:18:43,950 Notas de i 470 00:18:43,950 --> 00:18:47,720 Uy 471 00:18:47,720 --> 00:18:49,640 Me he dado cuenta yo solita 472 00:18:49,640 --> 00:18:53,099 Vale 473 00:18:53,099 --> 00:18:56,240 Fíjate, notas de i más 1 474 00:18:56,240 --> 00:19:04,730 ¿Vale? 475 00:19:05,170 --> 00:19:07,630 Entonces, fijaos que nos quedamos en el penúltimo 476 00:19:07,630 --> 00:19:09,490 Porque cuando estamos en el penúltimo 477 00:19:09,490 --> 00:19:11,230 A ese le asignamos su siguiente 478 00:19:11,230 --> 00:19:12,869 que ya es el post 479 00:19:12,869 --> 00:19:14,049 para que se quede el post 480 00:19:14,049 --> 00:19:15,009 claro 481 00:19:15,009 --> 00:19:19,190 entonces una vez que hemos hecho ya todas las subidas 482 00:19:19,190 --> 00:19:21,230 el último se ha quedado 483 00:19:21,230 --> 00:19:21,970 ahí duplicado 484 00:19:21,970 --> 00:19:24,970 pero es que esa última posición ya no nos interesa para nada 485 00:19:24,970 --> 00:19:26,309 ahora tenemos un alumno menos 486 00:19:26,309 --> 00:19:28,829 entonces una vez que este foro ha terminado 487 00:19:28,829 --> 00:19:31,069 tenemos ya un alumno menos 488 00:19:31,069 --> 00:19:33,170 que nos interese 489 00:19:33,170 --> 00:19:34,930 la cuenta de alumnos 490 00:19:34,930 --> 00:19:36,509 se tiene que decrementar en uno 491 00:19:36,509 --> 00:19:37,549 pero dentro de la edad 492 00:19:37,549 --> 00:19:38,869 claro, claro 493 00:19:38,869 --> 00:19:41,089 claro 494 00:19:41,089 --> 00:19:47,849 y ya estaría, entonces hombre, mucho mejor 495 00:19:47,849 --> 00:19:49,109 si le ponemos 496 00:19:49,109 --> 00:19:51,049 alumno 497 00:19:51,049 --> 00:19:54,170 eliminado 498 00:19:54,170 --> 00:19:56,349 alumno 499 00:19:56,349 --> 00:19:58,609 y lo concatenamos y todo con su nombrecito 500 00:19:58,609 --> 00:20:05,859 el alumno 501 00:20:05,859 --> 00:20:07,140 de ese nombre eliminado 502 00:20:07,140 --> 00:20:18,420 vale 503 00:20:18,420 --> 00:20:21,980 entonces dentro de este case ya es un código 504 00:20:21,980 --> 00:20:23,900 pues un poco largo, lo ideal sería 505 00:20:23,900 --> 00:20:26,259 que si ya pudiéramos hacer métodos auxiliares 506 00:20:26,259 --> 00:20:28,000 funciones auxiliares, algunas cosas 507 00:20:28,000 --> 00:20:30,319 las metiéramos en métodos auxiliares, pero todavía no podemos. 508 00:20:31,839 --> 00:20:32,779 ¿Cómo auxiliares? 509 00:20:33,240 --> 00:20:34,400 Que si pudiéramos 510 00:20:34,400 --> 00:20:36,200 ya hacer alguna función auxiliar no nos quedaría 511 00:20:36,200 --> 00:20:38,019 un case tan largo, porque podríamos hacer una 512 00:20:38,019 --> 00:20:39,640 pero ahora todavía no podemos. 513 00:20:40,339 --> 00:20:41,980 Vale, bueno, pues lo que hemos hecho 514 00:20:41,980 --> 00:20:44,000 a que podríais haberlo hecho 515 00:20:44,000 --> 00:20:46,140 vosotros en casa por la tarde, si os hubierais puesto. 516 00:20:47,019 --> 00:20:48,019 Sí, todo eso. 517 00:20:48,279 --> 00:20:49,180 Porque esto ya lo hemos visto. 518 00:20:50,200 --> 00:20:52,059 Sí, claro que podríais, lo que pasa es que tenéis que 519 00:20:52,059 --> 00:20:54,119 poneros y concentraros y dedicar 520 00:20:54,119 --> 00:20:56,019 un rato, en el cual 521 00:20:56,019 --> 00:20:57,980 ni miro el móvil, ni miro nada 522 00:20:57,980 --> 00:20:59,180 Ni chateo 523 00:20:59,180 --> 00:21:01,500 Con nadie 524 00:21:01,500 --> 00:21:02,940 Solo me concentro 525 00:21:02,940 --> 00:21:05,880 Vale, pues venga, vamos a probarlo 526 00:21:05,880 --> 00:21:07,299 Porque, a ver 527 00:21:07,299 --> 00:21:09,700 Yo tiro sobre la marcha 528 00:21:09,700 --> 00:21:11,220 Pero puedo estar haciendo burradas 529 00:21:11,220 --> 00:21:13,000 Algunas de las burradas que hago 530 00:21:13,000 --> 00:21:15,259 Son voluntarias para que luego salgan 531 00:21:15,259 --> 00:21:16,440 Y las solucionemos 532 00:21:16,440 --> 00:21:19,099 Pero hay burradas que no son voluntarias 533 00:21:19,099 --> 00:21:19,960 Que me salen solas 534 00:21:19,960 --> 00:21:22,000 Entonces vamos a 535 00:21:22,000 --> 00:21:26,480 Venga, vamos a insertar a un alumno 536 00:21:27,079 --> 00:21:27,960 Ala 537 00:21:27,960 --> 00:21:33,430 Venga, ya está insertado un alumno 538 00:21:33,430 --> 00:21:35,730 Vamos a insertar a otro 539 00:21:35,730 --> 00:21:43,819 ¿Cómo que el alumno no existe? 540 00:21:44,759 --> 00:21:45,880 Ah, es que lo he eliminado 541 00:21:45,880 --> 00:21:47,259 Le he dado a dos 542 00:21:47,259 --> 00:21:50,339 Ah, le he dado a la opción dos, claro, mira, me ha funcionado 543 00:21:50,339 --> 00:21:51,319 El alumno no existe, vale 544 00:21:51,319 --> 00:21:54,500 Vamos a insertar a Jaimito, otra vez 545 00:21:54,500 --> 00:22:00,950 La verdad es que hubiera sido más bonito si hubiera puesto yo aquí 546 00:22:00,950 --> 00:22:03,190 Un alumno insertado, que ni he puesto nada de eso 547 00:22:03,190 --> 00:22:04,910 Vale, vamos a ponerles 548 00:22:04,910 --> 00:22:07,230 nota. A Luisito 549 00:22:07,230 --> 00:22:09,130 le vamos a poner 550 00:22:09,130 --> 00:22:09,869 un 6. 551 00:22:10,930 --> 00:22:12,809 Que también debería haber puesto nota puesta 552 00:22:12,809 --> 00:22:14,650 correctamente, pero no, porque soy una vaga. 553 00:22:16,509 --> 00:22:16,789 Vamos, 554 00:22:16,930 --> 00:22:18,809 hombre, es un sistema. Vamos a poner nota 555 00:22:18,809 --> 00:22:21,029 a Jaimito 556 00:22:21,029 --> 00:22:22,390 que tiene un 10. 557 00:22:23,130 --> 00:22:24,349 Y vamos a ver el listado. 558 00:22:25,529 --> 00:22:26,809 Ahí están, el listado 559 00:22:26,809 --> 00:22:28,609 de notas. Venga, 560 00:22:28,609 --> 00:22:30,509 vamos a eliminar al primero 561 00:22:30,509 --> 00:22:37,259 de ellos. Luisito. 562 00:22:38,500 --> 00:22:38,900 Vale. 563 00:22:39,099 --> 00:22:41,619 alumno eliminado, vamos a ver 564 00:22:41,619 --> 00:22:43,720 si está eliminado, sacar listado 565 00:22:43,720 --> 00:22:44,720 de notas, pues sí 566 00:22:44,720 --> 00:22:46,779 vale 567 00:22:46,779 --> 00:22:54,019 aquí las pruebas, uno debería 568 00:22:54,019 --> 00:22:56,160 hacerlas siempre pensando en los casos 569 00:22:56,160 --> 00:22:57,980 extremos, hemos hecho un caso 570 00:22:57,980 --> 00:22:59,440 para este caso no ha funcionado 571 00:22:59,440 --> 00:23:02,019 pero uno tiene que pensar siempre en lo que se llaman 572 00:23:02,019 --> 00:23:03,380 los casos límite 573 00:23:03,380 --> 00:23:06,319 cuando hace pruebas, los casos límite son las situaciones 574 00:23:06,319 --> 00:23:08,180 que normalmente se refieren 575 00:23:08,180 --> 00:23:10,079 cuando hablo de números, números muy pequeños 576 00:23:10,079 --> 00:23:10,900 o números muy grandes 577 00:23:10,900 --> 00:23:13,779 cuando hablo de cadenas, cadenas vacías 578 00:23:13,779 --> 00:23:15,279 entonces aquí 579 00:23:15,279 --> 00:23:17,319 como estoy hablando de eliminar 580 00:23:17,319 --> 00:23:19,799 si solo tengo un elemento y elimino ese 581 00:23:19,799 --> 00:23:21,599 ese sí se podría entender como un caso límite 582 00:23:21,599 --> 00:23:23,220 porque implicaría dejar el array vacío 583 00:23:23,220 --> 00:23:24,980 ese a lo mejor 584 00:23:24,980 --> 00:23:26,900 en ese caso particular 585 00:23:26,900 --> 00:23:29,559 no funciona 586 00:23:29,559 --> 00:23:30,339 como el general 587 00:23:30,339 --> 00:23:33,440 vamos a probar, vamos a eliminar 588 00:23:33,440 --> 00:23:34,140 a Jaimito 589 00:23:34,140 --> 00:23:39,319 vale, pues se entra 590 00:23:39,319 --> 00:23:41,059 dentro del general, este caso límite 591 00:23:41,059 --> 00:23:43,279 cuando a mí se me queda sin Arrays, vamos a poner un listado 592 00:23:43,279 --> 00:23:45,160 de notas, el listado de notas 593 00:23:45,160 --> 00:23:48,180 vacío, bueno 594 00:23:48,180 --> 00:23:50,380 pues parece que todo funciona 595 00:23:50,380 --> 00:23:52,900 a ver, ratio de suspenso y nota media del curso 596 00:23:52,900 --> 00:23:54,519 me lo vais a hacer ahora mismo, porque esto claro 597 00:23:54,519 --> 00:23:56,519 que sabéis hacerlo y mostrarlo 598 00:23:56,519 --> 00:23:57,640 así que venga