Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 25-09-23 - 3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, pues venga, ejemplo char y boolean.
00:00:02
El tipo char primitivo, siguiente que nos falta.
00:00:05
Este nombre para una variable es un nombre feísimo,
00:00:10
recordad siempre el principio que hemos dicho que los nombres de las variables
00:00:14
lo más explicativos posible respecto al sentido de lo que guardan.
00:00:17
Ahora mismo es que él no está guardando nada, nada más que un ejemplo para mí,
00:00:24
lo llamo c, pero hombre, una variable que se llama abcxjk
00:00:27
suele venir de un programa un poquito mal pensado y mal hecho.
00:00:30
Lo digo para que vuelva a surgir este tema.
00:00:37
Pero bueno, en mi caso, por comodidad, no escribir mucho,
00:00:39
lo voy a llamar c y ya está.
00:00:41
Bueno, pues las variables char c ya sabemos que sirven
00:00:43
para guardar un único carácter y uno solo y nada más.
00:00:46
¿Y cómo se expresa un único carácter en Java?
00:00:51
no se expresa con las comillas dobles
00:00:55
o sea, uno podría decir
00:00:57
oye, esto es un único carácter
00:01:00
V, ¿por qué no me dejas guardarlo en C?
00:01:02
porque no es la manera que tiene
00:01:04
Java de entender
00:01:06
un único carácter
00:01:07
esto para Java es toda una
00:01:09
cadena de caracteres y eso se tiene que usar
00:01:12
de otra manera, ya veremos cómo
00:01:14
¿que esta cadena de caracteres coincide que solo tiene
00:01:15
un carácter? bueno, coincide que solo tiene uno
00:01:18
pero es una cadena de caracteres
00:01:20
y una cadena de caracteres nunca puede ir
00:01:21
a un char, a un char solo puede ir
00:01:24
un carácter, y como se le
00:01:26
dice a java, oye que lo que te doy
00:01:28
es solo un carácter, guárdamelo como
00:01:30
un carácter, pues con una comilla
00:01:32
simple, ya está, con la comilla
00:01:34
simple en vertical, ahí ya
00:01:36
sí, ahí ya sí le gusta y esa
00:01:38
asignación ya es válida, ¿vale? y en la variable
00:01:40
char solo puede ir un carácter, y solo
00:01:42
uno, dentro
00:01:44
de todos los caracteres posibles codificables
00:01:46
¿y cuáles son esos?
00:01:48
los de la famosa tabla hasti
00:01:50
a ver si encontramos una tabla ASCII
00:01:51
aquí, estupenda
00:01:54
bueno, esta está bastante bien
00:01:55
esto es una
00:02:05
¿cómo lo puedo quitar sin contestarle?
00:02:12
cago en la madre
00:02:17
bueno, esto es una tabla
00:02:18
¿cómo puedo quitar esto sin
00:02:23
darle a ninguna de las dos opciones?
00:02:25
vale
00:02:37
pues esto es una tabla ASCII
00:02:38
la tabla ASCII
00:02:41
concepto fundamental de cualquier informático
00:02:43
claro
00:02:47
es una tabla que como ya me he dicho otras veces
00:02:47
hace corresponder
00:02:51
cada uno de los caracteres
00:02:52
que usamos
00:02:55
a un numerito entero
00:02:56
¿por qué?
00:02:59
porque lo único que se puede codificar en binario son bits
00:03:00
entonces estos numeritos
00:03:03
111, 112, 113
00:03:05
se pueden codificar en binario
00:03:06
entonces la codificación binaria
00:03:08
del 82
00:03:11
se corresponde la tabla ASCII con la R
00:03:12
mayúscula, la del 83 con la S
00:03:15
esto es la tabla ASCII
00:03:19
y aquí están todos los caracteres que podemos usar
00:03:20
pues un montonazo de caracteres
00:03:23
la A con tilde, la A sin tilde
00:03:25
los números, los guiones, los espacios
00:03:27
los tabuladores, pues cualquier cosa
00:03:29
¿vale? por ejemplo
00:03:31
yo aquí podría poner
00:03:35
la A con tilde
00:03:37
la con tilde es un carácter también
00:03:42
es decir, a un char
00:03:44
le puedo dar
00:03:46
a un char le puedo asignar
00:03:47
cualquiera
00:03:50
de los caracteres que hay en esta tabla
00:03:53
cualquiera, todos ellos son char
00:03:55
¿vale?
00:03:56
cualquiera de los caracteres de esta tabla
00:03:58
le puedo asignar
00:04:00
¿vale?
00:04:01
un tabulador
00:04:03
es un carácter
00:04:04
un espacio, todo eso son char
00:04:07
y se los puedo asignar a una variable char
00:04:10
vale
00:04:12
entonces por comodidad
00:04:14
por comodidad a la hora de programar
00:04:16
como según la tabla
00:04:19
ASTI hay una correspondencia
00:04:21
directa entre char
00:04:22
y número entero
00:04:24
una correspondencia unívoca, verdad
00:04:26
hay una biyección ahí perfecta entre char
00:04:28
y número entero, pues Java me permite
00:04:30
trabajar indistintamente
00:04:33
cuando uso una variable char
00:04:35
con el carácter entre comillas simples
00:04:36
y el numerito
00:04:38
es decir, si yo busco esta A con tilde
00:04:39
en la tabla ASCII
00:04:43
y esta A con tilde, si no la encuentro rápido
00:04:45
pues me busco otro carácter
00:04:47
esta
00:04:48
la A con tilde es el 160
00:04:50
bueno, pues estas dos sentencias en Java son idénticas
00:04:53
para Java son idénticas
00:04:58
¿vale?
00:05:03
porque para él es equivalente
00:05:06
cuando asigno una variable char, claro
00:05:08
es equivalente
00:05:11
el numerito entero de la tabla ASCII
00:05:13
y el carácter entrecomillado
00:05:15
claro, otra cosa es
00:05:17
esto, ¿vale?
00:05:19
imaginaos que yo tengo aquí una variable entera
00:05:21
y hago
00:05:23
n igual
00:05:25
a 160
00:05:27
¿vale?
00:05:29
estas dos asignaciones en realidad son distintas
00:05:33
o sea, yo a c
00:05:35
como es una variable char
00:05:37
le estoy asignando
00:05:39
el carácter que según la tabla
00:05:42
ASCII se corresponde a este número
00:05:43
pero sin embargo a n, como n
00:05:45
es un entero, a n le estoy
00:05:47
asignando el numerito 160
00:05:49
son dos asignaciones con dos sentidos
00:05:51
distintos
00:05:54
vamos a mostrarlas con un
00:05:54
system out
00:05:57
yo aquí voy a mostrar la variable
00:05:58
c y en otro system
00:06:02
out aquí debajo
00:06:04
voy a mostrar la variable n
00:06:04
y de hecho voy a quitar esta asignación
00:06:07
de aquí, la voy a quitar
00:06:11
esta asignación, voy a asignarle
00:06:13
a C 160
00:06:16
y a N 160
00:06:17
la única diferencia es que C es un char
00:06:18
y N es un entero
00:06:21
vale, vamos a ejecutar este código
00:06:22
vale, a ver
00:06:25
es que el editor de texto
00:06:31
este, del eclipse
00:06:33
no, hay que cambiar la fuente
00:06:34
de codificación para que muestre las tildes
00:06:37
por eso lo muestra así, voy a elegir
00:06:39
uno que no sea con tilde porque
00:06:41
pero es un problema del editor de texto
00:06:42
de aquí
00:06:44
voy a
00:06:45
pero como veis son dos cosas distintas
00:06:47
voy a elegir un carácter de la tabla
00:06:50
ASCII que precisamente no sea una tilde
00:06:52
pues
00:06:54
cualquiera, 76
00:06:56
voy a poner 76
00:06:58
voy a asignarle
00:07:00
76 y 76
00:07:05
vale
00:07:12
a las dos variables les he asignado lo mismo
00:07:13
76
00:07:16
y ahora la voy a mostrar
00:07:16
C y N. Voy a mostrarlas. Ejecuto esto de nuevo y efectivamente la primera sentencia para mostrar me ha mostrado la L y la siguiente me ha mostrado el 76.
00:07:18
claro, porque C es una variable char
00:07:34
cuando a C se le hizo
00:07:37
esa asignación
00:07:39
en realidad lo que se hizo
00:07:40
fue asumir que en C va el char
00:07:42
que según la tabla ASTI
00:07:45
está en el número 76
00:07:47
pero cuando se hizo la de abajo
00:07:48
N es un entero, aquí no hay tabla ASTI, no hay historias
00:07:51
aquí asigno el 76
00:07:53
pues el 76 y punto pelota
00:07:54
¿vale? y punto pelota
00:07:57
76 y lo busco en la tabla ASTI
00:07:59
tendrá que ser la L
00:08:03
efectivamente es la L
00:08:04
bueno, pues esto es lo más importante
00:08:07
de tener presente de los char
00:08:15
que se puede trabajar indistintamente
00:08:16
con ellos, con el número entero
00:08:20
y con la variable
00:08:21
y con el char
00:08:23
entre comillas siempre, se puede trabajar indistintamente
00:08:25
esto luego
00:08:27
ahora no quiero liaros mucho
00:08:39
pero bueno, yo creo que sí que podemos
00:08:42
mencionarlo un poquito más
00:08:44
este hay que manejarlo con cuidado
00:08:47
porque se puede prestar a error
00:08:51
por ejemplo, vamos a crear
00:08:53
dos variables char
00:08:55
c1 y c2
00:08:57
vale, a c1 le doy 76
00:08:59
y a c2
00:09:02
le doy
00:09:06
76
00:09:08
vale, le doy 6
00:09:15
vale, doy 66 y 6
00:09:17
vale, venga, vamos a seguir
00:09:21
haciendo
00:09:27
muestras de aquí
00:09:28
voy a poner aquí un siso para
00:09:30
dividirlo
00:09:33
que tenga aquí muchos asteriscos
00:09:34
para dividirlo, vale, aquí esto me va a mostrar
00:09:37
esta cadena de texto, vale, ¿qué vamos a mostrar ahora?
00:09:39
después de estos asteriscos, voy a mostrar
00:09:41
esto
00:09:43
voy a mostrar
00:09:47
C1
00:10:02
más ceros
00:10:04
los operadores básicos
00:10:11
que son suma, resta, multiplicación y división
00:10:14
vamos, no hace falta
00:10:18
cuando veamos operadores va a hacer falta decir poco de ellos
00:10:20
porque son naturales
00:10:23
uno sabe que más es la suma
00:10:24
y si ponemos un número a un lado y otro al otro
00:10:26
pues es una
00:10:28
según el álgebra
00:10:29
que conocemos
00:10:31
todos sabemos sumar según nuestro álgebra
00:10:33
bueno, pues entonces
00:10:36
C1 más C2 en realidad es una suma
00:10:38
¿verdad? porque C1 es un número
00:10:41
y C2 es otro número
00:10:43
también, podemos trabajar
00:10:45
directamente con ellos como si fuera entero
00:10:47
entonces, esta operación tiene sentido
00:10:48
¿vale? C1 más C2
00:10:51
tiene sentido
00:10:53
vale, vamos a ver qué es lo que muestra
00:10:54
C1 más C2, vamos a ejecutarlo
00:10:56
¿vale?
00:10:58
C1 más C2
00:11:04
me está dando 82
00:11:05
esto no es un char
00:11:07
entonces nosotros lo que podríamos haber esperado es
00:11:09
a ver, c1 más c2 sería
00:11:12
76 más 6, 82
00:11:17
como estamos diciendo
00:11:20
que cuando se trata de un char
00:11:23
el char, cuando tiene un numerito entero
00:11:25
en realidad es equivalente al carácter que codifica
00:11:29
pues si yo he hecho 76 más 6 me da 82
00:11:32
Entonces uno podría haber esperado
00:11:35
Podría haber esperado
00:11:37
Que al haber hecho C1 más C2
00:11:39
Lo que me hubiera mostrado es
00:11:41
Este 82 que me sale aquí
00:11:42
Me voy a la tabla ASTI
00:11:45
¿Vale? Me voy a la tabla ASTI
00:11:46
Y
00:11:49
Me debería
00:11:50
Podríamos esperar que me salga la R
00:11:53
¿Verdad?
00:11:55
¿No estáis perdidos? ¿Sabéis por dónde voy?
00:11:57
Sí
00:12:00
¿Vale? Pero no nos ha mostrado la R
00:12:00
Nos ha hecho la suma
00:12:03
¿Por qué? Cuidado. Cuando involucramos operadores algebraicos, él de nuevo hace conversiones automáticas, promociones automáticas. Este término ya lo hemos usado antes. Cuando él tenía que asignar un int a un long, ya hacía alguna pequeña conversión, que es del int al long, no puede.
00:12:05
Entonces cuidado, Java hay determinadas situaciones que rápidamente cuando uno ya lleva un tiempo
00:12:26
Ya las tiene todas identificadas y ya no le causa un problema
00:12:32
Hace rápidamente conversiones automáticas
00:12:34
Que si uno las controla y las entiende las puede usar
00:12:43
Pero si no las controla y las entiende le pueden dar errores
00:12:48
Pues cuando hay operadores algebraicos involucrados como más, menos, por y división
00:12:49
cuando hay operadores algebraicos involucrados
00:12:55
cuidado
00:12:57
porque automáticamente lo que él hace
00:12:58
es lo que tenga alrededor
00:13:01
promocionarlo a número
00:13:02
y convertirlo a número
00:13:04
porque él dice, uy hay una operación matemática
00:13:05
hay una operación matemática, para hacer operaciones matemáticas
00:13:08
me hacen falta números, pues lo convierto a número
00:13:11
y es lo que hace
00:13:13
hace esa promoción, vale
00:13:14
lo convierte a número
00:13:16
es lo que ha hecho, C1 más C2
00:13:17
ha visto que hay un más
00:13:21
lo ha convertido a número
00:13:22
Y me muestra el número 82.
00:13:24
Y bueno, pues ya, si uno sabe, controla eso, pues no pasa nada.
00:13:27
Bueno, vamos a indicarlo aquí.
00:13:33
Los operadores algebraicos, vamos a llamarlo algebraicos, los que hacen operaciones algebraicas.
00:13:41
Algebraicos, si lo necesitan, convierten los operandos a números.
00:13:49
y eso puede dar efectos secundarios
00:13:57
que podemos no entender
00:14:01
vale, pues lo pongo aquí
00:14:03
cuidado, vale
00:14:10
es decir, lo vamos a explicar un poco más
00:14:14
lo vamos a explicar un poco más
00:14:17
lo siguiente
00:14:21
no muestra
00:14:21
el carácter
00:14:24
el carácter ASCII
00:14:27
76 más 6
00:14:34
82
00:14:36
Sino el número 82 directamente
00:14:37
¿Vale?
00:14:41
Todo lo ha convertido
00:14:49
¿Cómo puedo arreglar yo esto?
00:14:50
No hay problema
00:14:58
O sea, si yo quiero asegurarme
00:14:59
Podría hacer
00:15:00
Vamos a volver a repetir esto
00:15:01
Que yo quiero
00:15:03
Él lo ha convertido a número
00:15:13
Pero yo quiero mostrar el carácter ASCII 82
00:15:14
Número 82
00:15:17
Alguien se aventuraría a decir
00:15:18
¿Qué puedo hacer?
00:15:23
si yo quiero que eso sea un char, otras empeñan que sea un número
00:15:24
pero quiero que sea un
00:15:27
pues un casting
00:15:28
que ya lo hemos visto antes
00:15:32
pues venga, un casting
00:15:34
y un casting de que no, que yo lo quiero como char
00:15:36
que lo quiero como char
00:15:39
pues venga, hago un casting
00:15:40
este c1 más c2
00:15:46
hable un casting a char
00:15:48
hombre ya
00:15:51
tú lo has interpretado como número
00:15:52
porque has visto un operador numérico
00:15:55
algebraico, perdón, lo has interpretado como número
00:15:56
pero no
00:15:59
yo lo quiero como char
00:16:01
porque yo lo que ahí quería era
00:16:03
el carácter char S
00:16:05
vale, ahora ya sí
00:16:09
ahora ya nos muestra la R
00:16:20
que la R efectivamente es
00:16:21
el carácter ASCII
00:16:24
que está situado en el 82
00:16:28
en el 82
00:16:29
el que está en el 82
00:16:31
bueno, esto es
00:16:33
es
00:16:36
Entonces hay muchas casuísticas que se pueden dar relacionadas con esto, pero lo importante es que tengamos más o menos clara la idea, por si nos sale algo que no esperamos, entender la base de por qué ha podido ser y arreglarla.
00:16:38
No podemos ejemplificar todas las casuísticas que se pueden dar, ¿vale? Pero más o menos con esto tenemos las ideas básicas, que son, recopilamos un char y el numerito de la tabla ASTI que lo representa, son equivalentes a la hora de asignarlo a una variable char, son equivalentes, ¿vale?
00:16:52
ahora el siguiente salto que podríamos dar
00:17:17
como en una variable char
00:17:20
en realidad va un entero
00:17:23
yo puedo operar con él
00:17:24
pero cuidado
00:17:27
porque si usamos operadores algebraicos
00:17:28
los operadores algebraicos
00:17:30
lo convierten a número
00:17:31
lo convierten a número
00:17:33
entonces que yo quiero ese efecto
00:17:35
¿vale? quiero ese efecto
00:17:37
pero que ahora quiero volver
00:17:39
dar el otro salto
00:17:40
y no, yo no quiero el número
00:17:42
quiero el char que lo representa
00:17:43
siempre tengo la opción del casting
00:17:45
¿Vale? Es como si yo hago aquí ahora
00:17:47
Por ejemplo, en char, en otra variable, en otra cualquiera
00:17:54
En char c3
00:17:59
Yo le voy a asignar, vamos a intentar asignarle n
00:18:01
Aquí tenemos claro que me va a decir
00:18:06
No, el tipo no es compatible
00:18:10
N es un número entero, es un int
00:18:13
No puedes asignar un número entero
00:18:17
a una variable char
00:18:20
está claro, no se iba a salir un error de compilación
00:18:22
porque no se pueden asignar
00:18:24
tipos incompatibles
00:18:26
salvo los dos matices
00:18:28
que hemos visto hasta ahora, que él puede hacer
00:18:30
pronunciación automática de int a da
00:18:32
de int a lo ojo, de flow a da da
00:18:33
pero este no, hay pronunciación automática que valga
00:18:35
este, no puedes asignar un int
00:18:40
a un char
00:18:42
pero yo podría hacer un char
00:18:43
podría hacer un casting, perdón
00:18:46
si hago un casting, ningún problema
00:18:48
y ahora que estaré asignando a C3
00:18:51
estaré asignando a C3
00:18:55
el carácter que está
00:18:56
en la posición
00:18:59
ASCII 76
00:19:01
eso es lo que estaré asignando a C3
00:19:02
vamos a mostrarlo
00:19:05
a ver si es verdad que nos encaja
00:19:09
vale, nos muestra la L
00:19:10
la L
00:19:18
debería estar en
00:19:20
la posición 76
00:19:22
porque yo he hecho aquí el char
00:19:25
el casting de este, en la 76
00:19:26
si buscamos aquí en la tabla
00:19:29
ASCII, pues en la 76
00:19:31
está la L
00:19:34
¿vale? en la 76 está la L
00:19:34
bueno, pues todo esto os lo revisáis
00:19:37
para tenerlo ahí en la mente
00:19:43
porque hay aplicaciones
00:19:44
en las que
00:19:46
gran parte de los errores
00:19:47
son este tipo de cosas
00:19:49
de este tipo de cosas
00:19:53
hasta que uno encuentra, porque uno a veces
00:19:54
cuando una aplicación tocha enorme
00:19:56
que hace cosas súper sofisticadas no le funciona
00:19:58
como la aplicación es tocha
00:20:00
sofisticada y no le funciona
00:20:02
pues entonces busca errores
00:20:04
tochos sofisticados y no
00:20:06
la mayoría de las veces los errores son
00:20:08
por detalles mínimos como este
00:20:10
que yo no me he dado cuenta de que aquí
00:20:12
estoy utilizando
00:20:14
haciendo una suma de números cuando lo que quería hacer
00:20:15
era concatenación, cosas de este estilo
00:20:18
a lo mejor de formato
00:20:21
cosas pequeñísimas
00:20:22
y es muy difícil encontrarlos
00:20:23
porque cuando uno los busca
00:20:26
da por sentado que como esto es básico
00:20:28
eso lo tiene bien
00:20:30
y normalmente el ojo te filtra automáticamente
00:20:31
la parte sencilla del código
00:20:34
no la ve
00:20:35
y se va a la conflictiva
00:20:36
donde están los bucles, donde están las cosas
00:20:39
y la otra la podemos mirar mil veces
00:20:41
y no nos damos cuenta
00:20:44
entonces tenemos que girar ese filtro
00:20:46
porque los errores muchas veces están
00:20:47
en este tipo de cosas sencillas
00:20:49
¿Vale? Un tipo de cosas sencillas.
00:20:52
Entonces, como las ideas ya están, ahora lo tenéis que revisar, aseguraos de que lo tenéis interiorizado
00:20:54
y que entendéis en qué medida se puede hacer equivaler el número entero con el char, ¿vale?
00:21:01
Y evitar las conversiones de plazas de algebraicos, etc.
00:21:07
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 14
- Fecha:
- 25 de septiembre de 2023 - 13:34
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 21′ 13″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 404.98 MBytes