1 00:00:06,700 --> 00:00:15,179 en este segundo vídeo dedicado a los arrays en java vamos a hacer un pequeño ejercicio para 2 00:00:15,179 --> 00:00:23,739 intentar consolidar los conocimientos de los arrays en este caso vamos a hacer un programa 3 00:00:23,739 --> 00:00:33,259 que como pone en pantalla va a admitir el nombre de tres alumnos y además va a admitir tres notas 4 00:00:33,259 --> 00:00:41,780 para cada uno de ellos. Adicionalmente para cada una de estas tres notas se realizará la media aritmética 5 00:00:41,780 --> 00:00:51,140 de modo que al final tenemos que tener en el array guardado el nombre del alumno, sus tres notas y la media aritmética. 6 00:00:53,119 --> 00:00:58,899 En pantalla se muestra el objetivo de este pequeño programa. 7 00:00:58,899 --> 00:01:07,340 En la primera columna mostramos los alumnos y cada una de sus filas se corresponde con cada una de sus notas 8 00:01:07,340 --> 00:01:15,120 Al final y con fondo de color amarillo aparece la nota media para cada uno de los alumnos 9 00:01:15,120 --> 00:01:18,659 y que debe calcular el propio programa que hagamos 10 00:01:18,659 --> 00:01:25,060 Para poder implementar esta solución lo que vamos a hacer es 11 00:01:25,060 --> 00:01:31,280 obviamente como habíamos dicho en el vídeo anterior los datos no se pueden mezclar y como 12 00:01:31,280 --> 00:01:36,659 podemos ver la primera columna de alumnos tiene datos de tipo string mientras que el resto de 13 00:01:36,659 --> 00:01:44,519 columnas tiene datos de tipo numérico. Así que lo que vamos a hacer es una combinación para poder 14 00:01:44,519 --> 00:01:53,000 llegar a una solución en este aplicativo. La solución se basa en hacer un array de una sola 15 00:01:53,000 --> 00:01:59,540 dimensión para guardar los nombres de los alumnos y un array de dos dimensiones para guardar las 16 00:01:59,540 --> 00:02:06,939 notas en pantalla tenéis el array de una sola dimensión donde se van a guardar el nombre de 17 00:02:06,939 --> 00:02:15,520 los alumnos que es un array de string de tres posiciones adicionalmente para poder guardar 18 00:02:15,520 --> 00:02:24,979 las notas, tendremos un array de 3 por 4 para poder guardar los datos de los alumnos. 19 00:02:27,300 --> 00:02:35,580 La fila correspondiente al primer alumno, que ahí en pantalla aparece como Jorge, tiene 20 00:02:35,580 --> 00:02:41,639 una correspondencia con la primera fila del array bidimensional, es decir, para Jorge 21 00:02:41,639 --> 00:02:45,599 que corresponderían las notas 4, 5 y 3 y su media sería 4. 22 00:02:46,280 --> 00:02:50,139 Para María las notas serían 7, 5 y 9 y la media sería 7. 23 00:02:50,780 --> 00:02:55,300 Y para Luis las notas serían 6, 5 y 7 y la media sería 6. 24 00:02:58,229 --> 00:03:01,909 En pantalla se muestra el código que resuelve este problema. 25 00:03:01,909 --> 00:03:06,870 Si nos fijamos en la parte principal del programa, 26 00:03:06,870 --> 00:03:13,689 se muestran dos arrays que son el array de alumnos 27 00:03:13,689 --> 00:03:16,550 que nosotros le hemos llamado alumnos 28 00:03:16,550 --> 00:03:21,590 y declara un nuevo array de tres posiciones 29 00:03:21,590 --> 00:03:23,889 aquí arriba tenemos dos constantes 30 00:03:23,889 --> 00:03:27,110 el número de alumnos tres y el número de notas cuatro 31 00:03:27,110 --> 00:03:30,310 así que esto es un array de tres posiciones 32 00:03:30,310 --> 00:03:31,870 es el array unidimensional 33 00:03:31,870 --> 00:03:38,370 Sin embargo, para las notas tenemos un array numérico que admite decimales 34 00:03:38,370 --> 00:03:42,189 Se llama NotasAlumnos y tiene dos dimensiones 35 00:03:42,189 --> 00:03:46,289 Por un lado el número de alumnos y por otro lado el número de notas 36 00:03:46,289 --> 00:03:50,430 De modo que este segundo array será de 3x4 37 00:03:50,430 --> 00:03:58,650 Dentro de este proceso principal llamaremos a estos tres procesos 38 00:03:58,650 --> 00:04:04,770 El de rellenar nombre de los alumnos, rellenar notas de los alumnos y mostrar resultados 39 00:04:04,770 --> 00:04:13,069 Los dos primeros procesos se corresponden a procesos que van a meter datos dentro de los arrays 40 00:04:13,069 --> 00:04:17,610 El primero, rellenar nombre de alumnos, meterá datos dentro del array alumnos 41 00:04:17,610 --> 00:04:22,850 El segundo, rellenar notas alumnos, meterá datos dentro del array notas alumnos 42 00:04:22,850 --> 00:04:27,730 Y el tercero, lo que va a hacer es mostrar los resultados de ambos arrays 43 00:04:27,730 --> 00:04:34,310 el primer proceso que se muestra junto con el de limpiar pantalla 44 00:04:34,310 --> 00:04:37,129 y que ya lo conocemos de otras ocasiones 45 00:04:37,129 --> 00:04:40,850 en limpiar pantalla prácticamente no vamos a prestarle mucha atención 46 00:04:40,850 --> 00:04:43,170 porque lo único que hace es una llamada al sistema 47 00:04:43,170 --> 00:04:47,009 en la que como estamos ejecutando en Windows 48 00:04:47,009 --> 00:04:52,930 hace una llamada al comando CLS para poder borrar la pantalla cuando nos interese 49 00:04:52,930 --> 00:04:56,649 el algoritmo de rellenar nombre de alumnos 50 00:04:56,649 --> 00:05:00,689 Como veis se hace con un bucle for 51 00:05:00,689 --> 00:05:04,050 De modo que se va a ejecutar tres veces 52 00:05:04,050 --> 00:05:07,069 Cada vez que se ejecute se va a limpiar la pantalla 53 00:05:07,069 --> 00:05:08,810 Se pedirá el nombre del alumno 54 00:05:08,810 --> 00:05:12,269 Y se lee este alumno por teclado 55 00:05:12,269 --> 00:05:15,350 Una vez que el nombre del alumno está leído por teclado 56 00:05:15,350 --> 00:05:18,189 Se va a meter dentro de la posición del array 57 00:05:18,189 --> 00:05:21,730 De modo que se va a meter en el orden que indica el bucle 58 00:05:21,730 --> 00:05:26,189 Primero el alumno 0, después el alumno 1 y después el alumno 2 59 00:05:26,189 --> 00:05:34,350 el algoritmo que rellena las notas de los alumnos funciona de una forma similar 60 00:05:34,350 --> 00:05:38,750 sin embargo aquí vemos que tenemos un bucle anidado 61 00:05:38,750 --> 00:05:45,290 el bucle anidado lo que hace es en primer lugar recorrer el nombre de los alumnos 62 00:05:45,290 --> 00:05:51,110 para indicar al usuario que notas vamos a leer y a que alumno corresponde 63 00:05:51,110 --> 00:06:03,449 Ya que como en el primer array se leen los alumnos de forma secuencial, no sabríamos a quién corresponden las notas si no nos dicen cuál es el nombre del alumno. 64 00:06:03,449 --> 00:06:21,610 Así que dentro del bucle repetir que tenemos aquí se va a ejecutar tres veces y a la vez ese bucle se van a ejecutar tres lecturas para leer las tres notas, nota 1, nota 2 y nota 3. 65 00:06:21,610 --> 00:06:26,769 si seguimos la secuencia de este programa lo que hace es 66 00:06:26,769 --> 00:06:34,110 en primer lugar le informa al usuario cuál es el alumno del cual vamos a meter las notas 67 00:06:34,110 --> 00:06:39,910 y se inicializan sus contadores, el contador de notas se pone a 0 68 00:06:39,910 --> 00:06:43,370 y la suma de sus notas se pone a 0 69 00:06:43,370 --> 00:06:48,910 esta f que aparece después del 0.0 es porque es un número de tipo float 70 00:06:48,910 --> 00:06:52,730 y entonces para sus inicializaciones hay que hacerlos de esa forma 71 00:06:52,730 --> 00:06:56,129 se inicializan cada vez a cero dentro de este bucle 72 00:06:56,129 --> 00:06:59,089 porque si no cogeríamos los datos del alumno anterior 73 00:06:59,089 --> 00:07:05,589 dentro del bucle se hace una lectura de todas las notas 74 00:07:05,589 --> 00:07:08,949 y se informa al usuario de cuál es la nota que se va a leer 75 00:07:08,949 --> 00:07:12,470 para que tenga en cuenta cuál es la nota que tiene que leer 76 00:07:12,470 --> 00:07:17,490 una vez que está informada la nota se lee como si fuera un número decimal 77 00:07:17,490 --> 00:07:24,509 y en la posición del índice del alumno y columna de la nota pues se mete la nota correspondiente. 78 00:07:25,230 --> 00:07:31,069 Adicionalmente se van sumando las notas y se van contando las notas, perdón, y se van sumando las notas. 79 00:07:31,550 --> 00:07:37,550 Esto tenemos que hacerlo en las tres iteraciones que duran las notas para después poder calcular las notas medias. 80 00:07:38,750 --> 00:07:46,170 Una vez que termina este bucle FOR, las notas estarán introducidas en el array, nota 1, nota 2 y nota 3 81 00:07:46,170 --> 00:07:54,290 y se procederá al cálculo de la nota media que será como es una media aritmética la suma de las notas entre el número de notas 82 00:07:54,290 --> 00:08:04,910 y esta nota media que es la última nota de ese array pues se agregará a la última posición del array y con el valor que se ha calculado 83 00:08:04,910 --> 00:08:13,449 de modo que para cada uno de los alumnos se irán calculando al vuelo las notas medias que se van obteniendo 84 00:08:13,449 --> 00:08:21,629 Por último, dentro de este proceso tenemos el proceso que muestra los resultados 85 00:08:21,629 --> 00:08:28,550 El proceso que muestra los resultados lo que hace son dos bucles anidados como podemos ver 86 00:08:28,550 --> 00:08:35,590 En la primera pasada del primer bucle lo que hace es que muestra el nombre del alumno 87 00:08:35,590 --> 00:08:37,509 como se puede ver aquí en esta línea 88 00:08:37,509 --> 00:08:44,909 y a continuación entra en el bucle que va a ir leyendo todas las notas incluidas la nota media 89 00:08:44,909 --> 00:08:52,409 esto lo hacemos así para que podamos distinguir entre sus notas y la nota media 90 00:08:52,409 --> 00:08:58,909 sabemos que en las primeras tres posiciones de las notas van a estar las notas del alumno 91 00:08:58,909 --> 00:09:01,070 y en la última posición va a estar la nota media 92 00:09:01,070 --> 00:09:05,809 así que por eso hacemos este condicional para saber si lo que estamos sacando 93 00:09:05,809 --> 00:09:09,169 son sus notas o las notas medias. 94 00:09:09,269 --> 00:09:16,029 Vamos a ver el proceso en ejecución y así se ve un poco más claro cómo funcionan estos tres procesos. 95 00:09:16,809 --> 00:09:24,289 Hemos ejecutado el proceso y tenemos en pantalla el programa en ejecución. 96 00:09:25,009 --> 00:09:30,870 Vamos a poner el nombre de los, nos pide como vemos primero el nombre de los alumnos. 97 00:09:30,870 --> 00:09:37,370 Así que vamos a introducir el nombre del primer alumno que le vamos a llamar Jorge 98 00:09:37,370 --> 00:09:43,750 Nos pide el alumno 2 que va a ser María y nos pide el alumno 3 que va a ser Luis 99 00:09:43,750 --> 00:09:49,669 A continuación nos va a pedir para cada uno de los alumnos sus tres notas 100 00:09:49,669 --> 00:09:54,350 El valor de la nota 1 pues le vamos a poner un 4 101 00:09:54,350 --> 00:09:59,750 El valor de la nota 2 un 5 y el valor de la nota 3 un 3 102 00:09:59,750 --> 00:10:04,649 y a continuación nos va pidiendo los datos de las notas de María 103 00:10:04,649 --> 00:10:09,549 evidentemente la nota media de Jorge ya la ha calculado 104 00:10:09,549 --> 00:10:11,590 pero la tiene guardada en el array 105 00:10:11,590 --> 00:10:18,470 y se reserva su mostrarla al usuario hasta el final de la aplicación 106 00:10:18,470 --> 00:10:21,509 aquí le vamos a meter en la primera nota un 7 107 00:10:21,509 --> 00:10:24,250 en la segunda un 5 y en la tercera un 9 108 00:10:24,250 --> 00:10:26,129 y con Luis hacemos lo mismo 109 00:10:26,129 --> 00:10:34,730 le metemos un 6 por ejemplo un 5 y un 7 una vez que metamos que le demos a enter en la nota de 110 00:10:34,730 --> 00:10:40,830 luis pues ya pasa la última parte del programa en la que nos tiene que mostrar los resultados 111 00:10:40,830 --> 00:10:49,570 y como vemos pues aquí nos muestra los datos para jorge en esta parte de aquí con sus tres 112 00:10:49,570 --> 00:10:57,590 notas y la nota media calculada, los datos para María con sus tres notas y su nota media calculada 113 00:10:57,590 --> 00:11:06,110 y los datos para Luis con sus tres notas y su nota media calculada. Bueno pues con este vídeo espero 114 00:11:06,110 --> 00:11:11,690 que haya quedado claro el uso de Arrays en este ejercicio que hemos hecho una combinación de 115 00:11:11,690 --> 00:11:18,309 Arrays unidimensionales y bidimensionales y os animo a que practiquéis este mismo ejemplo intentando 116 00:11:18,309 --> 00:11:19,450 hacerlo por vuestra cuenta.