Profesionalizacion Java


Estructura repetitivas

publicado a la‎(s)‎ 26 jul. 2012 16:16 por Hernan Nina Hanco   [ actualizado el 26 jul. 2012 17:19 ]

Una de las características de las computadoras que aumentan considerablemente su potencia es su capacidad para ejecutar una tarea muchas (repetidas) veces con gran velocidad, precisión y fiabilidad. Las tareas repetitivas es algo que los humanos encontramos difíciles y tediosas de realizar. En este apartado se estudian las estructuras de control iterativas o repetitivas que realizan la repetición o iteración de acciones. Java soporta tres tipos de estructuras de control: los bucles while, for y do-while. Estas estructuras de control o sentencias repetitivas controlan el número de veces que una sentencia o listas de sentencias se ejecutan.

Ejemplo 1: Menú de opciones

import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author hernan
 */
public class ClasePrueba1 {
    static String nombre;
    public static void main(String[] args)
    {
        int op=0;
        do {
            mostrarMenu();
            Scanner entrada = new Scanner(System.in);
            op = entrada.nextInt();
            ejecutar(op);
        }while (op!=3);
    }
    public static void mostrarMenu()
    {
        System.out.println("Menu principal");
        System.out.println("1.- Ingresar un nombre ");
        System.out.println("2.- Mostrar el nombre ingresado");
        System.out.println();
        System.out.println("3.- Salir");
        System.out.print("Ingrese la opción: ");
    }
    
    public static void ejecutar(int op)
    {
        switch (op)
        {
            case 1: 
                leer();
                break;
            case 2:
                mostrar();
                break;
            default:
                break;
        }
       
    }
    public static void leer(){
        System.out.println("Ingrese su nombre: ");
        Scanner entrada = new Scanner(System.in);
        nombre = entrada.next();
    }
    public static void mostrar(){
        System.out.println("El nombre ingresado es: "+nombre);
    }

}


Estructuras Selectivas o de decisión

publicado a la‎(s)‎ 26 jul. 2012 16:12 por Hernan Nina Hanco

Ejemplo1: 

import javax.swing.JOptionPane; 
/** 
 * 
 * @author Ing. Hernán Nina Hanco 
 * Programa para leer un valor cualquiera N y escribir si 
 * dicho número es par o impar. 
 * 
 */ 
