Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

Métodos

El comcepto de método consiste es una forma de encapsular un conjunto de instrucciones dentro de una declaración específica (llamada generalmente SUBPROGRAMA), permitiendo la descomposición funcional y la diferenciación de tareas.

La declaración de un método está formada por una cabecera y un cuerpo.



Estructuración en Java

La codificación de un método consiste en una cabecera para su identificación y de un cuerpo que contiene las sentencias que éste ejecuta. La cabecera se compone de un nombre (identificador del método), el tipo del resultado(tipos primitivos o clases) y una lista de parámetros, que puede contener cero o más variables.

La lista de parámetros consiste en cero o más parámetros formales (variables), cada uno de ellos con un tipo.
En caso que el método tenga más de un parámetro, estos deben ir separados con una coma.

Llamada a un método

Los métodos pueden ser invocados o llamados de cualquier método de la clase, incluido él mismo.
Además, cuando se invoca, hay que pasar un valor a cada paramétro, a través de una variable o un valor constante. En Java, la acción de pasar valores a parámetros de tipo primitivo (int, double, boolean, char..) se denomina paso de parámetros por valor
En éste caso, los argumentos que se pasan, no pueden ser modificados por la función.

En caso que el parámetro sea de tipo Clase o arreglo, lo que se está haciendo es un paso de parámetros por referencia, y en este caso, los parámetros si pueden ser modificados por el método

Cuerpo

El código que realmente implementa el método,llamado cuerpo del método ,es formalmente un bloque de instrucciones.

Ejemplo

/* 1) */    int sumar(int a , int b)
/* 2) */    {
/* 3) */        return a + b;
/* 4) */    }

1) cabecera del método : int sumar(int a,int b)

tipo del resultado : int
nombre del método : sumar
lista de parámetros : int a,int b

2) comienzo del bloque o cuerpo del método

3) Instrucción : se retorna la suma de a y b

4) fin del bloque

Si se coloca las palabras public static antes del método se logra un comportamiento de tipo global.

import java.io.*;
class suma
{
    public static void main(String arg[ ]) throws IOException
    {
        int x,y;

        BufferedReader in = new BufferedReader(new 
            InputStreamReader(System.in));

        System.out.print("Ingrese un numero : ");
        x = Integer.parseInt(in.readLine( ));
    
        System.out.print("Ingrese un numero : ");
        y = Integer.parseInt(in.readLine( ));
    
        int s = suma(x,y);
        
        System.out.println("La suma es : " + s);
    }    
    
    public static int suma(int a,int b)
    {
        return a + b;    
    }
    
}
Bajar archivo

Salida a pantalla




Ejemplo de llamada a un método que determina si un número es par o impar

class metodo1
{
    public static void main(String arg[ ])
    {
        int a = 5;
        
        if ( par(a) == true)
        {
            System.out.println(a + " es par ");    
        }
        else
        {
            System.out.println(a + " es impar");    
        }
    }    
    
    public static boolean par(int num)
    {
        boolean p = false;
        if (num % 2 == 0) 
        {
            p = true;
        }    
        
        return p;
    }
}
Bajar archivo



Ejemplo

Tomando los algoritmos para invertir un numero especificados en la sección de Manipulación numérica implementar un programa en java que determine los 100 primeros números palíndromes a partir de un número ingresado por teclado en adelante, llamando al método : invertir_num.


Código fuente

import java.io.*;
class palindromes
{
    public static void main(String Arg[ ]) throws IOException
    {
        int numero = 0;
        int contador = 0;
         
        BufferedReader in = new BufferedReader(new 
            InputStreamReader(System.in));

        System.out.print("Ingrese numero : ");
        numero = Integer.parseInt(in.readLine( ));
              
        System.out.println("\nLos 100 primeros palindromes a contar del " + numero);
        System.out.println("\n");
     
        while (contador < 100)
        {
            if ( invertir_num(numero) == numero)
            {
                System.out.print(numero + "\t");        
                contador++;
            }
            
            numero++;
        }
    }


    public static int invertir_num ( int num )
    {
        int div_entera,resto,num_inv;    
        
        num_inv = 0;
        div_entera = num;
        resto = 0;
        
        while (div_entera != 0) 
        {
            resto  = div_entera % 10;
            div_entera = div_entera / 10;
            num_inv = num_inv * 10 + resto;
        }

        return num_inv;    
    }
}
Bajar archivo

Ejercicios

1) Traducir a Java los siguientes algoritmos



a) Se quiere determinar cuantos y cuales números perfectos y pares, existen 
entre a y b.

**nota : un numero perfecto es aquel que la suma de sus divisores sea igual 
al numero
ej --> 6 : 1 + 2 + 3


Para ello el usuario, debe ingresar por teclado dos números enteros (a y b) e 
implementar dos funciones :

    par(num) : boolean
    perfecto(num) : boolean 

ALGORITMO
---------

FUNCION par(num : entero) : boolean
INICIO
    SI (MOD(num/2) == 0) ENTONCES
        RETORNAR true
    SINO
        RETORNAR false
    FIN SI
FIN


FUNCION perfecto(num : entero) : boolean
INICIO
    sum <-- 0
    PARA i <-- 1 HASTA num - 1 HACER
        SI(RESTO(num/i) == 0) ENTONCES
            sum <-- sum + i
        FIN SI
    FIN PARA

    SI (sum == num) ENTONCES
        RETORNAR true
    SINO
        RETORNAR false
    FIN SI

FIN


INICIO
    cont <-- 0    
    leer a , b
    
    PARA i <-- a HASTA b HACER
        SI (par(i) == true y perfecto(i) == true) ENTONCES
            escribir i
            cont <-- cont + 1
        FIN SI
    FIN PARA

    Escribir "Existen " + cont + " numeros que cumplen la condicion"

FIN




b) Se desea saber el valor de la siguiente sumatoria

s = SUMATORIA x^2 - y   : desde a hasta b

siendo x : numero primo  e   y = numero multiplo de 5 o 7


Para ello se implemetaran tres funciones o métodos

    sumatoria(a : entero, b : entero) : entero
    primo(num : entero) : boolean
    multiploEspecial(num : entero) : boolean


ALGORITMO
---------

FUNCION primo(num : entero) : boolean
INICIO
    cont <-- 0
    PARA i <-- 1 HASTA num - 1 HACER
        SI (MOD(num/i) == 0) ENTONCES
            cont <-- cont + 1
        FIN SI
    FIN PARA

    SI (cont < 2) ENTONCES
        RETORNAR true
    SINO
        RETORNAR false
    FIN SI
FIN

FUNCION multiploEspecial(num : entero) : boolean
INICIO
    aux <- false
    SI (MOD(num/5) == 0   OR  MOD(num/7) == 0 ) ENTONCES
        aux <-- NOT aux
    FIN SI
    RETORNAR aux
FIN


FUNCION sumatoria(a : entero, b : entero) : entero
INICIO
    sum <- 0
    PARA i <- a HASTA b HACER
        SI (primo(i) == true) ENTONCES
            sum <-- sum + i * i
        FIN SI

        SI (multiploEspecial(i) == true) ENTONCES
            sum <-- sum - i
        FIN SI
    FIN PARA
 
    RETORNAR sum
FIN


INICIO
    leer a , b
    s <-- sumatoria(a,b)
    escribir "El valor de la sumatoria de " + a + " hasta " + b + " es : " + s
FIN  


SOLUCIÓN DE EJERCICIOS
(*nota : tratar de desarrollar el ejercicio, para después compararlo con la solución).