73
Estructura de Datos Practicas en Java PROYECTO DIAZ MIRON MAC DONOUGH GABRIEL Medrano Pérez José Antonio Grupo: 1303 Septiembre del 2012

Estructura de Datos Programas

Embed Size (px)

Citation preview

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 !");

11

}

}

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();

}

}

22

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;

}

38

}

39

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();

}

}

44

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;

}

}

47

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 &#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="Applet/AppletSimple.java">El c&#243;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 &#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="Applet/ButtonsDemo.java">El c&#243;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 &#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="App/CheckBoxDemo.java">El c&#243;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 &#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="App/ChoiceDemo.java">El c&#243;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

&#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="App/CBGroupDemo.java">El c&#243;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 &#60;APPLET&#62; pero no lo

ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="ButtonDemo.java">El c&#243;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 &#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="App/OperationDemo.java">El c&#243;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();

}

}

67

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

&#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

</body>

</html>

70

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

&#60;APPLET&#62; pero no lo ejecuta por alguna raz&#243;n"</applet>

<hr>

<a href="App/SimpleServer.java">El c&#243;digo fuente...</a>

</body>

</html>