Introducción a la Programación VII -...

3
12/1/10 1 Introducción a la Programación VII Curso de Programación en Java San<ago Muelas Pascual smuelas@fi.upm.es Noviembre 2010 Tipos de métodos En Java no existen funciones Todos son métodos Tienen que estar incluidos en una clase Dos <pos de métodos De instancia De clase Métodos de instancia Tiene que exis<r un objeto para poder llamarlos Se u<liza la variable que almacena la referencia de objeto para la invocación Ej: scanner.nextInt(); System.out.println(2); Pueden acceder a las variables de instancia Se verán en el siguiente módulo Métodos está<cos o de clase La clase coche puede tener variables que sean comunes a todos los objetos No necesitan que exista un objeto para poder ser llamados Ejemplos: nº ruedas, tamaño lunas, encendidoCoche()... Toyota Corolla Gris Diesel 2.0 Rojo Gasolina 1.8 Métodos está<cos o de clase II Tienen el modificador sta<c delante de la declaración del método Pueden acceder y modificar a las variables de clase se verán más adelante Se invocan o bien dentro de un método de la clase o por medio del iden<ficador de la clase Ej: MiClase.miMetodo(1,2,3); Math.sqrt(); Son los que vamos a u<lizar en los ejercicios Se verán en detalle en el siguiente módulo static tipo identificador (parámetros ...) { sentencias } Método Main Se denomina función principal (en inglés: main func<on) Es un método de clase Sirve de punto de inicio del programa Cualquier clases puede tener un método main Cuando se lanza java se especifica la clase que <ene el Main que se debe ejecutar Si ninguna clase <ene un main, java devuelve un error

Transcript of Introducción a la Programación VII -...

Page 1: Introducción a la Programación VII - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2010/... · 2012. 10. 8. · Introducción a la Programación VII Curso de Programación

12/1/10 

Introducción a la Programación VII 

Curso de Programación en Java   

San<ago Muelas Pascual [email protected] 

 Noviembre 2010 

Tipos de métodos 

  En Java no existen funciones  

  Todos son métodos    Tienen que estar incluidos en una clase 

  Dos <pos de métodos    De instancia    De clase 

Métodos de instancia 

  Tiene que exis<r un objeto para poder llamarlos    Se u<liza la variable que almacena la referencia de objeto para la 

invocación  Ej:  

scanner.nextInt();  System.out.println(2); 

  Pueden acceder a las variables de instancia 

  Se verán en el siguiente módulo 

Métodos está<cos o de clase 

  La clase coche puede tener variables que sean comunes a todos los objetos 

  No necesitan que exista un objeto para poder ser llamados 

  Ejemplos: nº ruedas, tamaño lunas, encendidoCoche()... 

Toyota Corolla 

Gris Diesel 2.0 

Rojo Gasolina 

1.8 

Métodos está<cos o de clase II 

  Tienen el modificador sta<c delante de la declaración del método 

  Pueden acceder y modificar a las variables de clase    se verán más adelante 

  Se invocan o bien dentro de un método de la clase o por medio del iden<ficador de la clase  Ej: MiClase.miMetodo(1,2,3); Math.sqrt(); 

  Son los que vamos a u<lizar en los ejercicios 

  Se verán en detalle en el siguiente módulo 

static tipo identificador (parámetros ...) {

sentencias

}

Método Main 

  Se denomina función principal (en inglés: main func<on) 

  Es un método de clase 

  Sirve de punto de inicio del programa 

  Cualquier clases puede tener un método main 

  Cuando se lanza java se especifica la clase que <ene el Main que se debe ejecutar 

  Si ninguna clase <ene un main, java devuelve un error 

Page 2: Introducción a la Programación VII - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2010/... · 2012. 10. 8. · Introducción a la Programación VII Curso de Programación

12/1/10 

Estructura 

public static void main( String[] args) {

sentencias

}

Argumentos del Main 

  ¿Qué son los args?    Un Array pero ¿Qué con<ene? 

  Los argumentos pasado por la línea de mandatos 

  Cuando ejecutamos un programa podemos pasarle argumentos    Ejemplo: opciones del ejecutable, datos, ... java MiPrograma 1 2 3 

  En args se encuentran cada uno de los argumentos pasados en formato String 

  Demostración en NetBeans 

 

Lista variable de argumentos 

  Se pueden crear métodos que reciban un número no especificado de argumentos 

  Se definiría un parámetro con el siguiente formato 

  int args... 

  Tiene que ser el úl<mo de los parámetros 

  Java lo que hace es conver<r los argumentos en un array    es sólo una facilidad 

Lista variable de argumentos 

static int suma(double... valores){

int suma=0;

for (int i=0; i<valores.length; i++) {

suma += valores[i];

}

return suma;

}

int res = suma(2,3);

int res = suma(2,3,4);

int res = suma(2,3,4,5);

Recursividad  Recursividad 

  Los métodos que hemos visto hasta ahora se llaman unos a otros de una manera jerárquica disciplinada 

  Para algunas problemas es ú<l el que los métodos se puedan llamar a sí mismos 

  El método sólo sabe como resolver un caso sencillo, el caso base 

  Para casos complejos, el método divide el problema:    Problema más simple 

  el método divide el problema hasta que sea resoluble    Paso de recursión 

Page 3: Introducción a la Programación VII - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2010/... · 2012. 10. 8. · Introducción a la Programación VII Curso de Programación

12/1/10 

Recursividad II 

  Ejemplo árbol Genealógico 

Descendientes ( persona )  

Si la persona no <ene hijos terminar      

Si <ene hijos devolver hijos + Descendientes(hijos)   

Recursividad vs Iteración 

static int fact(int num) {

if (num == 1)

return 1;

else

return num * fact(num-1);

}

static int fact(int num) {

int fact=1;

for(int i=num;i>1;i--) {

fact *= i;

}

return fact;

}

2! = 2 * 1 = 2 is returned

(a) Secuencia de llamdas recursivass. (b) Valores devueltos por cada llamada

Valor final = 120

5! = 5 * 24 = 120

4! = 4 * 6 = 24

3! = 3 * 2 = 6

1 returned

5!

1

4 * 3!

3 * 2!

2 * 1!

5!

1

4 * 3!

3 * 2!

2 * 1!

5 * 4! 5 * 4!

Detalle 

2! = 2 * 1! = 2

Recursividad vs Iteración II 

  Iteración    U<liza estructuras de repe<ción    Termina cuando no se cumple la condición del bucle    Control de la repe<ción por medio de un contador 

  Recursividad    U<liza estructuras de selección (if, else o switch)    Repe<ción por medio sucesivas llamadas a métodos    Termina cuando se sa<sface el caso base    Controla la repe<ción por medio de la división del problema en un 

casos más sencillo 

Recursividad vs Iteración III 

  Recursividad    Más sobrecarga en cada iteración    Consume más memoria    Todo problema recursivo se puede resolver de manera itera<va 

  Algunos problemas son mucho más sencillos de plantear de manera recursiva 

  Menor número de líneas de código