public class Main { 
 
public static void main(String[] args) { 
     //Declaraciones 
     String respuesta; //Salidas 
     int n; //Entradas 
     //Leer valor de N 
     String entrada; 
     entrada = JOptionPane.showInputDialog("Ingrese el valor de N:"); 
     n = Integer.parseInt(entrada); 
     //Verificar si el numero es par o impar 
     // 1) Asumir que el numero es impar 
     respuesta = "Impar"; 
     // 2) Si el número es divisible por 2 entonces la respuesta es par 
     if ((n % 2)==0){ 
         respuesta = "Par"; 
     } 
     //Escribir los resultados 
     JOptionPane.showMessageDialog(null, "El numero es: "+respuesta); 
 } 



Ejercicio 1. 
Modificar el programa para determinar si un número es par o impar y positivo o negativo 



Ejemplo2. 
/* 
 * Desarrolle un algoritmo que le permita leer un valor cualquiera N y 
 * escribir si dicho número es común divisor de otros dos valores 
 * leídos W y Z. 
 * 
 * Análisis: 
 * Para la variable N es común divisor de W y Z, se chequea 
 * si la división entre W/n y Z/n son exactas. 
 * En caso de ser exactas entonces la variable N es común 
 * divisor de los dos. En caso contrario no lo será. 
 */ 

import javax.swing.JOptionPane; 
/** 
 * 
 * @author Ing. Hernán Nina Hanco 
 */ 
public class Main { 

/** 
 * @param args the command line arguments 
 */ 
 public static void main(String[] args) { 
     // Declaraciones 
     String respuestaMCD; //Salida: mensaje que indica si n es MCD de w y z 
     int n,w,z; //Datos 
     //Leer los valores de n,w,z 
     n = Integer.parseInt(JOptionPane.showInputDialog("Ingrese N: ")); 
     w = Integer.parseInt(JOptionPane.showInputDialog("Ingrese W: ")); 
     z = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Z: ")); 
     // Determinar si N es MCD de los numeros W y Z 
     if ((w % n==0) && (z % n==0)) // N es divisible con W y Z 
     
         respuestaMCD = n+"\t es comun divisor de: "+w+"\t"+z; 
     
     else // N no es divisible por W o Z 
     
         respuestaMCD = n+"\t no es comun divisor de: "+w+"\t y \t"+z; 
     
     //Escribir resultados 
     JOptionPane.showMessageDialog(null, respuestaMCD); 
 } 
}


Ejercicio 2. 
Escriba un programa que le permita leer un valor cualquiera N y escribir si dicho número es común múltiplo de M y P. M y P también se deben leer desde el teclado. 
Ejercicio 3. 
Desarrolle un algoritmo que le permita leer 2 valores A y B e indicar si uno de los dos divide al otro exactamente. 
Ejercicio 4. 
Desarrolle un algoritmo que le permita leer dos valores A y B e indicar si el resultado de dividir la suma del los dos números entre la resta del primer número con el segundo es exacta.

Ejemplo 3. 

/* 
 * Desarrolle un programa que le permita leer tres valores A,B,C e indique 
 * cual es valor del centro. 
 * 
 * Análisis: Una vez leídos los valores en cada uno de los indicadores 
 * (variables A,B,C) se procede a comparar cada uno de ellos con los otros dos 
 * para verificar si es valor del centro o no. 
 * Un valor es del centro si es menor que uno y mayor que otro 
 * o el caso contrario. 
 * Igualmente se asume que los tres valores leídos son diferentes. 
 * 
 */ 

import javax.swing.JOptionPane; 
/** 
 * 
 * @author Ing. Hernán Nina Hanco 
 */ 
public class Main { 
 /** 
 * @param args the command line arguments 
 */ 
 public static void main(String[] args) { 
     // Declaraciones 
     int centro = 0; // Salidas 
     int a,b,c; // Entradas a,b,c deben ser diferentes 
     //Leer los datos 
     a = Integer.parseInt(JOptionPane.showInputDialog("Ingrese A: ")); 
     b = Integer.parseInt(JOptionPane.showInputDialog("Ingrese B: ")); 
     c = Integer.parseInt(JOptionPane.showInputDialog("Ingrese C: ")); 
     // Determinar cual es el Centro 
     //Verificar si A es centro 
     if ((a<b && a>c) || (a<c && a>b)) 
     
         centro = a; 
     
     //Verificar si B es centro 
     if ((b<a && b>c) || (b<c && b>a)) 
     
         centro = b; 
     
     //Verificar si C es centro 
     if ((c<b && c>a) || (c<a && c>b)) 
     
         centro = c; 
     
     // Escribir los resultados 
     JOptionPane.showMessageDialog(null, "El centro de ("+a+","+b+","+c+") es: "+centro); 
 } 


Ejercicio 5. Modifique el algoritmo para determinar el centro de cinco números enteros. 
Ejercicio 6. Desarrolle un algoritmo que le permita leer tres valores A,B,C e indicar si uno de los tres divide a los otros dos exactamente. 
Ejercicio 6. Desarrolle un algoritmo que le permita leer tres valores A,B,C e indicar si la suma de dos números cualquiera es igual al tercero. 


Ejemplo 4. 

/** 
 * Escribir un programa que introduzca el número de un mes (1 a 12) 
 * y visualice el número de días de ese mes. 
 */ 
import javax.swing.JOptionPane; 
/** 
 * @author Ing. Hernán Nina Hanco 
 */ 
public class Main { 
 /** 
 * @param args the command line arguments 
 */ 
 public static void main(String[] args) { 
     // Declaraciones 
     int nroDias=0; // Salidas 
     int mes; // Datos 
     int temp=0; // Variables auxiliares 
     // Leer el numero de mes 
     mes = Integer.parseInt(JOptionPane.showInputDialog("Ingrese Numero de Mes: ")); 
     // Determinar el Numero de días del mes leido 
     switch (mes){ 
         case 1: 
         case 3: 
         case 5: 
         case 7: 
         case 8: 
         case 10: 
         case 12: 
             nroDias=31; 
             break; 
         case 4: 
         case 6: 
         case 9: 
         case 11: 
             nroDias=30; 
             break; 
         case 2: 
             nroDias=28; 
             break; 
         default: 
             nroDias=-1; 
             break; 
     
     //Mostrar Resultados 
     if (nroDias>0){ 
         JOptionPane.showMessageDialog(null, "El numero de días del mes " +mes+ "\t es: "+nroDias); 
     
     else{ 
         JOptionPane.showMessageDialog(null, "El Mes es incorrecto o faltan datos"); 
     
 } 
}


Ejercicio 7. 
El domingo de Pascua es el primer domingo después de la primera luna llena posterior al equinoccio de primavera, y se determina mediante el siguiente cálculo sencillo: 
A = año mod 19 
B = año mod 4 
C = año mod 7 
D = (19 * A + 24) mod 30 
E = (2 * B + 4 * C + 6 * D + 5) mod 7 
N = (22 + D + E) 
Donde N indica el número de día del mes de marzo (si N es igual o menor que 3) o abril (si es mayor que 31). Construir un programa que determine fechas de domingos de Pascua. 


Ejemplo 5: Escribe un programa para validar una fecha 

/* 
 * Enunciado de un problema: 
 * 
 * Escribe un programa para validar una fecha dado el día, mes y año. 
 * Considerar la fecha desde el 01-01-1970 
 * 
 */ 
import javax.swing.JOptionPane; 
/** 
 * 
 * @author Ing. Hernán Nina Hanco 
 */ 
public class Main { 
 /** 
 * @param args the command line arguments 
 */ 
 public static void main(String[] args) { 
     // (1) Declaraciones 
     boolean fechaValida=false; // Resultados 
     int dia, mes, anio; // Datos 
     // (2) leer el dia, mes y año de la fecha 
     dia = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Día: ")); 
     mes = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Mes: ")); 
     anio = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Año: ")); 
     // (3) Determinar si la fecha es valida 
     // Evaluar la fecha agrupando por meses 
     switch (mes){ 
         case 1: 
         case 3: 
         case 5: 
         case 7: 
         case 8: 
         case 10: 
         case 12: 
         
             // para el caso de los meses 1,3,5,7,8,10 y 12 
             // Si el dia esta entre 1 y 31 y el año es mayor a 1970 
             // Entonces la fecha es valida 
             if ((dia >=1 && dia <=31) && (anio >=1970)) 
             
                 fechaValida = true; 
             
             break; 
         
         case 4: 
         case 6: 
         case 9: 
         case 11: 
         
             // para el caso de los meses 4,6,9,11 
             // Si el dia esta entre 1 y 30 y el año es mayor a 1970 
             // Entonces la fecha es valida 
             if ((dia >=1 && dia <=30) && (anio >=1970)) 
             
                 fechaValida = true; 
             
             break; 
         
         case 2: 
         
             // para el caso del mes 2 
             // Si el año es bisiesto y mayor a 1970 
             // y Si el numero de días esta entre 1 y 29 
             // Entonces la fecha es valida 
             if ((anio >=1970 && anio % 4 == 0) && (dia >=1 && dia <=29)) 
             
                 fechaValida = true; 
             
             // para el caso del mes 2 
             // Si el año no es bisiesto y mayor a 1970 
             // y Si el numero de días esta entre 1 y 28 
             // Entonces la fecha es valida 
             if ((anio >=1970 && anio % 4 != 0) && (dia >=1 && dia <=28)) 
             { 
                 fechaValida = true; 
             } 
             break; 
     
     default: 
     
         // Si ninguno de los casos se cumple entonces 
         // la fecha no es valida 
         fechaValida = false; 
         break; 
     
 } 
     //Mostrar Resultados 
     if (fechaValida == true){ 
         JOptionPane.showMessageDialog(null, "Fecha Valida!!!"); 
     
     else 
     
         JOptionPane.showMessageDialog(null, "Fecha Invalida!!!"); 
     
  
}


Ejemplo 8: Escribir un programa para calcular recibo de Luz 

/* 
 * Calcular costo de recibo de luz según el gasto de corriente eléctrica. 
 * Para un gasto menor de 1000Kwxh la tarifa es 1.2, entre 1000y 1850Kwxh es 1.0 
 * y mayor de 1850Kwxh 0.9. 
 */ 
import javax.swing.JOptionPane; 

/** 
 * @author Ing. Hernán Nina Hanco 
 */ 
public class Main { 
 /** 
 * @param args the command line arguments 
 */ 
 public static void main(String[] args) { 
     // (1)Declaraciones 
     double costoDeRecibo=0; // Salidas 
     double gastoDeEnergia; // Entradas 
     // (2) Leer el gasto de energia electrica 
     String entrada; 
     entrada = JOptionPane.showInputDialog("Gasto de energía eléctrica: "); 
     gastoDeEnergia = Double.parseDouble(entrada); 
     // (3) Calcular el costo del recibo 
     //Caso 1: gato de enercia menor a 1000 
     if (gastoDeEnergia <1000) 
     { 
         costoDeRecibo = gastoDeEnergia*1.2d; 
     } 
     else if (gastoDeEnergia >=1000 && gastoDeEnergia<=1850) // Caso 2: 
     { 
         costoDeRecibo = gastoDeEnergia*1.0d; 
     } 
     else if (gastoDeEnergia >1850) // Caso 3: 
     { 
         costoDeRecibo = gastoDeEnergia*0.9d; 
     } 
     // (4) Mostrar Resultados 
     JOptionPane.showMessageDialog(null, "El costo de Recibo es: "+costoDeRecibo); 
 } 
}


Ejemplo 9: Calculador Simple 


/* 
 * Escribir y ejecutar un programa que simule un calculador simple. 
 * Lee dos enteros y un carácter. Si el carácter es un +, se imprime la suma; 
 * si es un -, se imprime la diferencia; si es un *, se imprime el producto; 
 * si es un /, se imprime el cociente; y si es un % se imprime el resto. 
 */ 

import javax.swing.JOptionPane; 
public class Main { 
 public static void main(String[] args) { 
     // (1) Declaraciones 
     // Resultados 
     int resultado=0; 
     // Datos 
     int numero1, numero2; 
     String operador; 
     // (2) Leer los dos enteros y el carater de operación 
     numero1 = Integer.parseInt(JOptionPane.showInputDialog("Numero1: ")); 
     numero2 = Integer.parseInt(JOptionPane.showInputDialog("Numero2: ")); 
     operador = JOptionPane.showInputDialog("Escriba el Operador: "); 
     // (3) Efectuar la operación elegida 
     char ordinal = operador.toCharArray()[0]; 
     switch (ordinal){ 
     case '+': 
     
         resultado=numero1+numero2; 
         break; 
     
     case '-': 
     
         resultado=numero1-numero2; 
         break; 
     
     case '*': 
     
         resultado=numero1*numero2; 
         break; 
     
     case '/': 
     
         resultado=numero1/numero2; 
         break; 
     
     case '%': 
     
         resultado=numero1%numero2; 
         break; 
     
 } 
 // (4) Mostrar resultado 
 JOptionPane.showMessageDialog(null, numero1+"\t"+operador+"\t"+numero2+ "="+ resultado); 
 } 


Ejercicios propuestos 

1. Escribir un programa para determinar si un numero es cuadrado perfecto 
2. Se desea calcular el salario neto semanal de los trabajadores de una empresa de acuerdo a las siguientes normas: 
  • · Horas semanales trabajadas < 38 a una tasa dada 
  • · Horas extras (38 o más) a una tasa 50 por 100 superior a la ordinaria. 
  • · Impuestos 0 por 100, si el salario bruto es menor o igual a 50000 Soles. 
  • · Impuestos 10 por 100, si el salario bruto es mayor de 50000 Soles. 
3. Escribe un programa que permita determinar la fecha del día siguiente y fecha del día anterior conociendo la fecha actual 
4. Se quiere calcular la edad de un individuo, para ello se va a tener como entrada dos fechas en el formato día (1 a 31), mes (1 a 12) y año (entero de cuatro dígitos), correspondientes a la fecha de nacimiento y la fecha actual, respectivamente. Escribir un programa que calcule y visualice la edad del individuo. Si es la fecha de un bebe (menos de un año de edad), la edad se debe dar en meses y días; en caso contrario, la edad se calculará en años. 
5. Escribir un programa que determine si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo, 1984). Sin embargo, los años múltiplos de 100 sólo son bisiestos cuando a la vez son múltiples de 400 (por ejemplo, 1800 no es bisiesto, mientras que 2000 sí lo será). 
6. Escribir un programa que calcule el número de días de un mes, dados los valores numéricos del mes y el año. 
7. Elaborar un programa para determinar si un triangulo es Rectángulo, Isósceles o Equilátero dado los lados de un triangulo 
8. Escribir un programa para determinar si dos triángulos son congruentes dado los lados de un triangulo y los ángulos.

1-2 of 2