20260924 Operadores_2 - 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, porque hay dos versiones. Vale, esta es la versión que hace el trabajo para la máquina virtual más ágil y esta lo hace más lento. Vamos a ver a qué significa eso.
00:00:01
Pero en ambos casos los dos son unan y si las dos son ciertas, la resultante es cierta. Y en ambos casos estos dos son unor. Si una de las dos es cierta, la resultante es cierta.
00:00:18
Es decir, el resultado que dan es el mismo, ambas son un AND lógico, ambas ciertas, la total cierta, alguna de las dos cierta, la total cierta, pues esta funciona igual que esta y esta funciona igual que esta.
00:00:31
La diferencia es cómo las procesa la máquina virtual y eso tiene implicaciones.
00:00:50
Ejemplo, ejemplo, a ver, esta misma condición de aquí, vamos a volver a ponerla aquí, vale, vamos, uy, vale, esta misma condición de aquí.
00:00:54
Vamos a evaluar lo que me sale
00:01:21
Ejecuto esto
00:01:30
Falso
00:01:32
Muy bien, me sale falso porque
00:01:34
A no es menor que B y C simultáneamente
00:01:36
Es de esperar que me salga falso
00:01:40
Porque A es menor que B, sí
00:01:41
Pero A no es menor que C
00:01:44
Luego esta es true
00:01:46
Esta es falso
00:01:48
True y falso
00:01:50
Falso
00:01:52
¿Vale?
00:01:53
¿Sí? Vale, voy a poner yo la versión abreviada del operador, a ver qué me sale, lo mismo, porque ambos son operadores lógicos idénticos en cuanto al resultado que producen, esta es true, pero esta es mentira, con lo cual, verdad y mentira, es mentira.
00:01:55
Vale, pues efectivamente eso me ha salido
00:02:22
Entonces, ¿por qué existe el doble si es más pesado de escribir?
00:02:24
¿Vale?
00:02:30
Porque el doble le quita trabajo a la máquina virtual
00:02:31
¿Cómo?
00:02:34
Vamos a cambiar estas para que la falsa sea la primera
00:02:35
Voy a poner la falsa la primera
00:02:39
Y la true la segunda
00:02:42
Vale
00:02:48
Pues con el doble operador
00:02:49
Seguirá siendo falsa
00:02:52
Porque ahí hay, son conmutativas, ¿no? Porque esta es falsa y esta es true, falso y true, falso, muy bien, lo ejecuto y falso, vale, pongo el operador sencillo y me seguirá dando false, porque esta es false y esta es true, false y true, false, muy bien, efectivamente me sigue saliendo false, vale.
00:02:54
pero el funcionamiento interno ha sido
00:03:21
distinto
00:03:24
¿qué ha pasado cuando hemos puesto el doble ampersand?
00:03:24
la máquina virtual ha llegado
00:03:28
y se ha puesto a evaluar
00:03:29
ha hecho A menor que C
00:03:31
voy a ver lo que vale A
00:03:34
8, voy a ver lo que vale
00:03:35
C
00:03:38
5, A menor que C
00:03:38
false
00:03:42
y luego ha visto que hay un AND
00:03:43
y ha dicho
00:03:46
me da igual lo que haya después
00:03:47
false y cualquier otra cosa
00:03:49
es que va a ser false
00:03:51
es que me da igual
00:03:53
en cuanto ha visto esto ha dicho
00:03:54
como si esto es un true gigante
00:03:57
que más me da
00:03:59
false y cualquier otra cosa
00:03:59
true o false es false
00:04:02
con lo cual la máquina virtual esto ni lo mira
00:04:03
pasa completamente de ello
00:04:07
lo ignora completamente
00:04:09
pasa
00:04:11
con lo cual ahorramos ciclos de memoria
00:04:11
ahorramos tiempo
00:04:14
la máquina virtual no se ha entretenido
00:04:15
a buscar el valor de A, ni a buscar el valor de B, a compararlos
00:04:18
ha pasado, no se ha entretenido, hemos ahorrado tiempo
00:04:23
vale
00:04:27
esto en el caso, con el doble
00:04:29
ampersand, si la primera es falsa
00:04:36
no se detiene a mirar
00:04:44
la segunda, porque le da igual, no se detiene a
00:04:48
Mirar la segunda
00:04:50
Ni se detiene
00:04:53
Vale
00:04:54
Vamos a hacer esto mismo pero con un ampersand simple
00:04:55
Vale
00:05:02
Con un ampersand simple
00:05:13
Con el simple
00:05:14
Ampersand
00:05:18
Vamos a ver
00:05:20
Vale
00:05:24
Misma expresión, simple ampersand
00:05:29
Me da falsa igualmente, ¿verdad?
00:05:31
Me da falsa igual
00:05:34
Eso no cambia
00:05:35
Pero internamente, ¿qué ha ocurrido?
00:05:35
Él ha evaluado todo sí o sí
00:05:37
Si hay solo una en persán
00:05:40
Aunque esto no le haga falta evaluarlo
00:05:42
Aunque no le haga falta
00:05:44
Lo evalúa igualmente
00:05:45
Este es falso
00:05:47
Dice
00:05:49
Sé que me va a dar igual lo que haya detrás
00:05:51
Sé que me va a dar igual
00:05:53
El total va a ser falso, seguro
00:05:54
Porque falso y cualquier otra cosa es falso
00:05:56
¿Verdad que sí?
00:05:59
Hasta ahí lo tenemos claro
00:06:01
Entonces, me va a dar igual
00:06:02
Pero voy a entrar a evaluarlo igualmente
00:06:05
porque me están obligando
00:06:07
o porque hay una empresa en simple
00:06:08
me están obligando, pues entro y lo evalúo
00:06:10
pero el resultado final es el mismo
00:06:12
ahí no hay tutía
00:06:14
esa es la diferencia
00:06:14
y ahora
00:06:17
debería surgir una pregunta natural en vosotros
00:06:19
entendida la diferencia
00:06:22
que esta la evalúa sí o sí
00:06:23
aunque no le haga falta porque le estamos obligando
00:06:25
¿qué pregunta me haríais?
00:06:28
muy bien
00:06:34
la pregunta natural es
00:06:35
¿y de qué me sirve a mí
00:06:36
obligarle a evaluar algo
00:06:38
que no va a utilizar
00:06:41
¿de qué me va a servir?
00:06:42
bueno, pues
00:06:45
nos puede servir
00:06:46
porque dentro de una expresión
00:06:48
de estas
00:06:51
a la vez
00:06:52
a la vez que ponemos
00:06:54
una variable para que forme parte de la expresión
00:06:57
podemos a la vez
00:07:00
por ejemplo
00:07:02
es un ejemplito, pero hay unas cosas
00:07:03
asignarle un valor
00:07:05
por ejemplo, podemos, si yo quiero
00:07:06
vale, y esto sí que muchas veces lo hacemos
00:07:09
pero bueno, ya estamos en contextos más adelante
00:07:12
y lo iréis viendo, entonces por ejemplo
00:07:15
yo puedo, esto de aquí a menor que b
00:07:17
a la vez que uso una variable
00:07:22
en cualquier expresión, a la vez que la uso
00:07:25
en el momento de usarla, se me permite
00:07:28
darle ahí un valor, en el momento de usarla en una expresión
00:07:31
exactamente igual que hemos visto
00:07:35
que en el momento de declararla
00:07:37
se nos ha permitido darle un valor
00:07:39
pues en el momento de usarla
00:07:40
en una expresión se nos permite también
00:07:43
darle un valor, en el momento de usarla
00:07:45
aquí la estoy usando para compararla
00:07:47
con B y en ese momento
00:07:49
de usarla, si me da la gana
00:07:51
puedo darle un valor
00:07:53
mediante una asignación
00:07:55
por ejemplo así
00:07:56
a la vez que
00:07:59
la estoy usando, le doy
00:08:01
un valor, en el momento de
00:08:03
usarla, puedo
00:08:05
vale
00:08:06
entonces
00:08:09
¿qué implica?
00:08:11
aquí, que cuando yo la compare
00:08:14
con la b, cuando la compare
00:08:16
la voy a comparar ahora con el valor 8
00:08:18
no con el valor que tenía
00:08:20
porque la acabo de reasignar
00:08:21
la acabo de reasignar
00:08:24
¿vale?
00:08:26
entonces voy a hacerlo aquí también
00:08:28
a igual a
00:08:30
8
00:08:33
¿vale? lo voy a hacer aquí también
00:08:35
las dos versiones
00:08:39
entonces
00:08:40
son idénticas las dos expresiones
00:08:43
entonces aquí en el momento
00:08:46
de usarla la reasigno
00:08:49
y una vez que ya la he asignado ya la uso
00:08:51
en la expresión
00:08:53
¿vale? pero ¿qué ocurre?
00:08:54
el resultado
00:08:58
final del AND
00:08:59
ese es el mismo
00:09:00
ponga yo el doble ampersand que el simple ampersand
00:09:03
sigue siendo el mismo, como esta es
00:09:05
falso, es que esto nos da igual
00:09:07
lo que pase, es que nos da igual
00:09:09
aunque sea a 8 o 7 nos da lo mismo
00:09:10
va a ser falso, y aquí igual
00:09:13
como esta es falso
00:09:14
aquí esto nos da igual, va a ser
00:09:16
falso, pero la diferencia
00:09:19
es que aquí, aquí no
00:09:21
entra, porque hay
00:09:23
el doble ampersand, esto es como de repente
00:09:25
ha desaparecido del mapa
00:09:27
porque hay un doble ampersand y no lo necesito
00:09:28
y con el simple ampersand
00:09:31
le obligo a entrar
00:09:33
con lo cual si pongo un simple ampersand
00:09:34
la A se quedaría con 8
00:09:37
porque le he obligado a entrar aquí
00:09:39
pero si pongo un doble ampersand
00:09:41
esto lo tira a la basura
00:09:44
la A no se reasignaría
00:09:46
se quedaría con el valor de arriba
00:09:48
luego esa es la implicación
00:09:49
de un doble ampersand y un simple ampersand
00:09:53
el resultado final del boolean
00:09:54
es idéntico en ambos casos
00:09:56
pero si en la segunda parte
00:09:58
hacemos alguna asignación
00:10:02
además de comparar
00:10:04
hacemos alguna asignación
00:10:06
con el doble ampersand esa asignación se ignora
00:10:07
porque ni entramos
00:10:10
pero con el simple ampersand
00:10:12
esa asignación no se ignora
00:10:14
y se hace
00:10:16
¿vale?
00:10:16
vamos a comprobarlo aquí, yo aquí voy a mostrar
00:10:19
a cuánto tenía, ojo es que qué casualidad
00:10:22
a 8, pues le voy a poner
00:10:24
a igual a
00:10:25
15
00:10:28
para cambiarle, a igual a 1
00:10:30
¿vale? entonces voy a mostrar aquí
00:10:31
el valor final de la condición y el valor de A
00:10:34
A igual a
00:10:38
el valor que tenga A, vale, y ahora voy a mostrarlo
00:10:45
aquí, control V
00:10:52
en ambos casos, vale, vale, pues
00:10:55
cuando yo ejecute esto, me dará
00:11:02
falso, porque a menor que c es falso, y al no haber entrado aquí, a no habrá modificado
00:11:05
su valor, a no lo habrá modificado, porque aquí no ha entrado, con lo cual a me va a
00:11:13
dar que vale 8, sigue valiendo 8, pero cuando haga esta parte, el condicional va a seguir
00:11:18
siendo falso, eso no cambia, va a seguir siendo falso, porque a es menor que c va a seguir
00:11:27
Pero aquí A sí se va a reasignar, porque aquí habremos entrado porque nos obliga el simple ampersand.
00:11:31
Aquí sí que se va a reasignar, con lo cual aquí A habrá acabado valiendo 1.
00:11:41
Vamos a ejecutarlo y efectivamente los valores resultantes del condicional van a ser siempre idénticos.
00:11:47
Me da igual doble ampersand que simple, pero pueden pasar cosas distintas en las variables que haya a mi izquierda, porque si se están reasignando, que yo puedo reasignar a la vez que uso, a la vez que uso en una expresión puedo reasignar, si se están reasignando, esta reasignación se hace y esta no.
00:11:55
si esta fuera true
00:12:20
ahora sí que funcionarían
00:12:26
idénticas las dos, por ejemplo
00:12:29
si c es igual a
00:12:30
15
00:12:33
si fuera true
00:12:34
ahora
00:12:37
el doble ampersand
00:12:40
también entraría aquí
00:12:42
¿por qué? porque a menor que c le he dado true
00:12:43
le he dado true
00:12:46
con lo cual necesita saber la siguiente
00:12:47
entonces ahí es que tiene que entrar
00:12:50
para evaluar el condicional, tiene que entrar, sí o sí
00:12:51
Entonces, al entrar aquí, ya reasignará a A1.
00:12:54
¿Vale?
00:12:58
Entonces, si ejecutamos esto, veremos que ya en la primera vez ha reasignado a A1.
00:13:00
Porque ha tenido que entrar.
00:13:08
Ha tenido que entrar porque estará true, con lo cual necesita la segunda parte.
00:13:09
Para saber si es false o true.
00:13:14
Si es false, el total será false.
00:13:16
Y si es true, el total será true.
00:13:18
El total será true, sí.
00:13:19
¿Vale?
00:13:25
bueno, pues por eso existen
00:13:25
las dos variantes
00:13:28
normalmente, pues veréis
00:13:30
en la mayoría de los casos, pues depende
00:13:33
porque hay muchos estilos de programación distintos
00:13:34
en gustos de programación
00:13:36
pues el ampersand simple, lógicamente es muy común
00:13:38
pero claro, hay que
00:13:41
tener cuidado cuando se usa de que yo
00:13:43
en la segunda parte no haga instrucciones
00:13:45
que cuando accedemos a ficheros
00:13:47
a bases de datos, solemos meter
00:13:49
las instrucciones de acceso ahí en esa
00:13:51
segunda parte, con lo cual en ese caso
00:13:53
doble ampersand, claro
00:13:55
¿entendidísimo?
00:13:56
muy bien
00:14:03
bueno, pues ahora sí que sí
00:14:03
para que podamos
00:14:09
hacer alguno de los primerillos ejercicios
00:14:11
sencillos de la hoja
00:14:12
que ahora
00:14:15
os paso
00:14:18
¿no nos va a quedar más remedio que ver el input?
00:14:19
vamos a tener que ver el input, ¿no?
00:14:22
¿qué vamos a hacer?
00:14:23
bueno, pues
00:14:25
nosotros hasta ahora hemos asignado
00:14:27
a nuestras variables
00:14:30
valores directamente por programa
00:14:32
no las hemos jarcodeado
00:14:34
como se dice, las he metido ahí
00:14:36
pero hombre, no metemos los datos
00:14:38
a los programas así
00:14:40
porque entonces si yo quiero hacer este programa
00:14:41
con valores distintos
00:14:44
tendría que irme al código fuente y cambiar el valor
00:14:45
y no, el usuario de un código
00:14:48
no tiene acceso al código fuente
00:14:50
lógicamente
00:14:52
entonces nosotros necesitamos
00:14:53
poder dar los datos de trabajo
00:14:55
en el momento de ejecutarlo
00:14:57
y desde el teclado, entonces el programa te dirá
00:15:00
¿qué valor quiere para la variable A?
00:15:03
tú se lo asignas por teclado y ya tenemos que ver
00:15:07
qué sentencia hacer para que el programa sea capaz de leer del teclado
00:15:10
un valor y asignarse a la variable
00:15:14
bueno, pues ahora para ver eso
00:15:15
hay cosas que vamos a tener que creernos sí o sí
00:15:20
porque nos falta información
00:15:23
¿por qué? porque para leer del teclado necesitamos un objeto
00:15:25
Y ni siquiera sabemos lo que es un objeto
00:15:29
Con lo cual vamos a usar el objeto
00:15:30
Sin más
00:15:33
Aunque no entendamos que es un objeto
00:15:34
Pero por ahora vamos a usarlo
00:15:37
Para la tarea concreta de leer del teclado
00:15:39
¿Vale?
00:15:41
Venga, lo voy a hacer en
00:15:44
Otra
00:15:45
Otro
00:15:46
Otro paquete
00:15:50
Teclado, venga
00:16:00
Entrada, salida
00:16:01
Entrada, salida por consola
00:16:05
La consola es el teclado y el monitor
00:16:10
vamos, entrada y salida
00:16:11
por consola
00:16:14
vale, pues vengo
00:16:14
yo tengo mi variable
00:16:29
a, nombre muy feo elegido
00:16:31
pero bueno, mi variable a
00:16:34
venga voy a ponerle un nombre que tenga sentido
00:16:36
para que no sea todo a, x, y
00:16:38
tengo mi variable edad
00:16:39
y yo con esta edad quiero hacer
00:16:41
cosas, lo que sea
00:16:44
pero el valor de la edad
00:16:45
tiene que ser el valor del usuario
00:16:48
de mi programa
00:16:50
con lo cual yo no puedo
00:16:50
ponerle aquí edad
00:16:53
igual a 34, pues no
00:16:55
porque a veces usará el programa
00:16:57
alguien de 34, a veces alguien de 12, a veces alguien
00:16:59
de 85, entonces
00:17:01
el valor de la edad
00:17:03
no se mete aquí, el valor
00:17:04
de la edad tendremos que
00:17:07
el usuario introducirlo en el momento
00:17:09
de la ejecución del programa
00:17:11
lo introduce y se
00:17:13
asigna, entonces tendremos
00:17:15
que ver como
00:17:17
leer un valor del teclado
00:17:18
vale, pues para leer
00:17:21
un valor del teclado
00:17:23
se puede hacer de muchas maneras, pero bueno
00:17:24
vamos a la opción más cómoda
00:17:27
necesitamos una cosa
00:17:29
que se llama
00:17:31
escáner
00:17:33
vale
00:17:34
entonces, igual que cuando necesitamos un int
00:17:35
ponemos int a
00:17:39
o cuando necesitamos un string
00:17:40
ponemos string texto
00:17:43
pues resulta que ahora no necesitamos
00:17:44
un int a y un string text, ahora necesitamos un objeto scanner
00:17:47
pues pongo scanner que es el tipo que necesito y aquí el nombre que le quiera dar yo a ese objeto
00:17:50
el que me dé la gana, vale
00:17:55
bueno pues scanner es otro tipo de dato
00:17:58
igual que int, que string, pero en particular
00:18:02
el tipo scanner es un tipo de dato objeto y sirve
00:18:07
para una cosa en concreto, que es para leer del teclado
00:18:11
Igual que string vale para guardar cadenas de caracteres, pues escáner vale para leer del teclado.
00:18:14
Pues yo lo necesito y lo declaro ahí, igual que declaro una variable cualquiera.
00:18:22
Pero claro, le tengo que dar un valor a ese objeto, para que ese objeto exista y pueda leer.
00:18:29
Pues ¿cómo hago que ese objeto exista?
00:18:38
igual que a texto
00:18:41
yo hago que ese objeto exista
00:18:42
dándole un valor concreto
00:18:44
pues para hacer que el objeto escáner
00:18:45
exista, tengo que hacer
00:18:48
algo un pelín más complicado
00:18:50
que es escribir esto
00:18:52
¿vale?
00:18:54
entonces escribiendo esto, hago que
00:19:02
ese objeto exista
00:19:04
de nuevo tenemos que creérnoslo
00:19:06
no lo entendemos, porque ¿qué significa new?
00:19:09
el espacio, ¿qué es esto?
00:19:12
bueno, pues
00:19:14
significa cosas muy concretas de la programación
00:19:14
entrada objetos, que ya veremos
00:19:18
ahora mismo nos tenemos
00:19:20
que quedar con que para
00:19:22
crear este objeto
00:19:23
y yo poder usarlo para leer del teclado
00:19:25
lo tengo que crear de esta
00:19:27
manera
00:19:30
igual que cuando creo un string lo creo de esta manera
00:19:30
poniendo aquí la cadena
00:19:34
de texto que yo quiera, pues cuando creo un
00:19:35
escáner lo creo de esta manera, poniendo
00:19:37
esto, sí o sí
00:19:39
y
00:19:40
vemos que nos sale rojito
00:19:43
nos sale rojito
00:19:45
porque este tipo de dato
00:19:48
está ya creado
00:19:49
pero guardado
00:19:51
en una carpeta de cosas
00:19:53
porque de nuevo, como ya entenderemos
00:19:55
Java, la máquina virtual
00:19:57
organiza todas las clases
00:20:00
de las que dispone
00:20:02
que string es una de ellas
00:20:03
las organiza en carpetitas
00:20:06
entonces, él sabe siempre
00:20:07
en qué carpeta está esto
00:20:09
en qué carpeta está esto
00:20:11
pero no sabe en qué carpeta está scanner
00:20:12
ni muchas otras cosas que usaremos, no las sabe
00:20:15
entonces te dice
00:20:17
no tengo ni idea
00:20:19
de donde está esto que me has pedido
00:20:21
que yo cree, no tengo ni idea
00:20:23
vale, pues tenemos que decirle
00:20:24
donde está y se lo decimos
00:20:27
escribiendo esto
00:20:29
eeeh
00:20:31
donde está
00:20:41
un momentito
00:20:42
vale, escribiendo esto
00:20:43
esto que tiene que ir
00:20:50
después del package, obligatoriamente
00:20:54
no antes, sino aquí
00:20:55
justo después del package
00:20:57
significa, oye este
00:20:59
escáner que yo te estoy diciendo
00:21:01
que me hagas, está aquí
00:21:03
está aquí
00:21:05
ah vale, ya lo encuentro
00:21:06
y me sale aquí rojo
00:21:08
que no entendemos por qué hay que
00:21:11
decirle esto, que significa el in, por qué
00:21:13
significa el útil, por qué he puesto el new, pues claro
00:21:15
lógicamente no lo entendemos
00:21:17
porque no sabemos cómo funciona el pronunciamiento de objetos
00:21:19
pero ya lo entenderemos, ahora solamente
00:21:21
nos importa saber cómo leer
00:21:23
un dato de un teclado
00:21:25
vale
00:21:27
pues el primer paso está
00:21:29
hemos creado esta cosa
00:21:31
a la que le puedo dar el nombre
00:21:34
que me dé la gana
00:21:36
igual que a la variable cadena de texto
00:21:37
le doy el nombre que me da la gana
00:21:40
o a la variable a le doy el nombre que me da la gana
00:21:42
pues a este objeto le doy el nombre que me da la gana
00:21:44
vale
00:21:46
vale, pues ahora que ya tengo este
00:21:47
objetillo creado
00:21:50
¿cómo puedo yo
00:21:51
leer, por ejemplo, un número entero del teclado.
00:21:54
Pues este objeto, por ser un objeto,
00:21:58
de nuevo, aunque aún no lo entendamos,
00:22:01
es capaz de ejecutar acciones.
00:22:03
¿Vale? O sea, los objetos pueden ejecutar acciones.
00:22:07
¿Y cómo las ejecutan?
00:22:09
Con un punto poniendo el nombre de la acción,
00:22:10
de la acción a ejecutar.
00:22:13
Pues resulta que la acción nextInt
00:22:16
Next int significa, oye, quédate ahí esperando a que alguien meta un número entero en el teclado
00:22:20
y cuando lo metan, cógelo.
00:22:27
Vale, pues eso es lo que hace esto, cógelo.
00:22:31
¿Y ahí ese cógelo dónde?
00:22:34
Hay que asignarlo a una variable, si no lo pierdo.
00:22:36
Yo podría ejecutar esto.
00:22:38
¿Y qué haría esta sentencia?
00:22:41
Esta sentencia significa exactamente lo siguiente.
00:22:44
Oye tú, Java, programa. Oye tú, programa. Quédate ahí cruzado de brazos, parado, atascado. Espera a que yo escriba un número en el teclado. Cuando yo lo escriba, cógelo y déjatelo ahí guardadito. Pero como no le he dicho nada más, lo ha tirado a la basura. Vamos a ejecutarlo. A ver qué pasa.
00:22:46
yo ejecuto esto
00:23:11
y efectivamente
00:23:13
mirad mi consola
00:23:17
mi consola no pone terminado
00:23:19
el programa no ha terminado
00:23:22
el programa tiene el cursor ahí
00:23:24
este está cruzado de brazos hasta el infinito
00:23:25
el programa se ha quedado aquí parado
00:23:27
porque esta sentencia
00:23:29
significa, oye
00:23:31
quédate ahí parado esperando
00:23:33
y no vamos a la siguiente sentencia
00:23:35
por mucho que aquí haya cosas
00:23:38
Por ejemplo, vamos a saludar aquí
00:23:39
Voy a terminar este con cualquier cosa
00:23:46
Voy a ejecutarlo de nuevo
00:23:50
¡Hala! Ahí está para esperando
00:23:52
Está parado en esta sentencia, ahí atascado
00:23:59
Como veis, la siguiente, que es la de mostrar a Dios
00:24:01
No la ha ejecutado, ¿por qué? Porque está aquí parado
00:24:05
Ahí está, y de ahí no va a salir nunca jamás
00:24:09
hasta que no tecleemos algo
00:24:11
vale, pues vamos a teclearle el numerito
00:24:13
que está esperando, lo que sea
00:24:16
numerito y enter, para que se entere que he terminado
00:24:17
claro, enter
00:24:20
ala, ya sale a la siguiente
00:24:21
¿y qué ha pasado con ese número?
00:24:24
lo ha cogido
00:24:27
pero como no le hemos dicho que hacer con él
00:24:28
se ha perdido
00:24:30
claro, es que yo
00:24:31
tengo que asignar ese valor
00:24:34
a alguna variable
00:24:36
por ejemplo, si me da la gana edad
00:24:37
ahora ya sí
00:24:40
tu edad es
00:24:45
más edad
00:24:53
ahora ya sí
00:24:55
el programa se quedará ahí parado
00:25:01
y ahí se podría estar hasta siempre jamás
00:25:02
nunca va a salir de ahí
00:25:05
hasta que no tecleemos algo en el teclado y demos a enter
00:25:06
cuando ya lo hayamos hecho
00:25:09
lo coge, uy que bien
00:25:11
tengo a quien asignárselo
00:25:13
menos mal, pues no lo tiro a la basura
00:25:15
lo asigna a esta variable
00:25:17
a partir de aquí edad tiene eso
00:25:19
y ahora ya el programa
00:25:21
ya puede seguir, ya puede seguir
00:25:24
porque ya hemos introducido el dato
00:25:25
ya puede seguir, vale
00:25:28
entonces
00:25:29
ahora ya ejecutamos esto, ya está esperando
00:25:31
hasta el infinito, introduce
00:25:34
tu edad
00:25:36
vale, y ya está
00:25:36
lo normal es que antes de una
00:25:38
sentencia que pide datos
00:25:51
pongamos un mensaje
00:25:52
para que el programa sea un poco más amigable
00:25:54
porque si no, se queda el cursor esperando
00:25:57
y el usuario no sabe que tiene que hacer
00:25:59
lo normal es siempre
00:26:01
acompañarlo de un mensaje
00:26:03
delante
00:26:04
vale
00:26:05
lo acompañamos de un mensajito delante
00:26:08
para que el usuario sepa
00:26:10
porque ese cursor se ha quedado ahí atascado
00:26:13
entonces se muestra el mensaje
00:26:15
y luego ya si, esta se queda ahí atascada
00:26:17
esperando
00:26:19
esta aplicación ya es un poquito más amigable
00:26:19
introduce tu edad y ahí estoy esperando
00:26:23
y de ahí no me muevo hasta que no pongas
00:26:24
tu edad y desalentes
00:26:26
Y así podríamos meter tantos como quisiéramos
00:26:28
Por ejemplo, ahora quiero que meta el peso
00:26:37
Pues reutilizo ese objeto todas las veces que quiera
00:26:40
Lo reutilizo todas las veces que quiera
00:26:44
Introduce tu peso
00:26:47
Pues lo vuelvo a reutilizar
00:26:50
Ahora el peso, inPeso, declaro la variable
00:26:56
int peso, pues
00:26:59
scan.next
00:27:01
int
00:27:04
vale, pues ahora
00:27:04
de nuevo, se quedará ahí atascado esperando
00:27:07
se quedará atascado
00:27:09
cuando yo le meta un número
00:27:10
lo cogerá y
00:27:13
le he dicho que lo lleve a algún sitio, menos mal
00:27:15
porque si no ese número se va a la basura
00:27:17
a la variable peso que declaro en ese
00:27:19
momento, pero no la tengo de antes
00:27:21
por ejemplo, y ahora ya
00:27:23
pues
00:27:26
Es decir, puedo reutilizar ese objeto para leer diferentes cosas
00:27:26
Todas las veces que a mí me dé la gana
00:27:37
¿Vale?
00:27:40
Introduce tu edad, bla, bla, bla
00:27:46
Introduce tu peso, bla, bla, bla
00:27:48
¿Vale? Y así todas las veces que yo quiera
00:27:51
Cuidado porque los objetos
00:27:53
Lógicamente tienen todo un sistema de excepciones
00:28:02
Que de nuevo no conocemos
00:28:07
Pero ya conoceremos
00:28:08
Entonces, si yo le he dicho next int, que es una de las cosas que puede hacer, que puede hacer muchas, int viene de entero. Le estoy diciendo, quédate esperando un número entero. Como se me ocurra meter algo que no sea un entero, se va a quejar y como forma de protesta, el programa se va a terminar. Se acabó, terminado.
00:28:10
vale, vamos a probar
00:28:36
introduce tu edad
00:28:38
como yo le he dicho next int
00:28:40
él está esperando un número entero
00:28:42
porque int viene de entero
00:28:45
que meto algo que no es un entero como esto
00:28:48
se me queja y me dice
00:28:50
esto no es un número entero
00:28:54
y qué forma de quejar se tiene
00:28:56
parando el programa
00:28:59
se acabó, el programa se terminó
00:29:01
terminado
00:29:03
pasa y ya no ejecuta nada más de lo que hay
00:29:04
después, programa terminado y ya no ejecuta
00:29:07
más, vale
00:29:09
si quisiéramos evitar esto, teníamos que
00:29:10
hacer un tema de captura de excepciones, etcétera
00:29:13
que todavía no sabemos
00:29:15
ahora mismo quedémonos con que si yo pido
00:29:15
un entero, mete un entero, porque si no el programa
00:29:19
se te para, ya está, no hay otra
00:29:21
vale
00:29:23
que en lugar de un entero quiero meter
00:29:24
un double
00:29:29
pues con next int no puedo, es que next int
00:29:30
me pide un entero, entonces yo no
00:29:33
puedo decirle
00:29:35
oye, introduce tu edad, pues
00:29:36
mi edad es 45,8
00:29:39
no, porque 45.8
00:29:41
no es un entero
00:29:45
se queja también y para
00:29:46
pero jo, yo quiero hacer un programa que sea un entero
00:29:48
por ejemplo, mi peso
00:29:51
yo lo quiero dar con decimales
00:29:53
no quiero el peso redondeado, el peso
00:29:55
lo quiero con decimales
00:29:57
pues entonces
00:29:58
no uso el método nextInt
00:30:00
uso el que se llama
00:30:03
next double
00:30:06
¿vale?
00:30:06
next int cuando yo vaya a meter un número entero
00:30:12
pero cuando yo vaya a meter un número
00:30:15
con decimales, no uso next int
00:30:17
uso next double
00:30:19
y entonces el ya
00:30:20
si le metes una coma
00:30:23
ya no se vuelve loco
00:30:24
dice, vale, me gusta
00:30:27
es una coma, me gusta, es un decimal
00:30:28
vamos a probarlo
00:30:30
introduce tu edad
00:30:33
la que sea
00:30:35
introduce tu peso
00:30:36
lo único es que para el next table
00:30:37
te trata como muy humano
00:30:40
él asume que tú no sabes que para Java
00:30:42
las comas son puntos
00:30:45
entonces él espera que se lo pongas con una comita
00:30:46
que es como lo escribimos
00:30:49
los humanos en un papel
00:30:51
entonces yo quiero decirle que mi peso
00:30:52
es 67,5
00:30:54
se lo pongo con coma
00:30:56
¿vale?
00:30:58
luego él cuando me he hecho el system out
00:31:00
me lo ha puesto lógicamente como él muestra
00:31:02
los decimales
00:31:04
entonces si yo no se lo pusiera con coma
00:31:05
sino que se lo pusiera con punto
00:31:07
se queja
00:31:09
porque introduce tu peso
00:31:11
punto 5
00:31:13
no le gusta
00:31:15
¿vale?
00:31:17
ese único matiz
00:31:18
que él asume que tú vas a usar la coma
00:31:20
de los humanos
00:31:23
y él ya luego lo traduce lógicamente
00:31:24
a su
00:31:29
notación, que siempre es con punto
00:31:30
el dabel. Vale, pues entonces sabemos leer números enteros, números decimales, podemos
00:31:33
leer todos los genos de la gana, uno tras otro, guardarlos en variables correspondientes,
00:31:39
operar con ellos, lo que sea. Vale, y con esto, pues bueno, para que se nos haga un
00:31:43
poco más llevadero, vamos a ver de la hoja de ejercicios que podáis hacer algunos. Vamos
00:31:48
- 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:
- 1
- Fecha:
- 24 de septiembre de 2026 - 13:51
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 31′ 59″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 123.98 MBytes