Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 4. Funciones
Tema 4. Funciones
Tema 4. Funciones
A
Tema 4. Funciones
Tema 4: Funciones
¿Qué aprenderás?
¿Sabías que…?
1. Introducción
2. El uso de funciones
Una función identifica un bloque de código que podemos ejecutar tantas veces como
queramos en distintos puntos de nuestro programa. Podemos definir múltiples funciones
dentro de nuestro programa y utilizarlas tantas veces como necesitemos.
Las funciones se identifican por su nombre y sus posibles parámetros (valores que
podremos pasar a la función cuando la queramos ejecutar). No pueden existir dos
funciones con el mismo nombre y mismo número de parámetros.
Las funciones se definen siempre dentro del bloque correspondiente a nuestro programa,
pero fuera de cualquier otra función.
La función principal de nuestro programa es la función main. Al ejecutar nuestro programa
siempre se ejecutará el código encapsulado por la función main.
2
Informática. Programación I
Tema 4. Funciones
3
Informática. Programación I
Tema 4. Funciones
¿Cómo podemos entonces enviar valores desde una función a otra? Veamos el paso de
parámetros en el siguiente capítulo.
4
Informática. Programación I
Tema 4. Funciones
Cuando queramos llamar a una función enviándole valores para que ésta los pueda usar
tendremos que definir qué cantidad y qué tipo de valores va a poder recibir.
Hablaremos de parámetros para referirnos a los valores que puede recibir una función. Y
siempre que creemos una función vamos a tener que indicar el número y tipo de
parámetros que tiene. Una función va a poder tener tantos parámetros como sea
necesario.
Al declarar una función tendremos que declarar los parámetros dentro de los paréntesis de
la función.
Por ejemplo, la siguiente función es definida con un parámetro entero llamado numero:
public static void miFuncion(int numero){ …. }
Una función puede tener más de un parámetro. Los declararemos siempre dentro de los
paréntesis separándolos por comas.
Por ejemplo, la siguiente función es definida declarando un parámetro de tipo entero y
otro de tipo texto:
public static void miFuncion(int edad, String nombre){ … }
Cada función se identifica por su nombre y por el número y tipo de parámetros que tiene.
Así que dos funciones pueden tener el mismo nombre si tienen distinto tipo y/o número de
parámetros.
Cuando queramos ejecutar una función escribiremos el nombre de la función y entre
paréntesis sus atributos.
5
Informática. Programación I
Tema 4. Funciones
El paso de parámetros en Java siempre se realiza por valor, nunca por referencia. Con eso
nos referimos a que nunca estaremos pasando como parámetro la variable en sí, sino que
pasaremos solamente el valor que contiene (incluso aunque tengan el mismo nombre!).
6
Informática. Programación I
Tema 4. Funciones
¿No podremos entonces conseguir que miFuncion aumente el valor de la variable contador
definida dentro de main?
La respuesta es que: no podremos directamente desde miFuncion, pero podremos asignar
a contador de main el valor que miFuncion retorne.
En ocasiones al ejecutar una función ésta va a generar un valor que querremos recuperar.
Para poder retornar un valor, cuando definamos una función vamos a tener que indicar
qué tipo de valor va a retornar.
Es importante remarcar que una función solo va a poder retornar un mismo tipo de valor
(int, String , …) , y que una función está obligada a retornar un valor del tipo definido.
Si queremos indicar que una función no va a retornar ningún valor, utilizaremos la palabra
clave void. En este caso no estamos obligados a hacer ningún return.
Por ejemplo, la siguiente función no puede retornar ningún valor:
public static void miFuncion(int contador) { }
Un return no tiene por qué retornar un valor. La siguiente función tampoco retorna ningún
valor, aunque tenga más de un return:
public static void miFuncion(int contador) {
if(contador>4){ return; }
else{ return; }
}
7
Informática. Programación I
Tema 4. Funciones
El tipo de retorno se indica justo delante del nombre de la función, y podemos retornar un
valor en cualquier momento con la palabra clave return seguido del valor a retornar.
En el siguiente ejemplo definimos una función que retorna un valor entero cada vez que es
llamada:
public int void miFuncion(){
return 33;
}
¿Qué ocurre cuando una función se llama a sí misma? Vamos a por el siguiente tema, la
recursividad:
8
Informática. Programación I
Tema 4. Funciones
6. Recursividad
La recursividad es una técnica de programación que consiste en que una función se llame a
ella misma. Esto provoca un efecto bucle que se repite hasta el infinito si no lo detenemos
en algún momento. Por eso siempre que ejecutemos una función recursiva tendremos que
estar seguros que no se va a llamar a ella misma siempre.
En cambio, la siguiente función recursiva se va a llamar a ella solo mientras número < 10:
La recursividad es una técnica poco eficiente, pero en ocasiones resulta más sencilla de
programar y entender. La alternativa a la recursividad es la iteratividad, la técnica con la
que hemos estado trabajando hasta ahora.
Si las funciones recursivas tienen valores de retorno, no van a ser obtenidos hasta que no
detengamos la recursividad.
9
Informática. Programación I
Tema 4. Funciones
Por ejemplo, el siguiente código mostrará por consola primero los mensajes que se
imprimen antes de llamarse a ella misma, y luego los mensajes una vez se ha detenido la
recursividad:
número++:1
número++:2
número++:3
return número:3
return número:3
return número:3
10
Informática. Programación I
Tema 4. Funciones
Recursos y enlaces
• Documentación oficial de Java: https://docs.oracle.com/en/java/javase/11/
Conceptos clave
• Función: bloque de código al que le asignamos un nombre que utilizaremos para
ejecutar el código que contenga siempre que queramos.
• Parámetro: valores que recibe una función cuando se llama.
• Recursividad: una función es recursiva cuando se llama a ella misma.
11
Informática. Programación I
Tema 4. Funciones
Test de autoevaluación
¿En la definición de una función, qué código indicará una función va a recibir un parámetro
del tipo String y uno de tipo entero?
a) ( String param1, int param2)
b) {String param1, int param2}
c) (string, int)
d) [string, int]
12
Informática. Programación I
Tema 4. Funciones
Ponlo en práctica
Actividad 1
Escribe un programa de nombre Recursividad que imprima valores del 0 al 20 utilizando
una función recursiva
Actividad 2
Escribe un programa de nombre PidiendoValores que llame a una función encargada de
pedir un número entero superior a 0. Si el usuario escribe un número incorrecto, vuelve a
pedir. Cuando el usuario haya escrito un número correcto la función ha de retornar ése
número y desde la función main se ha de mostrar el número introducido.
13
Informática. Programación I
Tema 4. Funciones
SOLUCIONARIOS
Test de autoevaluación
¿En la definición de una función, qué código indicará una función va a recibir un parámetro
del tipo String y uno de tipo entero?
m) ( String param1, int param2)
n) {String param1, int param2}
o) (string, int)
p) [string, int]
14
Informática. Programación I
Tema 4. Funciones
Ponlo en práctica
Actividad 1
Escribe un programa de nombre Recursividad que imprima valores del 0 al 20 utilizando
una función recursiva
Solución:
public class Recursividad {
}
}
}
Actividad 2
Escribe un programa de nombre PidiendoValores que llame a una función encargada de
pedir un número entero superior a 0. Si el usuario escribe un número incorrecto, vuelve a
pedir. Cuando el usuario haya escrito un número correcto la función ha de retornar ése
número y desde la función main se ha de mostrar el número introducido.
15
Informática. Programación I
Tema 4. Funciones
Solución:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
16