20241022 ProgrEstruct-Bucles-ejercicios_5 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
Ya
00:04:08
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