Saltar navegación

20241022 ProgrEstruct-Bucles-ejercicios_5 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 22 de octubre de 2024 por Raquel G.

12 visualizaciones

Descargar la transcripción

Tendría que ser algo así un poco más vegetariano 00:00:00
¿Es vegetariano? 00:00:02
No, pero no como mucha carne 00:00:04
Más bien poca 00:00:06
Me estoy quitando 00:00:06
De la carnaza 00:00:08
Haces bien, ahí te me estás quitando 00:00:10
No, no, no, tampoco me vuelve loca 00:00:13
Venga, ejercicio 12 00:00:16
Oye, que la carne es muy sana 00:00:19
¿Cuánta más variedad, mejor? 00:00:30
Es más agradecido la carne 00:00:51
Vale, pues venga, el 12 00:00:53
Primero 00:00:54
Tratamos de entender 00:00:56
Solicitar 10 números 00:00:58
vale, eso está claro 00:01:02
venga, vamos a conectar 00:01:02
ahora, una vez que los 10 números 00:01:05
se han pedido 00:01:08
hay que mostrar la media 00:01:09
3 valores 00:01:11
o sea, media de los que han sido positivos 00:01:13
media de los que han sido negativos 00:01:16
y número de ceros 00:01:18
que se han metido 00:01:20
vale, entonces vamos a interpretar esos resultados 00:01:20
que son, la media de un conjunto de números 00:01:23
¿cuál es? la suma de un conjunto 00:01:26
de números 00:01:28
vale, claro, pues entonces 00:01:28
aquí ya sabemos que va a haber una suma 00:01:31
una suma de valores 00:01:33
eso ya lo sabemos, dentro del bucle una suma de valores 00:01:34
ya viniremos a ver que valores sumamos 00:01:37
y ya está 00:01:39
y la cantidad hay que contar 00:01:40
entonces aquí sabemos que habrá que 00:01:43
meter un contador para que cuente 00:01:45
dentro del bucle cuantas veces pasa algo 00:01:47
entonces ya más o menos ya sabemos que este programa 00:01:49
va a ser un bucle 00:01:51
donde dentro se van a hacer en paralelo tres cosas 00:01:53
dos sumas, porque son dos medias 00:01:55
entonces 00:01:58
en paralelo dentro de ese bucle 00:01:59
habrá que hacer dos sumas 00:02:01
esta suma 00:02:04
esta suma y luego una cuenta 00:02:06
luego dentro del bucle 00:02:08
haremos tres cosas, independientes 00:02:10
en principio, ¿vale? 00:02:12
pues ya podemos plantear eso, entonces 00:02:14
como vamos a leer 00:02:16
por teclado, pues tendremos que poner 00:02:19
el escáner y todo 00:02:20
que no lo voy a sacar fuera 00:02:22
no, yo ya lo he quitado 00:02:26
di que sí, hombre 00:02:28
Si ya habrá tiempo para sacar las cosas fuera 00:02:30
No pasa nada 00:02:33
Ya te llegará el momento 00:02:39
Ya te llegará el momento de meterla y sacarla 00:02:40
Ahora mismo dentro todos 00:02:44
A ver 00:02:45
Que hay gente que me saca esto fuera 00:02:48
Entonces, esto dentro 00:02:51
La quiero bien dentro 00:02:55
Venga, vamos 00:02:57
Ostras, pues ya está grabando 00:02:59
Bueno, da igual, si no lo ve nadie 00:03:07
da lo mismo 00:03:11
Nadie puede denunciar 00:03:12
Nadie lo ve 00:03:15
Sí, verdad, estaba colgada 00:03:17
Ah, bueno, es que Duca Madrid a veces 00:03:21
hace parones de mantenimiento 00:03:25
Vale, pues entonces 00:03:26
hoy justo, sí 00:03:29
bueno, pero yo no he dicho nada 00:03:31
no he dicho nada ilegal 00:03:34
no he dicho nada que 00:03:35
no he hecho evangelización 00:03:38
no he hecho nada de eso 00:03:44
que se está prohibido para los profes 00:03:46
no os he dicho a quién tenéis que votar 00:03:47
lo grave sería que os dijera a quién tenéis que votar 00:03:49
eso sería muy grave 00:03:50
pero no os he dicho nada 00:03:52
os lo puedo dejar caer 00:03:53
pero no os lo digo 00:03:55
venga, a ver 00:03:56
Mira 00:03:58
Ya no tengo nada que perder 00:04:05
Venga, a ver 00:04:08
Sí, claro, entonces 00:04:11
Van a ser 00:04:15
Tres, hemos dicho que tres sumas 00:04:16
Dos sumas y una cuenta 00:04:19
Vale, pues vamos a suponer que 00:04:20
Nosotros ya, insisto 00:04:22
Lo estoy haciendo todo robótico 00:04:24
Luego ya 00:04:26
suma pares, ¿vale? 00:04:27
Porque una suma va a ser la suma de los pares. 00:04:29
Luego veré cómo convierto esta suma en media. 00:04:31
Ya podemos adivinar qué será una división. 00:04:33
Vale, suma pares. 00:04:36
Porque el ejercicio me pide 00:04:38
media de los números que han sido pares. 00:04:39
Media de los números que han sido impares. 00:04:42
Si pones positivo y negativo. 00:04:44
Si pones positivo y negativo. 00:04:46
No pones pares y pares. 00:04:48
Vale, pues suma positivos. 00:04:49
Perdón, perdón. 00:04:52
Mira que para tenerte de H te pillan las cosas. 00:04:54
es una broma, es una broma 00:04:57
es una broma 00:04:59
yo además, eso 00:05:05
no tengo ninguna constancia 00:05:06
¿qué? 00:05:08
es una suma negra, es una suma negra, Dios mío 00:05:10
vale, pues entonces 00:05:12
una variable para la suma de los positivos 00:05:18
luego veremos cómo la convertiremos en media 00:05:20
una variable para la suma de los negativos 00:05:22
y lo pongo 00:05:24
lo pongo abajo 00:05:25
para que no se 00:05:28
deje de ver 00:05:29
y una variable para contar los ceros 00:05:31
entonces eso es lo primero que ya nos hemos 00:05:33
dado cuenta de que tiene que haber 00:05:35
un contador y dos variables para sumas 00:05:37
ahora, ¿cómo hacemos las sumas? 00:05:39
pues siempre hacemos un bucle 00:05:41
ya veremos como lo perfilamos 00:05:42
y la suma pares 00:05:45
habrá que sumarle 00:05:46
algo, un numerito 00:05:49
por ahora pongo x solamente para tener la estructura 00:05:50
A la suma impares 00:05:54
Positivos 00:05:55
Negativos 00:06:04
Así 00:06:07
Y luego el contador 00:06:08
Una cosa que se va incrementando 00:06:10
Vale, entonces 00:06:13
Más o menos algo así tendremos que hacer 00:06:15
Estoy hoy sembrada. 00:06:24
Vale. 00:06:27
Vale, entonces ahora ya que más o menos sabemos que los tiros van por aquí, 00:06:28
ahora ya vamos a ver cómo perfilamos esto. 00:06:32
Vale, pues ¿qué tenemos que repetir varias veces? 00:06:34
¿Qué es lo que tenemos que hacer dentro del bucle? 00:06:36
Me han dicho que en cada iteración tengo que leer el número. 00:06:38
Con lo cual, este sumando de aquí, este sumando, va a venir del número que yo leo. 00:06:42
La primera pregunta que nos hacemos es, ¿este sumando que yo voy metiendo en la suma, 00:06:49
de dónde me viene? 00:06:53
me viene de los numeritos que yo leo. 00:06:54
¿No? 00:06:58
Entonces, dentro del bucle 00:06:59
tendré que leer el número. 00:07:00
Dentro del bucle tendré que leerlo. 00:07:01
Y luego ya ese número 00:07:03
se incorporará si procede aquí, 00:07:04
se incorporará si procede aquí, 00:07:07
y lo contaré. 00:07:08
Pero dentro del bucle tendré que leerlo. 00:07:09
¿No sería entonces x y y en vez de x y y? 00:07:12
Sí, a ver, yo he puesto en general la idea 00:07:16
de que la suma, 00:07:18
a la suma tendré que ir sumando valores. 00:07:19
Valores. 00:07:21
Estos valores, ¿cómo los generaré? 00:07:22
No lo sé, de hecho, ni siquiera he declarado la X 00:07:23
porque solamente he querido plasmar la idea 00:07:25
de que a esta suma tendré que irle sumando valores. 00:07:27
¿De dónde lo saco? 00:07:29
Bueno, pues en respuesta a esa pregunta decimos, 00:07:31
a ver, lo sacaré del número que estoy leyendo 00:07:32
porque me han dicho que tengo que leer 10 números. 00:07:34
Vale, entonces, además, me están diciendo 00:07:38
que eso lo tengo que hacer exactamente 10 veces. 00:07:42
Entonces, como ese bucle se va a ejecutar exactamente 10 veces, 00:07:45
puedo decir, ah, pues en lugar de complicarme la vida 00:07:48
buscando una condición aquí 00:07:51
pues un bucle for 00:07:53
que la estructura del bucle for viene perfectamente 00:07:54
cuando yo quiero que algo se ejecute 00:07:57
un número exactamente de veces 00:07:59
y la estructura de bucle for 00:08:00
para que algo se ejecute 00:08:03
exactamente 10 veces 00:08:04
vendría a ser esta 00:08:07
vale, esto es lo que 00:08:08
claro, esto es lo que 00:08:16
dijimos ayer 00:08:19
que el bucle for 00:08:20
que tenía tres partes aquí dentro 00:08:23
la primera era 00:08:25
la sentencia que a ti te diera la gana poner 00:08:26
o las sentencias, la segunda 00:08:28
la condición que te dice que si se cumple 00:08:30
vuelves a entrar y la tercera 00:08:32
una sentencia que se 00:08:35
hace en cada iteración 00:08:37
con lo cual si hacemos este uso 00:08:38
tenemos la garantía de que 00:08:40
este bucle es un bucle que se va a ejecutar 00:08:42
exactamente 10 veces 00:08:45
porque tenemos una variable i que la hemos llamado 00:08:46
i porque es el nombre que se le suele 00:08:48
dar por lo de índice 00:08:51
esta variable empieza haciendo 0 00:08:52
en cada iteración 00:08:57
funciona como contador 00:08:59
porque se incrementa una vez 00:09:00
luego en cada iteración funciona como contador 00:09:01
y mientras sea menor que 10 00:09:03
es decir, para 0, 1, 2, 3 00:09:06
hasta 9, o sea un total de 10 veces 00:09:08
de 0 hasta 9 se va a ejecutar 00:09:11
luego esta estructura 00:09:12
de aquí, esta sintaxis 00:09:15
es una forma cómoda de hacer un bucle 00:09:16
que se va a ejecutar exactamente 10 veces 00:09:18
y nos olvidamos de buscar condiciones del while 00:09:20
y de todo, vale, repito 00:09:25
el bucle for, uno lo usa como 00:09:39
quiera 00:09:41
por ejemplo, si yo quito esto 00:09:41
como ya le dijimos ayer 00:09:45
estaría teniendo un while 00:09:46
esto es un while 00:09:48
porque este bucle se va a ejecutar 00:09:50
mientras esta condición se acierta, luego es un while 00:09:53
no se hace nada al principio 00:09:55
de entrar, ni se hace 00:09:57
nada al finalizar cada una 00:09:59
de las iteraciones, con lo cual es exactamente igual que el while 00:10:01
Claro, pero aquí me obligaría a declarar el int antes y decir, vale, pero es que la i la quiero como contador. Entonces, me obligaría a ponerla aquí y ahora a incrementarla aquí para que me funcionara como contador. Entonces, ahora ya sí que tendría de nuevo un bucle que se ejecuta exactamente 10 veces, porque la i empieza haciendo 0. Mientras i sea menor que 10, entras y te incrementas. 00:10:03
bueno, pues, ¿para qué voy a hacer un for 00:10:25
con todo esto fuera 00:10:28
si puedo esta sentencia 00:10:29
que se va a hacer una vez al principio 00:10:31
ponerla aquí 00:10:33
y esta que se va a hacer 00:10:35
al final de cada iteración 00:10:37
de todas y cada una de ellas 00:10:40
la puedo poner aquí 00:10:41
pues así queda más bonito y estoy haciendo lo mismo 00:10:43
ahí, ¿vale? 00:10:45
vale, pues este bucle se va a hacer 10 veces 00:10:51
vale, ahora ya sigo completando el ejercicio 00:10:53
¿qué tengo que hacer 10 veces? 00:10:55
leer un número, lo que me han dicho 00:10:57
vale 00:10:59
el numerito que leemos es este 00:11:08
por ejemplo, este 00:11:13
vale, y ahora ya 00:11:19
este número va a ser el sumando 00:11:21
de las sumas, tanto de 00:11:23
pero va a ser el sumando de todas ellas 00:11:25
depende, va a ser 00:11:27
sumando de suma positivo si es positivo 00:11:29
pero si es negativo 00:11:31
va a ser sumando de esta a otra 00:11:33
y se va a contar siempre, pues depende 00:11:34
Se va a contar si es cero, si no, no 00:11:37
Luego ahora ya estas tres sentencias van en un if 00:11:39
¿Cuándo incrementaré yo la suma de positivo? 00:11:42
La incrementaré si n es mayor que cero 00:11:48
Entonces solo en ese caso incrementaré la suma de esta manera 00:11:52
¿Pero cuándo incrementaré la suma de negativos? 00:11:57
Pues si n es menor que cero 00:12:03
Entonces incrementaré la suma 00:12:05
De los negativos 00:12:08
¿Y cuándo lo contaré? 00:12:08
Son tres tareas independientes 00:12:14
¿Y cuándo lo contaré? 00:12:15
Lo contaré si n es igual a 0 00:12:17
En ese caso lo contaré 00:12:20
Y cont lo tengo 00:12:24
Se llama con ceros 00:12:26
Vale, pues entonces 00:12:27
Ya he llegado 00:12:34
A una versión casi muy cerca de la final 00:12:36
Yo he partido de que era un bucle 00:12:38
en el que tenía que hacer tres cosas en paralelo 00:12:40
sumar sumandos 00:12:42
que habrá que ver de dónde vienen 00:12:44
y contar 00:12:46
cosas que habrá que ver de dónde 00:12:48
pues los sumandos de la suma de positivos 00:12:50
vendrán del que me he leído si es positivo 00:12:52
la suma de negativos 00:12:54
de dónde vendrán los sumandos 00:12:56
vendrán del que he leído solo si es negativo 00:12:58
y cuando contaré 00:13:00
cuando incremento el contador 00:13:02
el contador lo incrementaré solo si es cero 00:13:04
aquí lo único es que me diréis 00:13:06
que forma más fea de escribirlo 00:13:12
o sea, estas condiciones son excluyentes 00:13:13
mete en un if, else, if 00:13:15
y else, porque son excluyentes 00:13:17
entonces, si esta es true 00:13:19
estas van a ser falsas 00:13:21
porque son excluyentes, si no fueran 00:13:23
excluyentes, tendrían que ir 00:13:25
en tres if separados, claro 00:13:27
porque si yo lo pongo en if, else, if 00:13:28
y la primera es cierta, las otras ni se miran 00:13:31
pero en estas, las tres son completamente 00:13:33
excluyentes, y si se cumple una 00:13:35
las demás es que no quiero mirarlas, ¿para qué? 00:13:37
porque van a ser falsas, entonces, hombre 00:13:39
vamos a dejarlo un poco más bonito 00:13:41
así 00:13:43
y estoy haciendo exactamente lo mismo 00:13:44
que con el código de antes, lo mismo 00:13:49
estoy haciendo lo mismo 00:13:51
pero estoy haciendo lo mismo porque n mayor que 0 00:13:51
n menor que 0 y n igual a 0 00:13:55
lo pongo aquí en comentario 00:13:57
son excluyentes 00:13:59
entonces o se cumple una o se cumple 00:14:06
la otra o se cumple la otra 00:14:08
vale, pues mi for, esta primera 00:14:09
versión todavía no hace lo que me han pedido 00:14:14
pero ya 00:14:16
hace algo 00:14:18
y ya he avanzado bastante 00:14:20
entonces este ejercicio 00:14:23
si yo ahora mostrara 00:14:25
los resultados 00:14:27
pues ahora mismo me muestra solamente 00:14:29
la cantidad de positivos 00:14:31
la cantidad de negativos y los ceros 00:14:33
no, perdón, la suma de los positivos 00:14:35
la suma de los negativos 00:14:38
y los ceros, es decir, este ejercicio 00:14:39
esta versión 00:14:41
me hace esto solo 00:14:42
suma positivos 00:14:44
suma negativos 00:15:02
y cantidad de ceros 00:15:06
vale, lo que pasa es que este no es exactamente 00:15:10
el ejercicio que me han pedido, no me han pedido 00:15:27
la suma de los positivos y la suma de los negativos 00:15:29
sino la media, el valor medio 00:15:31
vale, entonces es una pequeña 00:15:33
modificación, aun así 00:15:35
vamos a probar esta versión 00:15:37
porque si partimos de una versión 00:15:38
que funciona 00:15:41
pues mejor 00:15:43
para modificarla, por ejemplo 00:15:45
vamos a meter este positivo 00:15:47
ah, que me obliga a 10 en cualquier caso 00:15:49
3 menos 2 00:15:51
o menos 1 00:15:54
menos 2 00:15:56
0, voy a meter ceros ya hasta el final 00:15:57
vale, entonces efectivamente 00:16:00
el bucle se ha ejecutado 10 veces 00:16:05
los positivos sumaban 9, 6 más 3 00:16:07
los negativos menos 3 00:16:09
menos 1, menos 2 00:16:11
y cuantos ceros he metido, pues 6 00:16:12
vale 00:16:14
si, entonces esta versión 00:16:16
esta versión 00:16:19
funciona 00:16:21
pero no para hacer lo que me pide el ejercicio 00:16:23
¿qué parte del código? 00:16:25
bueno 00:16:29
lo de arriba es solo declarar las variables 00:16:29
inicializarlas a cero 00:16:31
y luego ya es el bucle 00:16:33
¿puse dentro del bucle el qué? 00:16:34
el n 00:16:40
claro, porque la n 00:16:41
la leo 10 veces 00:16:43
claro, es que leo 00:16:45
10 veces, luego tiene que estar dentro 00:16:47
la lectura, vale, entonces 00:16:49
aquí digo, bueno, esta versión casi 00:16:51
pero no, perdona, tiene que ser 00:16:53
el valor medio 00:16:56
entonces el valor medio de un conjunto de números 00:16:57
ya sabéis que es la suma 00:17:00
dividida por el total 00:17:01
vale, pues entonces 00:17:03
para hacer la media 00:17:06
yo he metido un con suma y un con negativo 00:17:07
o sea, un con positivo y un con negativo 00:17:10
y luego lo divido entre con suma y con negativo 00:17:11
claro, entonces nos falta un dato 00:17:14
que no tenemos, que es la cantidad de números 00:17:16
positivos que se han metido 00:17:18
y la cantidad de números negativos que se han metido 00:17:19
Necesitamos ese dato, ¿verdad? Para hacer la media, ¿no? 00:17:22
Y ese dato no lo tenemos. 00:17:24
Tenemos la cantidad de números que se han metido, que son 10. 00:17:26
Pero de esos 10 no sabemos cuáles han sido positivos, cuáles negativos y cuáles cero. 00:17:29
No lo sabemos. De esos 10 no sabemos. 00:17:34
Pues tenemos que contar cuántos positivos y contar cuántos negativos. 00:17:36
Luego tenemos que incorporar una cuenta más. 00:17:42
Bueno, dos cuentas más. 00:17:44
Pues hala 00:17:45
Vamos a contar 00:17:47
Los positivos 00:17:49
Y en realidad 00:17:52
La cuenta de los negativos me la puedo ahorrar 00:17:55
Porque será, como tengo la de ceros 00:17:58
Tengo 10 menos los positivos 00:18:00
Menos los ceros 00:18:02
Entonces con contar los positivos ya tengo 00:18:03
Cuantos negativos también 00:18:05
Porque hago la resta 00:18:07
Claro, se ve más claro si los contamos en paralelo 00:18:08
Pero como ya estáis muy avanzados 00:18:11
Vamos a decir, bueno, con contar los positivos 00:18:14
Solo tengo suficiente 00:18:17
Pero ese dato sí, eso hay que contarlo 00:18:18
Tengo que contarlos para poder 00:18:20
Saber cuántos para hacer la media 00:18:23
Vale, pues ¿cuándo contaré los positivos? 00:18:25
Lo contaré aquí 00:18:28
Cuando ha llegado un positivo 00:18:29
Cuando no es mayor que cero 00:18:31
Luego aquí no me olvido de poner mis llaves 00:18:32
Porque ahora ya me aparece otra sentencia más 00:18:35
Vale 00:18:37
Jolines 00:18:43
Vale, pues he tenido que incorporar 00:18:46
Un contador adicional 00:18:51
Un contador adicional 00:18:52
Con la cuenta de los positivos 00:18:54
Bueno, pues ya tengo todos los datos 00:18:56
Que me faltan para hacer la media 00:18:59
Tengo todos los que me faltan para hacer la media 00:19:01
Media de los positivos 00:19:03
La media de los positivos 00:19:08
Será la suma de los positivos 00:19:11
Pero dividida entre el total 00:19:12
Porque eso es un valor medio 00:19:15
La suma entre el total 00:19:17
Y el total lo acabo de contar 00:19:18
Positivos 00:19:20
La suma de los 00:19:22
La media de los negativos 00:19:24
¿Cuál será? 00:19:26
La media de los negativos será 00:19:30
La suma de los negativos 00:19:32
Entre el total de los números negativos 00:19:35
Que se han metido 00:19:37
Estos no los he contado 00:19:38
Podía haber metido un contador y contarlos también 00:19:40
Igual que los he contado aquí 00:19:42
Los positivos que van llegando 00:19:44
Pero bueno, como sé que en total son 10 00:19:45
y sé cuántos ceros y cuántos positivos hay 00:19:48
pues hago 10 menos positivos menos ceros 00:19:51
y van a ser los negativos, no hay tutía 00:19:53
entonces 00:19:55
podríamos hacer aquí 00:19:56
menos 10 00:19:59
menos cont 00:20:01
ceros 00:20:02
menos cont 00:20:04
positivos 00:20:06
esta última línea 00:20:08
a ver 00:20:12
¿cómo hemos calculado la media de los positivos? 00:20:14
sí, he hecho la suma 00:20:17
y he dividido, vale 00:20:18
Pues la media de los negativos es igual 00:20:19
La suma de los negativos entre la cantidad 00:20:21
De negativos que me han llegado 00:20:24
No los hemos contado, luego no tenemos una variable 00:20:25
Que los cuente, pero si tengo un total 00:20:28
De 10 00:20:30
Claro, le resto los positivos y los ceros 00:20:30
Pues los demás tienen que ser los negativos, no hay otra 00:20:33
Y luego el contador de ceros pues ya está 00:20:36
Vale, pues ya está 00:20:38
Ya estaría el ejercicio completo 00:20:40
Entonces en este ejercicio hemos tenido 00:20:42
Que hacer en paralelo varias cosas 00:20:44
En un solo bucle 00:20:45
que hayamos tenido que hacer varias sumas 00:20:48
varios contadores 00:20:50
no es que implique que haya que hacer diferentes bucles 00:20:51
porque en el mismo bucle 00:20:55
yo puedo llevar en paralelo todas las acciones 00:20:56
porque todas trabajan 00:20:59
con el mismo dato de entrada 00:21:02
entonces en el mismo bucle 00:21:04
llevo la suma de los positivos 00:21:05
llevo la suma de los negativos 00:21:07
llevo la cuenta 00:21:09
en el mismo bucle lo llevo todo 00:21:10
y luego ya doy el resultado final cuando el bucle acabó 00:21:12
y además aquí tenemos la suerte 00:21:15
de que como me han dicho exactamente 10 00:21:20
pues tengo el bucle for 00:21:23
ahí plantado 00:21:25
y ya está, tengo el bucle for plantado 00:21:27
que me cambian el ejercicio 00:21:29
y me dicen 00:21:34
haz lo mismo para 10.000 números 00:21:34
facilísimo 00:21:37
cambio esto y ya está 00:21:39
me pedirá 10.000 números 00:21:41
pero quien hace la prueba esa 00:21:44
de 10.000 números 00:21:45
efectivamente 00:21:46
La automatizas con Java Unit 00:21:52
Claro 00:21:55
Efectivamente 00:21:55
Que si puedo 00:21:58
Bajar 00:21:59
Esto es bajar o más 00:22:01
Bueno o 00:22:04
Eso 00:22:05
Dime 00:22:12
Porque el total de números que he metido son 10 00:22:13
¿Perdona? 00:22:17
A ver el contador de positivos es el de positivos 00:22:25
El de ceros es el de ceros 00:22:31
Y el de negativos es el total 00:22:32
menos el de ceros y el de positivos 00:22:33
es que igual lo he entendido mal 00:22:35
es más eficiente contar cuántos negativos hay 00:22:38
porque si tú cambias la cantidad 00:22:40
de números que se piden 00:22:42
ya no sería 10 menos cuántos 00:22:43
claro, efectivamente, eso sí 00:22:45
si a mí me dicen, cámbialo a 10.000 00:22:46
efectivamente, no me basta solo con cambiarlo ahí 00:22:48
tienes razón, tendría que venir aquí 00:22:51
tendría que venir aquí, claro, claro, claro 00:22:53
claro, efectivamente 00:22:55
claro, tendría que hacer un cambio 00:22:57
en dos sitios, efectivamente 00:22:59
claro 00:23:01
ahí sería una prueba muy bien 00:23:08
pasada, porque este ejercicio no hace 00:23:11
sus pruebas, mete unos cuantos positivos 00:23:12
otros negativos y funciona, pero efectivamente 00:23:14
las pruebas 00:23:16
hay que pasarlas para los casos raros 00:23:18
para los casos extremos que se llaman 00:23:20
y un caso extremo sería, todos ceros 00:23:22
por ejemplo, pues cuando hacemos 00:23:24
la media, nos queda una división entre cero 00:23:26
¿vale? nos queda una división entre cero 00:23:28
entonces, si 00:23:30
queremos ya rizar el rizo 00:23:32
efectivamente 00:23:34
y en el caso de que no hayamos metido 00:23:35
o ningún positivo o ningún negativo 00:23:41
no nos dé la división entre cero 00:23:44
pues entonces, ¿qué modificación podríamos hacer aquí? 00:23:47
aquí podríamos hacer 00:23:53
suma, como ahora ya esto lo tenemos súper suelto 00:23:54
suma positivo es mayor que cero 00:23:58
no, perdón, suma no cont 00:24:02
Cont 00:24:04
Positivo 00:24:06
Es mayor que cero 00:24:11
Porque si cont positivo es mayor que cero 00:24:13
Entonces sí tiene sentido hacer la media 00:24:16
Sí tiene sentido 00:24:17
Cont 00:24:19
Si tienes 00:24:20
Se llama 00:24:24
Con ese o con 00:24:26
Lo he puesto con ese o con 00:24:29
Sin ese es todo ello 00:24:31
Salvo el cero que era 00:24:33
Ah, el cont era con S 00:24:35
Y el suma era sin S 00:24:38
Vale, a ver 00:24:39
Entonces, cont positivos es con S, ¿verdad? 00:24:40
Pero suma es sin S 00:24:43
Este, vale 00:24:45
Así, no, no, no, no hemos liado nada 00:24:46
Tranquilidad 00:24:49
Entonces, el caso de error, ¿qué me dices tú? 00:24:49
Yo no estoy viendo mi error 00:25:01
Pero la media de negativo me sale bien 00:25:03
La media de positivo me sale algo raro 00:25:05
y me da error si pongo solo 00:25:06
positivos 00:25:08
vale, espera, vamos a 00:25:09
pero se ha inicializado a cero 00:25:13
vale, entonces, espera, vamos a situarnos 00:25:22
si os da por otras cosas, ahora lo vemos 00:25:25
vale, pero entonces estamos en el caso 00:25:27
caso de prueba que uno 00:25:28
pues se ha dado cuenta porque ha pasado muchas pruebas 00:25:30
y ha hecho muy bien, como Pedro esta vez 00:25:32
si no metes positivos 00:25:35
a la hora de hacer la media te va a ir entre 0 00:25:36
la división entre 0 es 00:25:38
arithmetic exception 00:25:40
rojo y se acabó 00:25:43
entonces, cuidadín 00:25:45
esta división 00:25:47
solo la hacemos si con 00:25:48
positivos es mayor que 0 00:25:51
y si no, un segundito, vamos a completar la versión 00:25:52
esta y luego ya seguimos 00:25:55
y si no, le decimos que es la media 0 00:25:56
porque no hay positivos, pues media 0 00:25:59
y ya está 00:26:01
bueno, lo que me diga 00:26:02
el cliente, si el cliente me dice, cuando no te he 00:26:05
introducido ningún positivo, 00:26:07
pon media cero o pon 00:26:09
no hay positivos, lo que tú quieras. 00:26:11
Yo le muestre cero porque como no hay positivos, 00:26:13
la media, eso es como... 00:26:15
Vale. 00:26:17
A ver, nosotros hemos asumido que 00:26:21
la suma de positivos 00:26:23
está en esta variable, que está clara. 00:26:25
Y la cantidad de positivos 00:26:28
que se han metido está en esta otra. 00:26:29
Con lo cual la media está clara, la suma 00:26:31
entre la cantidad. Pero hay un caso 00:26:33
especial, que no te hayan metido 00:26:35
ningún positivo. La suma será 00:26:37
cero, porque no se ha incrementado nunca la suma. 00:26:39
Pero el contador también va a ser 00:26:41
cero. Entonces, cero entre cero, 00:26:43
la máquina virtual te da 00:26:45
una excepción porque está por definir. 00:26:47
La división por cero es una indeterminación. 00:26:49
Entonces, pararía el programa. Entonces, 00:26:51
como no queremos que pare el programa, 00:26:53
pues decimos, oye, ojo, antes 00:26:55
de meterle a System.out.printl en esto, 00:26:57
vamos a meter esto en una ternaria 00:26:59
de estas. Y le decimos, oye, 00:27:00
¿Realmente has metido positivos? 00:27:03
Si realmente has metido positivos, 00:27:05
entonces sí, muéstrame esto. 00:27:07
Pero si no has metido positivos, 00:27:10
muéstrame esto. 00:27:11
Y con con negativo sería igual. 00:27:13
Tendríamos que preguntarnos, 00:27:16
¿esto es mayor que cero? 00:27:17
¿El número de negativos es mayor que cero? 00:27:19
Aquí efectivamente empieza a ser 00:27:22
un poquito más claro si contamos los negativos 00:27:23
a una variable aparte, porque si no nos va a quedar muy largo. 00:27:25
¿Vale? Vamos a contarlo 00:27:27
de hecho a una variable aparte en lugar de hacer la resta, 00:27:29
porque si no nos va a quedar muy feo 00:27:31
el código, muy feo 00:27:34
vale, vamos a contar los negativos en una variable 00:27:35
aparte también 00:27:37
vale, cont 00:27:38
negativos 00:27:43
vale 00:27:46
si, he dicho, vamos a ponerla aparte porque si no 00:27:47
la ternaria aquí 00:27:51
se me va a alargar mucho a la derecha 00:27:52
se me va a quedar una condición muy grande ahí 00:27:54
entonces para que no se me alargue mucho 00:27:57
a la derecha 00:27:58
vamos a poner un específico para él, cont negativos 00:28:00
Eso haría que ahora ya 00:28:03
Aquí de nuevo 00:28:05
Tengo que abrir, ahora ya sí que la he abierto 00:28:06
Obligatoriamente 00:28:13
Con negativos 00:28:14
Más, más 00:28:16
Y ahora ya 00:28:18
Antes de hacer la media 00:28:20
Antes de hacer la media, que en este caso 00:28:22
Gracias a que tengo la variable, ya no hace falta que ponga todo esto 00:28:24
Lo tengo, se me queda más simple el código 00:28:27
Con negativos 00:28:29
Vale, pues lo mismo 00:28:34
Cuando muestro la media, digo 00:28:35
oye, no muestres esto incondicionalmente 00:28:37
no muestres eso incondicionalmente 00:28:40
porque como sea negativa 00:28:41
perdón, como sea cero ese contador 00:28:43
también se te va a parar 00:28:46
pues entonces 00:28:47
con negativos 00:28:49
es mayor que cero 00:28:53
porque si con negativos es mayor que cero 00:28:54
entonces sí 00:29:02
muestra la media 00:29:03
suma entre con negativos 00:29:04
pero si no, muestra cero 00:29:07
o lo que el cliente te diga que tengas que mostrar 00:29:09
lo que sea 00:29:11
vale 00:29:12
entonces como eso a su vez está condicionado en el string 00:29:14
por eso lo he metido todo en paréntesis 00:29:17
vale, pues ahora ya 00:29:19
ese caso de prueba 00:29:21
de cuando no metemos ningún positivo o negativo 00:29:24
ya lo va a pasar también 00:29:25
vale, vamos a suponer 00:29:26
que ahora no le metemos ningún positivo 00:29:30
pongo 00:29:32
0, 0, 0, 0, 0, 0 00:29:33
bueno 00:29:36
y ahora le pongo 00:29:37
menos 4, menos 1, lo que sea 00:29:39
hasta acabar 00:29:41
bueno, otro cero 00:29:44
vale, ahora ya no me sale error 00:29:46
media de los positivos, cero, no has metido 00:29:48
ninguno, media de los negativos 00:29:50
la que sea que ha salido, cantidad 00:29:52
de cero, siete 00:29:54
vale, más 00:29:55
y si no pones ningún cero, te saldrá 00:29:58
cantidad de cero, cero, ahí no hay ningún 00:30:02
problema, porque aquí no hay ninguna división 00:30:04
ahí no estamos dividiendo, estamos mostrando el contador 00:30:06
si ha sido cero, ha sido cero 00:30:08
se lo he puesto porque si no tenía que poner aquí 00:30:10
el 10 menos con positivos 00:30:14
y se me quedaba muy largo 00:30:16
pero no era imprescindible 00:30:17
pero simplemente para cortar esa sentencia 00:30:19
vale, ¿alguien tiene algo 00:30:21
que le agobie de esto? 00:30:28
o más o menos está todo claro 00:30:30
con todo 23 la media es 2 00:30:31
vamos a ver si es algo que hemos escrito mal 00:30:38
aquí también 00:30:40
es que 23 es muy largo 00:30:41
voy a ponerle a todo 3 00:30:43
media 3, negativo es 0 00:30:45
pero no hay ninguno y cantidad de 0 es 0 00:30:51
bueno, pues será cualquier chorrada 00:30:52
cuando revises el código 00:30:55
vale, ¿alguna otra cosa 00:30:56
que detectéis de este ejercicio? 00:30:59
pues mira, en este caso no te no sé qué 00:31:01
en principio yo creo que no 00:31:03
lo que pasa es que 00:31:05
ya vamos a dejarlo un poco 00:31:07
aquí cuando me dicen 00:31:09
muestra la media 00:31:11
uno ya debería pensar 00:31:12
a ver, yo he seleccionado el tipo de 00:31:14
dato para la media muy alegremente como 00:31:16
entero, cuando hacía sumas 00:31:18
si son sumas de enteros 00:31:20
estupendo, pero la suma de enteros siempre es 00:31:22
entero, pero una media 00:31:24
me va a dar 00:31:26
con decimales normalmente, es una división 00:31:28
a menos que me digan 00:31:30
no, no 00:31:33
hazme la media truncada, pero 00:31:34
hombre, como aquí no me dicen nada, de hecho 00:31:36
ni me están diciendo que los pida enteros, pero bueno 00:31:38
Los hemos pedido enteros para... 00:31:40
Pues, entonces, aquí tendría mucho más sentido 00:31:42
esto declararlo como dable, por ejemplo. 00:31:45
¿Vale? 00:31:49
Lo podemos declarar como dable. 00:31:50
Y, sin embargo, los contadores sí que sí como enteros, 00:31:55
porque esos son cuentas. 00:31:59
¿Vale? 00:32:01
Entonces, lo declaramos como dable. 00:32:04
Y ahora, ¿qué estaremos haciendo aquí? 00:32:06
Fijaos que la máquina virtual va a hacer 00:32:09
una promoción automática que llamábamos. 00:32:11
Esto, un dabble, 00:32:16
lo va a dividir entre un entero. 00:32:18
Suma positivo es dabble, 00:32:22
pero lo divide entre entero. 00:32:24
¿Vale? 00:32:26
Dabble, entre entero lo guarda en dabble. 00:32:27
Con lo cual ahora sí me va a aparecer decimales. 00:32:30
No, veis que aquí cuando veíamos operadores 00:32:32
y todo eso decíamos, 00:32:33
hay operadores que pueden mezclar 00:32:35
diferentes tipos de datos y no pasa nada. 00:32:37
La suma de hecho puede mezclar enteros y cadenas 00:32:39
No pasa nada, se convierte todo a cadena 00:32:42
La suma puede mezclar 00:32:44
Decimales y enteros 00:32:46
No pasa nada, se promociona todo a decimal 00:32:47
Porque un entero a decimal no le pasa nada 00:32:49
Se le pone coma cero y ya está 00:32:52
Un decimal a entero sí, porque se le corta 00:32:53
Pues aquí tenemos, decimal entero 00:32:55
No pasa nada, este es un entero 00:32:58
Se le promociona decimal con coma cero 00:33:00
Y ya me queda división de dos decimales 00:33:02
Me dará en decimales 00:33:04
¿Vale? 00:33:05
A ver 00:33:06
Nosotros ahora, la media 00:33:17
Si yo digo 00:33:22
Que calculéis la media de algo 00:33:24
La media es una división 00:33:25
Entonces la división, a menos que 00:33:27
Yo diga división entera 00:33:29
La división es algo que por definición 00:33:31
Es con decimales 00:33:34
Entonces si yo pido algún ejercicio 00:33:35
en el que haya que dividir 00:33:37
asumid que el resultado lo esperamos 00:33:39
con la parte decimal 00:33:42
porque la división de decimales 00:33:43
si esperamos que el resultado sea entero 00:33:44
o porque hace falta que sea entero 00:33:47
será división entera 00:33:49
por defecto la división es con decimales 00:33:50
entonces aquí por defecto la media 00:33:52
que es una división 00:33:54
pues por defecto es con decimales 00:33:56
bueno a ver 00:33:57
tampoco es que uno 00:34:01
se juegue la prueba por estas cosas 00:34:05
bueno depende 00:34:07
si va muy mal 00:34:09
pero es que si va muy mal 00:34:10
pues tiene un cero, con lo cual le da igual tener un cero con uno 00:34:12
que un cero con cero cero uno 00:34:15
por ejemplo esto me tendría que sacar 00:34:17
cuatro y medio, justo 00:34:22
ahora ya le he metido cuatro, cinco y todo ceros 00:34:24
entonces me da la media de los positivos 00:34:27
cuatro con cinco 00:34:29
vale, bueno 00:34:30
necesitáis parar un momento 00:34:33
Sí, vale, pues a ver 00:34:37
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
12
Fecha:
22 de octubre de 2024 - 18:14
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
34′ 40″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
139.24 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid