La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Capítulo 2 “Subprogramas/Funciones - Arreglos”

Presentaciones similares


Presentación del tema: "Capítulo 2 “Subprogramas/Funciones - Arreglos”"— Transcripción de la presentación:

1 Capítulo 2 “Subprogramas/Funciones - Arreglos”

2 Programas extensos y complejos
Un programa puede volverse complejo, esta complejidad puede ser abordada en tareas más simples, pequeñas y por lo tanto más manejables Enfocándonos en nuestro objetivo, procedemos a dividir nuestro problema en tarea más simples llamados subprogramas/funciones. “Divide et impera” - Divide y Conquista (Julio César)

3 Subprogramas/Funciones
Un elemento clave para diseñar programas es la creación de subprogramas/funciones Permiten: Organizar de mejor manera el código Reducir la cantidad de código redundante en un programa. Reutilizar código Solucionar problemas grandes de una forma más fácil Sentencias que se ejecutan muchas veces y que no están contenidas en un ciclo, por lo general se definen como un subprograma/función

4 Subprogramas/funciones en Java
Uno de los mecanismos de Java para implementar funciones o subprogramas es a través de los “métodos estáticos”:

5 Propiedades de los métodos estáticos
Parámetros: Se pueden usar en cualquier lugar del código del cuerpo de la función de la misma forma que se usan las variables locales. La diferencia es que los parámetros se inicializan con el valor de los argumentos provistos por la llamada. Alcance: El conjunto de sentencias que se pueden referir al nombre de las variables. El alcance de las variables en un método estático está limitado para el cuerpo del método (variables locales). Por lo tanto, no se puede referir a una variable en un método estático que esta declarado en otro.

6 Propiedades de los métodos estáticos
Múltiples métodos. Se pueden definir todos los métodos estáticos que se necesiten. Estos métodos son independientes, excepto aquellos que pueden interactuar a través de llamadas. Llamando a otros métodos estáticos: Los métodos estáticos definidos en un archivo .java pueden llamar a algún otro método estático en el mismo archivo o algún método estático en la biblioteca Java como Math. Múltiples parámetros: Como las funciones matemáticas, un método estático en Java puede tomar más de un argumento (o parámetros). Por ejemplo para calcular la hipotenusa de un triángulo con lados a y b; public static double calcularHipotenusa(double a, double b) { double auxiliar=Math.sqrt(a * a + b * b); return auxiliar; }

7 Usando y definiendo métodos estáticos
Ya se ha utilizado la Java Math library, que contiene métodos estáticos fáciles de entender. Por ejemplo, cuando escribimos Math.abs(a-b) en un programa, el efecto es como si se reemplazara el código por el valor computado por el método Java Math.abs() cuando se presenta con el valor a-b. Para crear este “efecto”, lo que se realiza es cambiar el flujo de control del programa.

8 Llamado de métodos

9 Ejemplo Implemente un programa que utilice un procedimiento que despliega un menú por pantalla Entrada: Opción del menú escogida Salida : Mostrar por pantalla la opción que se escogió

10 Ámbito de las variables
Las variables definidas en los programas se clasifican en: Variables Locales Declaradas y definidas dentro de un método Es visible solamente dentro de el método donde fue definida Es distinta de otras con el mismo nombre Puede ser declarada en cualquier parte del programa Variables Globales Es aquella que esta declarada en el programa principal fuera de todo método y con la palabra static para poder utilizarla desde el main. Es visible en todo el programa Si se declara una variable local con el mismo nombre, la variable local oculta a la global

11 Ejemplo public class Hipotenusa { //z: variable global
static double z; //a b: parametros public static double calcularHipotenusa(double a, double b) { // auxiliar: variable local double auxiliar=Math.sqrt(a * a + b * b); return auxiliar; } public static void main(String[] args) { // x y: variables locales double x,y; StdOut.println("Ingrese cateto X"); x=StdIn.readDouble(); StdOut.println("Ingrese cateto Y"); y=StdIn.readDouble(); z=calcularHipotenusa(x,y); StdOut.println("La hipotenusa vale:" + z);

12 Ámbito de las variables
Se aconseja programar en base a variables locales Hace a los métodos independientes Es más fácil la reutilización de código La comunicación entre métodos y programa principal, se realiza en base a los parámetros Para utilizar un método solo se debe saber lo que este hace, no se debe uno preocupar de cómo este fue diseñado

13 Parámetros Una lista de parámetros, o datos de entrada, puede ser incluida como parte del método. Esta lista de parámetros permite que ciertos datos sean transferidos al método desde el sub-programa que lo llama (mensaje).

14 Implemente un programa que calcule el i-esimo número de Fibonacci
Ejemplo Implemente un programa que calcule el i-esimo número de Fibonacci Entrada: El valor de i Salida: Mostrar por pantalla el i-esimo número de Fibonacci

15 Ejemplo Fibonacci public class FiboFunction { public static int fibo(int posicion) { int aux = 0, x1 = 1, x2 = 1; if (posicion == 1 || posicion == 2) return 1; else for (int i = 3; i <= posicion; i++) { aux = x2 + x1; x1 = x2; x2 = aux; } return aux; public static void main(String[] args) { StdOut.println(fibo(6)); Todo método termina su ejecución cuando encuentra un return, el cual debe devolver el tipo de dato acorde a lo declarado.

16 Los métodos pueden recibir datos de entrada de dos formas
Paso de parámetros Los métodos pueden recibir datos de entrada de dos formas Con Variables Globales, lo que no es recomendable pero se puede realizar Para un mayor control del flujo del programa y el valor de las variables se recomienta utilizar el Paso de parámetros

17 Existen dos formas de pasar parámetros a un método
Paso de parámetros Existen dos formas de pasar parámetros a un método Paso de parámetros por valor Para las variables de tipo primitivos Paso de parámetros por referencia Para objetos* (como los arreglos).

18 Es lo que hemos visto hasta ahora
Por valor Es lo que hemos visto hasta ahora El método trabaja con una copia de la variable o valor original El valor de la variable original que es pasada como parámetro no se altera dentro del método El método puede modificar la copia, pero no altera a la variable original

19 Paso por referencia Una manera para que los métodos trabajen con la variable original, en vez de utilizar una copia de estas, se le llama paso paso por referencia Para pasar un parámetro por referencia se debe utilizar objetos* (como los arreglos). *objetos se profundizan en C3

20 Paso por referencia Se crea un enlace entre el variable pasada como parámetro y la variable recibida en el método Toda modificación que se haga a la variable dentro del método se refleja en la variable original pasada como parámetro

21 Tenemos 0 Ejemplo por Valor public class Valor{
public static void llenarEntero(int i) { i=100; } public static void main(String[] args) { int numero=0; llenarEntero(numero); StdOut.println("Tenemos :" + numero);

22 Tenemos: 100 Ejemplo Referencia public class Referencia {
public static void llenarEntero(int i[]) { i[0]=100; } public static void main(String[] args) { int[] numero=new int[1]; numero[0]=0; llenarEntero(numero); StdOut.println("Tenemos :" + numero[0]);

23 Una función retorna al método que lo llamo cuando:
Retorno de una Función Una función retorna al método que lo llamo cuando: Se encuentra la llave que cierra la función O cuando la sentencia de return es ejecutada Puede ser usada con o sin un valor asociado Si el método fue declarado como aquella que retorna un valor de un cierto tipo, entonces debe retornar un valor. Solo funciones declaradas con tipo void pueden no usar el return

24 Fin Todavía es tiempo …


Descargar ppt "Capítulo 2 “Subprogramas/Funciones - Arreglos”"

Presentaciones similares


Anuncios Google