Saltar navegación

20240919 ProgrEstruct-Variables_6 - Contenido educativo

Ajuste de pantalla

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

Subido el 19 de septiembre de 2024 por Raquel G.

10 visualizaciones

Descargar la transcripción

que como se pone 00:00:00
pues depende de tu teclado 00:00:02
yo lo tengo en 00:00:03
yo lo tengo en los numeritos arriba 00:00:05
con lo cual tengo que poner el shift 00:00:08
vale 00:00:09
bueno pues repito 00:00:14
entonces estos son los operadores aritméticos 00:00:16
que podemos usar con enteros 00:00:18
conociendo 00:00:19
su significado 00:00:21
entonces este es el operador 00:00:23
resto de dividir 00:00:26
este entre este 00:00:28
¿Vale? Pues los cuatro, los cinco operadores aritméticos básicos 00:00:29
Y operadores aritméticos no hay más 00:00:34
Cualquier otra cosa que uno quiera hacer de aritmética 00:00:36
Porcentajes, factoriales, lo que sea 00:00:39
Tendrá que hacer una función para ello 00:00:41
Si es que no hay una ya hecha que la podamos llamar 00:00:43
No, no hay un operador exponente 00:00:45
Esta no existe, ¿vale? 00:00:49
Que uno quiere hacer esto elevado a esto 00:00:51
O programa una función que lo haga 00:00:54
Que eso ya es otra cosa, funciones 00:00:56
o usa una función que ya esté hecha de alguien que lo haga. 00:00:58
Pero hay que programarlo. 00:01:01
Los únicos operadores que no hay que programar 00:01:03
porque ya te hacen la operación, aritméticos, son estos 5. 00:01:05
Y los podemos usar para expresiones. 00:01:09
Y esas expresiones con paréntesis y teniendo en cuenta 00:01:11
si necesitamos la prioridad de los operadores que hemos dicho. 00:01:14
Bueno, entonces, vamos, aunque sea feo, 00:01:18
para que no estemos, en los programas de prueba que hacemos 00:01:23
se quedan un rollo así, si estamos todo el rato 00:01:26
metiéndolo a capón, vamos a poner 00:01:28
la sentencia para leer 00:01:30
del teclado y así podemos probar 00:01:32
nuestros programas metiendo cada vez 00:01:34
un dato distinto y viendo lo que hace 00:01:36
y no tenemos que estar todo el rato cambiando 00:01:38
el código y metiendo aquí el numerito 00:01:40
¿no? si yo puedo cambiar esta sentencia 00:01:41
para que esta sentencia sea lee del 00:01:44
teclado, cuando ejecute mi 00:01:46
programa, el mismo programa sin 00:01:48
cambiar el código le podré cambiar cada vez 00:01:50
el dato y es mucho más 00:01:52
operativo y próximo al 00:01:54
uso habitual del código ¿no? 00:01:56
Vale, pues entonces esta clase que se ha quedado aquí chuchurría, ejemplo variables, vamos a hacer otra para en la que vamos a meter cómo es la sentencia de entrada-salida por teclado. 00:01:58
Entonces, si queréis cambiar el nombre de una clase, por ejemplo, yo voy a cambiar esta, como esta ya la voy a dejar así sin tocar y sin meterle más basura, porque la voy a dejar entonces solo ejemplo variables enteras, me interesa cambiarle el nombre, que sea de variables enteras. 00:02:13
entonces, o bien, cambiéis aquí el fichero 00:02:25
y luego os venís aquí 00:02:28
a cambiar el nombre 00:02:30
entonces tenéis que cambiar los dos sitios 00:02:31
si es que es public, si no, no 00:02:33
o podéis 00:02:35
aquí si queréis 00:02:37
cuando queréis cambiar el nombre 00:02:41
de una de estas 00:02:43
porque, pues, botón 00:02:44
derecho, lo digo 00:02:47
porque buscaréis el rename directamente y no existe 00:02:49
botón derecho, refactor 00:02:51
rename 00:02:53
vale, el refactor viene 00:02:55
que está refactorizando, que ahora tampoco entendemos 00:02:58
pero ya entenderemos, si queréis cambiar el nombre 00:03:00
entonces yo ahora voy a cambiar el nombre porque esta clase 00:03:02
la voy a dejar ahí solamente 00:03:04
como clase de ejemplo que hemos usado para variables enteras 00:03:05
pues le voy a cambiar el nombre 00:03:08
y la voy a llamar ejemplo variables 00:03:10
enteras 00:03:12
le cambio el nombre 00:03:13
finish 00:03:16
y ya está, me dice 00:03:17
esto implica bla bla bla, así finish 00:03:20
ala, me ha cambiado 00:03:22
el nombre del fichero y me ha cambiado este 00:03:24
también, bueno pues venga 00:03:26
ya esta clase la dejamos ahí abandonada 00:03:30
como clase que hemos usado 00:03:32
para poner, para ver 00:03:33
como funcionan los tipos de dato entero 00:03:36
byte, short, int y long 00:03:38
byte y short, no hemos declarado 00:03:39
variables byte y short pero se declararían igual 00:03:42
vale, yo puedo declarar una variable 00:03:44
byte, b 00:03:46
y ya está, vale, lo que pasa es que 00:03:49
cuidado con lo que pongo en b 00:03:51
cuidado con lo que pongo en b porque ya sabemos 00:03:53
lo que me va a caber en b, vale 00:03:56
le puedo poner un 1 00:03:57
pero cuidado 00:04:00
como me pase 00:04:03
de lo que me cabe en byte, ya me dice 00:04:05
eso no te cabe en un byte 00:04:06
efectivamente, entonces 00:04:08
cuidadito con 00:04:11
esto, me cabe en un byte 00:04:13
pero como me pase al 1000 00:04:15
ya no 00:04:17
bueno, pero funciona exactamente 00:04:18
igual, todo 00:04:21
lo que hemos dicho entre int y lo, pues igual 00:04:23
con las demás 00:04:25
Vale, pues venga 00:04:25
Vamos a hacer una clase para ver 00:04:30
Lo de la sentencia de leer por teclado 00:04:32
Y así podemos ya hacer programas de ejemplos 00:04:34
Que lean por teclado 00:04:36
Para probar nuestras cosas 00:04:37
Pues venga, me hago yo aquí una nueva 00:04:39
Otra más dentro del paquete 00:04:41
Dentro del paquete 00:04:43
New, class 00:04:46
Lectura 00:04:48
Teclado, por ejemplo 00:04:53
Venga, lectura teclado 00:04:55
Y le voy a poner el 00:04:56
main, le marco la esta 00:04:58
del main para que me lo escriba solo 00:05:01
porque yo me lo sé de memoria 00:05:03
si vosotros no lo sabéis de memoria 00:05:05
pues que nos lo marque y os obligáis a ponerlo 00:05:06
y así no se os olvide, vale 00:05:09
pues vamos a suponer que yo tengo un programa que 00:05:17
vamos a hacer 00:05:19
vamos a hacer un programita 00:05:21
que solicita 00:05:23
un número 00:05:27
entero por 00:05:29
teclado 00:05:37
y muestra 00:05:38
el doble 00:05:42
del valor 00:05:44
esto ya es un programa 00:05:46
bueno, hacer un programa para esto 00:05:50
porque tienes una calculadora 00:05:54
multiplicas por dos o incluso 00:05:56
si uno se sabe la tabla de multiplicar 00:05:58
no sería un problema para el cual 00:06:00
necesita hacer un programa si uno se sabe la tabla 00:06:02
de multiplicar 00:06:04
pero habrá veces 00:06:05
que nuestro problema 00:06:08
no lo podamos hacer de cabeza 00:06:10
entonces en esas situaciones te viene genial hacer un programita 00:06:12
bueno, pues esto ya es un programa 00:06:14
aunque no nos haga falta 00:06:16
porque no sabemos la tabla del 2 00:06:18
pues vamos a hacer un programa 00:06:19
que te resuelve un problema 00:06:22
esto ya sí, repito, es un programa 00:06:23
que sirve para resolver un problema 00:06:25
que se nos ha presentado 00:06:27
porque no sabemos la tabla del 2 00:06:28
vale, pues venga 00:06:30
entonces, ahora ya 00:06:33
vamos a empezar a 00:06:35
hacer el proceso 00:06:37
de principio a fin 00:06:39
de hacer un código 00:06:40
pero concretado a un caso muy sencillo 00:06:42
Bueno, pues paso uno 00:06:46
¿Qué es lo que uno hace? 00:06:48
Se lee el enunciado 00:06:51
Y se asegura de que entiende 00:06:52
Exactamente lo que hay que hacer 00:06:54
Esa parte 00:06:57
Parece obvia 00:06:59
Pero es 00:07:00
La parte en la cual 00:07:02
Se cometen la mayor parte de los errores 00:07:04
Yo no he entendido exactamente lo que tengo que hacer 00:07:06
No lo he entendido, he entendido otra cosa 00:07:08
Y dedico un montón de tiempo 00:07:10
A hacer un programa que no hace lo que 00:07:12
tiene que hacer, funciona estupendamente 00:07:14
uy si, funciona muy bien, pero es que no hace 00:07:16
lo que te he pedido, conclusión 00:07:18
pues te han echado del trabajo, vale 00:07:20
entonces 00:07:22
porque esa parte la hacen los que más 00:07:23
cobran de la empresa, quienes son los que más 00:07:26
ganan en la empresa, en el equipo de 00:07:28
desarrollo de un proyecto 00:07:30
los que no 00:07:31
programan 00:07:34
los que, los analistas 00:07:35
y esos 00:07:39
que hacen, esos son 00:07:41
los que tienen que, primero 00:07:42
juntarse con el cliente 00:07:44
y entender 00:07:46
qué necesita el cliente 00:07:47
parece tontería, pero no es fácil 00:07:50
porque aquí entender 00:07:52
que el cliente necesita 00:07:53
que cuando meta un número 00:07:55
le aparezca multiplicado por dos 00:07:57
eso es fácil de entender que necesita eso 00:07:59
pero una aplicación grande 00:08:02
no está entendiendo lo que necesita 00:08:03
y normalmente se le explicará mal 00:08:05
entonces, entender lo que me están pidiendo hacer 00:08:06
no es fácil 00:08:10
en nuestro caso, ¿a qué se traduce? 00:08:11
que cuando yo os planteo un ejercicio 00:08:13
o cuando os planteo un examen, tenéis que leer 00:08:15
bien enunciado y entender lo que tenéis 00:08:17
que hacer. ¿Vale? No es evidente. 00:08:19
Entonces, saber leer es 00:08:24
fundamental y es por lo que más se cobra en la 00:08:25
empresa. Entender qué tengo que 00:08:27
hacer. Vale, en este caso 00:08:29
esa parte ya la hemos hecho. Ya hemos entendido 00:08:31
que yo voy a recibir un número 00:08:33
y lo que quiere el usuario 00:08:35
es que se le devuelva 00:08:37
multiplicado por dos. Vale. 00:08:39
después de mil reuniones con el cliente 00:08:41
hemos entendido que eso es lo que quiere 00:08:43
siguiente parte 00:08:45
ahora ya empezamos a diseñar 00:08:47
el código 00:08:50
todavía no estamos programando 00:08:50
ni necesitamos 00:08:53
saber programar 00:08:56
y quien hace eso pues también es el que más 00:08:57
va a ganar el que diseña el código 00:09:01
y vale 00:09:03
diseñar el código que implica a nosotros 00:09:04
ahora mismo que estamos en un caso sencillo 00:09:07
pues decidir que elementos vamos a necesitar 00:09:08
con que lenguaje lo vamos a hacer 00:09:11
tener una especie de primer mapa 00:09:13
de cómo va a ser nuestro código en general 00:09:16
y luego ya llega la parte sencilla 00:09:18
que es la que hace el programador 00:09:20
que ya programa que es el que menos cobra 00:09:21
ahora ya empezamos a diseñar 00:09:23
el programa 00:09:27
va a pedir un número 00:09:28
por teclado 00:09:30
pues va a necesitar una variable 00:09:32
primera parte 00:09:34
va a necesitar una variable para guardar el número 00:09:36
muy bien, ya he hecho un paso importante 00:09:37
identificar que hay una variable 00:09:40
vale, y en este caso es que 00:09:41
el diseño poco más tiene 00:09:45
¿qué tengo que hacer con esa variable? 00:09:47
multiplicarla por 2 00:09:50
multiplicar por 2 sé hacerlo 00:09:51
sé que hay un operador multiplicar 00:09:53
lo tengo ya bastante acotado el programa 00:09:54
ahora 00:09:57
eso va a ser una expresión, ¿qué hago con esa expresión? 00:09:58
tendremos que guardarla en otra variable 00:10:02
vale, entonces ya empiezo a pensar 00:10:03
vale, pues necesito dos variables 00:10:05
una 00:10:07
la cajita en la que llega el valor de entrada 00:10:08
y otra cajita 00:10:12
en la que se guarda 00:10:14
el resultado de la expresión que yo voy a necesitar 00:10:15
hacer. Todo esto, 00:10:18
como veis, es un diseño que tiene que ver con el lenguaje 00:10:20
de programación. Vale, voy a tener una cajita 00:10:21
con el valor. ¿Qué tendría que hacer después? 00:10:23
Mostrarla por consola. Ah, vale, pues muy bien. 00:10:25
Sabré hacerlo. Vale. 00:10:28
Pues en este caso, el diseño 00:10:30
se traduce en eso. Pero ya hemos 00:10:31
llegado a dos conclusiones muy 00:10:33
importantes. La primera, 00:10:35
que necesitaría una variable 00:10:37
para guardar el dato de entrada 00:10:39
entonces esa parte 00:10:40
es lo que se llama el diseño de los datos 00:10:43
porque más importante 00:10:46
que lo que hace un programa 00:10:48
es con qué lo hace 00:10:50
con qué trabaja 00:10:51
los programas con qué trabajan, con datos 00:10:53
en nuestro caso este programa 00:10:55
trabaja con un número 00:10:57
pero una aplicación real trabaja con miles 00:10:58
de datos de diferentes tipos 00:11:01
entonces como yo esos miles de datos 00:11:03
de diferentes tipos no haga un buen diseño 00:11:05
de dónde se van a guardar, en qué tipos de cajitas, 00:11:07
como no haga un buen diseño, 00:11:11
el programa luego se va a volver loco 00:11:12
para actuar con ellos 00:11:15
y cogerlos y llevarlos y moverlos. 00:11:17
Se va a volver loco. 00:11:18
Entonces, la parte del diseño de los datos 00:11:20
es más importante en realidad 00:11:22
que la del diseño del algoritmo, 00:11:24
de qué va a hacer. 00:11:26
Es casi más importante. 00:11:27
Entonces, en nuestro caso, 00:11:30
el diseño de los datos ha traducido a decir 00:11:31
una variable entera para guardar el número. 00:11:33
bueno, y otra 00:11:36
como voy a hacer una expresión 00:11:37
y esa expresión hay por algún lado 00:11:40
venga, pues otra, se ha traducido en eso porque es muy sencillo 00:11:41
pues venga, como parece que ya lo tenemos 00:11:44
bastante diseñado y en la cabeza 00:11:46
tenemos un primer prototipo 00:11:48
y normalmente nos habremos puesto 00:11:50
con un papel y un lápiz 00:11:52
porque siempre se programa 00:11:54
con un papel y un lápiz 00:11:56
para hacerte tus esquemitas y tus cosas 00:11:58
ya tenemos el esquemita, hemos puesto la cajita 00:12:00
con la NA, vale, una expresión, esto va aquí 00:12:02
Y como ya eso lo tenemos más o menos ya en la cabeza, ya empezamos a programar. 00:12:04
¿Qué es lo primero a lo que yo había llegado? 00:12:09
A que necesito una cajita para el dato de entrada. 00:12:11
Una cajita es una variable. 00:12:15
¿De qué tipo? 00:12:16
Me han dicho un número entero. 00:12:17
Bueno, por defecto normalmente uno para los enteros siempre pone int. 00:12:19
¿Por qué hombre? 00:12:22
A menos que el usuario le diga, cuidado que es una aplicación para números enormísimos. 00:12:24
Pero en general siempre ponemos int. 00:12:29
Venga, pues ya está. 00:12:32
Y, ¿cómo le llamamos? Un nombre, lo más explicativo del, pues venga, yo que en este caso, pues número entrada o dato entrada o yo que sé, como os dé la gana llamarlo. En este caso es que tampoco tiene, cuando uno trabaja con clientes, pues lo llamará clientes, cuando trabaja con hombres lo llamará nombre, cuando trabaja con ellas lo llamará edad, en este caso, venga, dato entrada, vale. 00:12:33
Vale, pues ahora cuál es el problema 00:12:57
Que antes de empezar a hacer esta operación 00:13:00
Que tenemos que hacer 00:13:03
Dato entrada por 2 00:13:04
Porque hasta aquí hemos llegado 00:13:07
Esta operación habrá que hacerla 00:13:09
Pero claro, esta expresión me dará un resultado 00:13:10
Que lo tengo que asignar a algún sitio 00:13:13
¿Vale? 00:13:15
Entonces a algún lado tendré que llevar eso 00:13:18
Entonces uno puede decir 00:13:20
Venga, pues venga 00:13:22
Lo voy a llevar a otra variable entera 00:13:23
hala, ya está 00:13:25
vale 00:13:28
lo llevo a otra variable entera 00:13:30
entonces esta expresión, dato entrada por 2 00:13:32
la llevo a otra variable entera 00:13:35
que declaro 00:13:37
ya a la vez que le doy un valor 00:13:38
así me ahorro líneas 00:13:40
podríamos declarar arriba, claro, el resultado 00:13:41
y abajo darle el valor, resultado igual a dato por 2 00:13:44
aprovecharía en la misma, nos da 00:13:48
lo mismo, vale 00:13:50
vale, pero efectivamente 00:13:51
que nos falta aquí entre medias 00:13:54
nos falta aquí entre medias 00:13:56
a dato 00:13:59
entrada 00:14:01
darle el valor 00:14:03
esto es lo que nos falta 00:14:05
darle el valor 00:14:07
a dato entrada, esto nos falta 00:14:08
mientras dato entrada no tenga el valor 00:14:10
yo no puedo hacer esta expresión 00:14:12
y no puedo utilizar esta expresión 00:14:15
para dársela a mi variable 00:14:17
donde va el numerito resultado 00:14:19
y no puedo mostrarla 00:14:21
por pantalla 00:14:23
vale 00:14:24
resultado 00:14:39
vale, entonces tengo ya 00:14:41
hecho gran parte del programa 00:14:44
vale, que me falta 00:14:46
este huequito de en medio 00:14:48
este huequito es el que tengo sin resolver 00:14:49
pero tengo hecho 00:14:51
que necesito una variable entera 00:14:53
tengo hecha la expresión 00:14:55
que va a obtener 00:14:59
mi resultado final 00:15:00
y el valor de esa expresión 00:15:01
tengo decidido que va a ir a otra variable 00:15:04
obviamente, pues yo no lo pierdo 00:15:05
tendré que asignar a algún lado 00:15:07
pues tengo decidido que le voy a dar a esta variable 00:15:08
que también tengo que declarar, claro 00:15:11
pues venga, la declaro 00:15:13
y tengo decidido que ahora voy a mostrar un mensajito 00:15:14
el resultado es 00:15:17
y luego voy a mostrar el resultado 00:15:18
porque ya sabemos que con el System.out podemos mostrar 00:15:20
tanto cadenas como contenidos de variables 00:15:23
vale, pero esto lo tengo vacío 00:15:25
ahora tengo que completar eso 00:15:27
pero ya he hecho un esqueleto 00:15:29
entonces de nuevo 00:15:32
otra idea 00:15:33
con la que 00:15:34
si os tiene que quedar dentro 00:15:36
uno no programa así 00:15:38
tirando líneas una tras otra 00:15:41
no se programa así 00:15:42
uno va programando 00:15:44
como en 00:15:46
como si dijéramos 00:15:48
en refinamientos sucesivos 00:15:54
a ver 00:15:57
uno hace un primer 00:15:58
una primera estructura 00:16:00
una primera plantilla de la aplicación 00:16:03
donde algunas cosas ya las tiene resueltas como nosotros aquí tenemos resuelto mostrar el mensaje 00:16:05
tenemos resuelto esto pero eso sí sin resolver entonces tenemos un primer prototipo una primera 00:16:11
plantilla con cosas resueltas pero claro aquí tenemos un todavía un agujero negro que tenemos 00:16:17
que rellenar aquí otro agujero negro que tenemos que rellenar pero ya tengo una primera versión 00:16:25
versión completa 00:16:30
como aquí, tengo una primera versión completa 00:16:31
pero tiene este agujero negro 00:16:34
¿vale? tiene este agujero negro 00:16:36
o puede tener dos 00:16:38
a lo mejor aquí me falta otra cosa que no sé 00:16:40
y tiene otro agujero negro, entonces 00:16:42
vamos programando así, como si dijéramos 00:16:43
de fuera hacia adentro 00:16:46
no en secuencia una línea tras otra 00:16:47
si no se puede programar 00:16:50
yo primero 00:16:52
tengo la visión global de lo que tiene que hacer 00:16:53
y algunas cosas 00:16:56
ya tendré resueltas y ahora me voy metiendo 00:16:58
en cajitas más pequeñas, vale 00:17:00
yo sé que aquí tendré que leer del teclado 00:17:01
no sé hacerlo todavía 00:17:04
no pasa nada, ahí está mi agujerito negro 00:17:05
ahí tendré que leer del teclado, vale 00:17:08
cuando ya tenga leído, seguiré por aquí 00:17:09
esto ya si lo tengo, pues esto lo pongo 00:17:11
y así voy rellenando las cajas 00:17:13
que se queden vacías 00:17:15
los agujeros negros que se queden vacíos 00:17:17
vale, porque es que 00:17:19
lo que hacéis 00:17:22
muchas veces, y otra vez realizo 00:17:24
por enésima vez 00:17:25
un enunciado 00:17:26
bueno, con suerte lo leéis y lo entendéis 00:17:28
vale, asumimos que la parte de leerla y entenderla 00:17:31
con suerte la habéis hecho 00:17:33
y ahora, abrís el Eclipse y os ponéis 00:17:34
a teclear código 00:17:37
¿eso dónde se ha visto? 00:17:38
no se trabaja así, a ver, en un programa 00:17:41
muy sencillo, sí, porque uno 00:17:43
ya lo lee y ya sabe que tiene que programar 00:17:45
pero no se trabaja así 00:17:47
uno, lo ha entendido 00:17:49
ahora, se hace su esquema 00:17:51
de, ah, este programa tiene que hacer esto 00:17:53
esto, esto, esto 00:17:55
Pues venga, hago una primera composición, una primera composición de mi programa, donde algunas cosas, esta todavía no la sé, la pongo en comentarios, es aquí tendré que hacer esto, pero cuando ya lo tenga hecho, ya tendré que hacer esto de aquí, una primera composición del lugar, y luego ya se van resolviendo partes, ¿vale? 00:17:57
por eso un equipo de desarrolladores 00:18:16
puede trabajar juntos 00:18:19
en paralelo y no en secuencia 00:18:20
porque 00:18:22
uno está haciendo esta parte 00:18:24
y otro está haciendo esta parte 00:18:26
y son partes separadas 00:18:27
esta es la parte de leer del teclado 00:18:29
yo no sé hacerla en mi programa general 00:18:31
no sé hacerla, se la encargo a otro 00:18:34
ese la hace y cuando la haga yo la meto aquí 00:18:36
y mientras en paralelo 00:18:38
otro está haciendo la parte 00:18:40
de lo que sea, de mostrar por teclado 00:18:42
que no sé hacerla 00:18:44
por pantalla, que no sé hacerla 00:18:46
pero no pasa nada, se la encargo a alguien 00:18:48
cuando ese alguien la tenga, la meto aquí 00:18:50
y eso no me para 00:18:52
mi programa, yo puedo seguir escribiendo cosas 00:18:54
asumiendo que esta ya está hecha 00:18:56
y que esta ya está hecha, ahora mismo están en vacío 00:18:58
cuando ya las sepa resolver 00:19:00
las voy componiendo 00:19:03
y voy haciendo mi puzzle 00:19:04
pues es como tienes que programar 00:19:05
y eso implica que antes de hacer uno un código 00:19:08
pues se hace su esquemita en papel 00:19:10
su no sé qué, tengo que apoyarme 00:19:12
sobre esto y sobre esto y va haciendo su puzzle. 00:19:14
Este puzzle de aquí es fácil 00:19:17
porque este puzzle de aquí 00:19:19
la única pieza que se ha quedado 00:19:20
por resolver es esta. 00:19:23
¿Y cómo leo por teclado? 00:19:25
Bueno, pues es lo que vamos a incorporar 00:19:27
ahora. Dime. 00:19:29
Tengo una pregunta, pero no tenía. 00:19:30
¿Podría hacer que 00:19:33
pruebe contraseñas por ti? 00:19:36
¿Que pruebe qué? ¿Contraseñas por? 00:19:38
¿Que pruebe 00:19:41
contraseñas por? 00:19:42
Por ti. 00:19:44
Hombre, claro 00:19:45
Tú puedes hacer todo lo que quieras 00:19:48
Hombre, tú puedes programar cualquier cosa 00:19:50
Esa en concreto 00:19:58
Pero claro, tendrás que tener 00:19:59
Pero bueno, esa aplicación 00:20:01
Lo que necesita es 00:20:06
Una especificación mejor hecha 00:20:07
Comprobar cotizas, ¿qué significa? 00:20:10
Si son iguales que alguna 00:20:12
De un listado que tengo de mil 00:20:14
o si cumplen un patrón 00:20:15
tendrás que especificar exactamente 00:20:17
qué significa comprobar contraseña 00:20:19
lo has dejado abierto 00:20:21
comprobar contraseña puede ser 00:20:22
ver si es una de las 15.000 que tengo en un fichero 00:20:24
o ver si cumple un patrón 00:20:27
comprobar significa muchas cosas 00:20:29
entonces si uno sabe 00:20:32
para él qué significa comprobar contraseña 00:20:33
te haces ya el programa que lo hace 00:20:36
pero tienes que saber primero qué quieres resolver 00:20:37
vale, liga exactamente con lo que os decía 00:20:39
que cuando uno le pone un enunciado 00:20:42
tiene que entender qué quieres hacer. 00:20:44
Tú me dices, ¿se puede hacer un programa de comprueba 00:20:45
y contraseñas? No me has dicho nada 00:20:48
porque comprobar contraseñas, ¿qué significa? 00:20:50
Significa mil cosas. 00:20:52
Entonces, siguiente nivel de 00:20:54
especificación. 00:20:56
¿Se puede hacer un programa que dada 00:20:57
una cadena de texto verifique 00:20:59
si es igual a alguna 00:21:01
de un conjunto de mil millones de cadenas 00:21:03
que tengo en un fichero? 00:21:06
Eso ya si está bien especificado. 00:21:07
Pues sí, se puede. ¿Se puede hacer un programa 00:21:09
que dada una cadena de texto compruebe 00:21:12
si tiene al menos un carácter 00:21:14
alfabético, otro numérico y mayúscula? 00:21:16
Sí, se puede, pero son problemas distintos. 00:21:18
¿Entiendes? Vale, bueno, pues en este 00:21:20
caso 00:21:23
nuestra composición 00:21:24
del puzzle le ha faltado solo una pieza 00:21:27
y es cómo asigno yo 00:21:29
a mi variable dato entrada 00:21:31
cómo le asigno un valor que 00:21:33
no es directamente una 00:21:35
expresión que yo pongo a 00:21:37
capón, sino algo leído por teclado. 00:21:39
Bueno, pues, aunque es un rollete de poner, 00:21:41
como tenemos que leer por teclado desde ya, 00:21:44
porque si no esto es un rollo, vamos a ver cómo hacer eso. 00:21:46
Bueno, pues, para hacer eso hay varias maneras. 00:21:50
Vamos ahora mismo a hacerla más sencilla. 00:21:53
Para hacer eso tenemos que crear una variable nueva y esa 00:21:56
variable va a ser la variable capaz de hacer la lectura. 00:22:04
Vale, pues, entonces, vamos a tener que declarar otra 00:22:09
variable nueva que sea capaz de hacer la lectura. 00:22:10
Esa variable le damos el nombre que nos dé la gana, 00:22:13
por ejemplo, lector, yo qué sé. 00:22:16
Le creamos una variable nueva que sea capaz de leer. 00:22:19
Esa variable, todas las variables que se declaran en Java, 00:22:22
ya sabéis que tienen que tener un tipo concreto. 00:22:25
Pues esa variable lector, que es capaz de leer del teclado, 00:22:28
¿de qué tipo tiene que ser? 00:22:32
Tiene que ser de un tipo que os digo yo, que es este tipo. 00:22:33
Tiene que ser de ese tipo. 00:22:37
Y me diréis, este tipo, así, tal cual, tiene que ser ese. 00:22:39
Y me diréis, este tipo no es ninguno de los tipos que me has dicho que hay en Java y que solo hay esos, claro, pero como os habéis estudiado al dedillo y lo tenéis en la memoria, todo lo que vimos el otro día, los tipos que yo di el otro día eran tipos como, ¿alguien me sabe la palabra? 00:22:43
Eso, primitivos 00:22:59
Muy bien, los tipos que yo di 00:23:07
Dije, ojo, estos son 00:23:09
Tipos primitivos 00:23:11
Hay datos 00:23:13
Que no se adaptan a un tipo primitivo 00:23:15
Pusimos el ejemplo de 00:23:17
Un cliente que tiene dentro su nombre, su edad 00:23:19
Un cliente de qué tipo es 00:23:22
Tiene muchas cosas dentro 00:23:23
Entonces, los tipos primitivos 00:23:25
Se extienden 00:23:27
a tipos que dijimos 00:23:29
tipos objeto 00:23:31
que es como un tipo 00:23:32
un dato que tiene dentro 00:23:35
muchos de los primitivos 00:23:37
dos enteros, un char, lo que sea 00:23:39
muchos de los primitivos, vale, dijimos eso 00:23:41
solo para que nos fuera sonando simplemente 00:23:43
que no solo hay tipos primitivos 00:23:45
sino que hay tipos objeto que ya veremos 00:23:47
más adelante, que son tipos 00:23:49
complejos que tienen 00:23:51
varias partes dentro 00:23:53
vale, pues escáner 00:23:54
es un tipo objeto 00:23:56
claro, entonces, ahora mismo 00:23:58
lo único que tenéis que hacer ahora mismo 00:24:00
es creeros que Scanner es un tipo 00:24:02
de los objetos, porque es complejo 00:24:05
no es primitivo 00:24:06
que se llama así, ahora vemos lo de la importación 00:24:07
y yo tengo que declararlo 00:24:11
para poder usarlo 00:24:13
aquí 00:24:15
vale, ahora completamos esta línea que se queda mal 00:24:15
entonces una vez que yo tengo declarado esto 00:24:18
que ya lo tengo declarado 00:24:20
ya eso, es una especie 00:24:22
los objetos son como señores o señoras 00:24:24
que han cobrado vida en mi programa 00:24:27
y que son capaces de hacer cosas. 00:24:28
Las variables primitivas, 00:24:32
como mi numerito int n, int long, 00:24:34
no son señoras y señores 00:24:36
que son capaces de hacer cosas, no. 00:24:38
Son cajas con cosas dentro. 00:24:40
Serían como fotos, ¿vale? 00:24:42
La foto de un señor 00:24:44
solamente tiene el aspecto del señor. 00:24:45
Una variable entera 00:24:48
tiene el numerito 5, no tiene más. 00:24:49
Pues la foto del señor 00:24:52
tiene el aspecto del señor. 00:24:54
pero un señor real 00:24:54
no solo tiene su aspecto 00:24:56
sino que además puede caminar, correr 00:24:58
moverse, hacer muchas cosas 00:25:00
pues esa es la diferencia 00:25:02
entre una variable primitiva y un objeto 00:25:04
las variables primitivas que son todas esas que estamos viendo 00:25:06
las enteras 00:25:08
las decimales, las char y boolean 00:25:10
que todavía no hemos visto 00:25:13
pero las que hemos mencionado 00:25:14
son valores, es un valor 00:25:15
eso lo valen para eso, para tener un valor 00:25:18
valor que yo luego uso en expresiones 00:25:20
pero las variables objeto 00:25:22
tienen valor, valor complejo 00:25:24
pero lo tienen 00:25:26
y además pueden hacer cosas 00:25:27
pueden hacer cosas 00:25:30
bueno, pues la variable 00:25:32
lector está de aquí 00:25:34
como es una variable objeto 00:25:35
aparte de tener un valor dentro 00:25:38
puede hacer 00:25:39
¿y qué puede hacer? 00:25:42
puede 00:25:44
quedarse a la espera del teclado 00:25:45
cuando tú te crees una cosa, cogerla 00:25:47
y devolvértela para la asignación 00:25:49
todo eso puede hacer 00:25:52
esa variable por ser escáner 00:25:53
luego las variables objeto pueden hacer 00:25:55
vale, pues mi variable lector entonces es estupenda 00:25:57
porque puede hacer 00:26:00
hacer, empezar a hacer 00:26:03
como se hace 00:26:06
poniendo un punto, vale 00:26:06
estoy explicando un poco lo que significa 00:26:12
para que no os parezca que os digo las cosas 00:26:14
y tú las tenéis que creer, para que le veáis un sentido 00:26:16
pero ahora mismo 00:26:18
si estoy contando esto solamente 00:26:20
es para que usemos esta sentencia sin más 00:26:22
para leer del teclado 00:26:24
pero hombre, quiero que entendáis un poquito 00:26:25
por dónde van los tiros, aunque todavía 00:26:27
no estemos viendo esto, ni orientación a objetos 00:26:29
ni nada, pero más o menos 00:26:31
podéis entender por encima de qué va el rollo 00:26:33
lector es una variable más 00:26:36
es una variable más 00:26:38
lo que pasa es que es una variable de tipo objeto 00:26:38
en concreto, de tipo 00:26:41
escáner, entonces es una variable de tipo 00:26:43
objeto, tiene la suerte 00:26:45
de que puede hacer cosas 00:26:47
¿y cómo hacemos que una variable 00:26:49
de tipo objeto lance 00:26:51
se lance a hacer algo? 00:26:53
¿Cómo se lanza una variable de tipo objeto a hacer algo? 00:26:55
Poniéndole un punto detrás. 00:26:58
Yo una variable entera n, 00:27:00
a una variable entera n, 00:27:02
a ver qué, 00:27:04
ah, bueno, que esté sobrada. 00:27:06
Imaginaos que yo tengo aquí una variable entera n. 00:27:08
Esta variable solo me vale 00:27:12
o bien para recibir valor en una, 00:27:14
uy, 00:27:17
o bien para recibir valor en una asignación, 00:27:18
como ya sabemos, 00:27:21
o bien para ser usada 00:27:23
para que otra variable reciba 00:27:24
su valor. 00:27:27
Es para lo único que para lo que nos vale. 00:27:28
Solo nos vale para eso una variable 00:27:33
primitiva. Me da igual que sea int, que sea 00:27:34
eso, solo nos vale para eso. O para darle 00:27:36
valores, o para ser usada 00:27:38
en una expresión, para 00:27:40
dar valor a otra. Por eso 00:27:42
es estática, es una imagen, no es una foto. 00:27:44
Solo me vale para que yo la vea 00:27:47
o para que yo la use 00:27:49
para hacer una fotocopia para otra, para lo que sea. 00:27:50
Pero nunca jamás 00:27:53
Una variable primitiva puede lanzarse a hacer algo 00:27:54
Nunca podríamos hacer 00:27:57
N, punto 00:27:59
Y haz algo 00:28:00
Tú N, haz algo 00:28:02
Porque punto significa haz algo 00:28:04
No puede, porque es una variable primitiva 00:28:05
Pero 00:28:08
Lector sí que puede 00:28:09
Hacer cosas, porque es variable objeto 00:28:12
Bueno, pues en particular, ¿qué puede hacer? 00:28:14
Las cosas que puede hacer reciben un nombre 00:28:16
Entonces lector puede hacer muchas 00:28:18
Pero en concreto puede hacer una 00:28:20
Que significa 00:28:22
vete al teclado, coge lo que alguien haya metido 00:28:23
y dámelo 00:28:27
y ya cuando ya la máquina virtual lo ha recibido 00:28:29
lo asignará aquí, es una asignación más 00:28:33
lo que pasa es que lo que asigna 00:28:36
es de lo que ha recogido el teclado 00:28:38
bueno, pues esa acción se llama next in 00:28:40
ya está, se llama así, se llama next in 00:28:43
entonces, el punto next in implica 00:28:46
oye objeto lector, desencadena la acción 00:28:49
de irte al teclado, coger lo que alguien haya metido 00:28:53
y dármelo, y entregármelo. 00:28:55
Significa eso, ¿vale? 00:28:58
Bueno, pues así leeremos del teclado números enteros. 00:29:01
Que sepáis que significa que la idea de fondo es esa. 00:29:04
Pero todo esto es, porque el texto es un objeto, 00:29:08
es un método para ti y para la TAM, 00:29:10
que todo eso todavía no lo veremos en programación 00:29:12
de entrada de objetos. 00:29:14
Ahora mismo, con saber leer del teclado 00:29:16
y que entendáis un poquito lo que hay de fondo, 00:29:18
es suficiente. 00:29:20
vale, aún así 00:29:21
este 00:29:24
el compilador me está diciendo 00:29:25
error rojo patatín 00:29:28
¿por qué? porque yo aquí he declarado la variable 00:29:30
sin más para que se vea claro 00:29:32
que es una variable más del tipo 00:29:34
lector, pero hay que asignarle 00:29:36
un valor, porque yo ahí la he declarado 00:29:38
pero cuando uno declara una variable 00:29:40
no tiene nada dentro todavía 00:29:42
está indefinido 00:29:44
entonces es como cuando hago int n 00:29:45
la cajita está 00:29:48
pero lo que tiene n dentro está indefinido 00:29:49
hasta que yo no hago n igual a algo 00:29:52
no recibe algo 00:29:54
pues con el lector está igual 00:29:55
yo he dicho, he creado un lector 00:29:57
pero no tiene a la persona dentro 00:29:59
no tiene nada dentro creado 00:30:04
he creado como 00:30:06
la casa 00:30:07
para meter al tío, al lector dentro 00:30:09
la casa, la cajita, en el caso 00:30:11
una variable, pero el tío no lo he creado 00:30:13
como en la cajita n 00:30:16
el 7 no lo he metido todavía 00:30:18
pues aquí el tío no lo he creado 00:30:19
vale, pues venga, vamos a crearlo 00:30:21
vamos a crearlo 00:30:23
para su espacio lector 00:30:25
para su variable, bueno pues se crea 00:30:27
sí o sí de esta manera 00:30:29
que también os lo tenéis que creer 00:30:30
sin entender porque no conocemos 00:30:33
ni constructores ni nada 00:30:35
así se crea 00:30:36
así se crea 00:30:39
vale, pues ya tengo 00:30:44
una variable de tipo objeto 00:30:53
declarada, que al ser objeto es capaz de hacer 00:30:55
muchas cosas, además le he dado 00:30:57
un valor, porque hombre 00:30:59
he creado una casa para un tío 00:31:01
pero el tío no está adentro, pues poco va a poder 00:31:03
leer, vale 00:31:05
y ahora ya este tío que he creado 00:31:07
lector, es capaz 00:31:09
de hacer cosas, entre ellas 00:31:11
esta, que es 00:31:13
leer del teclado, venga 00:31:15
pues a ver 00:31:17
el entorno de desarrollo os habrá puesto 00:31:18
el solito, porque es muy 00:31:21
listo y muy tonto, os habrá puesto 00:31:23
esta línea 00:31:25
vale, si no os la pone 00:31:26
solo, es que 00:31:31
el tema es que cuando usamos 00:31:33
tipos de datos, objeto 00:31:35
la gran mayoría de ellos 00:31:37
están en otro paquete y hay que decirle 00:31:40
en qué paquete está 00:31:41
de nuevo, ahora mismo 00:31:42
siempre tiene que ser 00:31:44
después del package 00:31:54
El package, la primera línea siempre obligatorio 00:31:54
Luego los import y luego ya el public class 00:31:58
El orden hay que respetarlo 00:32:00
Vale, entonces 00:32:02
Esta línea ahora mismo tampoco entendemos lo que significa 00:32:03
Que se quede, que hay que ponerla 00:32:06
Es como una especie de aviso, oye que voy a usar scanner 00:32:09
Ya está, es una especie de aviso 00:32:12
De que vamos a usarlo 00:32:13
No entendemos lo que significa pero no pasa nada 00:32:14
La aclaramos tal cual 00:32:17
Bueno, pues ya sabemos leer del teclado 00:32:18
Vale, entonces ahora 00:32:21
Vamos a ejecutar este programa 00:32:22
Vamos a ejecutarlo 00:32:26
Este, vale, pues lo ejecutamos 00:32:30
¿Veis? Aquí es un ejemplo en el que 00:32:33
Si yo ejecuto este programa dándole al botón verde 00:32:37
Así sin más, ¿cuál me va a ejecutar? 00:32:39
Ejemplo variables enteras 00:32:41
Y no es ese el que yo quiero ejecutar 00:32:42
Quiero ejecutar este otro 00:32:45
Entonces aquí darle al botón verde sin más, pues no 00:32:46
Entonces le voy aquí, botón derecho 00:32:48
Runas 00:32:50
Java 00:32:53
vale 00:32:53
vale, entonces ¿qué ha pasado? 00:32:55
está el programa parado 00:33:04
¿veis? hay un cursor que pita 00:33:06
claro, con razón está parado 00:33:08
¿el programa qué ha hecho? 00:33:09
ha hecho su primera línea 00:33:11
que es declarar la cajita 00:33:13
esa parte ya la ha hecho, ha declarado la cajita 00:33:15
y ahora le hemos dicho 00:33:17
tú, lector 00:33:20
vete y coge del teclado lo que te meta 00:33:20
pues él es 00:33:24
muy obediente 00:33:25
y se ha ido a coger del teclado 00:33:27
lo que le metan, pero no le están metiendo nada 00:33:29
pues se está esperando 00:33:31
y se va a quedar esperando hasta el infinito 00:33:32
es decir, este programa está en la mitad 00:33:35
no ha terminado 00:33:37
si hubiera terminado, pondría aquí terminate 00:33:38
que es lo que pone cuando hemos ejecutado otros 00:33:41
¿verdad? pero no ha terminado 00:33:43
está parado a la mitad 00:33:45
cruzado de brazos 00:33:46
de hecho este botón 00:33:48
que me permite a mí parar a lo bestia el proceso 00:33:50
del sistema operativo, pararlo 00:33:53
está en rojo, significa si yo quiero parar el proceso 00:33:54
pues lo podría parar 00:33:57
¿vale? pero lo que 00:33:59
está ahora es esperando, ¿se ha quedado clavado 00:34:01
dónde? en esta línea 00:34:03
se ha quedado clavado, y ahí se va a quedar 00:34:05
clavado hasta el infinito, ¿hasta cuándo? 00:34:07
hasta que yo no meta un número 00:34:10
y cuando yo lo meta 00:34:11
el lector que está ahí esperando 00:34:13
cogerá el número y lo entregará 00:34:15
en la sentencia 00:34:18
de asignación en la que está colocado 00:34:19
pues venga, vamos a 00:34:22
meterle el numerito 00:34:23
enter, hasta que no damos el enter 00:34:27
no se entera 00:34:29
enter, y ahora ya me dice 00:34:29
el resultado, esto es muy interesante 00:34:32
una vez que yo le he dado al enter, él ya 00:34:34
ha cogido 00:34:36
el numerito, lo ha entregado 00:34:38
y ya ha continuado operando 00:34:41
ha continuado operando, que ha hecho esto 00:34:42
o sea, esto 00:34:44
sobra, vale 00:34:45
y ya está 00:34:50
¿qué pasa? que este programa 00:34:51
nos ha quedado 00:34:54
muy poco amigable, que se llama, ¿por qué? 00:34:55
Porque tú lanzas un programa y se queda esperando y no te dice nada y el usuario dice que tengo que meter aquí. Hombre, lo normal es que hagamos programas que sean un poquito más amables con el que los va a usar. ¿Qué sería lo ideal? Haber puesto antes del next in un mensajito introduzca por favor número entero. Eso habría sido lo ideal porque si no nos hemos quedado ahí con cara de tontos. 00:34:58
ahora ya este programa 00:35:22
está un poco mejor 00:35:29
declara la variable 00:35:32
muestra un mensaje 00:35:33
y ahora se queda esperando 00:35:35
pero ahora ya nos ha hecho un mensaje antes 00:35:37
entonces ahora ya 00:35:40
ahora ya 00:35:42
jolín, tiene otra pinta 00:35:44
está esperando 00:35:46
porque está en next in 00:35:48
está esperando porque está en next in 00:35:49
pero como antes me ha mostrado un mensaje 00:35:51
como antes me lo ha mostrado 00:35:53
que es una sentencia que no tiene nada que ver con la otra, son independientes 00:35:54
como antes me lo ha mostrado, al menos el usuario 00:35:56
sabe lo que tiene que hacer 00:35:58
pues ya está, ¿vale? 00:35:59
¿cómo? 00:36:07
vale, a ver 00:36:10
lo he puesto 00:36:12
a ver, lo he puesto separado 00:36:13
porque como yo hasta ahora lo que había dicho es 00:36:16
que el system out le das 00:36:18
o comillas dobles o una variable y te lo muestra 00:36:19
¿vale? pero 00:36:22
podemos en un mismo system out 00:36:23
mostrar varias cosas a la vez 00:36:26
si queremos. Si queremos varias 00:36:28
cosas, las vamos 00:36:29
concatenando con el operador más. 00:36:31
Por ejemplo, yo podría poner 00:36:34
quiero las comillas dobles 00:36:36
y el contenido de la variable. 00:36:38
Pues entonces pongo esto 00:36:40
y ahora pongo 00:36:41
más y la variable 00:36:43
y me va a concatenar, concatenación 00:36:46
en el sentido de cadenas, me va a 00:36:49
concatenar esto 00:36:51
con esto, ¿vale? 00:36:53
Entonces, ahora yo hago esto y, ¿vale? Pero ojo, porque no quería decir esto ahora, porque ya no tenemos tiempo, ojo, porque si yo pongo aquí, por ejemplo, imaginaos un system out que ponga variable n1 más variable n2, sin más. 00:36:57
Imaginaos, si ya me voy con esto, imaginaos que tenemos esto de aquí, n1 igual a 8 y n2 igual a 12, y yo pongo ahora n1 más n2, porque quiero mostrar las dos, según lo que yo he dicho hasta ahora, vosotros esperaríais que pusiera 8 y 12, ¿sí o no? 00:37:17
y no lo pone, ¿por qué? 00:37:49
porque este operador 00:37:52
cuando tiene variable entera a un lado 00:37:53
y variable entera al otro 00:37:55
ya no interpreta que esté concatenando 00:37:57
él dice, ah, yo soy la suma 00:38:00
ahora, entonces ¿qué hace? 00:38:02
te suma y te muestra la suma 00:38:03
para que este operador, la máquina 00:38:06
virtual, interprete que está 00:38:07
concatenando cadenas 00:38:09
uno de los dos al menos 00:38:11
tiene que ser una cadena 00:38:14
con que uno de los dos sea una cadena 00:38:15
ya interpreta, ojo, no soy el operador 00:38:18
suma aritmética, soy el operador 00:38:20
concatenar, con lo cual 00:38:22
yo podría arreglar esto, por ejemplo 00:38:24
haciendo esto de aquí 00:38:26
poniendo un espacio, ¿verdad? 00:38:27
porque ahora ya 00:38:31
este tiene un lado cadena 00:38:32
luego dice, ojo, no soy operador suma 00:38:34
soy operador concatenar, pues concateno 00:38:36
8 con espacio 00:38:38
y me queda una cadena, y ahora 00:38:40
este más, aquí tiene un número 00:38:42
pero aquí tiene una cadena, entonces dice 00:38:45
Ojo, no soy operador suma, soy operador concatenar, 00:38:46
porque a un lado tengo una cadena, pues funciono como cadena. 00:38:49
Entonces ahora, como concatenación, perdón. 00:38:53
Entonces ahora este bicho, pues, ahora ya sí que sí, bueno, lo que fuera. 00:38:56
Ah, bueno, es que no le he metido un numerito entero. 00:39:02
Vale, ahora ya, este ya sí, ya no te hace la suma de 8 más 12, sino, ¿vale? 00:39:06
Bueno, paramos. 00:39:13
Un segundito que paro 00:39:15
Dime 00:39:17
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
10
Fecha:
19 de septiembre de 2024 - 17:03
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
39′ 20″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
148.16 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid