20241108 ProgrEstruct-Funciones_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:
Otra que dijimos es, bueno, otra forma a lo mejor más sencilla.
00:00:00
Vamos a asumir, ¿qué ocurre cuando un número es primo?
00:00:04
Que no tiene ningún divisor, no tiene ninguno, entre 2 y 1 menos que el mismo, ¿verdad?
00:00:08
Eso es por definición, no hay ningún divisor.
00:00:14
Vale, pues entonces es más fácil decir, voy a asumir de partida que lo es, que efectivamente no tiene ninguno.
00:00:17
Y ahora voy a buscar un contraejemplo.
00:00:24
voy a buscar entre todos los números
00:00:26
entre 2 y 1 inferior a él
00:00:28
voy a buscar uno que me haga cambiar de opinión
00:00:29
en cuanto encuentre uno
00:00:32
que me hace cambiar de opinión
00:00:34
ya puedo concluir que es primo
00:00:35
es falso
00:00:38
es otra forma en la que lo pensamos
00:00:39
bueno, pues esa forma es esta
00:00:41
de partida asumo realmente que
00:00:43
no tiene ninguno
00:00:45
no tiene ningún divisor
00:00:47
eso es lo mismo que decir que de partida
00:00:49
asumimos que es primo es true
00:00:51
y ahora vamos a comprobar
00:00:53
con todos los números entre 2
00:00:55
¿vale?
00:00:57
y num-1
00:01:00
¿vale? a lo mejor se ve mejor
00:01:01
si en lugar de poner menor que num
00:01:04
ponemos menor o igual que num-1
00:01:05
vamos a comprobar
00:01:08
todos los números entre 2 y num-1
00:01:11
en cuanto encuentre 1
00:01:13
en cuanto encuentre 1
00:01:16
que es divisor
00:01:17
ya está, ya puedo cambiar de opinión
00:01:18
¿vale? es como lo hicimos en su momento
00:01:21
entonces luego además
00:01:22
incorporamos y dijimos
00:01:25
a ver, en cuanto haya encontrado
00:01:26
ya uno que me hace cambiar de opinión
00:01:29
claro, ya el resto
00:01:31
del for me da exactamente igual
00:01:33
pues entonces por eso añadimos aquí
00:01:35
esta condición
00:01:37
dijimos, le voy a añadir
00:01:39
además, para que el
00:01:41
for entre
00:01:43
solamente
00:01:44
si es primo sigue siendo true
00:01:46
porque en cuanto lo he cambiado a false
00:01:49
en cuanto lo he cambiado a false es que ya no me interesa
00:01:51
seguir buscando divisores, ya no me interesa
00:01:53
en cuanto he encontrado el primer divisor
00:01:55
ya está, pues pongo esto a
00:01:57
falso, esto como es un and
00:01:59
el total será falso y ya no entrará
00:02:01
más, vale
00:02:03
entonces esto es
00:02:05
el código más sencillo
00:02:07
más fácil, más cómodo y más
00:02:09
eficiente para ver si un número es primo o no
00:02:11
vale
00:02:13
y a
00:02:14
vale
00:02:21
entonces de hecho hasta
00:02:24
podríamos cambiarlo, hacerlo
00:02:26
esto está claro, lo que hemos hecho, es lo mismo
00:02:28
que hicimos hace un mes y pico, es igual.
00:02:30
¿Está claro, no?
00:02:33
Y ahora ya,
00:02:35
aprovechando que estamos trabajando con funciones,
00:02:36
podríamos decir, bueno, lo puedo hacer
00:02:38
hasta más cortito, incluso.
00:02:40
Más cortito en código no significa...
00:02:43
Es decir, que es, en cuanto yo
00:02:46
encuentro un divisor,
00:02:48
en cuanto encuentro un divisor, es que
00:02:51
ya sé el resultado de mi función, ya sé que es
00:02:52
falso. Pues en ese momento
00:02:54
planto el retún. En ese momento
00:02:56
planto el retún. Lo podríamos poner así,
00:02:58
¿verdad? Por ejemplo, voy a ponerla
00:03:00
en otra parte
00:03:02
para que no pisar
00:03:03
esta. Por ejemplo,
00:03:06
imagínate, es primo, versión 2.
00:03:11
Entonces,
00:03:14
en cuanto
00:03:15
yo he encontrado un divisor,
00:03:17
en cuanto yo he encontrado, ya sé cuál es
00:03:18
el resultado de mi función. Que sé que es
00:03:21
falso. Y ya no me hace falta
00:03:23
hacer nada más.
00:03:25
Entonces, podría aquí en el mismo if
00:03:27
plantarle ya un return
00:03:29
falso. Y punto pelota.
00:03:30
¿Vale? Porque en cuanto ya he encontrado
00:03:33
Un divisor, retun falso
00:03:36
Sal por falso y ya está
00:03:38
Que no encuentras ningún divisor
00:03:39
El for termina
00:03:42
El for ha terminado, no has encontrado
00:03:43
Ningún divisor, con lo cual no has salido
00:03:45
Con retun, si no has salido con retun
00:03:47
Llegarás aquí
00:03:50
Entonces si llegas aquí, ¿qué tienes que devolver?
00:03:50
True
00:03:54
Tienes que devolver true
00:03:54
A ver
00:03:56
Es que esto te lo ahorras, por ejemplo
00:03:58
Esto lo puedes quitar, entonces se queda más claro
00:04:01
Esto ya no te hace falta
00:04:03
Y esto te lo quitas, esto te sobra
00:04:04
Entonces el código te queda así
00:04:07
Te has ahorrado una variable local
00:04:09
Te has ahorrado esta condición
00:04:12
¿Vale?
00:04:14
La variable local esta no te hace falta
00:04:17
Ni esto de aquí
00:04:19
¿Vale?
00:04:21
Entonces nos limitamos a hacer un for
00:04:23
Entre todos los números
00:04:25
Entre 2 y num-1
00:04:26
En cuanto encontramos
00:04:28
1 que es divisor
00:04:30
Ahí ya sabemos que la función puede terminar
00:04:32
Porque ya tengo el resultado
00:04:34
Que es false, ya lo tengo
00:04:36
Por return false
00:04:37
Que no
00:04:38
Que no encuentro ninguno
00:04:41
Entonces mi for termina
00:04:43
Termina, los ha comprobado todos
00:04:44
Y nunca salió por return
00:04:47
Nunca salió por return
00:04:48
Entonces si nunca salió por return
00:04:50
Ha llegado a este punto
00:04:52
Que tendré que devolver ahí, true
00:04:53
Porque no encontró ninguno
00:04:55
Entonces esto es lo más corto
00:04:57
Lo más cómodo, lo más fácil
00:05:02
y de alguna manera también relaciona tu pregunta
00:05:03
Pablo, mucho mejor
00:05:06
que usar una librería externa porque
00:05:08
más ese QRT tiene dentro
00:05:09
vete a saber cuánta complejidad
00:05:12
qué necesidad
00:05:13
si lo podemos hacer de forma sencilla
00:05:15
bueno
00:05:17
las dos versiones de Esprimo
00:05:20
¿están claras?
00:05:22
sí, incluso esta segunda
00:05:23
bueno
00:05:26
pues ahora
00:05:30
vamos a apoyarnos en esta función
00:05:32
para hacer otra
00:05:35
Esta ya es más complicadita
00:05:35
Vamos a
00:05:38
Hacer
00:05:40
Una función
00:05:42
Que recibe
00:05:45
Un array
00:05:49
De números
00:05:51
Enteros
00:05:54
Y devuelve
00:05:56
Otro array
00:05:59
Conteniendo
00:06:00
Solo los que son primos del primer array
00:06:03
Estamos en el ejercicio 27
00:06:05
No, estamos
00:06:10
No sé lo que estamos haciendo
00:06:12
Poner ejemplos
00:06:14
Luego ya
00:06:17
Podemos hacer ejercicios concretos
00:06:18
Vale, otra vez conteniendo solo los primos
00:06:22
Del array
00:06:24
Pasado como parámetro
00:06:25
Vale, entonces
00:06:27
Vamos a suponer
00:06:34
Que llamamos a esta función getPrimos
00:06:40
Por ejemplo, es una función que me saca
00:06:43
Los primos de un array, me los saca
00:06:45
Y me los devuelve en otro
00:06:47
GetPrimos
00:06:48
Si hacemos la cabecera
00:06:49
¿Qué va a recibir la función?
00:06:51
Un array de enteros
00:06:55
Pues no pasa nada
00:06:56
Un array de enteros
00:06:57
Eso recibe
00:06:58
Un array de enteros
00:06:59
Y ahora
00:07:00
Tipo de dato de retorno
00:07:02
Un array de enteros
00:07:05
¿Cómo es el tipo de datos
00:07:08
Array de enteros?
00:07:09
Inti los corchetes
00:07:11
Pues hala
00:07:12
Inti los corchetes
00:07:13
Y ya está
00:07:14
Ya tengo la cabecera
00:07:15
Y ahora aquí ya
00:07:15
Me las apaño
00:07:17
Para construir un array
00:07:18
Que contenga solo los primos
00:07:20
Que hay aquí
00:07:22
Y una vez construido
00:07:23
Lo devuelve a guarderetorno
00:07:26
Y para averiguar si un número es primo o no
00:07:27
Pues tenemos esto
00:07:30
Tenemos este método
00:07:32
O este, cualquiera de los dos
00:07:33
Que lo hace
00:07:35
Venga, pues ahora ya
00:07:36
Si que hacemos esto
00:07:42
- 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:
- 11 de noviembre de 2024 - 12:19
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 07′ 47″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 28.15 MBytes