Saltar navegación

20241025 ProgrEstruct-Bucles-ejercicios_12 - 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 27 de octubre de 2024 por Raquel G.

8 visualizaciones

Descargar la transcripción

A mí me ha salido, pero no sé... 00:00:00
¿Pero de casualidad? 00:00:02
No, o sea... 00:00:03
Ah, pues estupendo. 00:00:04
Pero no comenté en el código que... 00:00:06
Uy, pues entonces de casualidad. 00:00:08
Venga, a ver, vamos. 00:00:10
Juanjo, luego lo comentáis o lo que sea. 00:00:12
Vale, pues entonces, una vez primero, lo de siempre. 00:00:15
Hay que entender qué es lo que nos piden. 00:00:18
Nos piden decir si un... 00:00:21
No, perdón. 00:00:23
El ejercicio es más complicado que ese. 00:00:24
No es decir si un número es primo o no. 00:00:27
Lo que dice es, pide un número. 00:00:30
Y ahora, recorre todos los inferiores. 00:00:33
Hasta ahí está claro. 00:00:35
Pedimos un número y un bucle que va pasando por una variable 00:00:36
que inicialmente es n, pero luego se decrementa para ser n-1, 00:00:40
pero luego se decrementa para ser n-2. 00:00:43
Hasta ahí está claro, ¿no? 00:00:45
Este es 23. 00:00:47
Este. 00:00:51
Vale. 00:00:52
Entonces, pedimos un número. 00:00:53
Y ahora 00:00:59
El primer bucle está claro 00:01:02
Tenemos que comprobar algo 00:01:04
Con ese número y todos los inferiores a él 00:01:06
¿Verdad? 00:01:08
Pues entonces esto está claro 00:01:10
Que tendremos un bucle 00:01:12
En el que iremos haciendo cosas 00:01:14
Ya sé que me sobrarían variables 00:01:16
Y todo eso, pero bueno 00:01:19
Que iremos haciendo cosas 00:01:20
Con todos los X 00:01:22
¿Qué pasa? 00:01:23
vale, entonces 00:01:29
esta es la primera idea 00:01:36
la primera estructura del ejercicio es 00:01:38
a mi me dan un número n 00:01:40
pues tengo que comprobar cosas 00:01:42
con ese n, pero también con n-1 00:01:44
y también con n-2 00:01:47
y también con n-3 00:01:48
luego es un primer bucle 00:01:49
en el cual voy viendo que pasa 00:01:51
con cada x 00:01:54
siendo x 00:01:55
inicialmente n y luego ya 00:01:57
decrementándolo de 1 en 1 00:02:00
Entonces, ¿este bucle cuándo se va a dejar de ejecutar? 00:02:01
Pues cuando ya he comprobado todos. 00:02:05
Es decir, mientras x sea mayor o igual que 1. 00:02:07
¿Vale? 00:02:12
Entonces, la primera estructura del programa es ese. 00:02:14
Yo tengo que mirar algo con la n. 00:02:17
Y luego también tengo que mirarlo con la n-1. 00:02:19
Y luego con la n-2. 00:02:21
Y luego con la n-3. 00:02:22
Así hasta 1. 00:02:24
Vale. 00:02:25
Ahora ya tenemos la estructura. 00:02:26
Nos queda este agujero negro ahí. 00:02:28
vale, pues con cada uno de esos x 00:02:30
con cada uno de esos x que van siendo 00:02:32
desde n hasta 1 00:02:34
con cada uno de esos, ¿qué tengo que hacer? 00:02:36
pues con cada uno de esos 00:02:39
tengo que mostrarlo 00:02:40
si es primo, y si no es primo, nada 00:02:42
entonces lo que tengo que hacer 00:02:44
con eso es 00:02:46
si x es primo, mostrarlo 00:02:48
y si no, nada 00:02:50
¿vale? es decir 00:02:51
podría algo así 00:02:54
si x es primo 00:02:55
lo muestro 00:02:57
entonces seguimos 00:03:01
pues perfilando nuestro 00:03:03
programa, ¿verdad? 00:03:05
vale, mi programa es este, si x es primo 00:03:10
lo muestro, bueno, pero claro 00:03:13
me falta esto, ¿cuál es la condición 00:03:14
para esos números primo o no? 00:03:16
pues ya me puedo yo empezar ahí a quebrar la cabeza 00:03:18
buscando con and, con or, a ver si 00:03:21
encuentro una condición que exprese que el número es primo 00:03:22
no la voy a encontrar 00:03:24
bueno, una 00:03:26
función, sí, una función 00:03:29
para ver si es primo o no, no creo que exista esa función 00:03:30
Porque no te funcionaría para todos 00:03:33
A partir de un número de 41 millones de dígitos 00:03:35
No te funcionaría 00:03:37
Pero vamos, que igual existe 00:03:38
No lo sé 00:03:41
Vale, entonces 00:03:42
Si nos dijeran mostrar los pares 00:03:45
Uy, ya el programa habría acabado 00:03:47
Porque esta condición facilísima 00:03:48
X por 102 igual a 0 00:03:50
Que nos dicen mostrar los múltiplos de 5 00:03:51
Estupendo 00:03:54
Porque esta condición sería 00:03:56
X por 105 igual a 0 00:03:57
Pero es que la condición que nos han dado 00:03:59
Es más complicada que esa 00:04:01
es x es primo 00:04:02
pues no lo sé 00:04:04
entonces voy a tener que hacer aquí cosas 00:04:05
para averiguar 00:04:08
qué expresión puedo poner aquí 00:04:10
qué expresión puedo poner aquí 00:04:12
para ver si es primo o no 00:04:14
bueno pues aquí es donde se pueden haber ocurrido 00:04:15
varias cosas 00:04:18
por ejemplo, pues que le pasa a un número primo 00:04:18
a un número primo le pasa 00:04:22
que solo es divisible 00:04:24
entre uno y sí mismo 00:04:26
entonces la primera cosa que uno se le puede ocurrir es 00:04:27
ah pues voy a contar 00:04:30
sus divisores 00:04:32
Porque ya sabemos contar, pues vamos a contar los divisores de ese número. 00:04:32
Y ahora ya, si la cuenta de divisores es exactamente 2, pues es primo. 00:04:38
Porque tendrá dos divisores, uno y sí mismo. 00:04:44
Pues entonces, si consiguiéramos contar divisores, 00:04:48
si consiguiéramos contar divisores, pues ya lo tendríamos. 00:04:52
Y esa cuenta se guardará en cont. 00:04:57
si consiguiéramos contar divisores 00:05:01
ya tendríamos esta condición 00:05:03
que tanto nos agobiaba 00:05:05
hecha 00:05:07
si el número de divisores es 2 00:05:08
lo muestro porque es primo 00:05:11
y paso al siguiente 00:05:13
vale 00:05:15
entonces ya hemos traducido esto 00:05:17
a un 00:05:19
ya lo único que nos falta es algo 00:05:20
que ya sabemos hacer 00:05:23
que es una cuenta de algo 00:05:24
ahora ya solo nos falta 00:05:26
meter aquí, insertar aquí 00:05:28
esta parte, solo nos falta eso 00:05:30
¿vale? estamos haciendo lo demás 00:05:32
entonces siempre es buena idea 00:05:34
irlo haciendo 00:05:37
como yo os digo, de forma estructurada 00:05:38
o jerárquica o modular, como lo queráis 00:05:41
llamar, cuando una cosa es fácil 00:05:43
pues uno a lo mejor le sale de corrido 00:05:45
ah ya está, me sale de corrido, pero si no 00:05:46
tenéis que pensar siempre así 00:05:48
¿no? lo primero que tengo que hacer es 00:05:50
mirar algo con un 00:05:53
numerito que empieza siendo n y se va 00:05:55
decrementando? Pues ya está, tengo un primer bucle 00:05:56
con un numerito 00:05:58
x que empieza siendo n, 00:06:00
lo voy decrementando y este bucle 00:06:02
se va ejecutando mientras no le llego a la 1. 00:06:04
Ahora, ¿qué tengo que hacer con ese numerito? 00:06:06
Si cumple la condición, 00:06:09
mostrar esto. Pues esto tendré que hacer. 00:06:11
Vale, ahora vamos siguiendo. ¿Y esta condición cuál es? 00:06:12
¿La tengo directamente? 00:06:15
Estupendo, la pongo. ¿Que no la 00:06:17
tengo directamente? ¿Tendré que hacer 00:06:18
algo antes para conseguir aquí 00:06:20
ya una expresión que me permita 00:06:22
tenerla? Bueno, pues en este caso 00:06:24
hemos dicho, ah, pues mira, ya analizando 00:06:27
el problema, ya analizando en qué consiste, 00:06:29
decimos, el problema consiste en ver si un número 00:06:31
es primo. ¿Cómo traduzco 00:06:33
yo esto a cosas que 00:06:35
conozco? Pues que tenga 00:06:37
dos divisores. Vale, pues entonces 00:06:39
voy a contar los divisores. 00:06:41
Ahora ya nos falta hacer eso. 00:06:43
Pues entonces, para contar los divisores 00:06:45
de un numerito. Ahora ya esto lo planteamos 00:06:47
como un programa independiente, 00:06:49
como un trozo de código independiente de lo 00:06:51
De lo de ahí 00:06:52
Pues una cuenta 00:06:54
Porque estamos contando 00:06:56
Pues una cuenta 00:06:57
Una cuenta siempre empieza con un contador a cero 00:06:58
Así empieza una cuenta 00:07:02
Y luego siempre hay un bucle 00:07:03
Siempre hay un bucle en el que yo voy iterando por valores 00:07:05
Y si esos valores 00:07:08
Cumplen una condición, los cuento 00:07:10
¿Verdad? 00:07:12
Una cuenta siempre viene a ser algo así 00:07:13
Siempre viene a ser algo así 00:07:15
Un contador que empieza valiendo cero 00:07:18
En un bucle 00:07:20
voy recorriendo 00:07:21
los valores, los elementos 00:07:23
voy recorriendo los elementos que quiero contar 00:07:26
y por cada elemento 00:07:28
miro a ver si cumple la condición para que lo cuente 00:07:29
eso es una cuenta en última instancia 00:07:32
¿no? esto de aquí 00:07:34
bueno, pues ahora ya seguimos pensando 00:07:35
a ver, ¿qué valores tenemos que recorrer? 00:07:37
tenemos que recorrer 00:07:41
todos los números 00:07:42
inferiores a x 00:07:43
¿vale? estamos mirando, lo que vamos a mirar aquí 00:07:45
es ver si x es primo 00:07:47
Es decir, vamos a contar los divisores de X 00:07:49
Esto es lo que estamos haciendo 00:07:54
Vamos a contar los divisores de X 00:07:56
¿Por qué elementos tenemos que pasar? 00:07:58
Tenemos que pasar por todos los números entre 1 y X 00:08:02
Y por cada uno de ellos 00:08:06
Mirar a ver si divide de forma exacta a X 00:08:09
Si lo divide, lo sumo 00:08:12
¿Vale? Pues entonces los elementos por los que tenemos que pasar 00:08:14
llamémosle por ejemplo n 00:08:17
lo podemos inicializar a 1 00:08:19
y aquí 00:08:22
este elemento 00:08:24
se va incrementando 00:08:26
vale, ¿qué hago con cada n? 00:08:27
empieza siendo 1 y lo voy incrementando 00:08:33
con cada n miro a ver si divide de forma exacta 00:08:34
a x 00:08:37
entonces, si ocurre esto 00:08:38
n es divisor 00:08:43
pues lo cuento 00:08:45
¿eh? 00:08:47
¿cómo que pongo 1? bueno, es que 00:08:56
Tengo que pasar por todos los n entre 1 y x, ¿vale? 00:08:58
Entonces, yo aquí tengo que pasar por todos los n. 00:09:02
n empieza valiendo 1. 00:09:04
Es divisor de x, lo cuento. 00:09:07
Y me voy al siguiente. 00:09:10
Es divisor de x y lo cuento. 00:09:12
Entonces, la cuenta siempre es esto. 00:09:14
La cuenta empieza a 0. 00:09:15
La cuenta empieza a 0. 00:09:17
Un bucle que me va a servir para recorrer los elementos. 00:09:18
Y luego dentro de ese bucle yo contaré de esos elementos lo que me interesan. 00:09:22
Entonces, los elementos son este n. 00:09:26
Empieza siendo 1 y se va incrementando 00:09:28
Para cada n miro a ver si cumple 00:09:30
Ser divisor, si lo cumple lo cuento 00:09:32
Y ya solo me falta 00:09:35
Este bucle cuando va a parar 00:09:37
Este bucle va a parar 00:09:38
Cuando este numerito n 00:09:44
Ya haya llegado 00:09:46
A ser x 00:09:48
Mientras este numerito n 00:09:49
Sea menor o igual que x 00:09:51
Entras 00:09:54
para que entre para 1 y entre para 2 00:09:58
y entre para 3 y entre para x 00:10:01
para el x más 1 ya no va a entrar 00:10:03
entonces este bucle 00:10:05
para todos los valores 00:10:07
entre el 1 inicial y el x 00:10:09
que es el último para el cual ya no entraría 00:10:11
para el cual ya no entraría 00:10:14
para todos ellos 00:10:15
pues entra, mira a ver si es divisor 00:10:16
y lo cuenta 00:10:19
y nos vamos al siguiente 00:10:20
¿sigue siendo menor o igual que x? 00:10:22
sí, entro, miro a ver si es divisor y lo cuento 00:10:24
Y lo incremento 00:10:27
¿Sigue siendo menor o igual que x? 00:10:28
Sí, entro, miro a ver si es divisor y lo cuento 00:10:29
Luego hemos hecho un bucle 00:10:32
Nos hemos hecho aquí una estructura de cuenta 00:10:33
Que en realidad es una cosa atómica 00:10:35
Es independiente del resto del programa 00:10:39
Yo la he tenido que meter ahí 00:10:40
Porque en ese momento me interesaba contar divisores de x 00:10:41
Pues contar divisores de x es esto 00:10:44
Y ya está 00:10:47
Pues ahí es donde me encaja meterlo 00:10:48
Pues ahí 00:10:51
Vale, pues ya está 00:10:52
Ahora ya, cuando este bucle haya acabado, ya sabemos que cont va a tener el número de divisores de x. 00:10:54
Porque para eso hemos hecho esto, para contarlo. 00:11:03
Pues ya está. 00:11:06
Si el número de divisores es 2, es primo. 00:11:07
Lo muestro. 00:11:11
Y se acabó. 00:11:12
Y no tengo más que hacer. 00:11:13
Y me voy al siguiente. 00:11:14
Y ya está. 00:11:19
Entonces lo he hecho 00:11:19
Muy masticado 00:11:23
Con lo cual aquí en realidad me podrían sobrar 00:11:25
Estas variables, esta n me sobra 00:11:27
Porque podría usar el propio x 00:11:29
Ah bueno no podría pero luego te voy a mostrar aquí 00:11:31
Vale pero lo podría más compacto 00:11:33
Otro enfoque, vamos a probarlo primero 00:11:35
Otro enfoque 00:11:37
Pues 00:11:38
El que has hecho tú 00:11:39
A ver porque estamos comprobando 00:11:42
Todos los números 00:11:46
desde 1 hasta el x incluido 00:11:47
entonces tú entras en este bucle 00:11:50
mientras n sea menor o igual 00:11:52
para el x entras 00:11:53
a ver, podríais cambiar este código 00:11:55
con n partiendo 2 00:11:57
y que no entre para el x 00:11:59
entonces esto sería 0 00:12:01
porque si yo cambio el bucle 00:12:04
poniendo aquí 2 y aquí menor que x 00:12:06
me va a entrar solo 00:12:08
para todos los números comprendidos 00:12:09
entre 2 y x menos 1 00:12:11
y entre 2 y x menos 1 00:12:12
yo debería contar cero divisores 00:12:15
para que fuera primo, ¿no? 00:12:17
Si me dan el 7, 00:12:19
con el bucle tal y como lo he planteado, 00:12:22
tal y como lo he planteado, 00:12:24
me va a entrar en este bucle 00:12:25
para desde el 2 hasta el 6. 00:12:26
Entonces, desde el 2 hasta el 6, 00:12:31
la cuenta me tiene que haber salido 00:12:33
cero divisores, ¿vale? 00:12:34
Pero si entramos desde el 1 hasta el x, 00:12:37
la cuenta me tiene que haber salido 2, 00:12:40
porque el 1 y el x 00:12:41
siempre van a ser divisores. 00:12:43
entonces pues 00:12:45
me da igual 00:12:47
o pongo aquí 2 y menor que x 00:12:48
y así me ahorro 00:12:51
dos iteraciones 00:12:53
con lo cual esto lo cambio a 0 00:12:54
o lo dejamos como lo teníamos antes 00:12:56
da lo mismo, la única diferencia es que 00:12:59
de esta manera 00:13:01
hago dos iteraciones menos 00:13:02
la del 1 y la del x 00:13:04
¿si o no? 00:13:06
que no hombre, que no 00:13:09
da para esto y más 00:13:12
A ver, te da igual 00:13:14
Vamos a contar divisores 00:13:20
Imagínate que tienes el número 7 00:13:23
X es 7 00:13:24
Vale, pues entonces 00:13:25
Si tú cuentas los divisores 00:13:28
Entre 1 y 7 00:13:30
Y el número es primo, te van a dar 2 00:13:32
1 y 7 00:13:34
Porque 2 siempre tiene 00:13:35
Entonces, ¿para qué contar el 1 y el 7? 00:13:37
Ni los incluyamos en la cuenta 00:13:40
Si esos dos ya sabemos que son divisores 00:13:41
ya lo sabemos, pues vamos a hacer la cuenta 00:13:43
entre el 2 y el 6 00:13:46
por eso n empieza 00:13:47
siendo 2 00:13:49
y salgo del bucle 00:13:50
una vez antes de haber llegado al x 00:13:52
entonces mi bucle 00:13:56
solo se ejecuta 00:13:58
entre 2 y un valor 00:13:59
anterior al x 00:14:02
y ahí si exprimo 00:14:04
la cuenta me tiene que salir 0 00:14:06
¿vale? 00:14:07
entonces 00:14:11
si ejecutamos esto 00:14:12
todos los números primos 00:14:16
por debajo del 8 00:14:19
pues por debajo del 8 son el 00:14:20
7, 5, 3, 2 00:14:23
tal y como he hecho el programa, el 1 siempre me lo va 00:14:24
a mostrar como 00:14:27
como primo, aunque 00:14:28
es un poco tonto porque el 1 00:14:31
matemáticamente se define como no primo 00:14:32
pero bueno, da igual 00:14:35
que no te funciona, a ver Miguel 00:14:36
que ha escrito mal, míraselo 00:14:39
yo esto no me acuerdo 00:14:40
Pablo, míraselo 00:14:42
no, pero que será 00:14:45
algo habrá copiado mal 00:14:47
es porque n 00:14:48
es divisor de x 00:14:55
con lo cual toca contarle, porque es un divisor 00:14:56
no, a ver 00:14:59
tú no sabes si es primo, no 00:15:02
hasta que no has mirado todos 00:15:04
los números inferiores a él, y has comprobado 00:15:07
con todos y cada uno de ellos que ninguno le divide 00:15:09
solo por uno de estos if sueltos 00:15:11
no puedes sacar ninguna conclusión 00:15:13
la conclusión la vas a sacar cuando el well ya ha terminado 00:15:15
y ya tienes la cuenta de todo 00:15:17
¿vale? 00:15:19
si esto es 0, significa que ese es divisor 00:15:21
vale 00:15:24
a ver, no uses la palabra 00:15:29
fórmula, esto es un código 00:15:37
esto es un código 00:15:39
que te permite 00:15:40
esto es un código 00:15:42
y este código es el código que te permite 00:15:44
contar los divisores de X 00:15:46
y si tú tienes los divisores 00:15:48
pues ya sabes si es primo, ¿no? 00:15:50
comparándolo con 0 00:15:52
si tiene 0 divisores 00:15:54
es primo 00:15:56
la pregunta es 00:15:57
que tenga 0 divisores 00:16:00
0 divisores 00:16:02
entre 2 y 1 inferior a él 00:16:04
si es entre 1 y el mismo, 2 00:16:06
¿Vale? Esa es la definición de primo 00:16:08
Que te dividan solamente 00:16:13
Tú y la unidad 00:16:15
Entonces si cuentas los divisores 00:16:16
Entre tú y la unidad, te tienen que salir exactamente 2 00:16:19
Si cuentas los divisores 00:16:21
Entre 2 y x menos 2 00:16:23
Tienen que salir 0 00:16:25
Claro 00:16:25
A ver, otra forma de hacer esto mismo 00:16:30
Otra manera que a lo mejor es más 00:16:33
Cómoda 00:16:35
Otra forma que se os puede haber ocurrido 00:16:36
Se os puede haber ocurrido 00:16:39
A ver, vamos a hacer ejercicio 23B, versión 2. 00:16:41
Vamos a ver. 00:16:51
Venga, vamos a hacer ejercicio 23, versión 2. 00:16:55
Este de aquí. 00:17:06
A ver, reutilizo del código. 00:17:07
Vuelvo a esta parte que estaba. 00:17:12
vuelvo a esta parte que estaba 00:17:13
aquí, vuelvo casi al principio 00:17:16
¿no? 00:17:20
esta es la primera parte que teníamos 00:17:22
leemos el numerito 00:17:24
para todos los números 00:17:26
desde n hasta 1 00:17:28
decrementándose 00:17:31
tenemos que ver si es primo o no 00:17:32
esta es la condición que desconocemos 00:17:33
¿vale? o sea, hacemos reset 00:17:36
a esta situación para ver 00:17:38
otra forma de hacerlo que se nos podría haber ocurrido 00:17:40
Sí, ¿vale? 00:17:42
Estamos haciendo 23 versión 2 00:17:46
Porque la 23 anterior ya funciona 00:17:48
Y está estupenda y os ha convencido y está bien 00:17:51
Vale 00:17:53
23 versión 2 00:17:54
Volvemos a este punto 00:17:56
Vamos a ver, aquí de nuevo tengo que ver yo 00:17:58
La condición de x es 00:18:01
Primo 00:18:03
Estábamos aquí 00:18:04
Ni idea, ni idea de esta condición 00:18:06
¿Cuál será? Es que no soy capaz 00:18:09
de expresarla con and, con or 00:18:11
no soy capaz porque no existe 00:18:13
si fuera capaz estaría estupendo 00:18:15
porque yo la metería en un boolean 00:18:17
es primo, ¿verdad? 00:18:19
y aquí pondría esto 00:18:21
vale, pues vamos a intentar construirlo 00:18:22
construir este boolean 00:18:28
vamos a hacerlo de otra manera 00:18:29
al ejercicio anterior, el ejercicio anterior 00:18:31
la filosofía era, cuento divisores 00:18:34
y luego miro si esa cuenta 00:18:36
me ha dado 2 o 0, depende 00:18:38
esa es otra manera 00:18:40
hemos tenido una baja de Andrea 00:18:41
pero me habías dicho que no se podía hacer 00:18:44
realmente un boolean para sacar los primos 00:18:47
y una expresión con operadores 00:18:50
con andior no se puede 00:18:53
lo que yo he dicho es, vamos a ver si podemos construir aquí algo 00:18:55
por programa que me lleve este boolean a true o false 00:18:58
pero no una expresión con andior, esa no existe 00:19:02
porque si tuviéramos una forma 00:19:04
de darle valor a este boolean que fuera true cuando es primo 00:19:07
me false cuando no, 00:19:11
magnífico, la meto aquí. 00:19:12
¿Existe esa manera? 00:19:16
Pues vamos a pensarlo, 00:19:18
vamos a ver. 00:19:19
¿Os acordáis ayer cuando decíamos? 00:19:20
¿Os reís porque no os acordáis? 00:19:24
No, pues sí. 00:19:26
Muchos reímos por no llorar. 00:19:28
No, que no, que no. 00:19:31
A ver, no subestiméis 00:19:33
vuestros cerebros. 00:19:35
Yo ahora mismo estoy un poquito... 00:19:36
O sea, hasta el que más sabe de la clase 00:19:37
O sea, que no, que sois una clase lista, hombre, que no. 00:19:41
A ver, si no confiáis en vosotros mismos, pues a ver, ¿os acordáis de ayer cuando dijimos 00:19:46
tenemos como varios patrones de algoritmo aquí en la cabeza que aunque parezca que no ya los vais interiorizando? 00:19:55
Y uno es, yo tengo que resolver un problema en el cual mi resultado final es saber si algo pasa o no pasa. 00:20:02
¿No os acordáis ayer? 00:20:09
Acabamos con un ejercicio que era 00:20:11
Dado no sé qué 00:20:13
Dado un montón de notas 00:20:14
Ver si hay algún suspenso 00:20:17
Hicimos ese ejercicio, ¿verdad? 00:20:19
Ese ejercicio es para saber si algo pasa o no pasa 00:20:22
Anda, pues ver si algo pasa o no pasa 00:20:24
Es mi problema de aquí 00:20:26
Es ver si dado un X 00:20:28
Ver si X es primo o no 00:20:30
Es la misma idea 00:20:33
Dado un X tengo que ver si es primo o no 00:20:34
para meterlo en este boolean 00:20:37
porque si consigo ver si es primo o no 00:20:39
y meterlo en este boolean 00:20:41
magnífico, ya tengo mi 00:20:42
pero claro, pues de nuevo tengo aquí un problema a resolver 00:20:44
que es saber si algo pasa o no pasa 00:20:47
vale 00:20:49
cuando planteamos esto ayer dijimos 00:20:50
vale, para ver si algo pasa o no pasa 00:20:53
siempre lo planteamos 00:20:56
de una manera 00:20:57
asumimos que por defecto no pasa 00:20:58
por ejemplo, que por defecto esto es falso 00:21:01
vale, o por defecto 00:21:03
estrue. Luego depende del 00:21:05
problema. Y ahora, nos ponemos a 00:21:07
evaluar un montón 00:21:09
de elementos para ver si 00:21:11
alguno me hace cambiar de opinión. 00:21:13
¿Vale? El ejercicio de ayer era 00:21:16
ver si hay algún suspenso. 00:21:17
Nosotros de partida asumíamos 00:21:19
que no había ninguno. Luego, ¿algún 00:21:21
suspenso o falso? De partida no había 00:21:23
ninguno. Falso. Y ahora 00:21:25
ya nos poníamos a mirar las notas 00:21:27
una por una. Con que alguna 00:21:29
fuera suspensa, ya cambiamos de idea. 00:21:31
Y poníamos 00:21:34
algún suspenso a true 00:21:34
pues esto es lo mismo, pero ha traducido 00:21:36
nuestro problema, tenemos un numerito con un montón 00:21:38
de divisores 00:21:40
perdón, con un montón de divisores 00:21:41
no, tenemos un numerito 00:21:44
bueno, pues solo con que alguno de los 00:21:45
inferiores a él, excluyendo 00:21:48
el 1 y sí mismo, solo con que 00:21:51
alguno de los comprendidos entre 2 y 00:21:53
x menos 1, solo con que 00:21:54
uno de ellos divida 00:21:56
ya puedo concluir que es 00:21:59
primo, es falso 00:22:00
con lo cual vamos a asumir de partida 00:22:02
que es primo, que es true 00:22:05
y ahora voy a mirar todos y que ahora 00:22:06
los inferiores, en cuanto alguno 00:22:09
divida, cambio de idea 00:22:11
es la misma idea de los suspensos de ayer 00:22:12
pues venga, vamos a asumir 00:22:15
que es primo, es true 00:22:17
y ahora voy a buscar 00:22:18
a ver si hay alguno que me haga cambiar 00:22:23
de opinión, dentro de todos los inferiores a él 00:22:25
¿entre qué números tengo que mirar? 00:22:27
entre 2 y x-1 00:22:30
Porque 1 y x ya sé que lo van a dividir. 00:22:32
Entonces, ahora tengo que recorrer todos los números entre 2 y x menos 1. 00:22:34
Si alguno divide a x, ya está. 00:22:39
Cambio de idea. 00:22:42
He encontrado un divisor. 00:22:43
Es primo falso. 00:22:45
Igual que ayer cuando encontrábamos una nota suspensa, ya está. 00:22:46
Cambiábamos de opinión. 00:22:49
Algún suspenso, true. 00:22:50
Cambiábamos. 00:22:52
Pues aquí lo mismo. 00:22:53
¿Vale? 00:22:54
Pues vamos a recorrer todos los números entre 2 y x menos 1 para ver si alguno divide a x, ¿verdad? 00:22:55
Porque en cuanto encontremos 1 que divida a x es primo falso, ya no puede ser primo, ¿vale? 00:23:20
Pues ahora ya esto es un bucle, esto ya sí que lo tenemos que saber hacer. 00:23:28
Entonces esto nos lo podemos hacer más cómodo 00:23:32
Con un for directamente 00:23:35
Porque un for me da una variable 00:23:37
Para trabajar 00:23:38
Esta variable que empiece valiendo 2 00:23:40
¿Vale? 00:23:43
Mientras sea menor o igual 00:23:45
Que x menos 1 00:23:47
Y la voy incrementando de 1 en 1 00:23:49
¿Vale? 00:23:53
Pues 00:23:56
Este for es un for 00:23:56
donde la variable y va valiendo 00:24:02
desde 2 a x menos 1 00:24:04
justo lo que quería 00:24:06
recorrer todos los números entre 2 y x menos 1 00:24:07
justo lo que quería 00:24:10
vale, pues que tengo que hacer con cada uno de estos y 00:24:11
que van desde 2 hasta x menos 1 00:24:14
que tengo que hacer 00:24:17
ver si dividen a x 00:24:17
porque si lo dividen ya está, cambio de idea 00:24:19
es primo o falso 00:24:22
pues entonces si el resto de dividir 00:24:23
x entre y 00:24:26
resulta que es 0 00:24:28
Es decir, si y es divisor de x 00:24:30
Cambie de opinión 00:24:32
Es primo igual a 00:24:34
Falso 00:24:36
Porque encontré un divisor 00:24:36
Y ya está, ya se ha acabado 00:24:39
Ya he construido este boolean 00:24:41
Pero lo he construido por programa 00:24:43
No lo he construido con an y con or 00:24:44
Porque no se puede 00:24:46
¿Vale? 00:24:46
De partida asumo que no tiene divisores 00:24:49
Empiezo a recorrer todos entre 2 00:24:51
Y x menos 1 00:24:54
Con que 1 sea divisor 00:24:56
me basta eso ya para cambiar de idea. 00:24:59
Me basta para cambiar de idea. 00:25:02
Y se acabó. 00:25:04
¿Vale? 00:25:05
Bueno, pues otra forma de plantearlo. 00:25:09
En lugar de hacer una cuenta de divisores 00:25:11
y luego ver si esa cuenta es igual a 2, 00:25:14
pues lo planteo de otra manera. 00:25:17
Con este algoritmo. 00:25:19
Es decir, a ver, yo quiero ver si algo pasa o no pasa. 00:25:22
Asumo que de partida ocurre. 00:25:25
Y ahora voy a recorrer en un bucle elementos 00:25:27
a ver si alguno me hace cambiar de idea 00:25:30
en cuanto llegue un i que me hace cambiar de idea 00:25:32
porque es divisor, he cambiado de idea 00:25:37
entonces estamos aplicando todo el rato 00:25:39
las mismas ideas, todo el rato lo mismo 00:25:43
estructuras que ya conocemos todo 00:25:44
pero claro, hay que hacerlo 00:25:46
analizando previamente el problema en el que estoy 00:25:48
y entendiéndolo 00:25:51
porque la parte más complicada 00:25:52
de programar es entender 00:25:55
el problema en el que estoy 00:25:57
y que se traduce 00:25:58
Se traduce en contar divisores, se traduce en no sé qué 00:26:01
Luego ya 00:26:03
El código 00:26:04
No tiene mayor dificultad 00:26:05
Si uno lógicamente ha estudiado y ha memorizado 00:26:08
Todo lo que tiene que memorizar 00:26:10
Obviamente 00:26:11
Pero eso lo damos por sentado 00:26:15
Porque si no, sí que no hay nada que hacer 00:26:16
Entender las cosas no es suficiente 00:26:18
9, pues 9 00:26:20
Vale, me ha funcionado esta versión, perdón 00:26:26
Hombre, a ver, me estás diciendo 00:26:28
Mi programa está mal por algo, depende 00:26:36
Si ese algo es una tontería 00:26:38
Se ve claro que es una tontería 00:26:39
Vale, pero si ese algo es 00:26:43
Que el programa pues no 00:26:45
Es un error de bulto 00:26:46
Claro, los errores hay de muchos tipos 00:26:48
Dime 00:26:50
Y menor a X 00:26:53
¿Y menor a X dónde? Ah, da igual 00:26:56
aquí lo he puesto para que se vea más claro 00:26:59
que vamos entre 2 y x menos 1 00:27:02
pero y menor o igual que 00:27:03
x menos 1 es lo mismo 00:27:06
que y menor que x 00:27:08
normalmente, normalmente se pone 00:27:09
más así, se pone más así 00:27:12
¿vale? 00:27:14
porque uno rápidamente ve 00:27:17
que si es menor que x, el valor final al que llegas 00:27:18
es a x menos 1, pero bueno 00:27:20
yo lo he puesto para que quede más 00:27:22
¿vale? 00:27:24
bueno, pues ala, ya tenemos este 00:27:28
de los primos 00:27:29
¿subir? 00:27:30
aquí 00:27:34
ya te da igual, vale 00:27:34
pero a ver 00:27:43
¿que hay algo que quieres ver aquí o no? 00:27:46
¿de aquí o de dónde? 00:27:49
que pones un número y no para 00:27:53
pues tienes que mirar las condiciones de los bucles 00:27:54
algo a... 00:27:56
no se te habrá olvidado poner esto, por ejemplo 00:27:58
Uy, pues ha puesto más más 00:28:00
No te va a parar nunca jamás 00:28:04
Vale 00:28:05
Eh, venga 00:28:07
Ya he hecho ese 00:28:10
Pues el 32, por ejemplo, se queda mucho más fácil 00:28:24
Claro 00:28:27
Venga, hacemos uno de cadenas y char que os gusta menos 00:28:27
Me gustaría que intentáreis vosotros en casa al fin de semana 00:28:43
Que lo corregiremos aquí 00:28:46
Lo haremos el de los números romanos, por ejemplo 00:28:48
Le he dado un número, ponerlo en romano 00:28:50
A ver, ahí tienes que ir 00:28:54
Sabéis cómo funciona 00:29:00
El sistema de numeración romano, ¿no? 00:29:02
Pues tenéis que irle quitando 00:29:05
Primero miles 00:29:06
Tendrá... 00:29:07
Pues bueno, le tendréis que ir restando mil 00:29:10
Hasta que llegue a ser menor que mil 00:29:12
Todas las restas que hayáis hecho será la cantidad de emes 00:29:13
Luego le tendréis que ir restando cienes hasta que sea menor que cien 00:29:15
Bueno, más o menos 00:29:18
Sí, bueno, trasladar 00:29:19
Le doy el 320 y que me lo escriba 00:29:23
En Roma, ¿no? 00:29:25
Claro, hay que recordar cómo funciona ese sistema 00:29:27
Que a muchos se nos habrá olvidado 00:29:28
Vale 00:29:30
Venga, intentáis hacer ahora 00:29:31
Un ratín este del 00:29:34
Este de aquí 00:29:36
Por ejemplo 00:29:40
Pero ahora 00:29:43
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
8
Fecha:
27 de octubre de 2024 - 18:25
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
29′ 50″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
117.48 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid