lunes, 30 de marzo de 2009

OPERACIONES CON MATRICES EN JAVA

public class Matriz {
int numeroFilas;
int numeroColumnas;
double [][] matriz;

public Matriz(){}
/**
* Constructor de matrices
* @param nF numero de filas
* @param nC numero de columnas
*/
public Matriz(int nF, int nC){
numeroFilas=nF;
numeroColumnas=nC;
matriz= new double[numeroFilas][numeroColumnas];

for(int i=0; i< numeroFilas; i++)
for(int j=0; j< numeroColumnas; j++)
matriz[i][j]=0;
}

/**
* Imprime los objetos de la clase matriz
* @return Un string que contien a la matriz
*/
public String imprimir(){
String aux = "";

for(int i=0; i for(int j=0; j aux= aux + matriz[i][j] + " ";
}
aux = aux + "\n";
}
return aux;
}

public String imprimir2(){
String aux ="";
aux=aux+"y1="+ matriz[0][0];
aux=aux+"\n";
aux=aux+"y2="+matriz[1][0];
return aux;
}

/**
* Metodo para sumar matrices
* @param B La matriz sumando
* @return Retorna otra matriz
*/
public Matriz suma(Matriz B){

if ((this.numeroFilas == B.numeroFilas)&(this.numeroColumnas==B.numeroColumnas)){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j]+B.matriz[i][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden sumar las matrices");
return r;
}
}

public Matriz resta(Matriz B){

if ((this.numeroFilas == B.numeroFilas)&(this.numeroColumnas==B.numeroColumnas)){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j]-B.matriz[i][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden restar las matrices");
return r;
}
}

public Matriz multiplica(Matriz B){
if(this.numeroFilas==B.numeroColumnas){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
int k;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j for(k=0; k r.matriz[i][j]+=this.matriz[i][k]*B.matriz[k][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden multiplicar las matrices");
return r;
}
}

public Matriz clonar(){
Matriz r= new Matriz(this.numeroFilas, this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j];
return r;
}
public Matriz transpueta(){
Matriz r = new Matriz(this.numeroColumnas,this.numeroFilas);
int j;
for (int i = 0; i < r.numeroFilas; i++)
for(j = 0; j < r.numeroColumnas;j++)
r.matriz[i][j] = this.matriz[j][i];
return r;
}

public Matriz inversa(){
Matriz result=new Matriz(this.numeroFilas,this.numeroColumnas);
double tmp;//variable temporal
Matriz I=new Matriz(this.numeroFilas,this.numeroColumnas*2);
for(int i = 0; i for(int j = 0; j I.matriz[i][j]=0.0;


for(int i = 0; i for(int j = 0; j I.matriz[i][j]=this.matriz[i][j];
if (i==j)
I.matriz[i][j+this.numeroFilas]=1.0;
}
}

for(int i=0; i<(this.numeroFilas); i++){
tmp=I.matriz[i][i];
for(int j=0;j<(this.numeroColumnas*2);j++)
I.matriz[i][j]/=tmp;
for(int k=0;k if(k!=i){
tmp=I.matriz[k][i];
for(int j=0;j<(this.numeroColumnas*2);j++)
I.matriz[k][j]-=tmp*I.matriz[i][j];
}
}
}

for(int i = 0; i < this.numeroFilas; i++)
for(int j = 0; j result.matriz[i][j]=I.matriz[i][j+this.numeroColumnas];
return result;
}


public static void main(String args[]){
Matriz m= new Matriz(3, 3);
m.matriz[0][0]=1;
m.matriz[1][1]=3;
m.matriz[2][2]=5;
System.out.println("LA MATRIZ M ES: ");
System.out.println(m.imprimir());
Matriz copia;
copia= m;
System.out.println("LA COPIA DE M ES: ");
System.out.println(copia.imprimir());
m.matriz [0][0]= 100;
System.out.println("LA MATRIZ M MODIFICADA ES: ");
System.out.println(m.imprimir());
System.out.println("LA COPIA DE M MODIFICADA ES: ");
System.out.println(copia.imprimir());
copia=m.clonar();
m.matriz [0][0]= 1;
System.out.println("LA MATRIZ M ES: ");
System.out.println(m.imprimir());
System.out.println("LA MATRIZ CLON DE M ES: ");
System.out.println(copia.imprimir());


Matriz b = new Matriz(3,3);
b.matriz[0][0] = 1; b.matriz[0][1]=2; b.matriz[0][2]=3;
b.matriz[1][1] = 4; b.matriz[1][2] = 5;
b.matriz[2][2] = 6;
System.out.println(b.imprimir());

Matriz resultado;
resultado = m.suma(b);
System.out.println("LA SUMA ES: ");
System.out.println(resultado.imprimir());

resultado = m.resta(b);
System.out.println("LA RESTA ES: ");
System.out.println(resultado.imprimir());

resultado = b.transpueta();
System.out.println("LA TRANSPUESTA DE B ES: ");
System.out.println(resultado.imprimir());

resultado = m.transpueta();
System.out.println("LA TRANSPUESTA DE M ES: ");
System.out.println(resultado.imprimir());

resultado = m.multiplica(b);
System.out.println("LA MULTILPLICACION ES: ");
System.out.println(resultado.imprimir());

resultado=m.inversa();
System.out.println("LA INVERSA DE M ES: ");
System.out.println(resultado.imprimir());

resultado=b.inversa();
System.out.println("LA INVERSA DE B ES: ");
System.out.println(resultado.imprimir());

Matriz d=new Matriz(2,2);
d.matriz[0][0]=1;d.matriz[0][1]=1;
d.matriz[1][0]=-1;d.matriz[1][1]=2;
System.out.println("LA MATRIZ D ES: ");
System.out.println(d.imprimir());

Matriz c=new Matriz(2,2);
c.matriz[0][0]=1;
c.matriz[1][0]=0;
System.out.println("LA MATRIZ C ES: ");
System.out.println(c.imprimir());

Matriz resultante;
resultante=d.inversa();
System.out.println("LA INVERSA DE D:");
System.out.println(resultado.imprimir());

resultante=d.multiplica(c);
System.out.println("LA MULTIPLICACIÓN DE D Y C ES: ");
System.out.println(resultado.imprimir());

resultante=d.inversa().multiplica(c);
System.out.println("LA MULTIPLICACIÓN CON LA INVERSA DE D ES: ");
System.out.println(resultado.imprimir2());


}

}

domingo, 22 de marzo de 2009

EJERCICIOS DE MATRICES

public static void main(String[]args)
{
int[]a= new int[5];
int[]b= new int[5];
int[]c= new int[5];
int answ; int answ1;

a[0]=1;
a[1]=1;
a[2]=9;
a[3]=9;
a[4]=2;
b[0]=3;
b[1]=2;
b[2]=4;
b[3]=2;
b[4]=2;

//Sumar matrices a[]+b[]
for(int i= 4; i>2; i--)
{
c[i]= a[i] + b[i];
answ=c[i];
if(answ>= 10)
c[i]= answ-10;
}

// Número que divide en 2 partes las matrices
for(int i= 2; i>0; i--)
{
c[i]= a[i]+b[i]+(a[i+1]%b[i+1]);
answ1= c[i];

if(answ1>= 10)
c[i]= answ1-10;
}
c[0]= a[0]+b[0];
for(int i= 0; i<5; i++)
System.out.print(c[i]);
}
}

PROGRAMACIO ORIEBTADA A OBJETOS

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO.
Los objetos son entidades que combinan estado, comportamiento e identidad:
*El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
*El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
*La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas.

lunes, 16 de marzo de 2009

ARREGLOS EN JAVA

El tipo llamado arreglo o en inglés array, es el tipo más conocido y en muchos lenguajes, el único tipo de datos estructurados que se ha implementado. Un tipo arreglo es una lista de datos con un número fijo de componentes, todos del mismo tipo denominado tipo base; los que son referenciados o calificados mediante índices o expresiones ordinales encerradas en corchetes, que actúan como prefijo al identificador del arreglo, siendo su tipo denominado tipo índice.
Algunas de sus características son las siguientes.-
*Los arreglos se crean con el operador new seguido del tipo y número de elementos.
*Se puede acceder al número de elementos de un arreglo con la variable miembro implícita length (por ejemplo, vect.length).
*Se accede a los elementos de un array con los corchetes y un índice que varía de 0 a length-1.
*Se pueden crear arreglos de objetos de cualquier tipo. En principio un arreglo de objetos es un arreglo de referencias que hay que completar llamando al operador new.
*Los elementos de un arreglo se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, la cadena vacía para Strings, false para boolean, null para referencias).
*Como todos los objetos, los arreglos se pasan como argumentos a los métodos por referencia.
*Se pueden crear arreglos anónimos (por ejemplo, crear un nuevo arreglo como argumento actual en la llamada a un método).
Declaración de Arreglos.-
Como otras variables, antes de poder utilizar un arreglo primero se debe declarar. De nuevo, al igual que otras variables, la declaración de un arreglo tiene dos componentes primarios: el tipo del arreglo y su nombre. Un tipo de arreglo incluye el tipo de dato de los elementos que va contener el arreglo. Por ejemplo, el tipo de dato para un arreglo que sólo va a contener elementos enteros es un arreglo de enteros. No puede existir un arreglo de tipo de datos genérico en el que el tipo de sus elementos esté indefinido cuando se declara el arreglo. Aquí tienes la declaración de un arreglo de enteros:

int[ ] arrayDeEnteros;


La parte int[ ] de la declaración indica que arrayDeEnteros es un arreglo de enteros. La declaración no asigna ninguna memoria para contener los elementos del arreglo. Si se intenta asignar un valor o acceder a cualquier elemento de arrayDeEnteros antes de haber asignado la memoria para él, el compilador dará un error como este y no compilará el programa:

testing.java:64: Variable arrayDeEenteros may not have been initialized.

Para asignar memoria a los elementos de un arreglo, primero se debe ejemplarizar el arreglo. Se puede hacer esto utilizando el operador new de Java. (Realmente, los pasos que se deben seguir para crear un arreglo son similares a los se deben seguir para crear un objeto de una clase: declaración, ejemplificación e inicialización. La siguiente sentencia asigna la suficiente memoria para que arrayDeEnteros pueda contener diez enteros.

int[ ] arrayDeEnteros = new int[10]

En general, cuando se crea un arreglo, se utiliza el operador new, más el tipo de dato de los elementos del arreglo, más el número de elementos deseados encerrado entre corchetes cuadrados ([ y ]).
TipodeElemento[ ] NombredeArray = new TipodeElementos[tamanoArray]Ahora que se ha asignado memoria para un arreglo ya se pueden asignar valores a los elementos y recuperar esos valores:

for (int j = 0; j < arrayDeEnteros.length; j ++)
{
arrayDeEnteros[j] = j;
System.out.println("[j] = " + arrayDeEnteros[j]);
}


Como se puede ver en el ejemplo anterior, para referirse a un elemento del arreglo, se añade corchetes cuadrados al nombre del arreglo. Entre los corchetes cuadrados se indica (bien con una variable o con una expresión) el índice del elemento al que se quiere acceder. Observa que en Java, el índice del arreglo empieza en 0 y termina en la longitud del arreglo menos uno.
Hay otro elemento interesante en el pequeño ejemplo anterior. El bucle for itera sobre cada elemento de arrayDeEnteros asignándole valores e imprimiendo esos valores. Observa el uso de arrayDeEnteros.length para obtener el tamaño real del arreglo.
length es una propiedad proporcionada para todos los arreglo de Java. Los arreglo pueden contener cualquier tipo de dato legal en Java incluyendo los tipos de referencia como son los objetos u otros arreglos. Por ejemplo, el siguiente ejemplo declara un arreglo que puede contener diez objetos String.

String[ ] arrayDeStrings = new String[10];

Los elementos en este arreglo son del tipo referencia, esto es, cada elemento contiene una referencia a un objeto String. En este punto, se ha asignado suficiente memoria para contener las referencias a los Strings, pero no se ha asignado memoria para los propios Strings. Si se intenta acceder a uno de los elementos de arraydeStrings obtendrá una excepción 'NullPointerException' porque el arreglo está vacío y no contiene ni cadenas ni objetos String. Se debe asignar memoria de forma separada para los objetos String:

for (int i = 0; i < arraydeStrings.length; i ++)
{
arraydeStrings[i] = new String("Hola " + i);
}


NOTA.- Los arreglos son entidades estáticas, cuyo primer elemento se encuentra en el índice 0

domingo, 15 de marzo de 2009

OPERACIONES CON DOS VECTORES EN JAVA

AQUI LES DEJO EL COD. DE UN PROGRAMA QUE REALIZA OPERACIONES CON VECTORES DE TRES COORDENADAS: SUMA, RESTA, PROD. ESCALAR, UNITARIOS DE C/U, ANGULO FORMADO POR LOS DOS, Y MAGNITUD O MODULO DE C/U....
---------------------------------------------------------------------------
public static void main(String[] args) {
double [] a= new double[3];
double [] b= new double[3];
double [] c= new double[3];
int suma;
int resta;
int escalar;
double cruz;
double mag;
double mag2;
double angulo;
double ang;
double ang2;
a[0]=2; a[1]=6; a[2]=4;
b[0]=1; b[1]=3; b[2]=2;

//SUMA
for(int i=0; i<3; i++)
c[i]= a[i] + b[i];
for(int i=0; i<3; i++)
System.out.println("LA SUMA ES--> "+c[i]);

//RESTA
for(int i=0; i<3; i++)
c[i]= a[i] - b[i];
for(int i=0; i<3; i++)
System.out.println("LA RESTA ES--> "+c[i]);

//PROD. ESCALAR
escalar = 0;
for(int i=0; i<3; i++){
escalar += a[i] * b[i];
}
System.out.println("EL PRODUCTO ESCALAR ES--> "+ escalar);

//UNITARIOS
for(int i=0; i<3; i++)
c[i] = a[i]/escalar;
for(int i=0; i<3; i++)
System.out.println("EL UNITARIO DE A ES--> "+c[i]);
for(int i=0; i<3; i++)
c[i] = b[i]/escalar;
for(int i=0; i<3; i++)
System.out.println("EL UNITARIO DE B ES--> "+c[i]);


//ANGULO
ang= Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));
ang2= Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)+Math.pow(b[2],2));
angulo= Math.acos(escalar/(ang*ang2));
System.out.println("EL ANGULO FORMADO POR LOS 2 VECTORES ES--> "+ angulo);

//MAGNITUD
mag= Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));
System.out.println("LA MAGNITUD DEL VECTOR A ES--> "+mag);
mag2= Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)+Math.pow(b[2],2));
System.out.println("LA MAGNITUD DEL VECTOR B ES--> "+mag2);

//PROD. CRUZ
cruz = (((a[1] *b[2]) - (a[2] *b[1])) - ((a[0] *b[2]) - (b[0] *a[2])) +
((a[0] *b[1]) - (b[0] *a[1])));
System.out.println("El valor cruz es: " +cruz);
---------------------------------------------------------------------------

martes, 10 de marzo de 2009

AQUI LES DEJO LO QUE ES L JDK Y EL JRE

CONTINUANDO CON JAVA, AQUI PONGO A SU DISPOSICION LO QUE ES EL JDK Y JRE:
JRE.- Por sus siglas en ingles (JAVA Runtime Environment) que significa en español (Entorno en Tiempo de Ejecución de JAVA). Es el software necesario para ejecutar cualquier aplicación desarrollada para la plataforma JAVA. El usuario final usa el JRE como parte de paquetes software o plugins en un navegador Web.
JDK-. JAVA ofrece también el SDK de JAVA 2, o JDK por sus siglas en ingles (JAVA Development Kit) que significa en español (Paquete de Desarrollo de JAVA) en cuyo reside el JRE, mencionado antes, e incluye herramientas como el compilador de JAVA, Javadoc para generar documentación o el depurador. Este se lo puede también obtener como un paquete independiente, y puede considerarse como el entorno necesario para ejecutar una aplicación JAVA, mientras que un desarrollador debe además contar con otras facilidades que ofrece el JDK.

JAVA

1. ¿QUÉ ES?
Java es un lenguaje de programación orientado a objetos, y en el que se puede realizar cualquier tipo de programa, este lenguaje trabaja igual independientemente de la plataforma que usemos, incluso para distintos tipos de dispositivos móviles, agendas, etc. Este lenguaje permite jugar en línea, participar en sesiones de chat, calcular los intereses de una hipoteca y ver imágenes en tres dimensiones, etc. Es de vital importancia para las aplicaciones de intranet y otras soluciones de comercio electrónico que constituyen la base informática de las empresas.
2. HISTORIA
Nació gracias a la compania Sun Mycrosystems en 1991. Este contiene sintaxis de otros lenguajes como son el C y el C++, pero el modelo de objetos de JAVA es muchísimo más simple eliminando también algunas herramientas de los anteriores, así evitando errores, como la manipulación directa de punteros o memoria. Hoy en día es un lenguaje muy extendido el cual tiene gran importancia a nivel mundial.