Universidad San Pedro SAD – Barranca
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 1 MÉTODOS
El concepto 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. DEFINICIÓN DE MÉTODOS DE UNA CLASE Para definir los métodos se emplea la siguiente sintaxis: [modifVisibilidad] [modifFunción] tipo nombreFunción (listaParámetros) { } modifVisibilidad se aplica las mismas normas que para atributos: public: indica que es un método accesible a través de una instancia del objeto. private: indica que a través de una instancia no es accesible el método. Al heredar el método se convierte en inaccesible. protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar desde la clase derivada. Sin especificar: indica visibilidad de paquete, se puede acceder a través de una instancia, pero sólo de clases que se encuentren en el mismo paquete. modifFunción puede tener los siguientes valores: static: el método pertenece a la clase, no a los objetos creados a partir de la clase. final: el método no puede ser sobrescrito en una clase derivada. abstract: En esta clase no se proporciona el código para la función, se debe de proporcionar en alguna clase derivada. En el caso de poseer un método abstracto la clase debe de llevar a su vez el modificador abstract. En caso de ser abstracto un método, se debe de sustituir las llaves que contienen el código por un punto y coma. native: Es un método no escrito en java, sino en código nativo, que será usado en java como un método propio de java. synchronized: Es un método que sólo puede ser ejecutado por un hilo, y hasta que ese hilo no acabe la llamada al método, no puede comenzar la llamada al método otro hilo. Lo emplearemos al trabajar con hilos. tipo es el tipo del valor devuelto por la función, pudiendo ser: Un tipo básico. Un objeto de una clase o interfaz. En este tipo de objetos se incluyen las matrices o vectores. void, en el caso de no devolver ningún valor. nombreFunc debe de ser un identificador válido en el lenguaje. listaParámetros es la lista de los parámetros que tomará la función separados por comas y definidos cada uno de ellos como: tipo nombreParámetro El método posee un par de llaves, dentro de las cuales estará el código que se ejecutará al ser llamada la función. Dicho código estará formado por instrucciones válidas en el lenguaje, finalizadas generalmente por punto y 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 parámetro, 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
Universidad San Pedro SAD – Barranca
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 2
El código que realmente implementa el método, llamado cuerpo del método, es formalmente un bloque de instrucciones. Ejemplo: /* 1) */ /* 2) */ /* 3) */ /* 4) */
int sumar(int a , int b) { return a + b; }
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. Ejemplo 01 import java.util.*; class suma { public static void main(String arg[ ]) { Scanner leer = new Scanner (System.in); int x,y; System.out.print("Ingrese 1° numero : "); x = leer.nextInt(); System.out.print("Ingrese 2° numero : "); y = leer.nextInt(); int s = suma(x,y);
Ejemplo 02: llamada a un método que determina si un número es par o impar import java.util.*; class Ejercicio { public static void main(String arg[ ]) { Scanner leer = new Scanner (System.in); int a; System.out.println("Ingrese un numero: "); a=leer.nextInt(); if ( par(a) == true) { System.out.println(a + " es par "); } else { System.out.println(a + " es impar"); } }
System.out.println("La suma es : " + s); }
public static boolean par(int num) { boolean p = false; if (num % 2 == 0) { p = true; } return p; }
public static int suma(int a,int b) { return a + b; } } } Ejemplo 03: Ingreso de Datos
return num; import java.util.*;
}
class Ejercicio {
public static void par(int num) { if (num % 2 == 0) { System.out.println(num + " es par "); } else { System.out.println(num + " es impar"); } }
static Scanner leer=new Scanner(System.in); public static void main(String arg[ ]) { int a; System.out.println("Ingrese un numero: "); a=validar(a=leer.nextInt()); par(a); } public static int validar(int num){ while(num<=0){ System.out.println("ERROR: El numero debe ser mayor que cero!!!"); System.out.print("Vuelva a ingresar: ");
}
Universidad San Pedro SAD – Barranca num=leer.nextInt(); }
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 3
Universidad San Pedro SAD – Barranca
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 4
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:
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
par(num) : boolean perfecto(num) : boolean ALGORITMO ALGORITMO MÉTODO par(num : entero) : boolean INICIO SI (MOD(num/2) == 0) ENTONCES RETORNAR true SINO RETORNAR false FIN SI FIN MÉTODO 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
MÉTODO 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 MÉTODO 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
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"
MÉTODO 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
FIN INICIO leer a , b s <- sumatoria (a,b) escribir "El valor de la sumatoria de " + a + " hasta " + b + " es : " + s
Universidad San Pedro SAD – Barranca
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 5 FIN
Universidad San Pedro SAD – Barranca
Escuela: Ingeniería Informática y de Sistemas. Curso: Fundamentos de Programación Ciclo: II Prof. Ing. CIP Jorge Pariasca León Página 6
UTILIZAR MÉTODOS PARA REALIZAR LOS SIGUIENTES EJERCICIOS 1.
2. 3.
4.
5.
Dados dos números enteros, se desea determinar si el primero es divisible por el segundo, si es cierto desplegar “es divisible” y si no lo es, desplegar “no es divisible”. Dado un número introducido por el usuario, indicar si éste es positivo, negativo o nulo. Calcular el promedio de calificaciones de un alumno. Las dos primeras notas valen 30% cada una y la tercera 40%. Si el promedio es mayor o igual a 13 imprimirá aprobado, de lo contrario dirá reprobado. Si el promedio es igual a 20, dirá alumno excelente. Se desea imprimir el nombre del alumno, código de la materia y el promedio obtenido. Realizar un programa que convierta soles a: a. Dólares b. Euros c. Yenes d. Libras Un colegio categoriza y cobra la mensualidad de sus estudiantes en base a la tabla siguiente: Categoría Mensualidad 1 500 2 600 3 700 Asimismo, hace un descuento en el costo de las mensualidades, en base al promedio obtenido por sus alumnos: Promedio Descuento 0 a 13 0% Más de 13 pero menos que 17 10% Más de 16 pero menos que 19 25% Más de 18 hasta 20 40%
Desarrolle una solución, que permita hallar y mostrar cuanto sería la mensualidad a pagar por un alumno, en base a su promedio y categoría. 6. Realizar un programa que determine según elección del usuario: a. Área del Cuadrado b. Área del Rectángulo c. Área del Triángulo d. Área del círculo 7. Desarrolle un menú de opciones con lo siguiente: [1] Ingresar un número. [2] Mostrar si en numero par o no [3] Mostrar si es múltiplo de 3 [4] Mostrar si es múltiplo de 5 [5] Finalizar la aplicación Solo se termina cuando se elige la opción 5, sino se continúa presentando el menú. 8. Desarrollar una solución que permita ingresar el nombre del alumno, el tipo de participante (profesor,
alumno, externo) y el nivel de curso (básico, intermedio, avanzado). En la tabla que se muestra a continuación se detallan los costos de los cursos: Básico Intermedio Avanzado (S/) (S/) (S/) Profesor 35 40 45 Alumno 40 50 60 Externo 60 80 100 Mostrar los datos del recibo, tal y como se muestra en el siguiente ejemplo: *****************RECIBO****************** Alumno : (de acuerdo al ingresado) Costo : (de acuerdo a la tabla) Nivel : (de acuerdo al ingresado) ******************************************* 9. En una empresa, se darán aumentos a los empleados según la categoría de su contrato actual de la siguiente forma: Clave de categoría
Categoría
Aumento %
S C D E
Sindicalizado Confianza Directivo Ejecutivo
25 13 8 5
Elabore un programa que solicite la clave de la categoría y el sueldo actual de un empleado y calcule e imprima el nuevo salario. 10. Desarrolle un programa en el cual se solicite un numero, luego presente un menú con las siguientes opciones: [1] Calcular y mostrar si es múltiplo de 6 [2] Calcular y mostrar el número de cifras [3] Calcular y mostrar si es primo o no [4] Calcular y mostrar si es par o no [5] Calcular y mostrar si es capicúa [6] Finalizar Solo se termina cuando se elige la opción 6, sino se continúa presentando el menú. 11. Desarrollar una solución que permita ingresar las edades de 10 alumnos. Determinar lo siguiente: • La suma de todas las edades. • La cantidad de edades impares. • El promedio de edades. • El promedio de edades pares. • La edad mayor. • La edad menor. 12. Hallar la tabla de multiplicar de un número positivo, preguntar si se desea continuar con otro número.