Tema – 10
Funciones o métodos
10.1. Introducción
• Los programas pueden estructurarse en partes
más pequeñas y sencillas llamadas funciones (o
métodos)....
10.1. Introducción
• Una función es una porción de código que se
identifica mediante un nombre, y que realiza
unas operaci...
10.1. Introducción
• Al llamar a una función se ejecutan las
instrucciones de ésta, y cuando finaliza, el
programa vuelve ...
10.2. Declaración
[modificadores] tipo_dato nombre_funcion
(parámetros){
declaración de variables locales;
instrucciones;
...
10.2. Declaración
• Los modificadores especifican cómo puede
llamarse al método. Hay varios que se verán en el
tema siguie...
10.2. Declaración
• Ejemplos de cabecera de función:
public static void main(String [] args)
public static void imprimir_m...
10.3. Llamadas
• Una función se puede llamar varias veces,
aunque sólo se declare una vez.
• La llamada a una función se r...
10.4. Devolución de valores
• Las funciones que no se declaran como void
devuelven un valor. Estas funciones
terminarán co...
10.4. Devolución de valores
• Ejemplo:
public class Funciones{
public static void main(String [] args) throws Exception{
i...
10.5. Ámbito de las variables
• Las variables de un programa pueden clasificarse
según el ámbito en el que son conocidas y...
10.6. Paso de parámetros
• El paso de parámetros se puede entender
como darle valor a los parámetros de la
función.
• El p...
10.7. Parámetros en la función main
• El método main tiene un único parámetro: un
vector de cadenas de caracteres.
• Podem...
10.7. Parámetro en la función main
• Ejemplo:
class alumnos{
public static void main (String alumnos[]){
System.out.printl...
10.8. Recursividad
• La recursividad es un proceso en que una
función se llama a sí misma repetidamente
hasta que satisfac...
10.8. Recursividad
• Ejemplo: factorial
public class Factorial{
public static void main (String [] args){
System.out.print...
10.9. Sobrecarga de funciones
• Java permite asignar el mismo identificador a
distintas funciones, cuya diferencia reside ...
10.9. Sobrecarga de funciones
• Ejemplo:
public class Funciones {
public static void main (String[] args) {
int a=3;
int b...
10.10. Propagación de excepciones
• Cuando se produce una excepción dentro de
un método, se puede capturar dentro de éste
...
10.10. Propagación de excepciones
• Observaremos en el siguiente ejemplo qué
ocurre cuando se produce un error de tipo
Num...
10.10. Propagación de excepciones
public static void main(String[] args) {
int num;
try{
System.out.println("Introduce un ...
10.10. Propagación de excepciones
• ¿Qué ocurrirá ahora si capturamos la
excepción en el método leerNumero?
– Ahora no deb...
10.10. Propagación de excepciones
public static void main(String[] args) {
int num;
try{
System.out.println("Introduce un ...
10.10. Propagación de excepciones
• Con estos ejemplos vemos la utilidad de no
capturar el error dentro del método donde s...
Upcoming SlideShare
Loading in …5
×

T10 - Funciones

802 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
802
On SlideShare
0
From Embeds
0
Number of Embeds
255
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

T10 - Funciones

  1. 1. Tema – 10 Funciones o métodos
  2. 2. 10.1. Introducción • Los programas pueden estructurarse en partes más pequeñas y sencillas llamadas funciones (o métodos). • Modularización: técnica de programación caracterizada por agrupar el código de un programa en diversas funciones. • La comunicación entre funciones se realiza mediante “llamadas”, que pueden realizarse desde diferentes puntos de un mismo programa. De esta forma se evita repetir código. PROGRAMACIÓN – Daniel Santiago 2
  3. 3. 10.1. Introducción • Una función es una porción de código que se identifica mediante un nombre, y que realiza unas operaciones determinadas. • Las operaciones que realiza una función siempre son las mismas, pero en cada llamada a la función se pueden variar los datos. • Todo programa en Java consta de, al menos, una función: main. PROGRAMACIÓN – Daniel Santiago 3
  4. 4. 10.1. Introducción • Al llamar a una función se ejecutan las instrucciones de ésta, y cuando finaliza, el programa vuelve al punto en que se había realizado la llamada. • Una función puede incluir o no datos en su llamada, los parámetros, y puede devolver o no un valor mediante la instrucción return. PROGRAMACIÓN – Daniel Santiago 4
  5. 5. 10.2. Declaración [modificadores] tipo_dato nombre_funcion (parámetros){ declaración de variables locales; instrucciones; return; } PROGRAMACIÓN – Daniel Santiago 5
  6. 6. 10.2. Declaración • Los modificadores especifican cómo puede llamarse al método. Hay varios que se verán en el tema siguiente (public, private, static, etc.). • tipo_dato: indica el tipo de valor que devuelve la llamada a la función (int, char, double…). – Las funciones que no devuelven ningún dato son de tipo void. • Los parámetros introducen información para la ejecución de la función. Si no existen parámetros explícitos se dejan los paréntesis vacíos. PROGRAMACIÓN – Daniel Santiago 6
  7. 7. 10.2. Declaración • Ejemplos de cabecera de función: public static void main(String [] args) public static void imprimir_menu() public double media_notas (double notas[10]) PROGRAMACIÓN – Daniel Santiago 7
  8. 8. 10.3. Llamadas • Una función se puede llamar varias veces, aunque sólo se declare una vez. • La llamada a una función se realiza mediante el nombre de ésta y todos sus parámetros, si los tiene, ordenados. • En Java, a diferencia de otros lenguajes de programación, para poder llamar a una función no hace falta que ésta esté previamente declarada. Puede declararse más abajo. PROGRAMACIÓN – Daniel Santiago 8
  9. 9. 10.4. Devolución de valores • Las funciones que no se declaran como void devuelven un valor. Estas funciones terminarán con la instrucción return. • Al terminar de ejecutarse la función, el programa vuelve al punto en que se llamó. El valor devuelto por la función puede ser utilizado en las siguientes instrucciones del programa, fuera de la función. PROGRAMACIÓN – Daniel Santiago 9
  10. 10. 10.4. Devolución de valores • Ejemplo: public class Funciones{ public static void main(String [] args) throws Exception{ int a = 5, b = 6; int max = mayor(a, b); System.out.println("El mayor es " + max); } public static int mayor(int a, int b){ if(a<b){ return b; } else{ return a; } } } PROGRAMACIÓN – Daniel Santiago 10
  11. 11. 10.5. Ámbito de las variables • Las variables de un programa pueden clasificarse según el ámbito en el que son conocidas y accesibles. El ámbito de una variable dependerá de dónde se declare. • En Java tendremos dos tipos de variables: – Variables miembro de una clase: se definen dentro de una clase, fuera de los métodos. Se verán más adelante. – Variables locales: se definen dentro de un método. La variables desaparecen una vez finalizada la ejecución del método. No son visibles ni accesibles desde otros métodos. PROGRAMACIÓN – Daniel Santiago 11
  12. 12. 10.6. Paso de parámetros • El paso de parámetros se puede entender como darle valor a los parámetros de la función. • El paso de parámetros en Java se hace por valor. Esto significa que cuando una variable se pasa a una función como parámetro, ésta recibe una copia del valor original. Si la función modifica el parámetro, sólo cambia la copia y el valor original permanece intacto. PROGRAMACIÓN – Daniel Santiago 12
  13. 13. 10.7. Parámetros en la función main • El método main tiene un único parámetro: un vector de cadenas de caracteres. • Podemos pasar parámetros a la función main desde la línea de comandos del SO, cuando ejecutamos el programa. • Hay que tener en cuenta que los parámetros que le pasemos a la función main son de tipo String. Para hacer cálculos tendremos que transformarlos al tipo de dato deseado. PROGRAMACIÓN – Daniel Santiago 13
  14. 14. 10.7. Parámetro en la función main • Ejemplo: class alumnos{ public static void main (String alumnos[]){ System.out.println(“Hola ” + alumnos[0]); System.out.println(“Hola ” + alumnos[1]); } } Ejecutamos: java alumnos Paco Pepe PROGRAMACIÓN – Daniel Santiago 14
  15. 15. 10.8. Recursividad • La recursividad es un proceso en que una función se llama a sí misma repetidamente hasta que satisface cierta condición. • Se usa para cálculos repetitivos en los que el resultado de cada iteración se determina a partir del resultado de alguna iteración anterior. • Normalmente un problema puede resolverse de forma recursiva e iterativa. PROGRAMACIÓN – Daniel Santiago 15
  16. 16. 10.8. Recursividad • Ejemplo: factorial public class Factorial{ public static void main (String [] args){ System.out.println(“Factorial de 10 es ” + fact(10)); } public static long fact(int x){ if(x<=1) return 1; else return x*fact(x-1); } PROGRAMACIÓN – Daniel Santiago 16
  17. 17. 10.9. Sobrecarga de funciones • Java permite asignar el mismo identificador a distintas funciones, cuya diferencia reside en el tipo o número de parámetros que utilicen. • La sobrecarga (overloading) de las funciones puede resultar muy útil al efectuar llamadas a un método, ya que en lugar de tener que recordar identificadores de métodos distintos, basta con recordar uno sólo. PROGRAMACIÓN – Daniel Santiago 17
  18. 18. 10.9. Sobrecarga de funciones • Ejemplo: public class Funciones { public static void main (String[] args) { int a=3; int b=2; int c=1; System.out.println("El mayor de " + a + " y " + b + " es: " + mayor(a,b)); System.out.println("El mayor de " + a + ", " + b + " y " + c + " es: " + mayor(a,b,c)); } public static int mayor (int a, int b) { return a>b ? a : b; } public static int mayor (int a, int b, int c) { return mayor(mayor(a,b),c); } } PROGRAMACIÓN – Daniel Santiago 18
  19. 19. 10.10. Propagación de excepciones • Cuando se produce una excepción dentro de un método, se puede capturar dentro de éste y tratarlo. De no hacerse, la excepción se propaga automáticamente al método que lo llamó, y así sucesivamente hasta que un método captura la excepción o llegamos al main. • IMPORTANTE: los errores de la clase Exception no se propagan. PROGRAMACIÓN – Daniel Santiago 19
  20. 20. 10.10. Propagación de excepciones • Observaremos en el siguiente ejemplo qué ocurre cuando se produce un error de tipo NumberFormatException y no lo capturamos en el método leerNumero. – Saldrá el mensaje de error que tenemos en el bloque catch en el main. PROGRAMACIÓN – Daniel Santiago 20
  21. 21. 10.10. Propagación de excepciones public static void main(String[] args) { int num; try{ System.out.println("Introduce un número: "); num = leerNumero(); System.out.println("El número es " + num); } catch(NumberFormatException e){ System.out.println("Has insertado letras en vez de números"); } } static int leerNumero(){ int numero = 0; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try{ numero = Integer.parseInt(br.readLine()); } catch(IOException e){ System.out.println("ERROR"); } return numero; } PROGRAMACIÓN – Daniel Santiago 21
  22. 22. 10.10. Propagación de excepciones • ¿Qué ocurrirá ahora si capturamos la excepción en el método leerNumero? – Ahora no debe ejecutarse el bloque catch del main. PROGRAMACIÓN – Daniel Santiago 22
  23. 23. 10.10. Propagación de excepciones public static void main(String[] args) { int num; try{ System.out.println("Introduce un número: "); num = leerNumero(); System.out.println("El número es " + num); } catch(NumberFormatException e){ System.out.println("Has insertado letras en vez de números"); } } static int leerNumero(){ int numero = 0; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try{ numero = Integer.parseInt(br.readLine()); } catch(Exception e){ //CAPTURAMOS EN ESTA FUNCIÓN CUALQUIER TIPO DE EXCEPCIÓN System.out.println("ERROR"); } return numero; } PROGRAMACIÓN – Daniel Santiago 23
  24. 24. 10.10. Propagación de excepciones • Con estos ejemplos vemos la utilidad de no capturar el error dentro del método donde se produce, sino dejarlo que se propague, debido a la necesidad de tener que controlarlo fuera. PROGRAMACIÓN – Daniel Santiago 24

×