Introducción Programación Modular y a Métodos: Consideremos el siguiente ejercicio: Ejercicio: Escriba una aplicación que requiera un número real como entrada y que muestre el producto del número y tres. Algoritmo (usando pseudocódigo): Entrada: Un número real cualquiera. Propósito: Triplicar el número entrado. Salida: El triple del número entrado. import java.util.*; clase Triplica {//comienza la clase Triplica. método void main (String[] args) {//módulo principal o conductor mensajeInicial();//se invoca el método mensajeInicial sin argumentos double numero ← entrada();// numero ← triplica (numero);//se invoca el método triplica con un argumento salida (numero); }//termina método main método void mensajeInicial(){//Método sin parámetros. //Muestra un mensaje explicando el propósito de la aplicación. System.out.println("Esta aplicacion solicita un numero real cualquiera,lo multiplica por 3 y muestra el resultado."); }//termina método mensajeInicial método double entrada(){ //Solicita el número a ser triplicado. Scanner teclado ← new Scanner(System.in); System.out.print("Entre el numero a ser triplicado: "); double numero ← teclado.nextDouble(); return numero; }//termina método entrada método double triplica(double numero){ //Triplica el número solicitado. return 3*numero; }//termina metodo triplica método void salida(double numero){ System.out.println("El triple del numero entrado es: "+ numero); }//termina el método salida }//termina clase salida Copyright © CARIMOBITS 1 Código correspondiente: /* Programa resultado. que solicita un número real cualquier, lo triplica y muestra el Archivo: Triplica.java */ import java.util.*; public class Triplica {//comienza la clase Triplica. public static void main (String[] args) {//Módulo principal conductor. mensajeInicial(); double numero = entrada(); numero = triplica(numero); salida (numero); }//termina método main public static void mensajeInicial(){//Método sin parámetros. //Muestra un mensaje explicando el propósito de la aplicación. System.out.println("Esta aplicacion solicita un numero real cualquiera,lo multiplica por 3 y muestra el resultado."); System.out.println(); }//termina método mensajeInicial public static double entrada(){ //Solicita el número a ser triplicado. Scanner teclado; teclado = new Scanner(System.in); System.out.print("Entre el numero a ser triplicado: "); double numero = teclado.nextDouble(); return numero; }//termina método entrada public static double triplica(double numero){//método con un parámetro //Triplica el número solicitado. return 3*numero; }//termina metodo triplica public static void salida(double numero){ System.out.println("El triple del numero entrado es: "+ numero); }//termina el metodo salida }//termina clase Triplica Copyright © CARIMOBITS 2 Los métodos se pueden utilizar para dividir un programa complejo en partes más pequeñas y manejables. En vez de codificar solamente un método que contenga todas las instrucciones necesarias para resolver un problema, se puede dividir el programa en varios métodos para que cada uno de ellos resuelva una parte específica del problema. Luego, los métodos se ejecutarán en el orden correspondiente. Este tipo de estrategia de programación se conoce como “divide y conquistarás” (“divide and conquer”). En general, un método es una colección de instrucciones que llevan a cabo tareas específicas en la solución de un problema. Otra razón para utilizar métodos como parte de un programa es que simplifican la programación en el caso de que una tarea particular se deba llevar a cabo en varias partes del programa. En vez de repetir las mismas líneas de código una y otra vez cada vez que se necesita llevar a cabo esa tarea, simplemente se invoca el método correspondiente tantas veces como sea necesario. Un método puede tener por nombre cualquier identificador válido distinto de los ya utilizados en la clase en que está definido. En esta parte del curso estudiaremos dos categorías generales de métodos: métodos void y métodos que devuelve un valor. Un método void es uno que solamente realiza una tarea y luego, termina. Un ejemplo de un método void es System.out.println. En la instrucción System.out.println("Programa para calcular y mostrar el perimetro y area de un cuadrado."); muestra una línea de salida en pantalla y luego termina. Un método que devuelve un valor no solamente realiza una tarea; además devuelve un valor al código que lo invoca. Un ejemplo de un método que devuelve un valor es teclado.nextDouble(). En la instrucción anchura = teclado.nextDouble(); devuelve un valor el cual se le asigna a la variable anchura. En la declaración de un método que devuelve un valor se indica el tipo de valor que devuelve y se incluye entre paréntesis, luego del nombre de método, de ser necesario, una lista formal de parámetros de entrada separados por comas precedidos por sus tipos correspondientes. La forma general de una declaración de método es: tipo_del valor_vuelto nombre_del_método( lista-formal-de-parámetros ) { cuerpo_del_método; } tipo_del valor_vuelto nombre_del_método( ) {//sin parámetros cuerpo_del_método; Copyright © CARIMOBITS 3 } Por ejemplo el siguiente método devuelve el perímetro de un cuadrado de lado con longitud a: public static double perimetroCuadrado(double a) { double perimetro = 4 * a; return perimetro; } En el caso de que no se desee devolver ningún valor se deberá indicar como tipo la palabra reservada void. Así mismo, si no se incluyen parámetros, la declaración del método debería incluir un par de paréntesis vacíos: public static void mensajeInicial() { //Muestra el propósito de la aplicación. System.out.println("Esta aplicación determina y muestra las soluciones reales de una ecuación cuadrática con coeficientes reales."); } Para crear un método primero se tiene que escribir su definición, la cual consiste de dos partes: un encabezamiento y un cuerpo. El encabezamiento del método, que es lo primero que aparece en la definción del método, lista varias cosas importantes sobre el método, incluyendo su nombre. El cuerpo del método es un conjunto de instrucciones que se correrán cuando se ejecute el método. Las instrucciones se encierran entre llaves. Partes de un método: Consideremos el siguiente encabezamiento: Indentificadores Tipo Nombre Paréntesis del del del método retorno método public static void mensajeInicial () Explicación del las partes: ● Identificadores del método: Las palabras reservadas public y static se llaman modificadores. Las palabra public significa que el método está disponible públicamente a código fuera de la clase. La palabra static significa que el método pertenece a la clase y no a un objeto específico. ● Tipo del retorno: Cuando la palabra void aparece en esa parte del encabezamiento significa que el método no devuelve un valor. Si devuelve un valor, entonces se debe indicar el tipo de datos del valor que el método devuelve. Copyright © CARIMOBITS 4 ● Nombre del método: El nombre del método sigue las reglas de un identificador en Java. El nombre del método sebe sugerir su uso o propósito; esto es, debe estar autodocumentado. ● Paréntesis: Los paréntesis son obligatorios y se puede incluir cero o varios parámetros. Se deben incluir parámetros si el método va a recibir argumentos. Ejercicios: Escriba cada uno de los siguientes algoritmos en pseudocódigo y usando programación modular; luego, codifíquelos. Cada aplicación debe contener, entre otros, un método para entrada de datos, otro para procesamiento de los datos y un método de salida de resultados. 1. Algoritmo para convertir una temperatura entrada en la escala Celsio a la equivalente en la escala Fahrenheit. Usa la fórmula F = (9/5)C + 32. ENTRADA: PROPÓSITO: SALIDA: Temperatura en grados Celsio. Convertir la temperatura a grados Fahrenheit. Temperatura en grados Fahrenheit. Pasos: 1. Entrar la temperatura en grados Celsio. 1.1 Celsio← cantidad de grados en la escala Celsio 2. Convertir la temperatura en grados Fahrenheit. 2.1 Fahrenheit ← (9/5) x Celsio + 32 3. Mostrar resultados 3.1 Temperatura en grados Fahrenheit. 2. Algoritmo para calcular el perímetro y área de un cuadrado, dado un lado de él. ENTRADA: PROPÓSITO: SALIDA: La longitud del lado del cuadrado. Calcular el perímetro y área del cuadrado. El perímetro y área del cuadrado. Pasos: 1. Entrar Longitud. 2. Calcular el perímetro y área del cuadrado. 2.1 Perímetro ← 4 x Longitud. 2.2 Área ← Longitud x Longitud 3. Mostrar resultados 3.1 Perímetro 3.2 Área Copyright © CARIMOBITS 5 3. Algoritmo para calcular las soluciones reales de una ecuación de la forma Ax2 + Bx + C = 0, donde A, B y C son números reales, con A ≠ 0. Si la ecuación no tiene soluciones reales, lo indica. Hace uso de la fórmula cuadrática. ENTRADA: PROPÓSITO: SALIDA: Los valores de A, B y C. Calcular las soluciones reales de una ecuación cuadrática con coeficientes reales. Las soluciones reales de una ecuación cuadrática. Pasos: 1. Entrar los valores de A, B y C. 2. Calcular el valor de Discriminante. 2.1 Discriminante B 2−4AC 3. Si entonces, −B Discriminante 3.1 Solución1 ← 2A −B− Discriminante 3.2 Solución2 ← 2A 3.3 Mostrar Solución1 3.4 Mostrar Solución2 Discriminante ≥0 De otra forma, 3.5 Indicar que no hay soluciones reales. 4. Escriba un algoritmo para que determine y muestre el resultado de la suma 1 + 2 + 3 + ... + 500. ENTRADA: PROPÓSITO: SALIDA: Los números enteros consecutivos del 1 al 500. Determinar la suma de los números considerados. La suma de los números considerados. Pasos: 1. Iniciar Suma y Próximo. 1.1 Suma ← 0 1.2 Próximo ← 1 2. Mientras Próximo≤500 2.1 Suma ←Suma + Próximo 2.2 Próximo ← Próximo + 1 3. Mostrar resultados. 3.1 Suma Copyright © CARIMOBITS 6