20241025 ProgrEstruct-Bucles-ejercicios_12 - 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:
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
no
00:13:09
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
No
00:28:42
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