Prog2223-String Ejercicio 5 - 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:
Ejercicio 5 del bloque de String
Voy a grabar este ejercicio, por lo tanto, si vais a hablar, vuestra voz estará grabada
00:00:00
y me daréis vuestro consentimiento en el momento en que estéis hablando
00:00:10
Dicho esto, vamos a hacer el ejercicio 5 del bloque de strings
00:00:13
Es este de aquí, ingresar a una cadena y determinar cuantas palabras se encuentran en la cadena
00:00:18
Cada palabra se separa por medio de un espacio en blanco
00:00:24
¿Cómo hacemos este ejercicio?
00:00:28
Este ejercicio es relativamente sencillo
00:00:30
Como las palabras están separadas por un espacio en blanco
00:00:32
quiere decir que cada vez que tengo un espacio en blanco estoy separando la palabra
00:00:37
Entonces lo que voy a hacer es mirar mi cadena letra por letra
00:00:41
y cada vez que encuentro un espacio en blanco lo marque como aquí ha habido un cambio de palabra
00:00:47
Al final, probablemente los espacios en blanco serán uno menos de las palabras
00:00:53
Ahora lo vamos a ver, vamos a probar
00:01:00
Vamos a empezar el ejercicio
00:01:03
Antes lo hago más sencillo y me pillo un string
00:01:07
texto es igual y pongo unas palabras
00:01:11
Unas palabras para probar
00:01:16
Esto me debería dar 4 al final
00:01:21
¿Qué hago aquí?
00:01:26
Como siempre intento hacer que el problema sea más sencillo
00:01:28
Simplifico el problema, lo hago más sencillo
00:01:33
Cuando ya tengo una parte del problema solucionado, voy incrementando la dificultad
00:01:36
¿Cómo simplifico esto?
00:01:40
En vez de estar leyendo una línea que no sé cuantas palabras me han puesto
00:01:42
Doy un texto ya hecho, me simplifico el leer de teclado y voy a trabajar sobre este texto
00:01:47
Cuando esto funcionará, haré una prueba sobre otros textos
00:01:54
Cuando veo que mi programa siguiente ya funciona, me encargaré de leerlo desde teclado
00:01:58
a ver cómo se lee una línea, a ver cómo pongo el contenido dentro de esta cosa
00:02:04
También poner un texto así al principio me puede velocizar, me puede hacer más rápido todo
00:02:11
porque no tengo cada vez que arranco el programa y lo pruebo que escribir yo el texto
00:02:19
Como ya está hecho, las pruebas van a ser más rápidas
00:02:24
y si yo tengo poco tiempo con un examen, con esto ya me quito el problema
00:02:27
de tener que escribir cada vez que pruebo todo el texto
00:02:33
Después ya haré lo que haga falta
00:02:36
Entonces, ¿cómo hago para ver esta cosa aquí?
00:02:39
Hemos dicho que la idea es ir leyendo esto letra por letra
00:02:43
y si encuentro un espacio, asumo que hay una palabra
00:02:48
Lo que tengo que hacer es contar palabras
00:02:52
Por lo tanto, si quiero contar palabras, ¿qué necesitaré?
00:02:54
Un contador, ¿vale? Un contador que será un
00:03:03
¿Y cómo hago un contador int?
00:03:08
Al principio, cero palabras, ¿vale? Perfecto
00:03:16
Ahora, quiero ir contando todas las letras
00:03:20
y sé que va a contar todas, ¿vale?
00:03:24
Entonces, ¿esto me suena más a while o a for?
00:03:27
¿Why? ¿Por qué why?
00:03:36
¿Cuántos caracteres hay aquí?
00:03:46
El tamaño de la cadena, la cadena.length
00:03:49
Por lo tanto, sé que empezaré desde cero y acabaré al final
00:03:52
¿Se podría mejorar de alguna forma? Pues a lo mejor, ¿vale?
00:03:56
Pero mantenemoslo sencillo por ahora
00:03:59
Entonces, hago un for, for, mi índice
00:04:02
int i es igual desde cero, ¿vale?
00:04:07
Desde la posición cero hasta la posición ¿cuál?
00:04:10
texto.length, ¿así?
00:04:17
con paréntesis, ¿vale?
00:04:21
porque cuando lo uso en string son con paréntesis
00:04:24
es un método, es una llamada de una función
00:04:27
de algo que tiene que hacer él
00:04:29
mientras que cuando lo hago sobre arrays
00:04:31
os recuerdo que en vez es una variable
00:04:33
es un atributo del array, entonces es sin paréntesis
00:04:35
no llamo un método, accedo a una variable característica
00:04:38
del propio array
00:04:41
y cada vez sumo uno, ¿vale?
00:04:43
Entonces, ahora mismo lo que tengo que hacer es
00:04:47
¿Qué tengo que comprobar?
00:04:53
Lo que me hace esto es un puntador
00:04:56
que hace 1, 2, 3, 4, 5, 6, 7
00:04:59
¿Cómo pillo este carácter de aquí?
00:05:01
charAt, ¿vale? Entonces será
00:05:06
texto.charAt de i, me lo pone él, ¿vale?
00:05:08
Entonces, cada vez que yo hago este for
00:05:15
esto me pilla el char
00:05:18
de esta vuelta, digamos, dentro del for
00:05:25
¿Vale? En la primera vez me pillará esta u
00:05:29
la segunda vez me pillará esta n
00:05:31
la tercera vez me pillará esta a
00:05:33
¿Y qué tengo que hacer con este carácter aquí?
00:05:35
¿Y cómo compruebo si es un espacio?
00:05:40
Si, esta cosa de aquí, ¿vale?
00:05:46
¿Qué hago?
00:05:54
Me miro la tabla así, está por aquí
00:06:00
Me busco el espacio, 32
00:06:05
Vamos a ver si me lo pilla, ¿vale?
00:06:07
Entonces, si esto es igual a qué?
00:06:09
32, ¿qué hago?
00:06:14
Puntador
00:06:24
El concepto es, si mientras estoy leyendo
00:06:28
encuentro un espacio, quiere decir que
00:06:31
una palabra ha acabado, ¿vale?
00:06:33
Si la palabra ha acabado, pues sumo
00:06:35
que al contador sumo 1, ¿vale?
00:06:37
Si os fijáis aquí contaría 1, 2 y 3
00:06:40
¿Vale?
00:06:44
Porque esta de aquí, la última palabra
00:06:45
no acaba con un espacio
00:06:47
Entonces probablemente al final
00:06:49
cuando he contado todos los espacios
00:06:51
debería sumarle uno más
00:06:53
para saber que hay otro espacio, ¿vale?
00:06:55
Esto porque el propio texto
00:06:57
el propio enunciado me dice
00:07:02
que las palabras se separan por medio
00:07:04
de un espacio en blanco, ¿vale?
00:07:06
Entonces no conto los espacios, perdón
00:07:08
no conto los puntos, no conto las comas
00:07:10
no conto nada
00:07:12
Me han dicho que las palabras se separan
00:07:14
por espacio, por lo tanto yo considero eso
00:07:16
¿Vale?
00:07:18
Entonces cuando he acabado este for
00:07:20
y llego aquí
00:07:22
hago otro contador
00:07:24
más más
00:07:27
por esta razón que hemos dicho
00:07:29
que la última palabra no acaba con más
00:07:32
con espacio
00:07:34
y a este punto
00:07:36
escribo que
00:07:38
en el texto
00:07:40
más texto
00:07:44
Sí
00:07:48
Vale, por la razón de que
00:07:50
este de aquí conta cuántos espacios hay
00:07:52
¿Vale? Entonces ¿cuántos espacios hay aquí?
00:07:54
1, 2 y 3
00:07:56
Es que te quedas corto de una palabra
00:07:59
porque cada palabra
00:08:01
acaba con un espacio porque están separadas
00:08:03
excepto la última que no acabará
00:08:05
con un espacio al final
00:08:07
Por lo tanto cuando yo doy una palabra así
00:08:09
que son palabras separadas por espacios
00:08:11
me contará uno menos
00:08:13
o sea que cuando saldrá de este for
00:08:15
contador tiene
00:08:17
le faltaría contar la última palabra
00:08:19
por eso yo le pongo esto
00:08:21
Esto cuenta la última palabra
00:08:25
Sí
00:08:29
Vale, sí, fenomenal
00:08:37
esto porque el contador
00:08:39
y asumo que al principio está vacío
00:08:41
cuidado, si yo te doy una cadena vacía
00:08:43
tú me contas una
00:08:45
hay una palabra
00:08:47
pues probablemente yo también
00:08:49
habría que hacer un if
00:08:51
o sea que asumamos que no sean nunca
00:08:53
vacías las cadenas
00:08:55
por ahora
00:08:57
y sí, se podría decir que en automático
00:08:59
cuento aquí la última palabra
00:09:01
y luego hago este de aquí
00:09:03
y con todos los espacios
00:09:05
Perfecto
00:09:07
Lo dejo así
00:09:09
porque hemos razonado así
00:09:11
hasta ahora
00:09:13
pero tiene su sentido
00:09:15
podría eliminar esto poniendo aquí
00:09:17
directamente un 1
00:09:19
En el texto-texto
00:09:23
hay
00:09:25
más contador
00:09:27
más
00:09:31
palabras
00:09:33
Veamos si esto funciona
00:09:39
Esto me debería dar 4
00:09:41
Entonces lo guardo
00:09:43
lo lanzo
00:09:45
4 palabras
00:09:47
Correcto
00:09:49
Si cambio
00:09:51
la frase
00:09:53
Cambio la frase
00:09:55
para ver
00:09:57
si funciona
00:09:59
7 palabras
00:10:03
Parece funcionar
00:10:05
Ahora lo que puede hacer aquí
00:10:07
es cambiar esta parte para que
00:10:09
se le ha detectado directamente
00:10:11
Hacemos como
00:10:13
scanner
00:10:15
scan
00:10:17
es igual a
00:10:19
newScannerVSystem.in
00:10:21
Scanner no existe
00:10:31
por lo tanto le digo que
00:10:33
no importa
00:10:35
y digo que
00:10:37
la string
00:10:39
texto
00:10:41
es igual a
00:10:43
scan.nextLine
00:10:45
uso nextLine
00:10:47
y no next
00:10:49
porque quiero leer
00:10:51
toda una frase con separado espacio
00:10:53
si uso solo next me pillaría solo la primera palabra
00:10:55
y antes
00:10:57
le digo algo al usuario
00:10:59
al user
00:11:01
y le digo
00:11:03
escribe
00:11:05
una frase
00:11:07
Entonces ahora
00:11:11
tengo esto que me dice
00:11:13
Hola, ¿qué tal estás?
00:11:15
me dice que no, la que tal estás
00:11:21
hay 4 palabras
00:11:23
pero va en contra
00:11:29
de lo que dice
00:11:31
el enunciado, el enunciado dice
00:11:33
las palabras están separadas por un espacio
00:11:35
no por espacios
00:11:37
entonces si luego tú me cambias el enunciado
00:11:39
entonces claro que no funciona
00:11:41
lo que deberías hacer en ese caso
00:11:43
que podría ser un ejercicio
00:11:45
decir que lo puedes separar con cuanto espacio
00:11:47
te da la gana
00:11:49
entonces
00:11:51
chequear que cuando encuentras un espacio
00:11:53
no suma mientras que
00:11:55
encuentres espacios consecutivos
00:11:57
entonces ahí habría
00:11:59
un bodeano que dice he encontrado un espacio
00:12:01
que se mantiene en true
00:12:03
y no suma hasta que tú encuentres
00:12:05
un carácter que no sea un espacio
00:12:07
a este punto lo puedes poner en false
00:12:09
y el próximo espacio que encuentras lo suma
00:12:11
pero no es este ejercicio
00:12:13
¿se podría hacer esto de otra forma?
00:12:15
esto estoy utilizando
00:12:21
el concepto que este char
00:12:23
un char es al fin y al cabo
00:12:25
un entero por dentro
00:12:27
y por lo tanto lo estoy utilizando así
00:12:29
vamos a ver si funciona
00:12:31
podría utilizar char
00:12:33
vale
00:12:35
con esto no estoy utilizando
00:12:37
el
00:12:39
el numero
00:12:41
el correspondiente helacis
00:12:43
si no se lo estoy diciendo
00:12:45
mira este es el carácter que estoy buscando
00:12:47
el carácter espacio
00:12:49
fijaos que es una comilla sola
00:12:51
una apostrofe
00:12:53
si pongo comillas estaría
00:12:55
haciendo un igual entre un char
00:12:57
y una string
00:12:59
entonces no me funcionaría
00:13:01
esto funciona
00:13:03
parece funcionar
00:13:07
y si quisiera utilizar
00:13:11
string, que sería feo
00:13:13
pues pongo aquí un string
00:13:15
¿cómo lo podría hacer?
00:13:17
fijaos que os da
00:13:21
un error, dice estoy haciendo
00:13:23
un char con un string
00:13:25
no lo puedo controlar
00:13:27
¿qué pondría?
00:13:29
no
00:13:33
¿feo?
00:13:41
pero
00:13:43
si estoy en un examen
00:13:45
y no me sale otra opción
00:13:47
si utilizar el charat
00:13:49
quiero pillar un carácter
00:13:51
aquí y no me acuerdo que el carácter
00:13:53
se pone con una apostrofe
00:13:55
y merecería suspender porque no me acuerdo
00:13:57
eso, pero
00:13:59
esta cosa hace lo mismo
00:14:01
te pilla un string, pero te pilla el carácter
00:14:03
en posición cero, que es el único carácter que hay
00:14:05
por lo tanto es el espacio
00:14:07
y fijaos que
00:14:11
este igual
00:14:13
es entre
00:14:15
¿qué tipos tienen estas dos expresiones?
00:14:17
char
00:14:19
por eso uso igual igual
00:14:21
os recuerdo que no se puede utilizar
00:14:23
igual igual entre string
00:14:25
porque tiene otro tipo
00:14:27
de significado
00:14:29
cuando comparo dos string
00:14:31
debería utilizar el equal
00:14:33
no el igual igual
00:14:37
veremos cuando veremos los objetos
00:14:39
que hace el igual igual
00:14:41
intentaremos entenderlo mejor
00:14:45
¿hay preguntas sobre este ejercicio?
00:14:47
¿no?
00:14:51
- Valoración:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- Autor/es:
- Stefano Chiesa
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 17
- Fecha:
- 8 de noviembre de 2022 - 12:57
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 14′ 55″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 66.09 MBytes