20241108 ProgrEstruct-Funciones_4 - 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:
Bueno, pues entonces, esto es lo primero que se nos ocurrió sobre la marcha, ¿vale?
00:00:00
Lo primero que se nos ocurrió sobre la marcha, pues para consolidarlo de ayer, algo facilito.
00:00:08
Entonces, esto, imagino que lo hicisteis, devuelve la que tenga más vocales.
00:00:12
Pues nada, pondríais el nombre, cualquiera, y ahora, una vez decidido el nombre, uno ya se plantea parámetros de entrada si es que los hay,
00:00:17
Valor de retorno si es que lo hay
00:00:27
Y luego ya el código
00:00:29
Parámetros de entrada
00:00:30
Dos nombres, dos cadenas
00:00:32
Pues dos, string
00:00:34
No voy a separar por comas y ya está
00:00:37
No voy a poner string cat1 y cat2
00:00:44
No, no, no, no
00:00:46
Aquí no puedes hacerlo como cuando haces una declaración
00:00:47
Tienes que separarlo por comas
00:00:51
Dime
00:00:52
Yo lo que he hecho ha sido dos funciones separadas
00:00:53
Se puede hacer también así
00:00:55
Dos funciones separadas, ¿para qué?
00:00:56
O sea, he hecho dos funciones
00:01:01
y una función que agrupa las dos funciones.
00:01:03
O sea, una función
00:01:05
que cuenta las vocales.
00:01:06
Otra que cuenta las vocales y otra que llama
00:01:09
esas dos.
00:01:11
Bueno, son funciones igualmente.
00:01:13
Vale.
00:01:15
Bueno, has hecho funciones y has llamado
00:01:17
funciones y pues ya está.
00:01:19
Y las ha comparado dentro del link con el link.
00:01:20
Sí. Bueno, vale.
00:01:23
Pero bueno, has hecho funciones, que es lo que había que hacer.
00:01:24
Vale.
00:01:27
Esta recibe
00:01:29
dos cadenas. A ver,
00:01:30
bueno, lo importante y lo segundo
00:01:32
importante es que se haga lo que a uno se le pide
00:01:34
porque tú puedes ir a tu trabajo
00:01:36
te piden una, oye, hazme esta
00:01:38
aplicación para no sé qué
00:01:40
oye, la que te he hecho te funciona, sí, pero
00:01:41
no me has hecho la que te he pedido
00:01:44
entonces es importante adaptarse a los requisitos
00:01:45
a ver, ¿alguna de las funciones que me has hecho recibe
00:01:48
dos nombres?
00:01:54
entonces no te he hecho lo que te piden
00:01:57
porque yo te he pedido una función que reciba
00:01:58
dos nombres
00:02:00
entonces me has hecho dos funciones
00:02:01
el resultado final de la aplicación
00:02:03
usando esas funciones en este caso es el mismo
00:02:06
pero aquí en este caso y de cara al examen
00:02:08
que ahora mismo es lo que
00:02:10
nos importa
00:02:11
si yo te pido una función
00:02:13
que reciba estos
00:02:16
parámetros y devuelva, me tienes que hacer
00:02:18
una función que haga eso
00:02:20
entonces esta función
00:02:21
recibe dos nombres
00:02:24
pues dos stream
00:02:25
y efectivamente
00:02:27
no, así no lo podéis
00:02:29
poner. Cuando nosotros declaramos dos
00:02:33
strings en un programa, sí que lo podemos
00:02:35
separados por comas y no pasa nada.
00:02:37
Aquí no, ¿vale? Aquí en la
00:02:39
lista de parámetros
00:02:41
hay que poner los parámetros
00:02:42
uno por uno separados por comas.
00:02:44
Si el tipo de dato se repite, pues el tipo de dato se repite.
00:02:47
¿Y qué te devuelve?
00:02:50
Te devuelve la
00:02:51
cadena o el nombre, bueno, como
00:02:53
lo he llamado nombre enunciado, vamos a poner
00:02:55
nombre. Te devuelve la
00:02:57
cadena o el nombre que tenga más vocales.
00:03:01
Con lo cual, ¿qué es lo que te devuelve?
00:03:03
Una cadena también.
00:03:05
También te devuelve una cadena.
00:03:07
Pues como también te devuelve una cadena, string.
00:03:11
¿Vale?
00:03:15
Entonces, la firma, la cabecera, como lo queréis llamar de la función, es esta.
00:03:18
Nombre, parámetros de entrada separados por comas si los hay y valor de retorno.
00:03:24
Y ahora ya uno aquí pues hace su código y todo lo que haga falta.
00:03:29
Entonces, esta función en particular
00:03:33
Como la vamos a llamar desde main
00:03:36
Esta en particular
00:03:38
Y main tiene el static delante
00:03:39
Pues ya sabemos que tenemos que poner el static delante
00:03:42
Aunque ahora simplemente
00:03:44
Obedezcamos como
00:03:46
Siervos
00:03:48
Pero llega el momento en que seamos libres
00:03:49
Y ya no tengamos que obedecer como siervos
00:03:52
Sino que lo pongamos si queremos
00:03:54
Ponerlo y nos interesa
00:03:56
Pero aquí tenemos que ponerlo
00:03:57
Porque main tiene static
00:04:00
pues solamente puede llamar a funciones
00:04:01
que tengan static
00:04:03
pues lo ponemos, vale
00:04:04
y aquí ahora ya el programador
00:04:07
pues podría hacer lo que fuera
00:04:09
y en un caso real
00:04:10
pues uno se deja así esta
00:04:13
función y dice, vale, a mí el programador
00:04:15
Pepito ya me dará esta
00:04:17
función alguna vez, ya me la dará
00:04:19
pero yo no me paro, yo puedo seguir mi aplicación
00:04:20
y yo puedo aquí ya en mi main
00:04:23
llamarla y todo eso
00:04:25
no me va a devolver nada en ese momento
00:04:26
pero mi código puede seguir en realidad
00:04:29
Y ya cuando esa persona tenga esta función
00:04:31
Yo la incorporo
00:04:34
Pero yo no tengo por qué ocuparme de ella
00:04:35
Yo puedo seguir aquí programando
00:04:36
Sin errores de compilación y sin nada
00:04:38
En mi main
00:04:39
Puedo estar haciendo aquí cosas
00:04:41
Puedo llamar a esa función
00:04:43
Y guardar en un resultado
00:04:44
Puedo usarla para comparar dos nombres
00:04:48
Y puedo seguir aquí trabajando
00:04:57
y hago mis cosas
00:05:01
lo que pasa es que estaré todavía en fase de desarrollo
00:05:02
y el resultado no será real
00:05:05
porque result
00:05:07
esta función está sin hacer
00:05:09
result me va a devolver un null
00:05:11
me va a devolver un null
00:05:15
pero yo en última instancia puedo seguir
00:05:16
aquí desarrollando y puedo seguir haciendo cosas
00:05:19
y ya llegará un momento en que esa función tenga algo
00:05:21
cuando el que se encargue de hacerla la haga
00:05:23
y ya está, entonces son trabajos
00:05:25
que se independizan
00:05:27
entonces el que se encarga de hacerla
00:05:28
lo mismo
00:05:31
Lo único que necesita es esto
00:05:32
La cabecera
00:05:34
Saber qué tiene que darle por parámetro
00:05:36
Saber qué sale y programar
00:05:38
No necesita saber ni en qué momento la van a llamar
00:05:40
Ni cuándo, ni para qué
00:05:42
Eso le da exactamente igual
00:05:44
Lo único que necesita saber es esto
00:05:45
Qué va a hacer la función
00:05:47
Vale, pues entonces
00:05:47
Ahora ya programar esto
00:05:50
Pues nada, contamos las vocales de una
00:05:52
Contamos las vocales de otra
00:05:54
Y lo hacemos
00:05:55
Entonces en este caso nuestro
00:05:56
Concreto, qué suerte
00:06:00
porque tenemos una función
00:06:01
ya hecha
00:06:04
que cuenta las vocales de un nombre
00:06:06
entonces
00:06:08
¿para qué repetir
00:06:10
el código aquí otra vez?
00:06:12
ya tengo yo una función que las cuenta
00:06:13
que es justo lo que quiero hacer
00:06:15
quiero contar las vocales de nombre 1
00:06:17
quiero contar las vocales de nombre 2
00:06:19
cuando las tenga quiero ver cuál de las dos tiene más
00:06:21
si nombre 1 tiene más
00:06:24
devuelvo nombre 1
00:06:25
si no devuelvo nombre 2
00:06:26
todo ese código tendría que hacerlo
00:06:28
Pero, repito, como alguien ha hecho la función contar vocales
00:06:30
Pues, magnífico
00:06:35
Vamos a ver las vocales de la primera
00:06:37
Lo voy a poner separadito en variables
00:06:41
Aunque, pues para eso tenemos una función
00:06:42
Que se llamaba contar vocales
00:06:45
A la que le pasa
00:06:48
Porque había dos versiones
00:06:50
Ah, sí, porque la última es la que nos interesa
00:06:54
Teníamos contar vocales versión 2
00:06:56
Que ya me devuelve el numerito
00:06:59
Que ya me devuelve el numerito
00:07:01
Contar vocales, versión 2
00:07:03
De nombre 1
00:07:05
Pues estupendo, que suerte
00:07:07
Que suerte que tengo esta función
00:07:12
Que ya me lo hace, me cuenta las vocales de un nombre
00:07:14
Luego la puedo llamar siempre que me haga falta
00:07:16
Entonces
00:07:19
Primera cosa
00:07:22
Que buscaba con este ejemplo
00:07:23
Pues que a una función yo la puedo llamar
00:07:25
Desde cualquier sitio donde tenga que escribir código
00:07:27
Y ese sitio puede ser mi propio main
00:07:30
Como hemos hecho aquí
00:07:32
mi propio main, yo he necesitado hacer algo
00:07:32
que me lo hace una función y lo he llamado
00:07:35
desde mi propio main, pero puede ser
00:07:36
que también quiera yo hacer eso
00:07:39
desde otra función, porque me interese
00:07:41
pues magnífico
00:07:43
yo llamo a esa función desde donde quiera
00:07:44
desde la función
00:07:47
main, que es una función también
00:07:49
aunque sea especial, desde otra función
00:07:51
desde donde yo quiera, siempre que necesite hacer eso
00:07:53
pues en este caso necesito hacerlo
00:07:55
aquí, pues magnífico
00:07:57
y necesito hacerlo otra vez más
00:07:58
Pues estupendo
00:08:00
Ahora ya sí que puedo seguir haciendo mi función
00:08:11
Que es
00:08:13
Si v1
00:08:14
Es mayor que v2
00:08:15
Entonces
00:08:19
Return
00:08:21
Nombre1
00:08:24
Else return
00:08:26
Nombre2
00:08:33
Y ya está
00:08:38
Esta función se ha apoyado en la llamada esta
00:08:40
La ha necesitado llamar dos veces
00:08:44
para contar las de nombre 1, ¿vale?
00:08:46
Yo he llamado a la función pasándole el dato que me interesaba.
00:08:49
Aquí en este caso me interesaba nombre 1, pues ala.
00:08:53
Aquí le he llamado pasándole el dato que me interesaba.
00:08:56
Aquí me interesaba nombre 2, pues ala.
00:08:58
Cuando ya tengo el resultado de estas dos llamadas
00:09:01
guardado en una variable,
00:09:03
pues comparo para ver cuál es el valor de retorno,
00:09:06
el string de retorno, si nombre 1 o nombre 2, ¿vale?
00:09:09
en esta función en particular
00:09:14
claro, habría que especificar
00:09:22
un poco más, porque me diríais
00:09:25
uy, eso
00:09:26
si tienen el mismo número de vocales
00:09:28
pues claro
00:09:31
en este caso devolvería el nombre 2
00:09:33
entonces ahí tendríamos que preguntarle
00:09:35
al que nos la ha pedido, decirle, oye
00:09:37
si tiene el mismo número de vocales
00:09:38
¿cuál quieres que devuelva?
00:09:41
entonces él te puede decir, pues cualquiera de las dos
00:09:43
o no, o si tiene el mismo
00:09:45
número de vocales, pues devuélveme nul
00:09:47
por ejemplo
00:09:49
en función de para lo que la quiera
00:09:50
esa persona, esa función
00:09:53
pues a lo mejor te puede decir, si tiene el mismo número de vocales
00:09:55
devuélveme un string
00:09:57
a lo mejor que ponga, tienen el mismo
00:09:59
no sé, que te lo especifiquen
00:10:01
entonces claro
00:10:02
lo normal es que una función venga
00:10:04
acompañada de una buena documentación
00:10:07
delante
00:10:09
para especificar
00:10:10
qué significa el valor de retorno
00:10:12
qué significa, porque hay veces
00:10:15
que está claro, claro, aquí uno lee esto y dice
00:10:17
contar vocales, hombre pues tiene toda la pinta
00:10:19
que si a un método que se llama contar vocales
00:10:22
yo le paso una cadena, pues me devuelve el número
00:10:25
de vocales, más o menos lo puedo deducir
00:10:28
porque si me devuelvo un número entiendo que es eso
00:10:31
pero aquí pueden dar más dudas y si tienen el mismo
00:10:32
¿cuál me devuelve? la primera, la segunda, porque son cadenas distintas
00:10:36
entonces habría una confusión, yo podría creer que la primera
00:10:40
tiene más y la verdad es que tiene la misma
00:10:43
que la otra, entonces no siempre
00:10:45
la cabecera especifica
00:10:48
completamente el funcionamiento, es imposible
00:10:51
no puedo deducir yo todos los detalles
00:10:53
del funcionamiento, todos
00:10:55
solo con el nombre, los parámetros
00:10:56
el resultado
00:10:59
bueno pues para eso lo mejor es
00:11:00
hacerle una buena documentación
00:11:02
y la documentación de
00:11:04
javadoc
00:11:10
se hace, son comentarios
00:11:10
especiales
00:11:14
que empiezan en lugar de
00:11:15
con la barra y un único asterisco
00:11:18
empiezan con la barra
00:11:20
y dos asteriscos, empiezan así
00:11:22
y además
00:11:24
si tú sigues
00:11:26
un formato concreto
00:11:30
tú sigues un formato, pues luego
00:11:31
a partir de estos comentarios
00:11:34
usando la herramienta Javadoc puedes
00:11:35
crear unas páginas
00:11:38
HTML que te documentan todo muy bien
00:11:39
creo que al principio lo mencionamos
00:11:42
pero vamos a volver a revisarlo
00:11:44
por ejemplo, aquí esto me ha hecho
00:11:46
una magia, ¿no?
00:11:48
yo le he hecho la barra y dos asteriscos
00:11:48
y le he dado al enter
00:11:52
y el eclipse es muy listo
00:11:53
porque al ver que yo he hecho la barra
00:11:55
y dos asteriscos dice, ah, que quieres hacer
00:11:58
comentario javadoc, entonces es muy listo
00:11:59
entonces en cuanto yo le he hecho el enter, él ya me ha creado
00:12:01
todo esto
00:12:04
y me ha creado todo esto mirando
00:12:04
la cabecera de la función que quiero documentar
00:12:08
y me ha dicho, vale
00:12:10
esta función tiene dos parámetros
00:12:12
nombre1 y nombre2
00:12:14
y tiene una vuelta, return
00:12:15
Vale, entonces me ha dicho
00:12:17
Ahora tú aquí añade lo que quieras
00:12:19
Entonces lo normal es que añadieramos
00:12:20
El primer nombre
00:12:23
O lo que
00:12:25
Sea que signifique ese parámetro
00:12:28
El segundo nombre
00:12:31
Y aquí es donde ponemos todo el rollo
00:12:35
¿Qué devuelve?
00:12:37
Devuelve
00:12:38
El nombre con más vocales
00:12:39
Y aquí es donde especificamos
00:12:44
Si tienen el mismo
00:12:46
devuelve
00:12:48
null, por ejemplo.
00:12:58
Lo que decidamos, lo que acordemos
00:13:02
con la persona que os lo ha pedido.
00:13:03
Si tienen el mismo número de vocales, devuelve null.
00:13:04
Y podemos poner más cosas, más lo que queramos.
00:13:07
Entonces,
00:13:11
si cambiamos el código
00:13:12
de la función
00:13:15
para que ya haga esto
00:13:19
que hemos dicho,
00:13:20
pues entonces, si cambiamos
00:13:23
el código de la función para que haga eso,
00:13:24
Pues entonces tendríamos que poner
00:13:26
El save
00:13:29
V2
00:13:30
V2
00:13:31
Mayor que V1
00:13:35
Entonces ahora sí, return nombre 2
00:13:36
Y ahora ya en el else
00:13:38
Ahora sí, return null
00:13:42
Que stream puede tener null
00:13:44
Porque es un objeto
00:13:46
Vale, entonces este código que hemos puesto
00:13:47
Ahora, ¿no? Si V1 es mayor que V2, la primera
00:13:50
Si no, la segunda
00:13:52
Y si tienen el mismo, devuelve null
00:13:53
Entonces este código que hemos hecho
00:13:56
ya si hace exactamente lo que hemos documentado
00:13:58
entonces ahora ya
00:14:00
la persona que usa esta función
00:14:03
solo necesita
00:14:05
la cabecera
00:14:06
para saber como llamarlo y todo eso
00:14:08
y esta documentación para entender
00:14:11
bien exactamente que hace la función
00:14:13
y con eso ya decidir si le interesa
00:14:15
si hace lo que quiere, si no hace lo que quiere, si la usa
00:14:17
y todo eso
00:14:19
entonces si estos comentarios javado que están
00:14:20
pues hechos bien
00:14:24
con esto de aquí que indica
00:14:26
cada parámetro de entrada
00:14:28
esto que indica el valor de retorno
00:14:30
hay más posibilidades, pues un throw
00:14:32
parece la excepción, historias raras que
00:14:34
veremos
00:14:36
pues uno podría
00:14:37
si ya tiene un montón de funciones documentadas
00:14:40
con javadoc, tiene un montón de funciones
00:14:43
ya podría decir, mira, voy a generar ya
00:14:44
mi documentación
00:14:46
y ya la cuelgo
00:14:47
la pongo en un servidor y ya quien use
00:14:50
estas funciones, pues ya entra ahí
00:14:52
y lo mira, y ya sabe si esa función
00:14:54
le vale, no le vale y ya está
00:14:56
y no tiene que entrar al código a mirarlo
00:14:58
¿por qué? porque el código no lo distribuimos
00:15:00
nosotros cuando distribuimos
00:15:03
una librería de funciones como esta
00:15:04
distribuimos ya el compilado
00:15:06
el .class
00:15:08
el código fuente no lo distribuimos
00:15:09
el .class
00:15:12
entonces el que vaya a usar esas funciones
00:15:13
no tiene acceso a esto de dentro
00:15:16
entonces la única manera que tiene de ver
00:15:18
si esa función le interesa para meterla
00:15:20
en su código
00:15:22
es la cabecera y la documentación
00:15:23
javado, entonces por eso distribuimos
00:15:26
las funciones compiladas
00:15:29
ya veremos como, toda la librería
00:15:32
de funciones metida en un hard, distribuimos
00:15:33
eso, ya compiladas
00:15:35
y el javadoc, para que el que
00:15:37
descargue esas
00:15:39
esas funciones
00:15:41
sepa si la interesa o no
00:15:44
entonces ese javadoc, pues desde la consola
00:15:45
con javadoc es muy fácil generarlo
00:15:48
y si tenemos un eclipse, pues también lo podemos
00:15:49
generar con project
00:15:52
generar javadoc
00:15:53
y aquí ya le decimos
00:15:56
Venga, ¿de qué clase quieres generar
00:15:57
Javadoc? ¿De qué paquete?
00:15:59
Del único que tenemos, de funciones
00:16:01
De paquete, pues venga
00:16:03
¿Dónde lo quieres
00:16:05
Meter? Pues
00:16:07
Lo vamos a poner en el escritorio
00:16:09
Para
00:16:11
Encontrarlo ahora rápido
00:16:12
Lo ponemos
00:16:15
En el escritorio
00:16:17
Doc, por ejemplo
00:16:19
Bueno, yo creo que me creará el 1
00:16:23
No creo que me meta todos los HTML así a lo bestia
00:16:33
Supongo que no
00:16:36
Así que lo pongo en el escritorio directamente
00:16:37
Pero bueno, porque me dice que no existe
00:16:39
Estoy en el escritorio mío, ¿no?
00:16:42
Debería dejar
00:16:48
Crear una carpeta
00:16:49
Precisamente no te la he creado
00:16:51
Ah, ahora sí me ha dejado, no sé antes qué estaba haciendo
00:16:53
No, no, estaba de igual
00:16:55
Bueno, en el escritorio, pues espera
00:16:56
Entonces ahora ya sí que le voy a poner una carpeta por si acaso
00:16:59
Vale, doc
00:17:01
Next, todo por defecto
00:17:03
Porque no nos interesan los detalles
00:17:06
Next, finish
00:17:07
Sobrescribe todo lo que haya si hubiera algo
00:17:09
Bla, bla, bla
00:17:11
Warning, warning, warning
00:17:13
Me parece que hay apuntes
00:17:15
Relajaos
00:17:18
Warning
00:17:20
Uy, no comment, que peligro
00:17:23
Bueno, da igual
00:17:25
Generating, generating, generating
00:17:26
Vale, pues vamos
00:17:30
Entonces, Doc, ¿dónde está? Aquí
00:17:31
Doc
00:17:33
Todas estas pedazos de páginas
00:17:36
Se ha generado solo para una clase
00:17:38
Que he documentado
00:17:40
Y dentro de esa clase un único método
00:17:41
Vale, el punto de partida index, como ya sabéis
00:17:42
Arrancamos index y aquí tenemos
00:17:45
Toda, ejemplo funciones
00:17:48
Vamos a ver que tiene ejemplo funciones
00:17:49
Que me he descargado ese hard de un lado
00:17:51
Pues que tiene, ah pues mira
00:17:52
Tiene un método que se llama ejemplo funciones
00:17:54
Y
00:17:58
En
00:17:59
Sí, pero no lo ha generado bien porque
00:18:01
Tendría que
00:18:03
Haberme sacado el
00:18:06
Ejemplo de funciones
00:18:12
¿Dónde está?
00:18:17
¿Cómo se llama este proyecto?
00:18:21
Ejemplo clase funciones
00:18:22
Ejemplo clase funciones
00:18:24
Aquí está
00:18:33
Vale
00:18:34
Ejemplo clase funciones
00:18:35
No sé por qué tontería no me lo habrá generado bien
00:18:39
A ver
00:18:43
Que me dice aquí
00:18:44
Building index para todas las clases
00:18:45
Vale, vale, no hay comentarios
00:18:49
Vale
00:18:58
Ah, vale, vale, vale, porque no eran públicos
00:18:59
Y le he marcado que me documentara solo los públicos
00:19:02
Vale, vale, vale, vamos a volver a generarlo
00:19:04
Vale, debe ser por eso
00:19:06
Vale, proyecto lo vamos a generar
00:19:08
Que esto es muy rápido
00:19:10
Vale, entonces veis
00:19:11
aquí está marcado public
00:19:16
solo los métodos que tengan el public
00:19:18
delante y el que yo he hecho
00:19:20
esa función que yo he hecho no tenía el public delante
00:19:22
esto ya lo entenderemos más
00:19:24
entonces le voy a poner todos, todos
00:19:26
aquí, vale
00:19:27
generado
00:19:30
y ahora volvemos a
00:19:34
sí, bueno
00:19:36
me meto en ejemplo funciones
00:19:38
y ahora ya sí, vale
00:19:42
ahora me ha documentado todo lo que tengo
00:19:43
y en particular el método
00:19:45
Que yo había documentado
00:19:47
Que era el de más vocales
00:19:49
Este ya sí que tiene documentación
00:19:51
El primer nombre, el segundo
00:19:53
Devuelve el nombre con más vocales
00:19:55
Entonces me lo deja ahí todo muy bonito
00:19:57
Antes no más, ¿vale?
00:19:58
Entonces esto es
00:20:01
Si uno se acostumbra a todos los métodos
00:20:02
Y todas las cosas que haga con documentación
00:20:05
Luego, pa, le da al botoncito
00:20:07
Y tiene ya un sitio web
00:20:08
Bueno, para subir a un sitio web
00:20:09
Con toda la documentación
00:20:11
Y el que quiera, pues ya, mira aquí
00:20:12
Bueno, pues entonces todo este rollo venía
00:20:15
Por lo de las funciones
00:20:18
Pues venga
00:20:19
Vale, más funciones
00:20:20
Ahora, muchos de los códigos que hemos hecho
00:20:23
Nosotros, de los vídeos que hemos hecho
00:20:26
Pues contar cuántos primos hay
00:20:27
No sé qué hemos dicho, hay pues
00:20:30
Un contador, cada número que me va llegando
00:20:31
Tengo que mirar si es primo o no
00:20:34
Entonces, para ver si es primo
00:20:35
De nuevo teníamos que hacer otro código
00:20:37
Hubiera sido todo mucho más bonito si hubiéramos dicho
00:20:39
Ah, vale, por ejemplo, ser primo
00:20:41
lo voy a meter en un método
00:20:43
aparte, y ahora ya en mi programa
00:20:45
lo único que hago es, leo los números
00:20:47
y llamo al método a ver si es primo o no
00:20:49
pues venga, por ejemplo
00:20:51
vamos a hacer ahora
00:20:53
antes de hacer ya ejercicio más
00:20:55
¿puedes crear una clase
00:20:57
solo para funciones?
00:20:59
claro, y luego lo que pasa
00:21:00
es que la forma de llamarla no sería como
00:21:03
lo estamos llamando aquí, porque aquí la estamos llamando
00:21:05
por su nombre
00:21:07
sin más
00:21:09
habría que poner el paquete donde está
00:21:10
habría que más que el paquete la clase claro cuando ya programamos en diferentes clases vale
00:21:12
o sea esto que estamos haciendo aquí de llamarlo así con más vocales en lo que está haciendo es
00:21:19
como no le estás diciendo dónde está asumo que estás aquí y te pone por defecto el nombre de
00:21:24
tu clase ejemplo funciones es decir realmente yo debería llamarla así con el nombre de la clase
00:21:32
en la que está pero si yo no pongo nada él asume que por defecto entonces la busquen esa clase
00:21:46
vale entonces yo aquí en este caso como en este caso como solo trabajamos con una clase no estoy
00:21:52
poniendo nada, porque lo que nos interesa ahora mismo
00:21:59
es sobre todo ver
00:22:01
cómo se pasan parámetros a una función
00:22:03
y cómo se recoge el valor de retorno
00:22:05
pues venga
00:22:07
claro, de hecho, lo primero que vamos a
00:22:08
hacer cuando ya
00:22:17
podamos hacerlo en clases separadas e importar el
00:22:18
JAR y todo eso, es crearnos nosotros
00:22:21
nuestras propias funciones
00:22:23
de librería para leer del teclado
00:22:25
así no tenemos que estar todo el rato
00:22:27
con el escáner, con no sé qué, una función de librería
00:22:28
que sea leer número entero y ya está
00:22:31
y me despreocupo de tener que hacer el escáner
00:22:33
cada vez, del next line si hay un salto
00:22:35
de líneas y no sé qué
00:22:37
nos hacemos leer entero, y cuando tenga que leer entero
00:22:38
pongo leer entero y ya está
00:22:41
que si puedo, ¿qué?
00:22:42
abusar de funciones
00:22:46
puedo abusar de cualquiera
00:22:47
hombre, a ver
00:22:48
eso es un tema de diseño, tú cuando tienes que hacer
00:22:53
una aplicación, haces un diseño
00:22:55
y ese diseño significa
00:22:57
cómo voy a distribuir el código
00:22:59
entonces tú, claro, cuanto más
00:23:01
separado esté el código, mejor
00:23:03
hombre, sin pasarse, que haya 200.000 funciones
00:23:05
de una línea cada una, tampoco
00:23:07
pero sí, cuanto más modular sea mejor
00:23:08
¿vale?
00:23:11
¿en futuros exámenes?
00:23:13
¿en algún otro?
00:23:17
ya veremos
00:23:22
en futuros exámenes
00:23:23
no, no, no, a ver
00:23:24
es que lo que pase en el futuro no lo sabe
00:23:27
nadie, me refiero que
00:23:29
tú tranquilo
00:23:31
pues ya está, pues sigue tranquilo
00:23:32
vale
00:23:35
es que dependerá de la situación
00:23:38
ya iremos viendo
00:23:42
a mí déjame
00:23:43
a mí mínteme
00:23:48
dime que sí
00:23:51
y yo con eso me quedo tranquilo
00:23:52
vale
00:23:54
bueno, pues venga
00:23:57
ahora me vais a hacer, por ejemplo
00:23:58
hemos hecho
00:24:00
funciones que contaban
00:24:01
números primos, lo que fuera, pues venga
00:24:05
siguiente función, vamos a hacer
00:24:07
una
00:24:09
o vais a hacer una función
00:24:09
que
00:24:12
devuelve, que indica
00:24:15
dicho de alguna manera, si
00:24:22
un número entero
00:24:24
es
00:24:28
o no primo
00:24:29
¿vale?
00:24:32
eso es lo que tiene que hacer la función
00:24:35
esto que está aquí escrito
00:24:36
eso
00:24:40
entonces
00:24:44
si ponemos la cabecera
00:24:47
exprimo
00:24:49
pues la cabecera
00:24:51
uno le pone el nombre
00:24:53
que más le guste, en este caso está claro
00:24:56
el valor de entrada
00:24:58
un número entero
00:25:00
y el valor de retorno
00:25:01
en este caso, ¿cuál pondríais?
00:25:04
eso
00:25:06
muy bien
00:25:11
o sea la función me tiene que decir
00:25:13
sí o no
00:25:15
es lo que me tiene que decir la función
00:25:16
sí o no
00:25:18
si algo pasa o no pasa
00:25:19
no es que me tenga que volver un número
00:25:21
una cadena
00:25:22
me tiene que decir si algo pasa o no pasa
00:25:23
vale pues boolean
00:25:25
y ahora ya
00:25:26
esta función
00:25:28
ya hará lo que sea con este número
00:25:30
vale
00:25:32
entonces
00:25:33
en este caso
00:25:35
pues esta función
00:25:37
Tendrá como parámetro
00:25:38
Un número entero
00:25:40
Y que devuelve
00:25:44
Pues devuelve
00:25:46
True si es primo
00:25:50
False si no
00:25:56
Por ejemplo
00:25:58
Pues esta sería la documentación
00:26:00
Vale, pues venga
00:26:02
Venga, hace de este código
00:26:04
De aquí a las 11
00:26:08
Que luego lo vamos a usar en otra función
00:26:10
¿Cuánto tiempo tenemos?
00:26:12
Pues de aquí a las 11
00:26:19
Por ejemplo
00:26:20
Gracias.
00:26:20
- 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:
- 13
- Fecha:
- 11 de noviembre de 2024 - 12:18
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 26′ 22″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 119.43 MBytes