Saltar navegación

20241114 ProgrEstruct-Funciones_ejer_3 - 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 17 de noviembre de 2024 por Raquel G.

6 visualizaciones

Descargar la transcripción

Escuchando, everything, perfecto. 00:00:00
Y no escuchando, a tomar por saco de aquí. 00:00:05
Venga, perfecto. 00:00:08
Vale, pues vamos a retrotraernos a la versión más sencilla, 00:00:11
que es el ejercicio 8 sin más. 00:00:14
Vamos a hacer una función a la que se le pasa un número entero 00:00:18
y devuelve el número de divisores primos que tiene, 00:00:22
los cuentas sin más. 00:00:25
por ahora vamos a empezar la 8 00:00:26
olvidándonos de la 7 00:00:28
de todo por ahora, la 8 tal cual 00:00:30
venga, pues entonces vamos a hacer una función 00:00:32
que 00:00:34
como me va a devolver el resultado 00:00:35
de una cuenta 00:00:38
pues lo que me va a devolver 00:00:39
es un entero 00:00:42
eso sí o sí, me va a devolver el resultado 00:00:43
de una cuenta 00:00:46
y ahora que va a hacer esa función 00:00:47
cuenta divisores 00:00:50
primos 00:00:52
vale 00:00:53
y esos divisores primos 00:00:55
¿de quién van a ser? 00:00:57
¿de quién los va a contar? 00:00:59
de un número cualquiera 00:01:01
de un número entero 00:01:03
pues entonces el parámetro 00:01:04
va a ser un número entero 00:01:06
vale, esta es la cabecera de nuestra función 00:01:08
bueno 00:01:10
lo que tenemos que hacer es una cuenta 00:01:11
tenemos que contar 00:01:14
pues ya está, como tenemos que hacer una cuenta 00:01:15
empezamos con un contador 00:01:17
a cero 00:01:19
porque lo que vamos es a contar 00:01:20
y ahora siempre que hay una cuenta 00:01:22
involucrada o una suma acumulativa 00:01:26
lo que sea, hay un bucle 00:01:28
que va pasando por todo aquello 00:01:29
que tenemos que contar, un bucle 00:01:32
vale, pues este bucle 00:01:33
en este caso en particular, ¿por qué va a pasar? 00:01:35
por todos los números 00:01:38
comprendidos entre 1 y n 00:01:39
porque n de tener divisores 00:01:41
estarán entre 1 y n 00:01:44
serán menores que él, obviamente 00:01:46
todos los divisores de un número son números más pequeños que él 00:01:47
entonces nuestro 00:01:50
bucle va a pasar entre todos los números 00:01:52
entre 1 y n 00:01:54
para contar cuáles 00:01:55
de ellos son divisores 00:01:58
y además de ser divisores 00:02:00
son primos, porque eso es lo que hay que contar. 00:02:02
¿Vale? Bueno, pues 00:02:04
repito desde el principio, cuando tenemos una 00:02:05
cuenta, tenemos que centrarnos primero 00:02:08
esa cuenta, donde está la 00:02:10
colección de valores por la que va 00:02:12
a pasar, por la que va a navegar. 00:02:14
Pues en este caso esta cuenta va a pasar 00:02:16
por todos los valores comprendidos 00:02:18
entre 1 y n, porque 00:02:20
que de haber divisores primos estarán ahí, entre 1 y n, de haberlos. 00:02:22
Pues entonces ese bucle va a pasar entre 1 y n. 00:02:25
Pues un bucle que va pasando entre 1 y n, lo más cómodo es hacerlo con un for, 00:02:28
porque ya tenemos una variable índice que la podemos hacer pasar, viajar. 00:02:32
Desde 1, mientras i sea menor o igual que n, incrementando i, 00:02:37
ya tenemos un bucle que ya hemos conseguido que vaya viajando por todos los números entre 1 y n. 00:02:43
Y ahora, para cada uno de esos números, tenemos que incrementar la cuenta si cumple qué condición. 00:02:49
Ser primo y ser divisor de n, las dos a la vez. 00:02:58
Entonces, vamos a incrementar la cuenta, es decir, la cuenta se va a quedar incrementada si se cumple dos cosas a la vez. 00:03:02
Luego, un and. 00:03:15
¿Qué dos cosas se tienen que cumplir para que incrementemos la cuenta? 00:03:18
Que I sea divisor de N. 00:03:22
Eso es muy fácil de expresar. 00:03:25
Que I divida a N de forma exacta. 00:03:29
Que el resto de dividir en entre I sea igual a cero. 00:03:34
Esta condición es muy fácil de expresar. 00:03:37
Esta es la condición de I es divisor de N. 00:03:39
Y la otra tiene que ser que I sea primo. 00:03:44
Pero claro, I es primo. 00:03:48
como ponemos esa condición 00:03:50
no la podemos expresar de golpe y por raza 00:03:53
tan sencilla 00:03:55
pero no pasa nada, tenemos una función 00:03:56
y si no la tenemos, que yo aquí en este código 00:03:59
no la tengo, la hacemos en un pispás 00:04:01
que es volver a hacerla 00:04:02
que he dado un numerito, me devuelve un boolean 00:04:04
diciéndome si es primo o no, ah pues estupendo 00:04:07
vamos a 00:04:09
hacernos esa función 00:04:10
porque si yo la tengo hecha 00:04:12
una función que me devuelve un boolean 00:04:14
true si es primo 00:04:17
y falsa si no lo es, si la tuviera 00:04:19
hecha, magnífico, porque ya 00:04:21
tengo la condición completa 00:04:23
i es divisor 00:04:24
e i es primo, como se cumplen 00:04:26
las dos, cuento 00:04:29
y esa cuenta la extiendo a todos 00:04:30
y cada uno de los candidatos 00:04:33
¿vale? los candidatos cuáles son 00:04:34
los comprendidos entre 1 y n 00:04:37
porque no puede haber divisores por encima de n 00:04:38
vale, pues lo único que nos falta aquí 00:04:41
esto cuando esté hecho, pues devolveremos 00:04:43
la cuenta y se acabó 00:04:45
lo único que nos falta aquí es 00:04:46
hacer la función es primo 00:04:49
vale 00:04:51
pues la función es primo 00:04:52
es una función a la que le paso 00:04:55
un número, la hemos hecho 00:05:02
antes y pues 00:05:04
lo hacemos rápidamente, asumimos de partida 00:05:06
que 00:05:08
hacemos un boolean y asumimos de partida 00:05:09
que no es primo 00:05:12
perdón, que es primo 00:05:13
y luego ya, vamos a ver si 00:05:15
encontramos algún número inferior 00:05:18
a él que lo divida de forma exacta 00:05:20
que no sea 1 y el propio número 00:05:22
en cuanto encontremos uno que lo divida de forma exacta 00:05:23
ya podemos cambiar de idea y hacer 00:05:26
exprimo a 00:05:27
falso, esto entonces sería 00:05:28
pues vamos a 00:05:32
navegar por todos los candidatos 00:05:33
entre 2 00:05:36
y num-1 00:05:37
vamos a navegar por todos los 00:05:40
candidatos entre 2 y num-1 00:05:46
y si alguno de ellos 00:05:47
solo con que alguno de ellos 00:05:49
divida de forma exacta a num 00:05:52
ya podemos cambiar de idea 00:05:54
perdona, he encontrado un divisor 00:06:00
he encontrado uno 00:06:02
entre 2 y num-1, he encontrado uno 00:06:02
pues es primo o false 00:06:05
ya puedo concluir que es primo o false, cambio de idea 00:06:07
y ahora ya me falta 00:06:09
sí, entonces 00:06:12
aquí lo podríamos dejar así, es decir 00:06:15
cuando el for ha terminado 00:06:17
pues devuelvo ya mi resultado final 00:06:18
es primo 00:06:21
así es como queda más estructurada 00:06:22
cuando ya este for ha acabado 00:06:27
no pongo llaves porque tanto el if solo tiene una sentencia 00:06:29
como el for solo tiene una, que es esta 00:06:34
cuando ya el for ha acabado 00:06:35
devuelvo a spring 00:06:38
cuando hicimos esta función creo que efectivamente 00:06:41
en cuanto encontramos un divisor ya pusimos aquí el return 00:06:45
claro, porque el retun 00:06:49
significa, acaba la función 00:06:52
y devuelve el valor que sea 00:06:54
entonces, podríamos haber 00:06:55
en lugar de eso, haber 00:06:58
hecho aquí, retun falso 00:07:00
que es, he encontrado un divisor 00:07:01
acaba ya la función, no hagas más cosas, retun falso 00:07:03
me sacas falso y ya está 00:07:06
¿vale? 00:07:07
pero bueno, vamos a dejarla así 00:07:09
por si a alguien le queda más clara 00:07:11
¿vale? pues ya está hecho 00:07:14
ya hemos conseguido esta función 00:07:15
luego la función de arriba 00:07:17
se apoya en esta otra 00:07:19
para construir 00:07:20
esta condición doble 00:07:22
si el numerito 00:07:23
es primo 00:07:25
y además lo divide 00:07:25
ala 00:07:26
cuento 00:07:27
te cuento 00:07:27
y hago eso 00:07:28
para todos los candidatos 00:07:30
entre 1 y n 00:07:31
una vez que he acabado 00:07:32
la cuenta 00:07:33
devuelvo cont 00:07:34
y ya está 00:07:36
primos 00:07:37
el número de divisores 00:07:40
que además son primos 00:07:43
porque esto es un and 00:07:44
o sea si tú le quitas esto 00:07:45
te cuenta sus divisores 00:07:47
pero con eso solo te está contando 00:07:49
los que además de ser divisores 00:07:52
son números primos 00:07:54
¿vale? por ejemplo 00:07:55
el 20 00:07:59
el 20 por ejemplo 00:08:01
el 10 es un divisor de 20 ¿verdad? 00:08:03
pero el 10 no es primo 00:08:06
con lo cual no lo contaría 00:08:07
¿vale? por ejemplo, ahora vamos a llamar a esta función 00:08:09
pasándole 20 00:08:12
para ver cuántos me ha contado 00:08:13
Los divisores primos de 20 00:08:15
Bueno, 5 es divisor de 20 y es primo 00:08:19
El 5 lo contará, el 2 también 00:08:23
Vamos a mostrar cuántos divisores primos tiene 20 00:08:25
Pues vamos a ver cuántos divisores primos tiene 20 00:08:30
Lo ejecutamos 00:08:41
Tiene 3 00:08:42
20 tiene 3 00:08:44
Que serán el 5, el 2 00:08:46
Y el otro divisor primo de 20 00:08:49
Que no es el 5 ni el 2 00:08:52
¿Cuál es? 00:08:54
Porque 20 es 00:08:56
No, el 4 no es primo 00:08:59
Ah, no, primo 00:09:02
Claro, ¿cuántos divisores primos de 20? 00:09:03
20 tiene como divisores 00:09:05
El 2, el 4, el 5 00:09:07
Porque 20 es 00:09:10
10 por 2 00:09:14
¿Qué es 5? 5 por 2 00:09:16
Solo tiene 5 y 2 00:09:18
¿Dos divisores primos? 00:09:20
El 5 y el... 00:09:21
Claro, 1, 2, 4, 5, 10 y 20. 00:09:23
Ah, bueno, claro, claro, vale, vale, vale. 00:09:26
Es que estoy, claro, me está contando efectivamente el 1. 00:09:28
Claro, porque aquí he empezado desde el 1. 00:09:32
Sí, claro, tal y como yo lo he hecho me está contando el 1. 00:09:35
Vale, el 20 no me lo cuenta porque el 20 no es primo. 00:09:38
Vale, entonces me está contando el 1, el 2 y el 5. 00:09:41
¿Vale? 00:09:46
Vale. 00:09:48
Con la de Juan te hice los números. 00:09:49
Claro. 00:09:51
vale 00:09:53
la perecilla, ¿no? 00:09:54
vale, dudas 00:10:01
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:
6
Fecha:
17 de noviembre de 2024 - 17:31
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
10′ 04″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
36.82 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid