20251020 ProgEstr-EjerDecision_3 - 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:
Venga, vamos a conectar con esto otra vez. Estábamos con el ejercicio de dime si la fecha que te doy con día, mes y año es válida. Entonces, primero validábamos el mes, fecha no válida y para no anidar aquí un ELSE y que me quedara todo anidado para no ponerlo con un ELSE, pues nos íbamos con esta sentencia.
00:00:00
así la incorporábamos, no es una sentencia
00:00:29
que sea especialmente recomendable
00:00:32
usar, porque
00:00:34
corta un poco la elegibilidad del código
00:00:35
tienes un código larguísimo y tú
00:00:38
te haces idea de que el programa hace esto, hace lo otro
00:00:39
pero claro, si tiene un system.exe
00:00:42
y da el principio, hay una rama por la que sale
00:00:43
y termina y no hace más, entonces como que se te
00:00:45
escapa un poco la estructura del código
00:00:48
no es muy recomendable, pero bueno
00:00:49
aquí como estos ejercicios que estamos haciendo son tanto
00:00:51
if, else y if anidados
00:00:53
para no tener que encontrarnos
00:00:54
con algo tan farragoso
00:00:57
bueno, habíamos dicho, si el mes no es válido
00:00:59
ya directamente nos vamos, ahora
00:01:02
si el mes es válido, estamos aquí
00:01:03
si el mes es válido
00:01:05
¿qué hacemos?
00:01:07
pues vamos a ver
00:01:10
la condición de que sea de 31 días
00:01:11
que la hemos puesto, tanto así
00:01:13
como así, ambas son la misma
00:01:16
ambas son la misma
00:01:17
y ahora en función de si el mes
00:01:18
es de 31 días, es febrero
00:01:21
o restante que es de 30
00:01:23
hago una cosa u otra
00:01:25
y ese que hago es esta asignación
00:01:27
luego
00:01:29
una sentencia if
00:01:31
que lo único que hace dentro es una asignación
00:01:33
la podemos hacer con el operador
00:01:36
ternario, por esto había
00:01:38
comentado esto
00:01:40
entonces, si el mes es de
00:01:41
31 días, ¿qué le quiero asignar
00:01:43
a día máximo? pues si el mes
00:01:46
es de 31 días, a día máximo
00:01:48
le quiero dar
00:01:49
31, perdón, 31
00:01:50
vale, y he puesto
00:01:53
dos interrogaciones
00:01:55
¿Qué pasa si mes no es de 31 días?
00:01:56
Me abro aquí otra vez otra condición
00:02:00
Me abro esta
00:02:02
Si mes es igual a 2
00:02:04
¿Vale?
00:02:06
Si mes
00:02:09
Uy
00:02:10
Si mes es
00:02:11
Igual a 2
00:02:14
Entonces aquí me abro
00:02:16
Esta rama
00:02:19
Le asigno 28
00:02:21
¿Y qué pasa si no?
00:02:22
Pues le asigno 30
00:02:24
¿Vale? Entonces todo este if
00:02:25
El save se convierte
00:02:27
En esto
00:02:29
¿Vale? Se convierte en esto
00:02:29
Y hombre, pues más claro
00:02:33
Más claro, ¿verdad?
00:02:35
Vamos a hacer una asignación a una variable
00:02:37
Que es lo que estamos haciendo aquí
00:02:39
Una asignación a una variable
00:02:40
En lugar de desglosarlo
00:02:42
If, el save, el save, como lo único que hago
00:02:45
Dentro, lo único
00:02:47
Es una asignación y a la misma variable
00:02:48
Y a la misma
00:02:51
Como tengo esa estructura
00:02:52
que lo único que hago dentro es una asignación
00:02:54
y a la misma en todas las ramas
00:02:56
pues lo puedo hacer así
00:02:58
oye, esta variable, ¿qué le damos?
00:02:59
pues no sé, le podemos dar 31, le podemos dar 28
00:03:02
o le podemos dar 30, son estos tres valores
00:03:04
31, 28 y 30
00:03:06
31, 28 y 30, en función de que si lo damos
00:03:07
si se cumple esta condición
00:03:10
le doy 31
00:03:12
y si no se cumple, pues me hago otra pregunta
00:03:13
¿es 2? pues le doy esta
00:03:16
¿que no se cumple esa tampoco? pues esta otra
00:03:18
¿vale?
00:03:20
¿Veis que esta sentencia de arriba es lo mismo que todo este if, el seif?
00:03:22
Bueno, pues ahora ya que tenemos día máximo asignado, la validez del día la podemos comprobar de esta manera.
00:03:33
Si el día es menor que 1 o es mayor que el día máximo, que sea, que eso depende del mes, pues fecha no válida.
00:03:44
y la validación
00:03:56
del año, porque la combinación
00:04:01
de mes y día ya los tenemos
00:04:03
como no han dicho lo de bisiesto, este programa
00:04:04
simplifica mucho, lo podríais ampliar
00:04:07
al caso bisiesto
00:04:08
el año, pues es que no está muy bien especificado
00:04:10
si fuera un examen habría que especificarlo mejor
00:04:13
¿qué años le damos
00:04:15
válidos desde el comienzo
00:04:16
del planeta tierra? pues hombre, habría que poner
00:04:18
si es menor que 45.000 millones
00:04:20
de años
00:04:23
entonces venga, vamos a darle de nuestra era
00:04:23
Ahí ya está. Entonces, podemos directamente esa condición también ponerla aquí. Si año es menor que cero o año es mayor que 2025, pues lo mismo, fecha no válida.
00:04:26
vale, pues nada, estamos validando
00:04:58
mes y año
00:05:05
si ambos son válidos
00:05:06
si ambos son válidos, no habremos
00:05:10
abandonado el programa por aquí
00:05:12
no lo habremos abandonado
00:05:14
entonces habremos llegado aquí
00:05:15
y al haber llegado aquí, ya lo único que nos
00:05:18
falta es
00:05:20
comprobar si la combinación
00:05:21
de día y mes es correcta
00:05:24
y eso lo comprobamos aquí
00:05:26
entonces el programa se queda cortito
00:05:28
nos ha quedado largo porque he puesto
00:05:32
este boolean
00:05:33
dos veces, de las dos maneras
00:05:35
y esto de aquí, pero
00:05:37
vale, vale, vamos a
00:05:38
modificar un poco este programa y así le vamos
00:05:57
cogiendo cierta soltura
00:06:00
a los stream, en lugar de
00:06:01
pedírmelo así, que es feo, me mete
00:06:03
el día, me mete el mes, me mete el año, que me meta la fecha
00:06:05
pues separada por guiones
00:06:07
o por barras, como uno quiera, por ejemplo
00:06:09
en lugar
00:06:11
de pedirle así
00:06:13
la fecha, lo voy a comentar
00:06:15
todo, en lugar de pedirle así
00:06:17
Se la vamos a pedir así
00:06:19
Control 7
00:06:20
Puede ser
00:06:23
Igual cada clip se tiene habilitadas
00:06:29
Algunas cosas u otras
00:06:31
Vamos a pedírselo así
00:06:32
Introduzca fecha
00:06:34
Y le decimos
00:06:37
Esa fecha
00:06:44
Métela como día
00:06:48
Més
00:06:50
Y año
00:06:57
Vale
00:07:01
Día, mes y año
00:07:06
Entonces ahora ya
00:07:08
Si el usuario introduce la fecha así
00:07:11
Pues entonces la fecha se va a guardar en un string
00:07:14
Porque está metida con
00:07:18
Barras
00:07:19
Entonces esto es una cadena
00:07:21
Luego la leeremos con nextline
00:07:22
Que es como se lee un string
00:07:28
Vale, entonces ¿cuál es nuestro problema?
00:07:29
Que esta aplicación necesita
00:07:35
El mes, el día y el año como numerito
00:07:36
Meta como numerito
00:07:39
Yo voy a necesitar estas tres variables
00:07:41
voy a necesitar
00:07:42
el día
00:07:44
el mes y el año
00:07:46
las necesito las tres
00:07:49
día, mes y año
00:07:51
para poder hacer la validación correspondiente
00:07:52
pero las tengo que sacar
00:07:55
de aquí que están en modo carácter
00:07:57
y además metidas entre barritas y todo eso
00:07:59
vale, pero bueno, conocemos el método
00:08:01
charAt
00:08:05
de string que me permite obtener el carácter
00:08:06
de una posición
00:08:09
pues entonces la concatenación del carácter 0 y 1
00:08:10
me dará el día pero todavía en string
00:08:14
es decir, vamos a coger el día
00:08:18
pero en texto, el día en texto cuál será
00:08:22
la concatenación de fecha punto char
00:08:26
at 0 más
00:08:30
la concatenación de fecha punto char at 1
00:08:34
Sería esto, ¿verdad?
00:08:38
Fecha charat 0 es este primer carácter
00:08:42
Y fecha charat 1 será este segundo
00:08:46
Si concateno los dos, será el día pero en modo texto
00:08:48
Porque es la concatenación de las dos cifras en char
00:08:52
De nuevo nos sale esta cosa roja
00:08:55
Que ya sabemos lo que es porque lo hemos leído un montón de veces
00:08:59
Estamos concatenando
00:09:02
Tratando de concatenar un char
00:09:05
y otro char
00:09:07
el operador más
00:09:09
ya sabemos
00:09:11
que funciona siempre como suma
00:09:13
no como concatenación
00:09:16
salvo en un caso
00:09:17
en el caso de que alguno de los dos
00:09:19
sea un string
00:09:21
si alguno de los dos operandos es un string
00:09:22
entonces es concatenar
00:09:26
pero aquí ninguno es un string
00:09:27
aquí los dos son char
00:09:29
luego lo interpreta que suma
00:09:30
y lo que hace es sumar el código ASCII
00:09:32
de este primero con el código ASCII del segundo
00:09:35
no queremos que sume eso
00:09:37
queremos que haga la concatenación
00:09:40
¿vale? pues ¿cómo solucionamos esto?
00:09:41
concatenamos con un string
00:09:45
y ya se ha convertido automáticamente
00:09:46
esto en concatenación
00:09:49
entonces
00:09:51
ahora este más
00:09:54
concatena
00:09:57
un string vacío con un char
00:09:58
ahora ya sí que es concatenar
00:10:00
porque este es string
00:10:03
es string, luego
00:10:04
el total es concatenación
00:10:06
luego el resultado se vuelve string
00:10:08
que es el numerito que fuera
00:10:11
y ahora todo eso es un string
00:10:12
concatenado con un char
00:10:15
pues de nuevo este operador
00:10:16
se convierte en concatenación
00:10:19
porque todo lo de la izquierda
00:10:21
es un string
00:10:23
luego ahora ya si en día
00:10:23
texto tendré la cadena
00:10:27
0, 1, 23
00:10:29
la cadena que sea en modo texto
00:10:30
vamos a obtener la cadena en modo texto
00:10:32
del día y del
00:10:35
año y luego ya las cambiamos a número
00:10:37
mes en texto
00:10:39
el mes en texto
00:10:44
sería lo mismo
00:10:46
la concatenación
00:10:48
no la suma de los caracteres asti
00:10:49
la concatenación
00:10:52
pero ahora sí, del char 0
00:10:54
1, 2 y 3
00:10:56
del char en la posición 3
00:10:57
con el char en la posición
00:10:59
4
00:11:02
eso sería el char en la posición
00:11:02
3 que es este
00:11:06
con el char en la posición 4 que es este
00:11:06
Ya están concatenados
00:11:09
Y me falta
00:11:11
El año en texto
00:11:16
Que sería
00:11:21
Este caso, lo bajo abajo
00:11:27
Porque este va a ser más largo
00:11:28
Este sería
00:11:30
0, 1, 2, 3
00:11:31
4, 5, 6
00:11:35
Del 6 en adelante
00:11:37
Pues fecha charat 6
00:11:38
Concatenado con fecha charat 7
00:11:40
Concatenado con fecha
00:11:43
charat 8
00:11:47
y concatenado
00:11:50
con fecha
00:11:53
charat 9
00:11:54
vale, pues ya tenemos
00:11:58
todos los
00:12:04
datos
00:12:07
en cadena
00:12:08
si
00:12:10
en cadena, vale
00:12:11
pero yo los necesito en número
00:12:21
los necesito en número porque tengo que
00:12:22
comparar con un número aquí
00:12:25
comparo con un número aquí
00:12:27
comparo aquí con esta condición
00:12:29
si ese numerito es par o impar
00:12:31
lo necesito en entero
00:12:32
no me vale el 23 como cadena de caracteres
00:12:34
2, 3, no me vale esa cadena
00:12:37
2, 3 o 1, 2
00:12:39
que es la que yo tengo aquí
00:12:41
esa cadena no me vale, necesito el número
00:12:43
entero correspondiente a esa cadena
00:12:45
es lo que necesito
00:12:47
¿lo puedo hacer de alguna manera?
00:12:48
pues sí, como vamos a
00:12:50
tener que hacerlo muy a menudo
00:12:52
vamos a incorporar desde ya
00:12:54
Cómo hacer lo siguiente
00:12:56
Que es esto
00:12:59
Para cambiar
00:13:00
Un número
00:13:03
De modo
00:13:05
Texto
00:13:10
A modo
00:13:12
Número entero
00:13:13
Exacto
00:13:16
Con ese, no lo habíamos usado antes, ¿no?
00:13:22
¿Lo habíamos usado ya?
00:13:25
Ah, pues genial
00:13:26
Ya lo sabemos, ¿vale?
00:13:28
Vale, pues entonces
00:13:30
Mi día
00:13:31
Mi día, ¿cuál va a ser?
00:13:32
El íntegre punto parseínt de día texto.
00:13:38
Ya tengo mi día en entero.
00:13:44
Mi mes, el íntegre punto parseínt de mi mes en texto.
00:13:48
Y mi año, mi íntegre punto parseínt de mi año en texto.
00:13:55
Y ya está, ya he parseado, que se dice, parsear en general, los anglicismos a mí no me gustan mucho,
00:14:06
pero en estos contextos ya se han incorporado como lenguaje natural nuestro, entonces tenemos que usarlo.
00:14:14
Entonces, parsear en programación siempre es unos datos que están en un formato convertirlos a otro formato.
00:14:21
Pues ya hemos parseado unos datos que estaban en una fecha, que estaban en este formato, día, mes y año,
00:14:29
Pues una fecha en formato string la hemos parseado o la hemos transformado a los tres números enteros correspondientes, ¿vale?
00:14:36
Haciendo esto, hemos transformado o parseado una fecha en formato string a los tres numeritos, que son ya los que necesitamos aquí.
00:14:47
¿No funcionará esto? Pues no sé.
00:14:58
en el momento de ejecutarlo
00:14:59
se te interrumpiría el programa y te saldría
00:15:06
en rojo number input type mismatch
00:15:08
exception o number formal exception
00:15:10
entonces se te pararía
00:15:12
no, no, no
00:15:13
el parseInt lo que
00:15:19
valida es que las cifras sean solo numéricas
00:15:21
para pasar al número entero
00:15:24
para eso vale esa función
00:15:25
porque lo que dices tú
00:15:27
no hace falta hacerlo porque ya está
00:15:29
el propio char, ya si tú lo interpretas
00:15:31
como int y lo asignas a un int
00:15:34
ya es el propio int
00:15:36
no hay que hacer la transformación
00:15:37
esta es una función más compleja
00:15:39
que tiene este uso, tengo yo una cadena
00:15:41
con cifras 322
00:15:43
pues esa cadena con cifras
00:15:45
322 se la transforma en el entero
00:15:47
322
00:15:49
vale, si hay una de repente
00:15:50
eso le haría algo más
00:15:53
claro
00:15:55
por ejemplo
00:15:55
si hacemos una prueba
00:15:58
Por ejemplo, yo le meto el JJ del 67 del no sé qué, pues me dice, oye, yo he intentado coger esto, coger sus cifras numéricas para convertirlo en el entero que representa y no he podido porque lo que me has dado no es un número.
00:16:05
¿cómo voy a convertir esto en un entero?
00:16:26
no puedo, no tiene sentido, no existe el entero
00:16:28
JJ
00:16:30
si existe el entero 67, este si podría
00:16:31
pero el entero JJ no existe
00:16:35
¿vale? el parsein
00:16:37
no es que coja la J, mire
00:16:38
su entero en ASCII y coja
00:16:40
la J, mire su entero en ASCII
00:16:42
los concatene, no
00:16:44
porque eso no tendría sentido, lo que hace es
00:16:46
interpreta
00:16:48
esto como un número entero
00:16:50
y lo guarda en una variable
00:16:52
entera con ese valor, 67
00:16:54
el valor 6
00:16:56
el valor 7, vale, entonces
00:16:58
si lo ejecutamos
00:17:00
ahora ya, pues
00:17:02
12 de marzo
00:17:04
de 2024
00:17:06
el 12 de marzo de 2024
00:17:09
no me dice nada porque
00:17:12
se me habrá pasado el fecha válida, lógicamente
00:17:14
entonces
00:17:16
aquí
00:17:18
el se, es que me he quedado con el el se
00:17:19
O sea, el ELSE no lo habíamos completado
00:17:24
Fecha válida
00:17:25
Si la fecha es válida, no habíamos completado con el ELSE
00:17:31
Vale
00:17:36
Ahora ya sí, venga
00:17:37
3 de marzo del 2020
00:17:41
El 3 de marzo del 2020, fecha válida
00:17:46
El 30 de febrero de 2000, fecha no válida
00:17:48
El 12 del 45 del 1000
00:17:58
Pues fecha no válida
00:18:06
Bueno, se podrían contemplar todos los casos de prueba
00:18:07
Pero yo creo que están contemplados
00:18:09
Y que saldría bien
00:18:10
¿Vale?
00:18:12
Entonces, si contempláramos que sea una fecha válida
00:18:16
Teniendo en cuenta los años bisiestos
00:18:19
Pues aquí
00:18:21
La validación del año
00:18:23
Sería más compleja
00:18:27
¿Vale?
00:18:29
Entonces, aquí cambiaría, el código cambiaría en día máximo en esta asignación de aquí, perdón, aquí, si contemplamos que tenga en cuenta si el año es bisiesto o no, esta asignación de que en el caso del que el mes sea febrero sea 28 no se quedaría tan sencilla,
00:18:30
Si en el caso de que el mes sea febrero, habría que abrir una rama, que es, ¿el mes es bisiesto? 29. ¿No es bisiesto? 28. Habría que cambiar el programa abriendo una rama más aquí. ¿Vale?
00:18:57
Claro
00:19:13
O aquí se podría ver más claro
00:19:17
Meses igual a 2
00:19:21
Año bisiesto, día más 29
00:19:23
Else, día más 28
00:19:25
Para lo cual
00:19:28
Habría que hacer el bulle al año bisiesto
00:19:30
Y el bulle al año bisiesto lo habéis hecho
00:19:31
En otro ejercicio
00:19:33
¿Vale? Como año múltiplo de 4
00:19:34
Salvo que lo sea de 100
00:19:38
Que entonces no puede ser lo de 4
00:19:39
Esa es la condición que habréis encontrado
00:19:40
vale pues venga
00:19:43
alguna otra cosa
00:19:49
venga pues algún otro ejercicio
00:19:50
Venga, 21.
00:20:33
Un momento, antes de hacer el 21
00:20:52
me he quedado yo con ganas
00:20:54
y así de paso
00:20:55
hacemos el del bisiesto, por si alguno
00:20:57
de ampliar este programa
00:21:00
para que contemple los bisiestos
00:21:01
y así estamos haciendo el del booleano de bisiesto
00:21:03
en el mismo, por si alguien no lo ha hecho
00:21:05
vale, vamos a hacer
00:21:07
este programa lo dejamos así tal cual
00:21:09
vale, y vamos a
00:21:11
ampliar a una versión 2 en el cual
00:21:13
la fecha
00:21:16
contemple también los años bisiestos
00:21:17
para decirnos si es válida
00:21:19
o no, es decir, si es
00:21:21
el 29 de un bisiesto debería decirme
00:21:23
válida, aquí si es el 29
00:21:25
de cualquier año me diría que no es válida
00:21:27
entonces bueno
00:21:29
entonces vamos, este era el
00:21:30
el 26
00:21:33
pues el 26 voy a copiar
00:21:36
y pegar para hacer
00:21:40
copio y pego
00:21:41
ejer 26
00:21:44
versión 2
00:21:48
vale, pues este ejercicio es versión 2
00:21:50
en esta variante
00:21:57
vamos a comprobar
00:22:04
También
00:22:08
Si el año es
00:22:11
B si esto
00:22:14
Vale, pues en qué se traduce
00:22:16
Voy a quitar ya todo lo comentado
00:22:20
En esta versión
00:22:21
Para que quede más
00:22:23
Vale
00:22:24
Esto que teníamos aquí
00:22:27
Vale, pues entonces
00:22:30
Nuestro código se había traducido en este
00:22:39
Voy a quitar este
00:22:41
Boolean que es más largo
00:22:43
lo voy a quitar y se me queda
00:22:45
así
00:22:48
entonces mi versión del programa era
00:22:49
primero
00:22:52
leemos los datos, para lo cual hay que hacer
00:22:54
todo ese parseo
00:22:56
de string con guiones
00:22:57
a numeritos
00:22:59
vale, ya está hecho
00:23:01
ahora, ya que hemos hecho la lectura de los datos
00:23:03
empezamos a validar
00:23:05
primero el mes
00:23:07
luego el año y ahora asumiendo que el mes
00:23:10
y el año son válidos, asumiendo que son válidos
00:23:12
Ahora ya hay que ver la combinación de días con mes
00:23:14
¿Vale?
00:23:19
Entonces, el día máximo sabemos que será 31
00:23:22
Si el mes es de 31 días
00:23:26
Si el mes es de 30, será 30 días
00:23:28
Y si el mes es 2, y solo en ese caso
00:23:34
Vamos a necesitar la condición de service y esto
00:23:37
Para abrir ahí dos posibilidades
00:23:40
entonces, vamos a poner aparte
00:23:42
como lo vamos a usar, la condición de ser bisiesto
00:23:45
y esta condición
00:23:47
trabaja con el año
00:23:51
esta condición trabaja exclusivamente
00:23:52
con el año, con el dato del año
00:23:56
vale, entonces aquí uno le puede sonar
00:23:57
más o menos lo que es un año bisiesto
00:24:00
que sea múltiplo de 4, no sé qué
00:24:02
pero se le pueden escapar cosas, entonces uno
00:24:03
pues busca
00:24:06
a ver, lo normal es que
00:24:07
se lo preguntaría HGPT
00:24:10
con lo cual haría
00:24:12
pero aquí estamos intentando pensarlo
00:24:13
entonces vamos a buscar la definición
00:24:15
en lenguaje natural
00:24:17
para traducirla a código
00:24:18
vale
00:24:20
cada cual
00:24:28
pero si yo quiero
00:24:36
venga
00:24:38
condición
00:24:43
de un año
00:24:45
¿cuál es la condición para que un año
00:24:48
sea bisisto? esta pregunta me gusta más
00:24:50
vale, esto ya lo podemos traducir a código
00:24:51
vale
00:24:54
tiene que ser múltiplo de 4
00:24:55
pero no múltiplo de 100
00:24:57
porque si es múltiplo de 4 y de 100 simultáneamente
00:25:01
también debería ser múltiplo de 400
00:25:06
esto es lo que dice
00:25:10
esta es la definición matemática
00:25:12
ahora hay que traducirla a Java
00:25:14
en resumen
00:25:15
tiene que ser múltiplo de 4
00:25:16
pero no de 100
00:25:20
porque si es de
00:25:24
no simultáneamente de 4 y de 100
00:25:26
porque si es simultáneamente de 4
00:25:28
y de 100
00:25:30
no va a ser bisiesto
00:25:31
a menos
00:25:33
que sea múltiplo de 400
00:25:34
eso es, en palabras es eso
00:25:37
es decir, yo cojo mi año
00:25:40
Sí, ya.
00:25:54
Pero yo te voy a poner esto en el examen.
00:25:59
He dicho que todo lo que haya que hacer en el examen
00:26:06
va a quedar muy claro en el enunciado.
00:26:08
De verdad, dejad de sufrir tanto.
00:26:11
Dejad de sufrir tanto.
00:26:14
Vosotros, lo único que tenéis que preocuparos ahora mismo
00:26:16
es de notar si vais de alguna manera
00:26:19
aprendiendo cosas, progresando.
00:26:22
es de los que os tenéis que preocupar
00:26:24
no de los exámenes
00:26:26
pues muy mal
00:26:28
entiendo que
00:26:31
tiene sentido que preocupe si estamos en junio
00:26:32
y están los exámenes
00:26:35
suspensos, pues hombre igual preocupa
00:26:37
pero es que ahora no es nuestra preocupación
00:26:39
de verdad, ahora vuestra preocupación es
00:26:41
voy aprendiendo, voy avanzando, me entero
00:26:42
me entero, soy capaz de hacer ejercicios
00:26:45
ya está
00:26:46
¿qué?
00:26:47
¿cómo?
00:26:51
estábamos aquí
00:26:52
La condición de bisiesto
00:26:53
Tiene que ser
00:26:56
No puede ser múltiplo de 4 y de 100
00:26:57
Simultáneamente
00:27:01
¿Vale?
00:27:02
Porque si es múltiplo de 4 y de 100 simultáneamente
00:27:03
No es bisiesto
00:27:06
Pero entonces puede ser bisiesto
00:27:06
Si es divisible entre 400
00:27:09
Luego, entonces
00:27:11
Esto
00:27:14
Uno lo podría traducir
00:27:14
Vale, a ver
00:27:17
Es bisiesto
00:27:19
A ver, es múltiplo de 4, vale, y, vale, esta sería la condición de ser simultáneamente múltiplo de 4 y de 100, ¿no?
00:27:22
Pues esto no puede ocurrir
00:28:07
Dime
00:28:09
Claro, o sea, no puede ser múltiplo de 4 y de 100 a la vez
00:28:09
No puede ser
00:28:19
Pero podría ser
00:28:20
Si
00:28:23
Es múltiplo de 400
00:28:23
Entonces sí, si es múltiplo de 400, sí
00:28:26
Entonces
00:28:29
Año es
00:28:30
Múltiplo
00:28:32
De 400
00:28:33
es que cualquier año
00:28:36
porque yo he interpretado la definición
00:28:54
los múltiplos de 400
00:28:56
son bisiestos todos
00:28:57
los múltiplos de 400 son bisiestos
00:28:59
¿vale? que son las únicas
00:29:02
excepciones de años múltiplos
00:29:04
de 4 y 100 que son bisiestos
00:29:06
¿Vale? Porque el resto de múltiplos de 4 y 100 simultáneamente no lo serían, solo serían los que sean múltiplos de 400, luego todos los múltiplos de 400 son bisiestos, ¿vale? ¿Sí o sí?
00:29:08
Este es
00:29:22
Esto
00:29:30
Si es múltiplo de 4
00:29:31
Esto es true
00:29:33
¿Vale?
00:29:36
Esto es true
00:29:39
Y esto es false
00:29:39
Con lo cual sería un true
00:29:43
True o false, true
00:29:45
Te daría true
00:29:46
¿Vale?
00:29:47
O esto se podría explicar
00:30:00
Múltiplo de 4
00:30:02
Igual así se ve más claro
00:30:07
Múltiplo de 4
00:30:08
Y no múltiplo de 100
00:30:09
O múltiplo de 400
00:30:13
Es decir, múltiplo de 4
00:30:17
Y, perdón
00:30:18
Así está mejor expresado
00:30:20
Múltiplo de 4 y no de 100
00:30:23
O de 400
00:30:25
Yo creo que esta ya sí que contempla todas las posibilidades
00:30:27
¿Vale?
00:30:30
Múltiplo de 4 o no de 100
00:30:32
O de 400
00:30:34
Vale
00:30:35
Hasta luego
00:30:36
entonces bájalo aquí abajo
00:30:38
vale
00:30:39
asumiendo que esta condición está bien
00:30:42
que creo que sí, ahora podemos comprobarlo y validarlo
00:30:45
ahora ya
00:30:47
podemos hacer
00:30:50
vamos a ver, ¿qué día máximo asignamos?
00:30:50
¿mes es de 31 días?
00:30:55
31
00:30:57
¿mes es de 2 días?
00:30:57
pues si el mes
00:31:02
es de 2 días
00:31:03
a ver
00:31:05
aquí lo que pasa es que si lo hacemos con el operador
00:31:06
tenemos que cambiar el orden de esto claro aquí que como abrían cuatro ramas un operador
00:31:09
ternario con cuatro ramas ya es un poco rollo entonces va a quedar mucho más claro con un
00:31:18
libro entonces meses de 31 días pues si el mes es de 31 días entonces día máximo el que borrado
00:31:23
Ah, vale, vale
00:31:37
Día máximo igual a 31
00:31:45
El SEIF
00:31:47
El SEIF
00:31:52
Més es igual a 2
00:31:55
Pues aquí podemos poner
00:32:01
Si año bisiesto
00:32:07
Si es bisiesto
00:32:08
Día máximo
00:32:11
Igual a 29
00:32:13
Else
00:32:15
Día max
00:32:19
Igual a 28
00:32:21
Y ninguno de los casos anteriores
00:32:22
Día max
00:32:26
Igual a 30
00:32:27
¿Vale?
00:32:29
Y ya está
00:32:32
Ahora contemplaría fecha válida
00:32:33
Tanto si los años son bisiestos como si no
00:32:38
Mes de 31 días
00:32:40
Esto es lo máximo que puede tener el día
00:32:42
Si el mes es febrero
00:32:45
El día máximo dependerá
00:32:46
De si es bisiesto o no
00:32:48
y si no es ni de 31 días
00:32:50
ni febrero, entonces es que tiene que ser
00:32:52
de 30, no hay otra
00:32:54
una vez que ya tenemos
00:32:55
el día máximo, ya podemos hacer este último
00:32:58
if, vale
00:33:00
vale, todas formas todo esto lo subo a la
00:33:03
virtual, vale
00:33:07
eeeem
00:33:11
y vamos a completar con el que había
00:33:13
dicho alguien, que era este, el 21
00:33:16
vale
00:33:18
datos de entrada para el
00:33:34
21, los coeficientes
00:33:37
Vamos a copiar un system out que haya por ahí
00:33:39
¿Qué número era este?
00:33:44
El 26
00:33:58
Y ¿dónde lo tengo yo aquí?
00:33:58
Ah, que está aquí ya, vale
00:34:03
El 21
00:34:05
Pues venga, un número
00:34:06
Voy a copiar y
00:34:10
Otro y otro
00:34:14
Entonces, coeficiente A
00:34:17
Coeficiente B de la ecuación de segundo grado
00:34:19
coeficiente c
00:34:24
de la ecuación
00:34:26
el primero que meto es el coeficiente a
00:34:28
el b y el c
00:34:30
vale, entonces
00:34:31
ahora se trata de contemplar las posibilidades
00:34:33
de una ecuación de segundo grado
00:34:36
¿puedo plantar la fórmula sin más? no
00:34:37
tengo varias posibilidades
00:34:40
porque
00:34:41
si
00:34:42
lo que hay dentro de la raíz es negativo
00:34:44
entonces
00:34:51
no tiene solución
00:34:52
asumimos que no tiene solución, nos olvidamos de las complejas
00:34:54
no lo extendemos
00:34:57
y si es 0 tiene una única solución
00:34:58
entonces
00:35:01
ahí ya veo las ramas que hay
00:35:03
y esas ramas van a depender
00:35:04
exclusivamente de esta operación
00:35:07
b al cuadrado menos 4a por c
00:35:08
va a depender de esto
00:35:10
entonces vamos a llamar
00:35:11
a esa operación el
00:35:15
determinante, que lo dicen, lo llaman
00:35:16
determinante, porque determina
00:35:19
las soluciones
00:35:21
Pues bueno, esto es un double porque ya
00:35:22
Esa operación, cuando hagamos la raíz puede ser un double
00:35:26
Pues venga, el determinante
00:35:30
El determinante va a ser b al cuadrado
00:35:32
Que es b por b
00:35:35
Menos 4 por a por c
00:35:37
Ese es el determinante
00:35:42
b al cuadrado menos 4 por a por c
00:35:44
Entonces, si determinante resulta que es menor que cero, pues ya está, ya hemos terminado, no existen soluciones reales, ya está.
00:35:46
Si el determinante es cero, existe una única solución, la solución doble, que se llama, que la vamos a poner en un número aparte,
00:36:09
La solución será
00:36:28
Vamos a ponerla aquí
00:36:33
Double solución
00:36:35
Que será menos b
00:36:37
Menos b
00:36:39
Lo del determinante da igual
00:36:40
Se me ha olvidado la fórmula
00:36:45
A2a
00:36:51
Menos b partido entre 2a
00:36:52
2
00:36:56
Por a
00:36:57
¿Vale?
00:36:59
esta será la solución que es la que mostramos
00:37:00
y ahora si el determinante es mayor que 0
00:37:04
que será el resto de los casos
00:37:20
tenemos dos soluciones y ya está
00:37:23
la solución 1 será menos b más raíz cuadrada
00:37:26
el operador raíz cuadrada no existe
00:37:36
pero igual que ya estamos usando algunas funciones
00:37:38
aunque no entendemos todavía por qué las usamos
00:37:41
o por qué se escriben de esa manera y todo
00:37:44
pues para hacer el charat, para hacer el next in
00:37:46
pues podemos empezar a usar esto
00:37:49
aunque no sabemos por qué se escribe así
00:37:52
para hacer una raíz cuadrada
00:37:54
b cuadrado menos 4ac
00:37:56
b por b menos 4 por a por c
00:38:01
esta sería la solución 1
00:38:06
He partido todo por 2A, claro
00:38:10
Partido todo
00:38:13
Entre 2A
00:38:21
Por A
00:38:24
Y la solución 2 sería la misma
00:38:27
Pero cambiando
00:38:30
Este más por menos
00:38:35
Y ahora las mostramos y se acabó
00:38:36
¡Hala! Ya estarían las dos mostradas
00:38:42
¿Vale? Luego distinguimos que hay
00:38:58
Tres ramas, tres posibilidades
00:39:01
Las tres en función de este valor
00:39:03
Pues ya está, las tres ramas
00:39:05
si, si, si, si, se acabó.
00:39:07
No existen soluciones,
00:39:10
o es una única o son las dos.
00:39:11
Vale, aquí he puesto paréntesis
00:39:21
lógicamente porque si no
00:39:23
ganaría este operador
00:39:25
por la prioridad.
00:39:27
Lo que pasa es que, claro,
00:39:49
para este no existen
00:39:52
soluciones reales, como era de esperar,
00:39:55
porque este polinomio
00:39:56
No
00:39:57
El B tiene que ser negativo
00:39:59
Para que se pueda factorizar
00:40:04
Entonces
00:40:08
Si lo vamos a ejecutar
00:40:10
1, menos 2
00:40:11
Y 4
00:40:15
Me he pasado con el C
00:40:16
1
00:40:19
Menos 4
00:40:21
2
00:40:24
Este si tiene ya soluciones
00:40:26
Casi
00:40:29
Venga, pues nada
00:40:31
Vamos a
00:40:38
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 5
- Fecha:
- 20 de octubre de 2025 - 17:13
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 40′ 40″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 183.40 MBytes