Procedimientos en Java
EJEMPLO { MenuDeOpciones } Se quiere escribir un programa que muestre en la pantalla un menú con 4 opciones:
- Visualizar los números enteros del 1 al 10.
- Visualizar la tabla de multiplicar del número 8.
- Visualizar las primeras diez potencias del número 2 (del 21 al 210).
- Salir.
Seguidamente, el programa debe solicitar por teclado al usuario que introduzca la opción deseada y ejecutarla. De tal forma que, por pantalla se podrá ver algo similar a:
Para tal fin, el siguiente código es una posible solución:
import java.util.Scanner;
public class MenuDeOpciones
{
public static void main(String[] args)
{
char opcion;
int numero, contador, resultado;
Scanner teclado = new Scanner(System.in);
do
{
System.out.printf("\n>>> MENÚ DE OPCIONES <<<");
System.out.printf("\n1. Números del 1 al 10.");
System.out.printf("\n2. Tabla de multiplicar del 8.");
System.out.printf("\n3. Primeras diez potencias de 2.");
System.out.printf("\n4. Salir.");
do
{
System.out.printf("\nIntroduzca opción (1-4): ");
opcion = teclado.next().charAt(0);
}
while(opcion < '1' || opcion > '4');
System.out.printf("\n");
switch(opcion)
{
case '1': for(numero = 1; numero <= 10; numero++)
System.out.printf("%d ", numero);
System.out.printf("\n");
break;
case '2': for(contador = 1; contador <= 10; contador++)
{
resultado = contador * 8;
System.out.printf("8 * %d = %d\n", contador, resultado);
}
break;
case '3': for(contador = 1; contador <= 10; contador++)
System.out.printf("%d ", (int) Math.pow(2, contador));
System.out.printf("\n");
}
}
while(opcion != '4');
}
}
No obstante, considerando a cada una de las opciones del menú como un subproblema a resolver utilizando un procedimiento y, por otra parte, teniendo en cuenta que en Java los procedimientos se implementan como métodos, el código fuente podría ser:
import java.util.Scanner;
public class MenuDeOpciones2
{
public static void main(String[] args)
{
char opcion;
Scanner teclado = new Scanner(System.in);
do
{
mostrarMenu();
do
{
System.out.printf("\nIntroduzca opción (1-4): ");
opcion = teclado.next().charAt(0);
}
while(opcion < '1' || opcion > '4');
System.out.printf("\n");
switch(opcion)
{
case '1': numerosDelUnoAlDiez();
break;
case '2': tablaDel8();
break;
case '3': potenciasDe2();
}
}
while(opcion != '4');
}
private static void mostrarMenu()
{
System.out.printf("\n>>> MENÚ DE OPCIONES <<<");
System.out.printf("\n1. Números del 1 al 10.");
System.out.printf("\n2. Tabla de multiplicar del 8.");
System.out.printf("\n3. Primeras diez potencias de 2.");
System.out.printf("\n4. Salir.");
}
private static void numerosDelUnoAlDiez()
{
int numero;
for(numero = 1; numero <= 10; numero++)
System.out.printf("%d ", numero);
System.out.printf("\n");
}
private static void tablaDel8()
{
int contador, resultado;
for(contador = 1; contador <= 10; contador++)
{
resultado = contador * 8;
System.out.printf("8 * %d = %d\n", contador, resultado);
}
}
private static void potenciasDe2()
{
int contador;
for(contador = 1; contador <= 10; contador++)
System.out.printf("%d ", (int) Math.pow(2, contador));
System.out.printf("\n");
}
}
Fíjese que, además de los métodos numerosDelUnoAlDiez, tablaDel8, y potenciasDe2, también se ha creado mostrarMenu para mostrar el menú de opciones. Por otra parte, como se puede apreciar:
- Todos ellos son de tipo void, ya que, no devuelven ningún valor.
- A ninguno se les pasa parámetros, aunque sí podrían recibirlos.