20260925 Ejercicios_1 - 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:
Vale, pues venga, vamos a arrancar aquí, venga, pues vamos, venga, pues ejercicio 1, por ahora nosotros hacemos cada ejercicio en un fichero distinto, vale, nos vamos a organizar así, pues bueno, a ver, yo en mi caso cuando los vaya a corregir aquí,
00:00:00
Vosotros organizados de otra manera, pero bueno, os recomiendo que ahora mismo hagáis cada ejercicio en un ficherito distinto
00:00:48
y así lo tenéis más organizado, no tenéis efectos secundarios de un código en otro, etc.
00:00:56
Pues venga, cada ejercicio o cada programa, porque para nosotros ahora cada ejercicio es un programa.
00:01:01
Llegará un momento en que ya no.
00:01:09
Cada ejercicio será una aplicación que tenga diferentes programas, clases que se llaman entre sí, etc.
00:01:11
Ahora mismo cada ejercicio es un programa
00:01:16
Pues venga, vámonos con el primero
00:01:19
De nuevo recordamos que ahora mismo
00:01:20
Para nosotros programa y clase
00:01:23
Son sinónimos
00:01:25
Dentro de poco ya
00:01:26
Esa sinonimia, si es que eso se puede decir
00:01:27
Desaparecerá
00:01:31
Porque no es así
00:01:33
Pero ahora mismo con lo que sabemos sí
00:01:34
Pues venga, ejercicio
00:01:36
Uno
00:01:39
Marco aquí el main
00:01:40
Y esto es
00:01:43
Lo que tenemos que escribir sí o sí
00:01:47
Aunque todavía no entendamos por qué
00:01:49
Para empezar a tirar un código
00:01:52
¿Vale? Aunque todavía no entendamos por qué
00:01:54
Eso es lo que tenemos que escribir sí o sí
00:01:56
Para empezar a tirar código, vale
00:01:58
Pues el código que vamos a tirar
00:01:59
¿Qué tiene que hacer?
00:02:02
Dale, ábrete, aquí
00:02:06
Vale
00:02:08
Eh...
00:02:08
Ah, que está aquí, vale
00:02:12
Tiene que, programa en Java
00:02:13
Que lea por teclado dos variables enteras
00:02:16
enteras y muestre su suma en pantalla. Cuando uno lee un enunciado, primero lo lee un montón
00:02:18
de veces hasta que entienda exactamente lo que tiene que hacer. En este ejemplo es una
00:02:25
línea, un enunciado sencillo, no tenemos que leerlo 50 veces hasta que entendamos lo
00:02:30
que queremos hacer, pero en otros casos, claro que tenemos que leer un enunciado unas cuantas
00:02:35
veces hasta que entendemos lo que hay que hacer. Incluso si tiene un montón de requisitos
00:02:42
de cosas, pues lo normal es leerlo
00:02:47
¿hay una tercera cosa?
00:02:50
no se ha ido todavía
00:02:52
ahora hay más
00:02:53
bueno
00:02:54
incluso esas sucesivas lecturas
00:02:56
las hacemos con un lápiz y papel al lado
00:03:01
para organizarnos, ah vale, aquí
00:03:03
esto me lo va a pedir varias veces
00:03:05
vale, vale, una primera organización
00:03:07
bueno, ya he entendido exactamente lo que tiene que hacer
00:03:09
¿que hay algo que no entiendo
00:03:11
sobre lo que tengo que hacer?
00:03:13
a la persona que me ha propuesto
00:03:15
esa aplicación, ese ejercicio, ese enunciado, le pido los detalles.
00:03:17
Todo esto de lo que hablo es la fase de análisis
00:03:22
que en un caso como este se traduce en leerlo y decir
00:03:25
pues ya lo he entendido. En otro contexto se traduce en un proceso muy largo
00:03:29
que involucra a un montón de personas hasta que por fin se detalla exactamente
00:03:33
que tiene que hacer el programa. En este caso, ese proceso ha terminado
00:03:37
porque ya hemos entendido lo que hay que hacer. Uy, voy a tener que leer del
00:03:41
teclado, bien, ya automáticamente
00:03:45
hago la conexión, voy a necesitar el objeto
00:03:47
escáner, muy bien
00:03:49
ahora, voy a necesitar
00:03:50
dos números
00:03:53
aquí hasta que me lo, hasta me dice
00:03:55
que van a ser dos variables
00:03:57
voy a necesitar dos datos, dos datos
00:03:59
pues dos variables, vale, dos variables
00:04:01
ahí, ¿de qué tipo?
00:04:03
es que ya me lo está diciendo, si no lo podría decidir
00:04:05
yo, vale, si me dice
00:04:07
escribir un programa en Java
00:04:09
que
00:04:11
te introduzca cuántas veces has hecho
00:04:12
no sé qué, ahí no te dice que
00:04:15
esa variable sea entera
00:04:17
pero tú dices, algo que cuenta
00:04:19
es entero, es 2, 3, 5
00:04:21
no es 7,8
00:04:23
entonces en este caso es que ni siquiera tenemos
00:04:24
que tomar decisiones nosotros, porque uno lo está
00:04:27
diciendo, pero muchas veces tenemos que tomarlas
00:04:29
bueno, pues en nuestro caso
00:04:31
leer por teclado dos numeritos enteros
00:04:32
uy, dos variables, ahí tendrán que estar
00:04:35
muy bien, leer por teclado, ¿qué significa?
00:04:37
que su valor en lugar de
00:04:40
asignárselo así tal cual a capón por código
00:04:41
voy a tener que solicitarlo
00:04:43
al usuario, ah que bien
00:04:45
eso ya lo sé hacer, lo he hecho varias veces
00:04:47
y no tengo ya que pensar sobre ello
00:04:49
porque ya me lo he aprendido, sé como se hace
00:04:51
¿vale? porque programar se basa en
00:04:53
ir incorporando conocimientos
00:04:55
e írtelos dejando
00:04:58
ya dentro grabados
00:04:59
y luego ya ser capaz de componer el puzzle
00:05:00
¿vale? o sea programar
00:05:03
es componer el puzzle con los
00:05:05
conocimientos que yo ya voy aprendiendo
00:05:07
luego, la memoria es fundamental
00:05:09
¿vale? la memoria es fundamental
00:05:12
porque hay que aprenderse las cosas
00:05:15
y hay que tenerlas ahí
00:05:16
si no, no puedes tirar de esos conocimientos
00:05:17
tú puedes buscar en internet
00:05:20
o buscar en una IA
00:05:22
una duda concreta
00:05:23
¿vale? pero esa duda te ha surgido
00:05:25
después de que tú ya te has hecho tu mapa mental
00:05:27
has compuesto lo que tú ya sabes
00:05:29
y tienes un boceto de las cosas
00:05:31
a partir de ahí ya puedes
00:05:33
consultar dudas concretas
00:05:35
¿vale? entonces
00:05:37
Nosotros ahora mismo ya sabemos perfectamente de memoria qué tipos de datos tenemos, cómo se declaran las variables y además sabemos perfectamente cómo leer un valor por teclado para asignarse a una variable.
00:05:39
Pues ese conocimiento ya tiene que estar en nuestra cabeza, no necesitamos, si tenemos que consultarlo, ya vamos muy mal, porque entonces ya el resto de la pelota no va a funcionar, se nos va a hacer ahí una pelota, quiero decir, enorme.
00:05:52
bueno, pues entonces, pues
00:06:07
y luego tendré que mostrar
00:06:09
la suma, sé mostrar, sí, tengo un
00:06:12
sistema de println, sé mostrar
00:06:13
tengo que hacer una suma de números y hacerla
00:06:15
sí, conozco el operador suma, sé hacerla
00:06:18
vale, pues efectivamente sabemos
00:06:19
hacer todo lo que hay aquí, ahora
00:06:21
se trata de componerlo
00:06:23
ya está, componer ese puzzle porque
00:06:25
sabemos hacerlo todo, entonces uno va
00:06:27
identificando, ah, aquí voy a necesitar hacer esto
00:06:29
ah, sí, esto se hace así, aquí voy a
00:06:31
necesitar esto, ah, sí, esto se hace así
00:06:33
Y este así, esto se hacía así
00:06:35
Es porque lo tenemos en la cabeza
00:06:37
Metido, ¿vale?
00:06:39
Pues venga, vamos a componer aquí ese puzzle
00:06:41
Y decimos
00:06:43
Eran dos variables enteras
00:06:44
Pues ya está, sé declarar dos variables enteras
00:06:46
Num1 y num2
00:06:49
Vale
00:06:51
Tengo que mostrar una suma
00:06:53
¿Vale?
00:06:56
Mi resultado final va a ser este
00:06:58
Mostrar una suma
00:06:59
Este va a ser mi resultado
00:07:01
Entonces
00:07:03
los programas en general
00:07:04
este es un ejemplo muy sencillo
00:07:08
que igual no lo ilustra mucho
00:07:10
pero uno no programa en línea
00:07:13
pa pa pa hago esto y ahora esto
00:07:15
y ahora esto y ahora esto
00:07:17
lo normal de hecho es que tú empieces a tirar desde el final
00:07:18
tiras desde el final
00:07:21
que es
00:07:23
mi programa con que tiene que concluir
00:07:23
que espera el usuario
00:07:27
de mi programa
00:07:29
el usuario espera de tu programa
00:07:30
Que tú muestres la suma de dos números
00:07:33
Pues tú tiras de ahí
00:07:35
Esto es lo que el usuario espera
00:07:36
Que tú muestres la suma de dos números
00:07:39
Y ahora ya, para conseguir eso
00:07:40
Empiezas a
00:07:43
Hacer los pasos previos
00:07:44
Vale, pues esto es lo que yo tengo
00:07:46
Que hacer, mostrar la suma de dos números
00:07:49
Vale, sé hacer la suma
00:07:51
De dos números, este más este otro
00:07:53
Sé mostrarla
00:07:55
Claro, ahora tengo que
00:07:56
Ver si con esto he completado
00:07:59
Lógicamente no, ya me lo dice el compilador
00:08:01
El compilador me dice
00:08:03
Oye, perdona, num1 y num2 no tienen nada
00:08:04
Claro, claro, es que me falta
00:08:06
Ahora ya
00:08:08
Hacerme la pregunta
00:08:10
¿De dónde sacan num1 y num2 los valores?
00:08:12
Los sacan del teclado
00:08:15
Vale, pues me voy ahí
00:08:15
Entonces, este que es un programa
00:08:17
De 4 o 5 líneas
00:08:20
¿No es el mejor
00:08:23
Para ilustrar eso?
00:08:24
Hola, dime
00:08:26
Estamos haciendo un grupo de los delegados
00:08:27
para el tema de los baños
00:08:29
Esperaos segunditos
00:08:30
si no quieres salir en pantalla
00:08:32
Bueno, pues estaba diciendo
00:08:34
este ejemplito de programa
00:08:37
que son cuatro cosas, quizá no es el más
00:08:39
ilustrativo de lo que os quiero transmitir ahora
00:08:41
pero lo que os quiero transmitir
00:08:43
es que aunque un programa
00:08:45
lo que acaba siendo al final
00:08:47
es una secuencia de acciones
00:08:49
no se construye en secuencia
00:08:50
Ah, tengo que hacer esto
00:08:53
vale, no se construye en secuencia
00:08:55
su diseño, su construcción
00:08:57
pues la vas haciendo por iteraciones sucesivas, te vas aproximando
00:08:59
y normalmente el punto de partida es el final, que es a dónde necesito llegar
00:09:03
a dónde necesito llegar, aquí necesitamos llegar a que se muestre un mensaje
00:09:08
luego un sistema de println y que ese mensaje sea una suma de dos números
00:09:15
que tendré que tener declarados previamente, quiero llegar aquí
00:09:20
Vale, ahora, ¿qué acciones tengo que tomar para llegar aquí?
00:09:25
En este caso, la única acción que tengo que tomar es dar valor a estas variables,
00:09:30
porque ya me lo está diciendo el compilador.
00:09:34
Yo, estupendo, te hago esto, ¿qué es lo que tú quieres hacer?
00:09:37
Yo te lo hago, pero me falta el valor de las variables.
00:09:39
Vale, pues entonces, ¿cuál es la pieza que tenemos que insertar aquí dentro?
00:09:43
Pues la pieza que tenemos que insertar aquí dentro es la de darle valor a las variables.
00:09:47
num1 igual a lo que sea
00:09:51
y num2 igual a lo que sea
00:09:54
genial
00:09:58
ya hemos puesto otra pieza
00:10:00
en nuestro rompecabezas
00:10:02
que es, ah, me falta darle valor
00:10:04
ya hemos puesto una pieza
00:10:06
pero hemos dejado dos agujeritos negros
00:10:07
por completar
00:10:10
el agujerito negro de y aquí que
00:10:11
y el agujerito negro de aquí que
00:10:13
vamos haciendo bocetos
00:10:15
y en cada boceto
00:10:17
que hacemos pues tendrá una parte que todavía
00:10:20
no hemos resuelto, vale
00:10:22
pues ahora vamos a atacar esa parte
00:10:24
vale, que tengo yo que asignar
00:10:26
a estas variables, me voy a
00:10:28
denunciar dos, es que no me acuerdo, dos valores
00:10:30
solicitados por teclado
00:10:32
vale, pues yo sé como
00:10:34
asigno una variable, un valor
00:10:36
solicitado por teclado, que es
00:10:38
a través de un objeto
00:10:40
que yo me tendré que
00:10:42
crear previamente, a través
00:10:44
de un objeto, sé que yo puedo hacer
00:10:46
esto, y esto porque me
00:10:48
lo sé de memoria, ese ladrillo
00:10:50
lo conozco y lo puedo usar aquí porque
00:10:52
me lo sé, vale
00:10:54
y sé que aquí tengo que hacer
00:10:56
lo mismo, vale
00:10:58
vale, sé que
00:11:02
por aquí van las cosas, pero
00:11:04
claro, esta cosita de aquí
00:11:06
que es
00:11:09
la que llama esto
00:11:10
para leer el número, esta cosita, ya me
00:11:12
falta el último de los ladrillos
00:11:14
que es, oye, cuidado
00:11:16
que me estoy acordando
00:11:18
que esta cosa de aquí
00:11:20
Necesita ser declarada
00:11:22
Necesita ser declarada
00:11:24
Vale, pues ese es el último ladrillo que queda
00:11:25
El último escollo que nos queda
00:11:28
Es esta sentencia
00:11:30
Que usa esta cosa de aquí
00:11:32
La tenía que tener declarada, es verdad
00:11:33
Si no la tenía declarada antes no funcionaba
00:11:36
Pues ya pongo el ladrillo
00:11:38
Que queda
00:11:40
Y esto pues también me lo sé de memoria
00:11:40
Y sé que se hacía de esta manera
00:11:43
Y digo, ¿y por qué me salía rojo?
00:11:46
Ah, porque esto
00:11:56
Por esto que ya aprendí
00:11:57
y que voy a entender más adelante, ahora no puedo, esto que ya aprendí, que cuando le doy un tipo de dato que él no sabe dónde está,
00:11:58
porque int sabe dónde está, que no sabe dónde está, tengo que decirle dónde está, y eso, aunque no entiendo nada de por qué se lo digo así,
00:12:09
aunque no entiendo nada, me he aprendido por ahora, que era así como había que decírselo, ¿vale?
00:12:17
bueno, pues ahora sí que parece que todos los ladrillos
00:12:28
del programa están
00:12:33
he partido
00:12:34
del final, mi programa
00:12:36
tiene que mostrar una suma
00:12:38
de números
00:12:40
y he empezado a construirlo
00:12:41
esa suma de números, si no recibe
00:12:43
un valor previamente
00:12:46
es imposible
00:12:47
que se obtenga, pues ya me he hecho
00:12:49
la siguiente pregunta, ¿y cómo reciben el valor?
00:12:52
ah, por teclado, vale
00:12:55
pues pongo esto, muy bien
00:12:56
Y esto para ponerlo, ¿me hacía falta algo? Sí, me hacía falta lo de arriba, muy bien. Vale, entonces ahora llega el momento de, hemos pasado la fase de compilación exitosamente, porque esto no tiene errores de compilación y ahora viene el momento de la fase de ejecución.
00:12:58
¿Vale? Insisto, eso es un ejemplo muy sencillito, pero me interesa un poquito los detalles de alguna manera del proceso mental que tenéis que en general seguir, ¿vale? Porque el vacío de tengo que hacer un programa que hace un montón de cosas, uno se enfrenta al vacío de y ahora tengo que empezar a escribir código, uno tras otro, uno tras otro.
00:13:18
Pues no, no escribo código uno tras otro, primero me sitúo en, ¿cómo tiene que acabar esto? Tiene que acabar mostrando un valor, este valor, muy bien, este valor, ¿cómo lo consigo? ¿Y qué necesito? Necesitas para construirlo tres variables, venga, las declaro y así vamos, ¿vale?
00:13:39
¿Qué ibas a preguntar?
00:13:58
Ah, el import ese de arriba.
00:14:01
Esto.
00:14:04
¿Vale? Necesario
00:14:06
para poder
00:14:08
usar esto en Java.
00:14:09
¿Vale? Ya lo entenderemos más adelante.
00:14:11
Repito.
00:14:13
¿Era para que mostrase...?
00:14:14
Para que mostrase, no.
00:14:18
Esta sentencia lo que hacía era
00:14:20
quedarse esperando,
00:14:21
dejar al programa a la espera
00:14:23
de que alguien llegue y meta un número.
00:14:25
cuando ese alguien ha llegado y ha metido
00:14:27
un número en el teclado numérico
00:14:29
ese numerito, pum, se almacena
00:14:31
aquí y ya saltamos a la siguiente
00:14:33
sentencia
00:14:35
¿vale? entonces la fase de compilación
00:14:36
la habríamos pasado porque
00:14:40
este programa no tiene errores de compilación
00:14:41
sino el compilador me avisaría
00:14:43
con sus rayados en rojos raros
00:14:45
vale
00:14:47
ahora vamos a hacer
00:14:49
una primera ejecución
00:14:51
pues venga, ejecutamos
00:14:53
esto a ver qué hace y mi consola se ha perdido un momento ahí está mi consola vale entonces claro
00:14:55
yo he hecho el programa yo soy programador soy desarrollador entonces yo veo aquí este cursor
00:15:13
aquí pataleando y como yo soy desarrolladora soy hecho el programa sé que esto significa que el
00:15:21
programa está ahí esperando
00:15:27
y además incluso sé que está esperando un número
00:15:28
porque he hecho yo el código
00:15:31
pero claro, a un usuario le das este programa
00:15:32
y el
00:15:35
programa arranca y hay ahí un cursor
00:15:37
parpadeando y dice, ¿qué me han dado?
00:15:39
¿qué es esto? ¿vale? ¿qué me han dado?
00:15:41
con lo cual, primera cosa que
00:15:43
tenemos ahora que corregir
00:15:45
de la cual nos ha informado la ejecución
00:15:46
vamos a poner un mensajito
00:15:49
¿qué menos que poner un mensajito?
00:15:51
bueno, pues
00:15:53
en lugar de seguir ejecutando voy a pararlo
00:15:53
directamente a lo bestia
00:15:56
con el botoncito rojo de aquí
00:15:58
¡pum!
00:16:00
aborto este programa a lo bestia
00:16:03
terminado, ya me dice que está terminado
00:16:05
y voy a arreglar eso
00:16:07
que eso no es que sea un error del programa
00:16:09
pero hombre, lo convierte
00:16:10
en un código
00:16:13
menos
00:16:14
amable para el que lo va a usar y por tanto
00:16:16
seguramente menos vendible
00:16:18
¿qué he identificado que me falta?
00:16:20
un mensajito aquí, que menos
00:16:22
un mensajito
00:16:24
Introduzca un entero
00:16:26
Vale
00:16:29
Y ahora
00:16:32
Una vez que he introducido el primer entero
00:16:36
Tiene sentido un segundo mensaje
00:16:39
Antes de que se quede esperando para el otro
00:16:42
Introduzca otro entero
00:16:44
Joder
00:16:51
Si es que ya los tiene muy fácil
00:16:52
Llega el viernes a última hora
00:16:56
Al patio a berrear
00:16:57
y tan anchos que se quedan
00:16:59
vale
00:17:01
y ahora ya el programa
00:17:03
el programa va a mostrar la suma
00:17:05
pero ya que estamos haciéndolo elegante
00:17:09
ya que estamos haciéndolo elegante
00:17:12
vamos a aprovechar
00:17:13
para hacerlo
00:17:16
más elegante y que le diga
00:17:17
la suma es
00:17:19
entonces yo soy muy lista y digo
00:17:20
voy a concatenar el mensajito
00:17:23
la suma es
00:17:26
voy a concatenarlo ya con esta suma
00:17:27
para que me muestre todo
00:17:30
la suma es concatenado con la suma
00:17:33
pues venga
00:17:37
y ya dejamos el programa muy bonito
00:17:38
la suma es
00:17:41
este va a ser mi mensajito
00:17:44
y lo voy a concatenar con lo que viene después
00:17:46
que se supone que es la suma de los números
00:17:49
venga, hacemos la prueba otra vez
00:17:52
Ahora el usuario, el que está haciendo la fase de pruebas
00:18:00
Ya dice, bueno, esto ya es otra cosa
00:18:05
Ya sé lo que tengo que hacer
00:18:07
45
00:18:09
¿Con qué lo quieres sumar?
00:18:10
Con 10
00:18:12
Venga
00:18:13
Introduzca otro, a ver qué hace con esos dos
00:18:14
La suma es 4.510
00:18:17
Pues lógicamente algo ha fallado en nuestro programa
00:18:21
Porque la suma no es 4.510
00:18:26
La suma es 55
00:18:30
Entonces, el que está haciendo el testing de nuestro programa
00:18:32
El que está haciendo el testing de nuestro programa
00:18:37
Dice, mira, me han pasado un programa para pruebas
00:18:44
Que es una birria total
00:18:47
Entonces ya empiezas a estar jodido
00:18:49
¿Vale?
00:18:51
Pero bueno, te dan otra oportunidad y te dicen
00:18:52
Venga, anda, revísalo
00:18:55
Vale
00:18:55
Entonces, vamos a ver
00:18:57
¿Cómo es que esto?
00:19:00
Si yo he puesto aquí la suma de un entero y de otro entero
00:19:01
hombre, una suma cuando tiene un número delante y otro número detrás
00:19:04
ya sabemos que funciona como la suma aritmética
00:19:10
pero esto no me ha hecho la suma aritmética
00:19:12
casualmente lo que me ha hecho es
00:19:16
por lo que veo la concatenación
00:19:18
me ha concatenado 45 y 10
00:19:20
¿por qué?
00:19:24
si el más hemos dicho siempre
00:19:25
que cuando tiene un número delante y otro detrás
00:19:27
funciona como suma
00:19:30
claro, pero es que digo
00:19:33
ojo, es que mi expresión
00:19:36
no es esta sola
00:19:38
la expresión que yo he puesto es todo
00:19:39
¿vale?
00:19:42
me estoy quedando
00:19:44
me estoy quedando
00:19:46
para tratar
00:19:54
de entender el problema
00:19:56
me he obcecado
00:19:58
y estoy mirando esto, esto está bien
00:19:59
escrito, esto es la suma de un número
00:20:02
y otro número, operador más
00:20:04
con número delante y número detrás
00:20:06
es una suma. Me obceco, me obceco,
00:20:08
me obceco, ¿vale?
00:20:10
De nuevo, este es un ejemplo sencillo,
00:20:12
pero trato de ilustrar el proceso
00:20:14
natural. Me obceco el que el problema
00:20:16
está aquí. Digo, no,
00:20:18
aquí no está el problema. Normalmente
00:20:20
los problemas están en zonas
00:20:22
distintas a donde estamos buscando.
00:20:24
Esto está
00:20:28
perfectamente escrito como suma
00:20:28
de número uno y número dos.
00:20:30
Claro, es que yo tengo que ampliar mi visión
00:20:32
y decir, vamos a ver.
00:20:34
Bien, esto no es una única, la expresión no es esto y ya, la expresión es más grandota, mi expresión es toda esta, esta es mi expresión, esta es la que se está evaluando, la que se está evaluando es toda, una expresión con tres operandos, vale, pues voy a mirar la expresión entera, no esto, la expresión entera, esto es un trocito, la expresión se evalúa en su totalidad, no un trocito.
00:20:35
Vale, entonces ahora ya empezamos a entender lo que decimos.
00:21:02
Vamos a ver.
00:21:04
Vamos a recordar que la máquina virtual de Java,
00:21:06
cuando tiene una expresión en la que tiene muchas operaciones,
00:21:08
si hay paréntesis, hace primero los paréntesis.
00:21:12
Pero si no hay paréntesis, va de izquierda a derecha.
00:21:15
¿Vale? Esa es la regla.
00:21:19
Si hay paréntesis, primero los paréntesis.
00:21:21
Luego, si hay operandos mezclados de multiplicaciones y sumas,
00:21:23
primero las multiplicaciones.
00:21:27
y luego cuando eso ya está resuelto
00:21:28
de izquierda a derecha
00:21:31
entonces aquí no tiene mezclas de multiplicaciones
00:21:32
ni divisiones, ni sumas
00:21:35
porque todos son sumas, con lo cual
00:21:37
prioridad igual, y no tiene paréntesis
00:21:38
con lo cual esta expresión
00:21:41
se va a evaluar de izquierda a derecha
00:21:43
sí o sí, no hay otra
00:21:45
vale, pues vamos a evaluarla de izquierda a derecha
00:21:46
lo primero que hace es ejecutar
00:21:49
este más de aquí
00:21:51
este es el primero que ejecuta
00:21:52
y este más que tiene
00:21:54
string en un lado o cadena
00:21:56
y número en otro
00:22:00
cuando el operador más tiene
00:22:01
cadena en un lado y número en otro
00:22:04
sabemos que se convierte
00:22:06
automáticamente en concatenador
00:22:08
vale, luego la máquina virtual
00:22:10
lo primero que hace es esta suma
00:22:12
que es una concatenación y nos muestra
00:22:14
la suma es
00:22:16
1 que es 45
00:22:17
el número que sea
00:22:20
y ya tenemos ahí una cadena
00:22:21
que es la concatenación de la suma es
00:22:23
num convertido a cadena
00:22:26
porque ya sabemos que funciona así el concatenador
00:22:28
lo que no sea cadena lo convierte a lo bestia
00:22:30
y el resultado, otra cadena
00:22:33
ya tenemos la primera parte de la expresión resuelta
00:22:36
la suma es 45
00:22:40
seguimos evaluando la expresión
00:22:42
operador más
00:22:44
será suma o concatenación
00:22:46
depende de lo que tenga cada lado
00:22:49
¿qué tiene a la izquierda?
00:22:50
una cadena, la cadena
00:22:53
la suma es 45, la que ha
00:22:55
obtenido de esta concatenación
00:22:57
tiene una cadena, con lo cual
00:22:58
esto de nuevo se convierte en concatenación
00:23:01
porque tiene en uno de los
00:23:03
dos lados una cadena, vale
00:23:05
pues concatena, la suma es 45
00:23:07
concaténalo con un 2, lo que sea
00:23:09
entonces es justo
00:23:11
el resultado que nos ha salido
00:23:13
la suma es 45, 10
00:23:14
porque ha ejecutado como
00:23:17
concatenación los dos máses
00:23:18
vale
00:23:20
Bueno, pues ya hemos entendido el problema. ¿Soluciones posibles? Pues muchas. ¿No tiene alguna? Claro, una solución. A ver, ojo, quiero que hagas primero esto, porque si haces primero esto, vas a hacerme la suma, porque tienes número y número.
00:23:22
Primero esto, pues para alterar el orden natural de izquierda a derecha, ya está, ¿vale?
00:23:43
Para darlo, ya está, solucionado, ¿vale?
00:23:52
Bueno, pues cuidado con estas tonterías porque se van anidando luego problemas y estas cosas las hacéis mal y suspenso.
00:24:02
por ejemplo, habría muchas soluciones
00:24:12
esta funcionaría, no hace falta, bueno vamos a probarla
00:24:17
no tardamos nada, pero bueno, funcionaría
00:24:20
la suma es 8, efectivamente
00:24:23
otra solución perfectamente puede ser
00:24:26
voy a guardar mi resultado en otra variable distinta
00:24:29
num1 más num2
00:24:31
mi resultado se ha guardado aquí
00:24:34
y ahora muestro mi resultado
00:24:37
Vale, pues ya está, también
00:24:40
Perfectamente válido
00:24:45
Porque el resultado ya lo tengo como suma
00:24:46
Ya lo tengo bien hecho, es una suma
00:24:50
Y lo muestro, vale, efectivamente
00:24:51
Pues esto también
00:24:54
Me lo hará bien
00:24:56
5 y 8, 13
00:24:57
Vale
00:25:00
O podríamos poner el mensaje antes
00:25:01
Y luego la suma después
00:25:06
Por ejemplo
00:25:07
Podríamos haber optado por hacer esto
00:25:10
Y nos habríamos encontrado con ese problema
00:25:11
Primero muestro el mensajito
00:25:13
Pero sin el salto de línea
00:25:15
La suma es
00:25:17
Y ahora pongo después
00:25:21
Num1
00:25:24
Más num2
00:25:26
Y no me habría hecho falta esta variable
00:25:29
Esto también funcionaría
00:25:33
La suma es, me lo muestra primero
00:25:35
Y luego después me muestra esto
00:25:37
Esto no hay duda de que es un número
00:25:39
Porque es número más número
00:25:40
pues esto también me lo haría bien.
00:25:43
¿Vale?
00:25:48
Si tengo 4 y tengo 8, pues la suma es 12.
00:25:49
¿Vale?
00:25:53
Bueno, pues aprendizaje de este ejercicio.
00:25:57
Quedarse uno bien en la cabeza,
00:26:00
lo de leer por teclado,
00:26:02
para usarlo ya con soltura sin tener que pensar.
00:26:04
Y cuidar el tema del operador suma,
00:26:07
porque se comporta con doble personalidad
00:26:10
en función de lo que esté sumando.
00:26:12
¿Vale? Vale. ¿Alguna duda, aunque os parezca que sea tonta de este ejercicio? ¿Todo el mundo tiene claro?
00:26:19
No le causan ningún conflicto, que lo ha entendido y ya está. Aunque de partidas no haya sabido hacerlo solo, ha quedado claro.
00:26:38
bueno
00:26:46
pues
00:26:48
os recuerdo que esta es una
00:26:50
incorporación de cosas
00:26:52
entonces
00:26:54
no dejéis que se acumule
00:26:56
nada, no dejéis que se acumule nada
00:26:59
porque luego ya es muy complicado
00:27:01
volver a ponerse al día
00:27:03
si vais al día sin ningún problema
00:27:04
pues ya está, y luego
00:27:07
la cosa se complica mucho, sobre todo en segundos
00:27:08
se complica mucho
00:27:11
y sigue siendo importante
00:27:12
ser un buen desarrollador
00:27:15
a ver
00:27:17
el otro que decíamos
00:27:20
programa que lea
00:27:22
tres variables y calcule su
00:27:26
promedio
00:27:28
vale, pues es que esta ya, habiendo entendido lo anterior
00:27:29
es que de esta
00:27:34
hay poco que
00:27:35
decir, vale
00:27:36
lo vamos a hacer
00:27:39
rápidamente, por si surgiera algo
00:27:42
sobre la marcha que nos genere
00:27:43
algún tipo de duda
00:27:45
Pero vamos, este tiene poco que decir
00:27:46
Ya rápidamente, como vamos a leer del teclado
00:27:52
Ya rápidamente plantamos lo del escáner
00:28:02
Porque ya lo tenemos entendido y no tenemos ni que pensarlo
00:28:05
Plantamos ya lo del escáner
00:28:08
Porque ya avanzamos que hay que leer del teclado
00:28:11
¿Cuántas variables? Tres
00:28:14
¿De qué tipo? Dabble
00:28:16
Pues ala, declaramos tres dabble
00:28:17
Num1, num2, num3
00:28:21
3 dabel aquí declaradas
00:28:24
vamos a leerlas del teclado
00:28:26
pues num1
00:28:28
es que num1
00:28:31
pues igual ponemos los mensajitos
00:28:33
para hacer copia y pega
00:28:35
pues scan
00:28:36
y nos acordamos otra cosa que ya tenemos
00:28:38
que tener aprendida
00:28:41
que cuando yo quiero leer un número
00:28:42
decimal lo leo así
00:28:45
con next dabel
00:28:47
número dabel perdón si no sería un next float
00:28:48
pero bueno
00:28:51
Vamos a, vale, y ahora como ya hemos avanzado, que si no ponemos el mensaje delante, el programa queda más feo que yo que sé, pues introduzca número decimal, ala, ya está, y esto mismo lo vamos a hacer otras dos veces más, para el numerito 2 y el numerito 3, vale.
00:28:52
Y ahora lo único que me dice esto es que muestre, que calcule la media y luego la muestre.
00:29:25
Pues venga, vamos a hacer literalmente lo que dice.
00:29:35
Vamos a calcular la media.
00:29:38
La media es la suma de los tres números dividido entre tres.
00:29:41
Como los números son decimales, vamos a guardar un decimal, tiene todo el sentido del mundo.
00:29:45
A menos que me digan redondéala.
00:29:50
Vamos a guardarla en un decimal.
00:29:52
Vale, dámelo.
00:29:54
Dar el resultado. La suma de los tres, aquí lógicamente es fundamental poner los paréntesis. Aquí, lógicamente, si uno se come los paréntesis por escribir rápido, la expresión cambia completamente.
00:29:55
porque lo primero que haría sería esta división
00:30:23
esta es la primera que haría
00:30:26
y luego al resultado de esta división le sumaría esto
00:30:28
que no tiene nada que ver
00:30:32
nosotros queremos primero hacer la suma de los tres
00:30:33
pues aquí sí que es obligatorio poner los paréntesis
00:30:37
aquí no es opcional
00:30:41
ahora
00:30:42
este resultado va a ser un double con decimales
00:30:45
porque la suma de double es double
00:30:50
yo lo estoy dividiendo entre 3 que es entero
00:30:53
pero recordamos de nuevo
00:30:56
que cuando en una operación mezclamos
00:30:58
decimales y enteros
00:31:00
el entero queda promocionado a decimal
00:31:01
por lo cual la máquina virtual
00:31:03
aunque le hayamos puesto un 3
00:31:06
que él lo va a guardar como entero
00:31:08
en cuanto ve
00:31:10
que forma parte de una expresión
00:31:12
en la que hay un decimal
00:31:14
dice, cuidado, que tú eres 3.0
00:31:15
en realidad
00:31:19
no pasa nada, 3 y 3.0
00:31:19
representan la misma cantidad
00:31:22
rápidamente lo promociona
00:31:25
decimal, decimal entre decimal
00:31:27
decimal, va al decimal sin problemas
00:31:29
¿vale?
00:31:31
lógicamente de nuevo
00:31:34
si yo lo quiero redondear
00:31:35
digo, espera que yo soy muy chula
00:31:38
y yo quiero redondear
00:31:40
la media entero
00:31:41
y me voy a lo cómodo y digo
00:31:42
pues ah, que no lo estáis viendo
00:31:44
si yo digo no, pero yo la media
00:31:46
aunque me salga 37,2
00:31:48
yo la quiero en entero
00:31:50
Pues ahí que lo guardo en variable entera
00:31:51
Y ya está
00:31:55
No, si queremos redondear
00:31:55
Y guardar en entero
00:31:58
Tendremos que hacerlo de otra manera
00:31:59
Ahora podemos a lo mejor plantearnoslo hacer
00:32:01
Pero desde luego esto no tiene sentido hacerlo
00:32:04
Como ya sabemos
00:32:07
Porque un resultado dable
00:32:08
No puede asignarse
00:32:11
A una variable entera
00:32:12
No puede
00:32:15
Aunque al revés sí
00:32:16
Si este fuera un resultado
00:32:18
int, yo podría guardarle
00:32:21
una label, pero
00:32:23
el caso que me ocupa
00:32:25
no es ese
00:32:26
luego, si yo quisiera redondear, tendría que planteármelo
00:32:27
de otra manera, desde luego así no
00:32:31
vale, pues
00:32:33
se supone que he hecho la media vía bien
00:32:35
y la puedo mostrar
00:32:37
el promedio
00:32:39
es
00:32:42
result
00:32:44
ala
00:32:48
Vamos a hacer la primera prueba
00:32:53
Introduzca número decimal
00:32:55
Aquí de nuevo para ya dejar de perder tiempo
00:33:02
Tenemos también que acordarnos
00:33:05
Recordaros que hay muchas cosas de las que tenéis que acordaros
00:33:07
Porque luego cuando estamos haciendo algo ya más complicado
00:33:09
Es que esto no me sale
00:33:15
Es que no has puesto la coma
00:33:16
Es que no has puesto no sé qué
00:33:18
Cosas que se supone que tenéis que saber
00:33:19
Entonces cuando eso ocurre me enfado mucho por dentro
00:33:21
Por fuera no lo exteriorizo
00:33:24
Pero por dentro sí
00:33:25
Entonces si estoy muy enfada por dentro
00:33:26
Os pongo los exámenes mucho más difíciles
00:33:27
Y os suspendo más
00:33:29
Entonces es importante
00:33:31
Que vayáis aprendiendo las cosas
00:33:32
Para no enfadarme
00:33:36
Pues venga, número decimal
00:33:36
Aquí nos acordamos que
00:33:39
Le he puesto un enter
00:33:40
Y ya la he cagado
00:33:43
Porque, espera, voy a
00:33:44
Voy a parar el programa y le voy a ejecutar otra vez
00:33:46
Vale, introduzca
00:33:52
Número decimal
00:33:53
Pues 67,
00:33:54
coma 5
00:33:56
porque el método next double
00:33:58
esta acción
00:34:00
esta acción
00:34:02
esta acción de aquí
00:34:04
espera
00:34:06
que le pasemos
00:34:08
la parte decimal con coma
00:34:10
porque él no
00:34:12
se le ocurre pensar que si somos programadores
00:34:14
se cree que somos humanos normales
00:34:16
y en las matemáticas de toda la vida usamos comas
00:34:18
para la parte decimal
00:34:20
entonces él espera con coma y luego ya lo cambiará por dentro
00:34:21
el programa ya lo cambiará y lo pondrá con su punto
00:34:24
vale, introduzca número decimal, magnífico
00:34:26
introduzca otro
00:34:29
estupendo
00:34:30
introduzca otro
00:34:32
este
00:34:34
también le va a valer, no hace falta que ponga
00:34:36
8,0
00:34:38
vale, no hace falta que ponga 8,0
00:34:39
porque ya sabemos que de int a double
00:34:42
él lo cambia
00:34:45
automáticamente, si yo le meto 8
00:34:46
él
00:34:48
primero lo guarda como el entero 8
00:34:50
porque por defecto un número así a palo seco
00:34:52
lo guarda como entero, pero cuando luego se lo asigne
00:34:54
a la variable num3 que es double
00:34:56
cuando luego se lo asigne a esta
00:34:58
ya lo promocionará
00:35:00
al coma cero
00:35:03
pues venga, ala
00:35:04
el promedio es
00:35:06
pues sí, seguramente sea este el promedio
00:35:07
seguramente
00:35:10
lo que pasa es que es verdad que hay una cosa que no nos gusta
00:35:11
y es que, jolines
00:35:14
acortamelo
00:35:15
o quítame la parte decimal lo que decidamos
00:35:17
o decidimos
00:35:20
a cortarlo a dos cifras
00:35:22
o decidimos quitar la parte decimal
00:35:23
vamos a probar a hacer las dos cosas
00:35:25
simplemente para dejarlo más bonito
00:35:27
el usuario va a decir
00:35:30
que programa tan mal depurado
00:35:32
me obligas a mí a redondear
00:35:34
porque yo cuando
00:35:36
si yo estoy haciendo un promedio de precios
00:35:37
te lo estoy pidiendo a ti para apuntarlo yo en mi factura
00:35:39
yo no voy a poner
00:35:42
30,96666
00:35:43
me estás obligando a mí a redondearlo
00:35:45
dámelo tú redondeado
00:35:47
Pues bueno, vamos a parar aquí un momentito
00:35:49
Y ahora
00:35:52
Nos planteamos cómo hacerlo
00:35:52
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 3
- Fecha:
- 25 de septiembre de 2026 - 13:58
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 35′ 57″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 144.01 MBytes