estructura de datos programas
TRANSCRIPT
Estructura de Datos
Practicas en Java
PROYECTO
DIAZ MIRON MAC DONOUGH GABRIEL
Medrano Pérez José Antonio
Grupo: 1303
Septiembre del 2012
1
Problema: Elabore un programa que imprima el mensaje “Hola!” En la pantalla.
//Programa #1: Imprime "Hola!" en pantalla
class Mensaje{
public static void main(String [] args){
System.out.println("Hola!");
}
}
Problema: Elaborar un programa que muestre el funcionamiento de los operadores relacionales y lógicos.
//Programa #2: Operadores Relacionales y Logicos
class OpsRL{
public static void main(String[] args) {
int i=10, j=11;
if (i<j) System.out.println("i<j");
if (i<=j) System.out.println("i<=j");
if (i!=j) System.out.println("i!=j");
if (i==j) System.out.println("esto no se ejecuta");
if (i>=j) System.out.println("esto no se ejecuta");
if (i>j) System.out.println("esto no se ejecuta");
boolean b1=true, b2=false;
if (b1 & b2) System.out.println("esto no se ejecuta");
if (!(b1 & b2)) System.out.println("!(b1 & b2) es verdadero");
if (b1 | b2) System.out.println("b2|b1 es verdadero");
if (b1 ^ b2) System.out.println("b1 ^ b2 es verdadero");
}
}
2
Problema: Elaborar un programa que muestre el funcionamiento de los operadores lógicos de cortocircuito. //Programa #3: Operadores de Cortocircuito
class OpsCC{
public static void main(String[] args) {
int n=10, d=2;
if (d!=0 && (n%d)==0) {
System.out.println(d+" es un factor de "+n);
}
d=0;
if (d!=0 && (n%d)==0) {
System.out.println(d+" es un factor de "+n);
}
}
}
3
Problema: Elabore un programa que imprima el mensaje “Hola!” 10 veces. //Programa #4: imprime "Hola!" 10 veces
class ForDemo{
public static void main(String[] args) {
for (int i=1;i<=10 ;i++ ) {
System.out.println("Hola!");
}
}
}
4
Problema: Elabore un programa que imprima el mensaje “Hola!” 10 veces. //Programa #5: imprime "Hola!" 10 veces
class DoDemo{
public static void main(String[] args) {
int i=0;
do{
System.out.println("Hola!");
i++;
}
while(i<10);
}
}
Problema: Elabore un programa que imprima el mensaje “Hola!” 10 veces. //Programa #6: imprime "Hola!" 10 veces
class WhileDemo{
public static void main(String[] args) {
int i=0;
while(i<10){
System.out.println("Hola!");
i++;
}
}
}
5
Problema: Elabore un programa que muestre como funciona la estructura selectiva switch.
//Programa #7: Muestra el funcionamiento de Switch
class SwitchDemo{
public static void main(String[] args) {
int option=3;
switch(option){
case 1:
System.out.println("En el caso 1...");
break;
case 2:
System.out.println("En el caso 2...");
break;
case 3:
System.out.println("En el caso 3...");
break;
case 4:
case 5:
System.out.println("En el caso 4 o 5...");
break;
default:
System.out.println("No. de opcion invalido");
}
}
}
6
Problema: Elabore un programa que genere una tabla de factoriales para valores de n desde 0 hasta 10.
Considera el uso de la siguiente formula:
! 1 2 ... 2 1n n n n
//Programa #8: Generar una tabla de factoriales
class Factorial{
public static void main(String[] args){
int n=0;
while(n<=10){
System.out.println(n+"!=");
System.out.println(factorial (n));
n++;
}
}
public static int factorial(int m){
int f=1;
while(m>1){
f*=m; //taquigrafia f=f*m
m--;
}
return f;
}
Código de campo cambiado
7
}
Problema: Elabore un programa que muestre c{omo funcionan las operaciones lógicas (a nivel de bits)
sobre números enteros. //Programa #9: Aplicar algunas Operaciones Lógicas sobre enteros
class BitLogic{
public static void main(String[] args) {
int a=2, b=7;
int c=a&b;
int d=a|b;
int e=a^b;
int f=~a&0x0f;
8
int g=a<<1;
int h=b>>1;
System.out.println("a: \n"+ValorBinario(a));
System.out.println("b: \n"+ValorBinario(b));
System.out.println("a&b: \n"+ValorBinario(c));
System.out.println("a|b: \n"+ValorBinario(d));
System.out.println("a^b: \n"+ValorBinario(e));
System.out.println("!a: \n"+ValorBinario(f));
System.out.println("a<<1: \n"+ValorBinario(g));
System.out.println("b>>1: \n"+ValorBinario(h));
}
public static String ValorBinario(int n){
String[] arr={
"0000","0001","0010","0011",
"0100","0101","0110","0111",
"1000","1001","1010","1011",
"1100","1101","1110","1111"
};
if (n>=0 && n<=15) return arr[n];
return null;
}
}
9
Problema: Elabore un programa que muestre como construir cadenas. //Programa #9: Introducción al manejo de cadenas
class StringDemo{
public static void main(String[] args) {
//Construye cadenas de varias maneras
String c1=new String("Las cadenas en Java son objetos");
String c2=" que se construyen de varias maneras....";
String c3=c1+c2;
System.out.println(c3);
}
}
10
Problema: Elabore un programa que muestre como implementar operaciones básicas para trabajar con
cadenas. //Programa #11: Operaciones con cadenas
class OpsCads{
public static void main(String[] args) {
//Declaracion de variables
String c1="Cuando se programa en Java es el #1";
String c2= new String(c1);
String c3="Cuando se programa en Java es el #1";
//Calcula la longitud de una cadena
System.out.println("La longitud de la C1 es: "+c1.length());
//Despliega la cadena caracter por caracter
for(int i=0; i<c1.length(); i++)
System.out.println(c1.charAt(i));
System.out.println();
//Compara dos cadenas
if (c1.equals(c2))
System.out.println("C1 es igual que C2 !");
else
System.out.println("C1 no es igual que C2 !");
//Compara dos cadenas
int result=c1.compareTo(c3);
if (result==0)
System.out.println("C1 es igual que C3 !");
else if(result<0)
System.out.println("C1 es menor que C3 !");
else
System.out.println("C1 es mayor que C3 !");
12
Problema: Elabore un programa que muestre como inicializar un arreglo de cadenas. //Programa #12:Construye un arreglo de cadenas
class Cadenas{
public static void main(String[] args) {
String [] arr={"Esta","es","una","prueba!"};
System.out.println("Este es el arreglo original:");
for (int i=0; i<arr.length; i++) System.out.println(arr[i]);
//Modificar algunos elementos de arreglo
arr[1]="fue";
arr[3]="prueba tambien...";
System.out.println("Este es el arreglo modificado");
for (int i=0; i<arr.length; i++) System.out.println(arr[i]);
}
}
13
Problema: Elabore un programa que muestre como utilizar argumentos en la línea de comandos. //Programa #13: "Argumentos en lineas de comandos"
class LCDemo{
public static void main(String[] args) {
System.out.println("Utilizo "+args.length+" argumentos en linea de comandos!");
System.out.println("Dichos argumentos son !");
if(args.length==0) return;
for (int i=0; i<args.length ; i++ )
System.out.println("args["+i+"]: "+args[i]);
}
}
14
Problema: Elabore un programa que realice la suma de los dos números cualesquiera. //Programa #14: "Suma de dos numeros cualesquiera"
class Suma{
public static void main(String[] args) {
if (args.length!=2) {
System.out.println("Error! Introdusca 2 cantidades ");
System.out.println("como argumentos...");
System.exit(0);
}
float A,B,C;
try{
//convierte la cadena en float
A=Float.parseFloat(args[0]);
}
catch(NumberFormatException nfe1){
A=0.0f;
}
try{
//convierte la cadena en float
B=Float.parseFloat(args[1]);
}
catch(NumberFormatException nfe1){
B=0.0f;
}
C=A+B; // calcular el resultado de la suma
System.out.printf("%.3f + %.3f= %.4f\n",A,B,C);
}
}
15
Problema: Elabore un programa que muestre como leer un carácter desde el teclado para que después se
pueda imprimir su valor en la pantalla. //Programa #15: "Leer un caracter del teclado"
import java.io.*;
class CharDemo{
public static void main(String[] args) {
int ch;
System.out.print("Oprima una tecla seguida de <Enter>: ");
try{ //Captura
ch=(char) System.in.read(); //se obtiene un caracter
System.out.printf("La tecla que oprimiste fue: %c\n",ch);
System.out.printf("Y su caracter ascii es: %d\n",ch);
}catch(IOException ioe){ //try siempre se cierra con catch
System.out.println(ioe.getMessage());
return;
}
}
}
16
Problema: Elabore un programa que permita desplegar en pantalla el contenido de un archivo de texto. //Programa #16:"Desplegar el contenido de un archivo de texto"
import java.io.*;
class OpenFile{
public static void main(String []args) throws IOException{
if(args.length!=1){
System.out.println("Uso de programa: ");
System.out.println("C:\\Program Files\\Java\\jdk1.7.0_07> java OpenFile <archivo> ");
System.exit(0);
}
FileInputStream Aent; //identificador para el archivo
try{
Aent=new FileInputStream (args[0]);
} catch (FileNotFoundException fnfe){
System.out.println("No se encuentra el archivo de entrada!...");
return;
}
System.out.println("Contenido del archivo "+args [0]+":\n");
int ch;
do{
ch=Aent.read(); //leer bytes hasta el fin de archivo
if(ch!=-1)System.out.print((char) ch);
} while(ch!=-1);
System.out.println();
17
Aent.close();
}
}
Problema: Elabore un programa que permita resolver ecuaciones cuadratica grado //Programa #16:"Resolver una ecuación cuadrática"
18
import java.io.*;
class EC2{
public static void main (String []args)throws IOException{
double A,B,C,D,X1R,X2R,X1T,X2T;
System.out.println("Introduzca los coeficientes reales...");
//el valor de A debe ser diferente de cero
do{
System.out.print("A=?");
A=leerDouble();
}
while(A==0.0d);
System.out.print("B=?");
B=leerDouble();
System.out.print("C=?");
C=leerDouble();
//inicializar valores con cero
X1T=X2T=0.0d;
//calcular el discriminante
D=Math.pow(B,2.0)-4.0*A*C;
//seleccionar raices reales complejos
if(D>=0.0){
X1R=((-B+Math.sqrt(D))/(2.0*A));
X2R=((-B-Math.sqrt(D))/(2.0*A));
}
else{
X1R=-B/(2.0*A);
X2R=X1R;
X1T=Math.sqrt(-D)/(2.0*A);
X2T=-X1T;
}
System.out.println("Las raices de la ecuacion son:");
System.out.printf("A=%f\n",A);
System.out.printf("B=%f\n",B);
System.out.printf("C=%f\n",C);
System.out.printf("D=%f\n",D);
System.out.printf("X1=%f+%f\n",X1R,X1T);
System.out.printf("X2=%f+%f\n",X2R,X2T);
}
public static double leerDouble() throws IOException{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
String cad=new String();
boolean flag;
double num=0.0d;
do{
flag=true;
cad=buf.readLine();
try{
19
num=Double.parseDouble(cad);
}catch(NumberFormatException nfe){
System.out.print("valor numerico:");
flag=false;
}
}while(flag==false);
return num;
}
}
20
Problema: Elabore un programa que permita construir un archivo de datos (archivo binario). //Programa #17: Escribir y leer datos binarios
import java.io.*;
class DataBin{
public static void main(String[] args) throws IOException{
//crear identificador para el archivo de entrada
DataInputStream EDatos;
//crear identificador para el archivo de salida
DataOutputStream SDatos;
21
//se inicializan los tipos primitivos
int i=10;
double d=123.45;
boolean b=true;
//solicitamos crear un archivo binario
try{
SDatos=new DataOutputStream(new FileOutputStream("archi.dat"));
} catch(IOException exc){
System.out.println("No se puede crear archivo...");
return;
}
//escribimos los datos secuencialmente
try{
System.out.println("Escribiendo " + i);
SDatos.writeInt(i);
System.out.println("Escribiendo " + d);
SDatos.writeDouble(d);
System.out.println("Escribiendo " + b);
SDatos.writeBoolean(b);
} catch (IOException exc){
System.out.println("Error de escritura...");
return;
}
SDatos.close();
//solicitamos abrir archivo de datos de nuevo
try{
EDatos=new DataInputStream(new FileInputStream("archi.dat"));
} catch(IOException exc){
System.out.println("No se puede abrir el archivo...");
return;
}
//Ahora se leen en orden los datos en almacenamiento
try{
i=EDatos.readInt();
System.out.println("Leyendo "+i);
d=EDatos.readDouble();
System.out.println("Leyendo "+d);
b=EDatos.readBoolean();
System.out.println("Leyendo "+b);
} catch (IOException exc){
System.out.println("Error de lectura...");
return;
}
EDatos.close();
}
}
23
Problema: Elabore un programa que mustre como leer una cadena desde el teclado para que después se
pueda imprimir su valor en la pantalla. //Programa #18: Leer e imprimir una cadena
import java.io.*;
class LeeCad{
public static void main(String[] args) {
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
String cad;
24
System.out.println("Escriba una frase...");
try{
cad=b.readLine();
System.out.println("La Frase que ud. escribio es:");
System.out.println(cad);
} catch(IOException ioe){
ioe.printStackTrace();
return;
}
}
}
Problema: Elabore un programa que muestre como sumar dos numero cualesquiera. //Programa #19: Suma de dos numeros cualesquiera
import java.io.*;
class Suma{
public static void main(String[] args) throws IOException {
float A,B,C;
System.out.print("Escriba el valor de A: ");
A=leer_float();
System.out.print("Escriba el valor de B: ");
B=leer_float();
C=A+B;
System.out.printf("%.3f + %.3f = %.4f \n",A,B,C);
25
}
public static float leer_float() throws IOException{
String str= new String();
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
float x=0.0f;
str=buf.readLine();
try{
//Convierte la cadena en numero
x=Float.parseFloat(str);
} catch(NumberFormatException nfe){
x=0.0f;
}
return x;
}
}
26
Problema: Elabore un programa que muestre como leer e imprimir un arreglo de cadenas. //Programa #20:Lee e imprime un arreglo de cadenas
import java.io.*;
class LeeCads{
public static void main(String[] args) throws IOException{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
String[] cads=new String[3];
System.out.println("Escribir 3 cadenas para almacenarlas...");
for (int i=0; i<3; i++) {
System.out.println("Cadena #"+(i+1)+": ");
cads[i]=buf.readLine();
}
System.out.println("Las cadenas almacenadas son...");
for(int i=0; i<3;i++)
System.out.println("Cadena #"+(i+1)+": "+ cads[i]);
}
}
27
Problema: Elabore un programa que permita desplegar en pantalla el contenido de un archivo de texto. //Programa #21: Leer cadenas desde un archivo
import java.io.*;
class LeeCads{
public static void main(String[] args) throws IOException {
FileInputStream aent=new FileInputStream("prueba.txt");
BufferedReader buf=new BufferedReader(new InputStreamReader(aent));
String str=new String();
do{
str=buf.readLine();
if (str!=null) System.out.println(str);
}while (str!=null);
aent.close();
}
}
28
Problema: Elaborar un programa que permita implementar objetos de tipo Entero //Programa #22: Definicion de clase
package Programa22;
class Entero{
//atributos de clase (acceso privado)
private int n;
//atributos de clase(acceso publuco)
public void asigna(int i){
n=i;
}
public void muestra(){
System.out.println(n);
}
}
//Programa #22: Implementar un objeto de tipo "Entero"
package Programa22;
class TestEntero{
public static void main(String[] args) {
//Variable de clase entero
Entero X;
//construir objeto
X= new Entero();
//asignar un valor al objeto
X.asigna(10);
//Mostrar el valor del Objeto
29
System.out.println("El valor de X es: ");
X.muestra();
}
}
Nota: Desde la raíz del proyecto hay que compilar ambos programas de forma simultanea con el
comando: javac Programa22/*.java
Problema: Elaborar un programa que permita implementar objetos de tipo Entero //Programa #22: Re-definicion de la clase "Entero"
package Programa23;
class Entero{
//atributos de clase (acceso privado)
private int n;
//definicion del primer constructor
public Entero(){
System.out.println("En constructor...0");
n=0;
}
//definicion del sugundo constructor
public Entero(int i){
System.out.println("En constructor...1");
n=i;
}
//Metodo para asignar vañor al atributo
public void asigna(int i){
30
n=i;
}
//Metod para mostrar el valor del atributo
public int muestra(){
return n;
}
//metodo para sumar dos objetos
public Entero suma(Entero obj){
Entero tmp=new Entero();
tmp.n=n+obj.n;
return tmp;
}
}
//Programa #22: Sumar 2 objetos de tipo "Entero"
package Programa23;
class TestEntero{
public static void main(String[] args) {
//Crear identificador de objetos
Entero Obj1, Obj2, Obj3;
//construir dos objeto
Obj1= new Entero();
Obj2= new Entero(10);
//imprimir el valor de los objetos
System.out.println("Obj1: "+Obj1.muestra());
System.out.println("Obj2: "+Obj2.muestra());
//Cambiar el valor del objeto "1"
Obj1.asigna(1);
//Sumar dos objetos
Obj3=Obj1.suma(Obj2);
System.out.println("Obj3: "+Obj3.muestra());
}
}
31
Problema: Elaborar un programa que permita implementar un arreglo de objetos de tipo Entero.
Nota: Se utilizo la clase “Entero ” (vista en el programa anterior)
//Programa #22: Re-definicion de la clase "Entero"
package Programa24;
32
class Entero{
//atributos de clase (acceso privado)
private int n;
//definicion del primer constructor
public Entero(){
System.out.println("En constructor...0");
n=0;
}
//definicion del sugundo constructor
public Entero(int i){
System.out.println("En constructor...1");
n=i;
}
//Metodo para asignar vañor al atributo
public void asigna(int i){
n=i;
}
//Metod para mostrar el valor del atributo
public int muestra(){
return n;
}
//metodo para sumar dos objetos
public Entero suma(Entero obj){
Entero tmp=new Entero();
tmp.n=n+obj.n;
return tmp;
}
}
//Programa 24: Construir un arreglo con tres enteros
package Programa24;
class TestEnteros{
public static void main(String[] args) {
//definir los objetos deñ programa
Entero[] arr = new Entero[3];
//Construir arreglo de objetos
for (int i=0; i<3; i++)
arr[i]=new Entero();
//dar valor a los objetos
for (int i=0; i<3; i++)
arr[i].asigna(i);
//imprimir el valor de los objetos
System.out.println("Los elementos del arreglo son...");
for (int i=0; i<3; i++) {
System.out.print("Arr["+i+"] = ");
System.out.println(arr[i].muestra());
}
}
}
33
Problema: Elaborar un programa que permita implementar objetos de tipo Vector //Programa #25: Definicion de la clase "Vector"
package Programa25;
public class Vector{
private double[] x;
private int n;
public Vector(int i){
n=i;
x=new double[n];
}
public void asigna(double y[]){
for(int i=0;i<n;i++){
x[i]=y[i];
}
34
}
public void muestra(){
for(int i=0;i<n;i++){
System.out.printf("%.1f\t",x[i]);
}
System.out.println();
}
public Vector suma(Vector obj){
Vector tmp=new Vector(n);
for (int i=0;i<n ;i++ )
tmp.x[i]=x[i]+obj.x[i];
return tmp;
}
public double multiplica(Vector obj){
double tmp=0.0;
for (int i=0;i<n ;i++ )
tmp+=x[i]*obj.x[i];
return tmp;
}
}
//Programa #25: Implementar opciones con vectores
package Programa25;
class TestVector{
public static void main(String[] args) {
Vector obj_1=new Vector(5);
double []arr_1={0.0,1.0,2.0,3.0,4.0};
obj_1.asigna(arr_1);
Vector obj_2=new Vector(5);
obj_2=obj_1;
Vector obj_3=obj_1.suma(obj_2);
System.out.printf("o1+o2:\t");
obj_3.muestra();
System.out.printf("o1*o2:\t");
double result=obj_1.multiplica(obj_2);
System.out.print(result+"\n");
}
}
35
Problema: Elaborar un programa que permita implementar objetos de tipo Matriz.
//Programa #26: Definición de la clase "Matriz"
package Programa26;
import java.io.*;
36
public class Matriz{
private double [][]mat;
private int nr,nc;
public Matriz(int r, int c){
if (r>0 && c>0) {
mat=new double[nr=r][nc=c];
}
else{
mat=null;
nr=nc=0;
}
}
public void leer() throws IOException{
BufferedReader buf=new BufferedReader(new
InputStreamReader(System.in));
String str=new String();
for(int i=0;i<nr;i++){
for (int j=0;j<nc ;j++ ) {
System.out.print("Valor["+(i+1)+","+(j+1)+"]=");
str=buf.readLine();
try{
mat[i][j]=Double.parseDouble(str);
}catch(NumberFormatException exc){
mat[i][j]=0.0d;
}
}
System.out.print("\n");
}
}
public void imprimir(){
for (int i=0;i<nr ;i++ ) {
for (int j=0;j<nc ; j++) System.out.print("\t"+mat[i][j]);
System.out.print("\n");
}
}
public Matriz suma(Matriz obj){
Matriz tmp=new Matriz(nr,nc);
for (int i=0;i<nr ;i++ ) {
for (int j=0;j<nc ; j++){
tmp.mat[i][j]=mat[i][j]+obj.mat[i][j];
}
}
return tmp;
}
}
37
//Programa #26: sumar dos objetos de la clase Matriz
package Programa26;
import java.io.*;
class TestMatriz{
public static void main(String[] args) throws IOException {
System.out.println("Programa que suma 2 Matrices...");
int m,n;
System.out.println("Escriba el numero de Renglones...");
m=numero_elementos();
System.out.println("Escriba el numero de Columnas...");
n=numero_elementos();
System.out.println("Construyendo a la Matriz A...");
Matriz A=new Matriz(m,n);
System.out.println("Escriba los elementos de la Matriz A...");
A.leer();
System.out.println("Construyendo a la Matriz B...");
Matriz B=new Matriz(m,n);
System.out.println("Escriba los elementos de la Matriz B...");
B.leer();
System.out.println("Los elementos de la Matriz A son:");
A.imprimir();
System.out.println("Los elementos de la Matriz B son:");
B.imprimir();
System.out.println("Sumando la Matriz A y B...");
Matriz C=A.suma(B);
System.out.println("Los elementos de la Matriz C son: ");
C.imprimir();
System.out.println("Fin del Programa...");
}
public static int numero_elementos()throws IOException{
BufferedReader buf=new BufferedReader(new
InputStreamReader(System.in));
String str=new String();
int num=0;
System.out.print("Valor entero=? ");
str=buf.readLine();
try{
num=Integer.parseInt(str);
}catch(NumberFormatException exc){
num=0;
}
return num;
}
40
Problema: Elaborar un programa que permita mostrar el concepto de Herencia Simple //Programa #27: Definición de la clase "Base"
package Programa27;
abstract public class Base{
private int x;
public Base(){
System.out.println("Constructor de la clase Base...");
}
public void asigna_x(int i){
x=i;
}
public int muestra_x(){
return x;
41
}
}
//Programa #27: Definición de la clase "Derivada"
package Programa27;
public class Derivada extends Base{
private int y;
public Derivada(){
System.out.println("Constructor de la clase Derivada...");
}
public void asigna_y(int j){
y=j;
}
public int muestra_y(){
return y;
}
}
//Programa #27: Implementa objetos de la clase derivada Herencia Simple
package Programa27;
class TestHS{
public static void main(String[] args) {
Derivada obj=new Derivada();
obj.asigna_x(10);
obj.asigna_y(20);
System.out.println("Valor de X: "+obj.muestra_x());
System.out.println("Valor de y: "+obj.muestra_y());
}
}
42
Problema: Elaborar un programa que permita mostrar el concepto de Herencia Multiple //Programa #28: Definicion de clase "A"
package Programa28;
abstract public class A{
private int a;
43
A(int i){
a=i;
System.out.println("Construyendo....A");
}
int muestra_A(){
return a;
}
}
//Programa #28: Definicion de clase "B"
package Programa28;
public class B extends A{
private int b;
B(int i, int j){
super(i);
b=j;
System.out.println("Construyendo....B");
}
int muestra_B(){
return b;
}
}
//Programa #28: Definicion de clase "C"
package Programa28;
public class C extends B{
private int c;
C(int i, int j, int k){
super(i,j);
c=k;
System.out.println("Construyendo....C");
}
void muestra(){
System.out.println("En clase A: "+muestra_A());
System.out.println("En clase B: "+muestra_B());
System.out.println("En clase C: "+c);
}
}
//Programa #28: Herencia multinivel
package Programa28;
class TestHM{
public static void main(String[] args) {
C sub=new C(1,2,3);
sub.muestra();
}
}
45
Problema: Elaborar un programa que utilice una clase abstracta y una interface para elevar un objeto de
tipo número al cuadrado y/o al cubo. //Programa #29: Definicion de interface
package Programa29;
public interface CalcularValor{
double calcularValor(double k);
}
//Programa #29: Definicion de la clase Real
package Programa29;
abstract public class Real{
double real;
public Real(){
real=0.0d;
}
public Real(double r){
real=r;
}
public double realValor(){
return real;
}
}
//Programa #29: Definicion de la clase Numero
package Programa29;
public class Numero extends Real implements CalcularValor{
public Numero(double r){
46
super(r);
}
public double calcularValor(double k){
return Math.pow(realValor(),k);
}
}
//Programa #29: Implementa un ibjeto de la clase Numero
package Programa29;
import java.io.*;
class TestNumero{
public static void main(String[] args) throws IOException{
double num=0.0d;
System.out.print("Escriba un valor numerico...");
num=leerDouble();
Numero obj=new Numero(num);
double cuadrado=obj.calcularValor(2.0);
System.out.println(num+"^2="+cuadrado);
double cubo=obj.calcularValor(3.0);
System.out.println(num+"^3="+cubo);
}
public static double leerDouble() throws IOException{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
String str=new String();
boolean flag;
double val=0.0d;
do{
flag=true;
str=buf.readLine();
try{
val=Double.parseDouble(str);
} catch(NumberFormatException exc){
System.out.print("Escriba un valor numerio...");
flag=false;
}
} while (flag==false);
return val;
}
}
48
Problema: Elaborar un programa que utilice una clase abstracta y una interface para calcular el área de un
objeto de tipo circulo y de un objeto de tipo triangulo. //Progrma #30: Definición de la interface CalcularArea
package Programa30;
public interface CalcularArea{
public void calcularArea();
}
//Programa #30: Definición de la clase figura
package Programa30;
abstract public class Figura{
protected double area=0.0d;
public void mostrarArea(){
System.out.println("Area= "+area);
}
}
//Progrma #30: Definicion de la clase Circulo
package Programa30;
public class Circulo extends Figura implements CalcularArea{
private double radio;
public Circulo(double r){
radio=r;
}
public void calcularArea(){
area=Math.PI*Math.pow(radio,2.0);
}
}
//Progrma #30: Definicion de la clase Triangulo
package Programa30;
public class Triangulo extends Figura implements CalcularArea{
49
private double base,altura;
public Triangulo(double b,double h){
base=b;
altura=h;
}
public void calcularArea(){
area=(base*altura)/2.0;
}
}
//Progrma #30: Utilice objetos de las subclases "Figura"
package Programa30;
class TestFiguras{
public static void main(String[] args) {
Circulo X=new Circulo(1.0);
System.out.println("Calculando el area del Circulo...");
X.calcularArea();
X.mostrarArea();
Triangulo Y=new Triangulo(2.0,3.0);
System.out.println("Calculando el area del Triangulo...");
Y.calcularArea();
Y.mostrarArea();
}
}
50
Problema: Elaborar un programa que utilice applet para dibujar un mensaje en la pantalla
Archivo en JAVA:
//Programa #31: AppletSimple.java
package Applet;
import java.awt.*;
import java.applet.*;
public class AppletSimple extends Applet{
public void paint(Graphics g){
g.drawString("Java facilita los applets",30,50);
showStatus("Esto se muestra en la ventana de estado");
}
}
51
Archivo en HTML:
<!--Programa #31: AppletSimple.html-->
<html>
<head>
<title>Dibuja una Cadena</title>
</head>
<body>
<h1>Cadena</h1>
<hr>
<applet code="Applet/AppletSimple.class" width=500 height=300>alt="Tu explorador
reconoce el <APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="Applet/AppletSimple.java">El código fuente...</a>
</body>
</html>
52
Problema: Elaborar un programa que utilice un Applet con diferentes botones y que pueda reconocer cual
de estos botones es el que se oprime. //Programa #32: ButtonsDemo.java
package Applet;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class ButtonsDemo extends Applet implements ActionListener,
KeyListener{
String msg="Caja de Resultados...";
Button si, no, quiza;
TextField text;
public void init(){
si=new Button("Si");
no=new Button("No");
quiza=new Button("Tal vez");
text=new TextField(msg);
si.addActionListener(this);
no.addActionListener(this);
quiza.addActionListener(this);
si.addKeyListener(this);
no.addKeyListener(this);
quiza.addKeyListener(this);
add(si);
add(no);
add(quiza);
add(text);
}
public void actionPerformed(ActionEvent ae){
String str=ae.getActionCommand();
53
if(str.equals("Si")){
msg="Ha pulsado Si!";
}
else if(str.equals("No")){
msg="Ha pulsado No!";
}
else{
msg="Ha pulsado Tal vez!";
}
repaint();
}
public void keyPressed(KeyEvent ke){
if(ke.getSource() instanceof Button){
int k=ke.getKeyCode();
if(k==KeyEvent.VK_ENTER){
Button jb=(Button)ke.getSource();
msg="Ha pulsado "+jb.getLabel().toLowerCase()+"!";
}
}
repaint();
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
public void paint(Graphics g){
text.setText(msg);
}
}
<!--Programa 32: AppletSimple.html-->
<html>
<head>
<title>Dibuja una Cadena</title>
</head>
<body>
<h1>Cadena</h1>
<hr>
<applet code="Applet/ButtonsDemo.class" width=500 height=300>alt="Tu explorador
reconoce el <APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="Applet/ButtonsDemo.java">El código fuente...</a>
</body>
</html>
54
Problema: Elaborar un programa que utilice un Applet que contenga cuatro cajas de selección y que pueda
reconocer cuales de estas cajas se encuentran seleccionadas. //Programa #33: checkBoxDemo.java
package App;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class CheckBoxDemo extends Applet implements ItemListener{
String msg=new String();
Checkbox Win98, WinNT, Solaris, Mac;
public void init() {
Win98=new Checkbox("Windows 98",true);
WinNT=new Checkbox("Windows NT/2000");
Solaris=new Checkbox("Solaris");
Mac=new Checkbox("MacOS");
add(Win98);
add(WinNT);
add(Solaris);
add(Mac);
Win98.addItemListener(this);
WinNT.addItemListener(this);
Solaris.addItemListener(this);
Mac.addItemListener(this);
}
public void itemStateChanged(ItemEvent ie) {
repaint();
}
public void paint(Graphics g){
msg="Estado actual: ";
g.drawString(msg,30,50);
55
msg=" Windows 98:" + Win98.getState();
g.drawString(msg,30,75);
msg=" Windows NT/2000: " + WinNT.getState();
g.drawString(msg,30,100);
msg=" Solaris: " + Solaris.getState();
g.drawString(msg,30,125);
msg=" MacOS: " + Mac.getState();
g.drawString(msg,30,150);
}
}
<!--Programa 33: CheckBoxDemo.html-->
<html>
<head>
<title>CheckBoxDemo</title>
</head>
<body>
<h1>CheckBoxDemo</h1>
<hr>
<applet code="App/CheckBoxDemo.class" width=500 height=300>alt="Tu explorador
reconoce el <APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="App/CheckBoxDemo.java">El código fuente...</a>
</body>
</html>
56
Problema: Elaborar un programa que utilice un Applet que contenga dos listas de selección y que pueda
reconocer cuales elementos de estas listas se encuentran seleccionadas. //Programa #34: ChoiceDemo.java
package App;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class ChoiceDemo extends Applet implements ItemListener {
String msg=new String();
Choice os=new Choice() , browser=new Choice();
public void init() {
os.add("Windows 98");
os.add("Windows NT/2000");
os.add("Solaris");
os.add("MacOS");
os.addItemListener(this);
add(os);
browser.add("Explorer");
browser.add("Netscape");
browser.add("Mozilla");
browser.addItemListener(this);
add(browser);
}
public void itemStateChanged(ItemEvent ie) {
repaint();
}
public void paint (Graphics g) {
msg="Sistema actual: ";
msg+=os.getSelectedItem();
g.drawString(msg,30,50);
msg="Navegador actual: ";
msg+=browser.getSelectedItem();
g.drawString(msg,30,75);
}
}
<!--Programa 34: ChoiceDemo.html-->
<html>
<head>
<title>ChoiceDemo</title>
</head>
<body>
<h1>ChoiceDemo</h1>
<hr>
<applet code="App/ChoiceDemo.class" width=500 height=300>alt="Tu explorador reconoce
el <APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="App/ChoiceDemo.java">El código fuente...</a>
</body>
</html>
57
Problema: Elaborar un programa que utilice un Applet que contenga cuatro cajas de selección y que pueda
reconocer cuales de estas se encuentran seleccionadas. //Programa #35: CBGroupDemo.java
package App;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class CBGroupDemo extends Applet implements ItemListener {
Checkbox Win98, WinNT, Solaris, Mac;
CheckboxGroup cbg=new CheckboxGroup();
public void init() {
Win98=new Checkbox("Windows 98",cbg,true);
WinNT=new Checkbox("Windows NT/2000",cbg,false);
Solaris=new Checkbox("Solaris",cbg,false);
58
Mac=new Checkbox("MacOS",cbg, false);
add(Win98);
add(WinNT);
add(Solaris);
add(Mac);
Win98.addItemListener(this);
WinNT.addItemListener(this);
Solaris.addItemListener(this);
Mac.addItemListener(this);
}
public void itemStateChanged(ItemEvent ie) {
repaint();
}
public void paint(Graphics g) {
String msg="Estado actual: ";
msg+=cbg.getSelectedCheckbox() .getLabel();
g.drawString(msg,30,50);
}
}
<!--Programa 35: CBGroupDemo.html-->
<html>
<head>
<title>CBGroupDemo</title>
</head>
<body>
<h1>CBGroupDemo</h1>
<hr>
<applet code="App/CBGroupDemo.class" width=500 height=300>"Tu explorador reconoce el
<APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="App/CBGroupDemo.java">El código fuente...</a>
</body>
</html>
59
Problema: Elaborar un programa que utilice un Frame que contenga dos cajas de texto y un botón con el
objetivo de que la misma aplicación permita comparar dos cadenas. //Programa #36: ButtonDemo.java
import java.awt.*;
import java.awt.event.*;
public class ButtonDemo extends WindowAdapter implements ActionListener {
private Frame f;
private Button b1, b2;
private TextField t1, t2, t3;
private Label l1, l2;
public ButtonDemo() {
f=new Frame("Compara dos cadenas ! ");
b1=new Button("Aceptar");
b2=new Button("Limpiar");
b1.addActionListener(this);
b2.addActionListener(this);
t1=new TextField(45);
t2=new TextField(45);
t3=new TextField(45);
t3.setEnabled(false);
l1=new Label("Cadena 1:");
l2=new Label("Cadena 2:");
}
public void muestra() {
f.setSize(400,300);
f.setResizable(true);
f.setLayout(new FlowLayout());
f.setBackground(Color.blue);
f.setVisible(true);
60
f.addWindowListener(this);
f.add(l1);
f.add(t1);
f.add(l2);
f.add(t2);
f.add(b1);
f.add(t3);
f.add(b2);
}
public void actionPerformed(ActionEvent ae) {
String str=ae.getActionCommand();
if (str.equals("Aceptar")) {
String s1=t1.getText();
String s2=t2.getText();
if (s1.compareTo(s2)==0)
t3.setText("Cadenas Iguales");
else
t3.setText("Cadenas Diferentes");
}
if (str.equals("Limpiar")) {
t1.setText("");
t2.setText("");
t3.setText("");
}
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public static void main(String args[]) {
ButtonDemo obj = new ButtonDemo();
obj.muestra();
}
}
<!--Programa 36: ButtonDemo.html-->
<html>
<head>
<title>ButtonDemo</title>
</head>
<body>
<h1>BottonDemo</h1>
<hr>
<applet code="ButtonDemo.class">"Tu explorador reconoce el <APPLET> pero no lo
ejecuta por alguna razón"</applet>
<hr>
<a href="ButtonDemo.java">El código fuente...</a>
</body>
</html>
61
Problema: Elaborar un programa que utilice un JApplet que permita seleccionar solo una de las cuatro
operaciones aritméticas básicas para que entonces pueda ser aplicada dados dos números cualesquiera. //Programa #37: OperationDemo.java
package App;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class OperationDemo extends JApplet implements ActionListener {
private JLabel j11, j12;
private JTextField jt1, jt2, jt3;
private JButton jb1, jb2;
private JRadioButton rb1, rb2, rb3, rb4;
private ButtonGroup bg;
public void init() {
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
rb1=new JRadioButton("Sumar");
contentPane.add(rb1);
rb2=new JRadioButton("Restar");
contentPane.add(rb2);
rb3=new JRadioButton("Multiplicar");
contentPane.add(rb3);
rb4=new JRadioButton("Dividir");
contentPane.add(rb4);
bg=new ButtonGroup();
bg.add(rb1);
bg.add(rb2);
bg.add(rb3);
bg.add(rb4);
j11=new JLabel("Introduzca la cantidad # 1");
contentPane.add(j11);
jt1=new JTextField(40);
contentPane.add(jt1);
j12=new JLabel("Introduzca la cantidad # 2");
contentPane.add(j12);
jt2=new JTextField(40);
62
contentPane.add(jt2);
jb1=new JButton("Aceptar");
jb1.addActionListener(this);
contentPane.add(jb1);
jt3=new JTextField(40);
jt3.setEditable(false);
contentPane.add(jt3);
jb2=new JButton("Limpiar");
jb2.addActionListener(this);
contentPane.add(jb2);
}
public void actionPerformed(ActionEvent ae) {
boolean flag=false;
if(rb1.isSelected()==true) flag=true;
if(rb2.isSelected()==true) flag=true;
if(rb3.isSelected()==true) flag=true;
if(rb4.isSelected()==true) flag=true;
if(flag==false) {
JOptionPane.showMessageDialog(null,
"Seleccione alguna operacion del menu...");
return;
}
JButton jb=(JButton)ae.getSource();
String txb=jb.getText();
if (txb.equals("Aceptar")) seleccionar();
if (txb.equals("Limpiar")) limpiar();
}
public void seleccionar() {
java.lang.Double A,B,C=0.0d;
String s1=jt1.getText();
String s2=jt2.getText();
if (s1.length()==0) {
JOptionPane.showMessageDialog(null,
"Introduzca la primera cantidad numerica...");
return;
}
if (s2.length()==0) {
JOptionPane.showMessageDialog(null,
"Introduzca la segunda cantidad numerica...");
return;
}
try{
A=Double.parseDouble(s1);
}
catch(NumberFormatException exc1) {
JOptionPane.showMessageDialog(null,
"Introduzca la primera cantidad numerica...");
return;
}
try{
B=Double.parseDouble(s2);
}
catch(NumberFormatException exc2) {
JOptionPane.showMessageDialog(null,
"Introduzca la segunda cantidad numerica...");
63
return;
}
if (rb1.isSelected()==true) C=A+B;
if (rb2.isSelected()==true) C=A-B;
if (rb3.isSelected()==true) C=A*B;
if (rb4.isSelected()==true) C=A/B;
jt3.setText(C+"");
}
public void limpiar(){
jt1.setText("");
jt2.setText("");
jt3.setText("");
}
}
<!--Programa 37: OperationDemo.html-->
<html>
<head>
<title>OperationDemo</title>
</head>
<body>
<h1>OperationDemo</h1>
<hr>
<applet code="App/OperationDemo.class" width=500 height=300>"Tu explorador reconoce
el <APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="App/OperationDemo.java">El código fuente...</a>
</body>
</html>
64
Problema: Elaborar un programa en Java que utilice un JFrame que permita seleccionar archivos “java” para
poder entonces mostrar su contenido. //Programa #38: FArchivo.java
package App;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
65
public class FArchivo extends JFrame implements ActionListener,KeyListener{
private JTextArea jta;
private JScrollPane jsp;
private JButton jb;
private JTextField jt1, jt2;
public void menu(){
Container contentPane=getContentPane();
contentPane.setLayout(new FlowLayout());
jta=new JTextArea();
jta.setColumns(40); jta.setRows(10);
jta.setEditable(false);
jsp=new JScrollPane(jta);
contentPane.add(jsp);
jb=new JButton("Checar Opciones");
jb.addActionListener(this);
jb.addKeyListener(this);
contentPane.add(jb);
jt1=new JTextField(40);
jt1.setEnabled(false);
contentPane.add(jt1);
jt2=new JTextField(40);
jt2.setEnabled(false);
contentPane.add(jt2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource() instanceof JButton) selecciona();
}
public void keyPressed(KeyEvent ke){
if(ke.getSource() instanceof JButton) selecciona();
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke) {}
public void selecciona(){
jta.setText("");
JFileChooser jfc=new JFileChooser();
jfc.setFileFilter(new FiltroJava());
int estado=jfc.showOpenDialog(null);
if(estado==JFileChooser.APPROVE_OPTION){
File f=jfc.getSelectedFile();
String nom=f.getName();
String dir=f.getPath();
try{
FileReader archi=new FileReader(f);
String cont=new String();
int ch='\0';
66
while((ch=archi.read())!=-1) cont+=(char)ch;
jta.append(cont);
jt1.setText(nom);
jt2.setText(dir);
} catch(Exception exc){
jta.append(exc.getMessage());
}
} else{
jta.append("Dialogo para abrir archivo cancelado...");
jt1.setText("");
jt2.setText("");
}
}
}
//Programa #38: TestFArchivo.java
package App;
public class TestFArchivo{
public static void main(String[] args) {
FArchivo obj=new FArchivo();
obj.setTitle("Reconose cuales son los archivos de Java...");
obj.setSize(500,300);
obj.setLocation(150,250);
obj.setVisible(true);
obj.menu();
}
}
68
Problema: Elaborar un programa utilice un proceso y un subproceso para desplegar en un Applet 5
mensajes diferentes en intervalos diferentes de 2 segundos. //Programa #39: AppletDemo.java
package App;
import java.applet.Applet;
import java.awt.*;
public class AppletDemo extends Applet implements Runnable{
private int count=0;
private Thread worker;
private String message="Iniciando...";
public void start(){
if(worker==null){
worker=new Thread(this);
worker.start();
}
}
public void run(){
try{
do{
if (count==0) message="Hola, este codigo";
if (count==1) message="nos permitira";
if (count==2) message="resolver el examen";
if (count==3) message="del Applet con";
if (count==4) message="uso de Thread...";
setResults();
worker.sleep(2000);
count++;
} while(count<5);
}
catch(InterruptedException exc){
69
//System.out.println(sub.getName()+"interrumpido...");
}
}
public void paint(Graphics g){
Font f=new Font("SansSerif", Font.BOLD,24);
g.setFont(f);
g.drawString(message,75,125);
}
private void setResults(){
repaint();
}
}
<html>
<head>
<title>AppletDemo</title>
</head>
<body>
<applet code="App/AppletDemo.class" width=500 height=300>Tu explorador reconoce el
<APPLET> pero no lo ejecuta por alguna razón"</applet>
</body>
</html>
71
Problema: Elaborar un programa que transmita un mensaje en forma de cadena utilizando un socket
orientado a conexión. //Programa #40: SimpleServer.java
package App;
import java.net.*;
import java.io.*;
public class SimpleClient{
public static void main(String[] args) {
try{
//Abrir una conexion con el servidor en el puerto 12345
Socket s1= new Socket("127.0.0.1",12345);
//conectar kon un socket para lectura
BufferedReader br= new BufferedReader(new
InputStreamReader(s1.getInputStream()));
//leer la entrada e imprimirla en consola
System.out.println(br.readLine());
//cerrar flujo y la conexion
br.close(); s1.close();
} catch(ConnectException connExc){
System.err.println("No se puede conectar el servidor...");
} catch(IOException e){
//ignorar
}
}
}
//Programa #40: SimpleServer.java
package App;
import java.net.*;
import java.io.*;
public class SimpleServer{
public static void main(String[] args) {
ServerSocket s = null;
//registrar el servicio en el puerto 12345
try{
s = new ServerSocket(12345);
} catch (IOException e){
e.printStackTrace();
}
//correr el ciclo para esperar y aceptar
for (; ; ) {
try {
//esperar por una conexion
Socket s1=s.accept();
72
//Obtener el flujo de salida asociado al socket
OutputStream out = s1.getOutputStream();
BufferedWriter bw = new BufferedWriter(new
OutputStreamWriter(out));
//enviar una cadena
bw.write("Hello, net world!");
//cerrar la conexion del cliente pero no para el servidor
bw.close(); s1.close();
} catch(IOException e){
e.printStackTrace();
}
}
}
}
<!--Programa #40: SimpleServer.java-->
<html>
<head>
<title>SimpleServer</title>
</head>
<body>
<applet code="App/SimpleServer.class" width=500 height=300>"Tu explorador reconoce el
<APPLET> pero no lo ejecuta por alguna razón"</applet>
<hr>
<a href="App/SimpleServer.java">El código fuente...</a>
</body>
</html>