|
|||||||
|
|
|
|||||
|
|
|||||||
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