Saltar navegación

Prog2223-String Ejercicio 5 - 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 8 de noviembre de 2022 por Stefano C.

17 visualizaciones

Ejercicio 5 del bloque de String

Descargar la transcripción

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
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
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 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
¿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:
  • 1
  • 2
  • 3
  • 4
  • 5
Eres el primero. Inicia sesión para valorar el vídeo.
Idioma/s:
es
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid