20241001 ProgrEstruct-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? Como conocemos la variable string que sirve para guardar cadenas de texto, pues vamos a guardar el resultado en una variable string, porque el resultado es si se cumple o no se cumple, una cadena en cualquier caso, pues vamos a guardar el resultado aquí.
00:00:01
¿vale? hasta ahora no lo podíamos
00:00:18
hacer, lo metíamos directamente en el system out
00:00:21
porque no conocíamos la variable string
00:00:23
pero esa opción es más complicada
00:00:25
y no es más complicada, sino que es peor
00:00:27
por un concepto
00:00:29
que empezamos a introducir, pero que
00:00:32
tenéis que ir incorporando
00:00:33
como otro término técnico más en el mundo
00:00:35
del desarrollo, dime
00:00:37
¿si usamos la del system también es válida?
00:00:38
a ver
00:00:44
si haces lo que tiene que hacer
00:00:44
el programa y no hemos puesto
00:00:47
ninguna restricción específica
00:00:48
pero ahora no pienses en esos términos
00:00:50
no pienses en términos de yo lo voy a hacer así pero aprendí a hacerlo así
00:00:53
no, piénsalo en términos de tengo que incorporar
00:00:55
a mi programación todo lo que voy aprendiendo
00:00:57
vale, pues entonces si conocemos
00:00:59
la variable string vamos a usarla que para eso
00:01:01
la conocemos, entonces
00:01:03
este tipo de dato tenéis
00:01:04
que verlo simplemente como un tipo de dato
00:01:07
para guardar cadenas de texto, nada más
00:01:09
no tiene mayor complicación, entonces
00:01:11
como mi resultado en este caso es
00:01:13
o la cadena
00:01:15
si al menos dos son mayores de 21
00:01:16
o no, no son al menos
00:01:18
dos mayores de 21
00:01:21
como mi resultado es un texto
00:01:21
vamos a guardar el resultado aquí, como cuando hacíamos
00:01:23
un programa cuyo resultado era la suma de dos
00:01:26
números, pues decíamos, el resultado es un número
00:01:28
pues me declaro una variable int
00:01:30
para el resultado y luego ya
00:01:32
guardo en esa variable lo que sea
00:01:34
vale, pues entonces
00:01:36
ahora
00:01:38
estaba diciendo
00:01:40
¿por qué es
00:01:42
¿por qué es mucho mejor guardar
00:01:44
el resultado así en lugar de mostrarlo
00:01:46
directamente. En este programa tan
00:01:48
pequeñito y conociendo tan poco, quizá no
00:01:50
es un buen ejemplo, pero
00:01:52
pues por términos de desarrollar
00:01:54
siguiendo el principio
00:01:57
básico de
00:01:59
separación de códigos,
00:02:00
desacoplamiento.
00:02:03
Me explico, me explico.
00:02:05
Nuestros programas ahora son programas
00:02:06
muy cortitos, son cinco líneas, seis
00:02:08
líneas y están todos metidos en una única
00:02:10
clase, en un main.
00:02:12
Entonces ahí poco hay que separar
00:02:14
Porque es que son seis líneas.
00:02:16
Pues las meto todas ahí juntas y ya está.
00:02:18
Vale.
00:02:20
Pero en aplicaciones grandes, que hay muchísimo código,
00:02:20
ahí yo tendría que separarlo por partes,
00:02:24
que cada una se ocupara de su cosa.
00:02:26
Porque así, si me falla una parte, pues yo me voy a esa
00:02:28
y arreglo esa parte y las otras no tengo que mirármelas enteras.
00:02:31
¿No?
00:02:35
Si me falla algo relacionado con esta parte,
00:02:36
me voy a esta parte y lo arreglo.
00:02:39
Las otras no tengo que mirarlas.
00:02:40
Entonces, separar el código en partes es un principio básico.
00:02:41
vale, pues en concreto, por ejemplo
00:02:45
toda la parte del código
00:02:47
que se ocupa de lo que
00:02:49
llamamos la vista, o lo que es lo mismo
00:02:51
lo que ve el usuario, el que está usando la aplicación
00:02:53
pues eso se meterá aparte
00:02:56
se meterá aparte y se dirá
00:02:57
esta parte es la que se ocupa de mostrar por pantalla
00:02:59
o mostrar una interfaz
00:03:01
lo que sea, es la que se ocupa
00:03:03
pues entonces, esta parte nuestra
00:03:04
sería la parte que hace la lógica
00:03:07
y el resultado lo mete aquí
00:03:09
y el resultado se lo da a la otra
00:03:11
parte y la otra parte ya que decida
00:03:13
si esta
00:03:16
cadena la queremos usar en consola
00:03:17
o de repente dentro de cuatro días
00:03:19
la queremos usar en una interfaz, pero esa parte
00:03:21
lo cambia y coge ese stream y una interfaz
00:03:23
y a esta parte le da lo mismo
00:03:26
esta parte lo que hace es
00:03:28
guardo mi resultado en un stream
00:03:29
y se la paso
00:03:31
a la parte del código que se ocupa de trabajar
00:03:33
con ella para mostrarla
00:03:35
y esa parte que haga lo que le dé la gana
00:03:37
si hay cambios en esa parte
00:03:39
a esta le da igual, porque está unido
00:03:41
que haces meterlo aquí, esta no cambia
00:03:43
será la otra la que cambie
00:03:45
entonces nosotros hasta ahora
00:03:47
que metíamos en el system out ya directamente
00:03:49
el mensaje, si me cambiaban
00:03:51
el método de mostrar
00:03:54
la información, yo me tenía
00:03:55
que ir dentro del system out
00:03:58
a cambiar ahí la condición, a cambiarlo
00:03:59
todo, porque tenía todo el código mezclado
00:04:01
tenía mezclada la parte de mostrar
00:04:03
por pantalla con la parte de la lógica
00:04:05
de operar, lo tenía mezclado
00:04:07
entonces cualquier cambio implica retocarlo
00:04:09
todo, ¿vale?
00:04:11
Bueno, pues entonces iros quedando con la idea de códigos desacoplados, que significa, voy a separar en partes, y si tengo que cambiar algo, actualizar algo de mi software, actualizarlo, me voy a esa parte y lo demás ni lo miro, porque están separados, cada uno hace su parte y entrega el resultado.
00:04:13
pues este hace su parte y entrega el resultado
00:04:31
el resultado
00:04:34
lo que pasa es que nosotros ahora lo estamos
00:04:36
cogiendo, aquí dentro también
00:04:37
lo estamos cogiendo y luego lo mandaremos a un system out
00:04:39
vale, nosotros ya nuestro resultado
00:04:41
cogeremos y lo mandaremos
00:04:44
aquí, vale
00:04:45
pero lo podríamos haber mandado a otro código
00:04:47
vale, bueno
00:04:50
pues entonces, estamos en esto
00:04:51
ahora, siguiente
00:04:53
¿qué pensamos? vale
00:04:55
el resultado que yo luego mandaré al system out
00:04:57
¿qué tiene que tener?
00:05:00
pues no lo sé, tiene dos posibilidades
00:05:02
o esta
00:05:04
a ver, esto lo
00:05:06
vamos a, vale
00:05:09
tiene dos posibilidades, mi mensaje resultado
00:05:14
o
00:05:17
es
00:05:19
al menos dos
00:05:20
o menos de dos, ¿veis? aquí estamos
00:05:22
haciendo una asignación
00:05:25
a la variable string
00:05:27
recordad
00:05:29
que como vimos ayer, una variable
00:05:31
string que recibe en las
00:05:33
asignaciones, recibe cadenas de
00:05:35
caracteres, es lo único que puede recibir
00:05:37
una variable string en sus asignaciones
00:05:39
cadenas de caracteres
00:05:41
las cadenas de caracteres son texto
00:05:43
entre comillas dobles, luego esto
00:05:45
que recibe mi variable string está
00:05:47
bien, es perfectamente compatible
00:05:48
¿vale? podría
00:05:50
recibir también otra variable string, por supuesto
00:05:53
o sea, imaginaos que yo hago esta cosa
00:05:55
tan retorcida, podría
00:05:56
no pasa nada
00:05:58
sintácticamente es verdad
00:05:59
imaginaos, yo hago aquí texto 1
00:06:02
y el texto 1 es
00:06:05
como es muy largo, para que no me quede línea muy largo
00:06:06
mi texto 1 que sea este
00:06:08
al menos 2
00:06:10
y ahora me hago otro string
00:06:14
texto 2
00:06:19
y en texto 2
00:06:23
guardo esto
00:06:25
exacto
00:06:26
entonces, estas asignaciones
00:06:32
se ven más claras, son dos asignaciones
00:06:34
a dos variables string
00:06:36
dos variables string sirven para guardar
00:06:37
cadenas de texto
00:06:40
vale, entonces a una variable string
00:06:40
le puedo asignar también
00:06:43
otra variable string porque también es una
00:06:45
cadena de texto, bueno pues
00:06:47
entonces yo he cambiado
00:06:49
este código, podría haberlo decidido así
00:06:51
de cara a que esta línea sea más corta
00:06:53
y decirle, oye
00:06:55
a mensaje resultado tenemos
00:06:57
dos posibilidades
00:06:59
le asigno o texto
00:07:01
uno o texto dos
00:07:03
una de dos
00:07:07
o le asigno el texto de arriba
00:07:08
o le asigno el texto de abajo
00:07:11
una de dos, esas son mis
00:07:12
posibilidades con el mensaje resultado
00:07:14
¿verdad? no hay más que esas
00:07:17
vale, ¿y de qué depende
00:07:18
que le asigne texto 1 o texto 2?
00:07:21
depende de una condición
00:07:24
de la condición
00:07:25
al menos dos edades
00:07:27
ser mayor de 21
00:07:29
vale, pues ahora yo ya
00:07:31
como conozco muchos operadores
00:07:33
booleanos, relacionales y de todo
00:07:35
mi único problema es
00:07:37
poner en esta variable booleana
00:07:38
la condición de al menos 2
00:07:41
ser mayor que 21
00:07:43
y ahora ya no lo traduce
00:07:44
bueno, pues entonces tenemos 3 edades
00:07:46
¿cómo lo podemos traducir
00:07:49
con los operadores booleanos
00:07:51
AND y OR, que son los que conocemos
00:07:53
AND y OR, bueno y el negado
00:07:55
la condición de al menos
00:07:57
2 ser mayor que 21
00:07:59
lo primero que nos sale es decir, vale
00:08:00
yo tengo 3 edades, las que he llamado
00:08:03
E1, E2, E3, para que sea más corto
00:08:05
pues puede ser que E1 sea mayor que 21
00:08:07
y E2 mayor que 21
00:08:10
o
00:08:12
E1 mayor que 21 y
00:08:13
E3 mayor que 21
00:08:15
o E1 mayor que 21
00:08:17
y E3 mayor que 21
00:08:19
ya está, ya he recogido la condición que me han dado
00:08:21
con los operadores AND y OR
00:08:23
pues es nuestro problema
00:08:25
cuando me expresa una condición en lenguaje natural
00:08:27
que puede ser cualquier cosa, que al menos dos sean mayores
00:08:29
que 21 pero uno tenga un cuñado
00:08:32
en no sé dónde y el otro en no sé qué
00:08:33
pues yo todo eso lo traduzco
00:08:35
a ans y a or
00:08:37
que me queda muy larga, me ha quedado muy larga
00:08:38
pues eso mismo que yo he dicho
00:08:41
que la primera y la segunda
00:08:43
sean mayores que 21
00:08:45
o que la primera y la tercera sean mayores que 21
00:08:46
o que la segunda y la tercera
00:08:49
sean mayores que 21
00:08:52
esa es la traducción exacta
00:08:52
de al menos dos mayores de 21
00:08:55
¿verdad?
00:08:57
bueno, pues eso codificado
00:08:59
Sería
00:09:02
Esta condición de aquí arriba
00:09:13
Yo meto esa condición en un boolean
00:09:15
Para que no me quede luego este condicionado
00:09:19
Aquí gigante
00:09:21
Lo meto en un boolean
00:09:22
Y es lo que
00:09:24
Son 3 or
00:09:25
De esto
00:09:28
Entonces yo voy anidando con paréntesis
00:09:29
No pasa nada
00:09:32
Esta condición que significa
00:09:32
Que la primera sea mayor que 21
00:09:34
y la segunda mayor que 21.
00:09:36
¿Que esto no ocurre?
00:09:41
Pues entonces, o que esta sea mayor que 21
00:09:43
y esta mayor que 21.
00:09:46
O si no, que esta sea mayor que 21
00:09:48
y esta sea mayor que 21.
00:09:50
Entonces, esa condición recoge exactamente eso.
00:09:52
Si los tres son mayores que 21,
00:09:56
esta ya va a ser true.
00:09:59
Entonces, el total es true.
00:10:01
¿Vale?
00:10:04
y si solo es una
00:10:04
mayor que 21, solo una
00:10:07
estas tres van a ser falsas
00:10:09
las tres
00:10:11
tengo una pequeña duda
00:10:12
si yo en vez de poner edad
00:10:14
21 pusiera un boolean
00:10:17
no tendría que poner
00:10:18
o sea, esto lo hubieras metido a su vez
00:10:20
en tres booleans, tuvieras tres booleans
00:10:23
este, este y este
00:10:25
pues ya está, lo sustituyes y ya está
00:10:27
no tengo que poner que sea true
00:10:29
la condición ya asume que eso tiene que ser true
00:10:30
Claro, claro. O sea, si tú lo hubieras desglosado en algo así, por ejemplo, C1 igual a E1 mayor que 21. Y lo mismo con las otras.
00:10:32
Claro
00:10:45
Si se trata de
00:10:50
Cómo lo ve uno más claro
00:10:53
Yo creo
00:10:55
Y ahora ya pones aquí
00:10:58
C1, aquí C2
00:11:00
Aquí C1 otra vez, aquí C3
00:11:03
Aquí C2 y aquí C3
00:11:05
Es lo mismo, exactamente lo mismo
00:11:07
Se trata de cómo queda el código más claro
00:11:09
Entonces
00:11:11
Cuando uno ve
00:11:12
si uno ve esta condición
00:11:14
que es la condición que va aquí metida
00:11:16
que es la que va aquí
00:11:18
¿no? si uno
00:11:20
cuando ve aquí la condición dice, uy ¿de qué depende
00:11:22
que haya dos mensajes? ¿de qué depende? pues se va
00:11:25
a esta condición aquí arriba
00:11:27
y lo ve escrito así
00:11:28
la ve enseguida y dice, ah vale
00:11:30
lo que me está expresando es que me va a 21
00:11:33
pero si empieza a ver aquí C1, si C2, si C3
00:11:34
ya le obligas a ir para arriba
00:11:37
¿y esto qué significa? entonces
00:11:39
hombre, si la condición queda muy larga
00:11:41
y viene bien para cortar códigos, sí.
00:11:43
Pero si dificulta que entendamos exactamente qué significa esto,
00:11:45
pues es mejor no hacerlo.
00:11:49
Aunque es lo mismo, efectos prácticos es lo mismo.
00:11:50
¿Vale?
00:11:54
Vale, pues entonces se trata de usar el no lógico,
00:11:55
el and y el or, para expresar lo que nos estén diciendo.
00:12:00
Recordad que esto es que ambas sean true simultáneamente,
00:12:06
Y el or es o una o la otra, o una o la otra, o ambas, ¿vale?
00:12:11
Vale, o las dos, el or trajo las dos, ¿vale? Porque el or exclusivo también no.
00:12:28
Vale, entonces esta yo creo que es la condición más clara para expresar la idea de que al menos dos a mayores que 21, ¿vale?
00:12:33
entonces
00:12:42
a lo mejor alguno
00:12:45
podría haber llegado a esta condición
00:12:47
por un camino más largo
00:12:49
o porque está un poco
00:12:51
embrollado en ese momento
00:12:52
entonces vamos a ver ese ejemplo para ver
00:12:54
un poco la aritmética de estos operadores
00:12:57
no os liéis
00:12:59
no os volváis locos, pero si quiero que
00:13:01
se quede la idea de que estos operadores
00:13:03
igual que las sumas y las restas, tienen una aritmética
00:13:04
la propiedad conmutativa
00:13:07
la distributiva, etc.
00:13:09
Vale
00:13:12
Bueno, a ver, como está a punto de tocar
00:13:13
Lo paramos aquí
00:13:19
Y lo decimos luego
00:13:21
- Subido por:
- Raquel G.
- Licencia:
- Dominio público
- Visualizaciones:
- 11
- Fecha:
- 2 de octubre de 2024 - 17:35
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 13′ 25″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 49.46 MBytes