domingo, 29 de marzo de 2009

Operaciones con matrices en java

public class Matriz {
int numfilas;
int numcolum;
double [][] matriz;

public Matriz (){}
public Matriz(int nF, int nC){
numfilas= nF;
numcolum= nC;
matriz= new double[numfilas][numcolum];
for(int i=0;i for(int j=0;j matriz[i][j]= 0;
}

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 Matriz suma(Matriz B){
if ((this.numfilas == B.numfilas)&(this.numcolum == B.numcolum)){
Matriz r = new Matriz(this.numfilas,this.numcolum);
int j;
for(int i=0; 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.numfilas == B.numfilas)&(this.numcolum == B.numcolum)){
Matriz r = new Matriz(this.numfilas,this.numcolum);
int j;
for(int i=0; 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 multiplicacion(Matriz B){
Matriz r = new Matriz(this.numfilas,B.numcolum);
int j;
int k;
for(int i=0; i for(j=0; j for(k=0; k r.matriz[i][j] += this.matriz[i][k]*B.matriz[k][j];
return r;
}

public Matriz traspuesta(){
Matriz r = new Matriz(this.numcolum,this.numfilas);
int j;
for(int i=0; i for(j=0; j r.matriz[i][j]= this.matriz[j][i];
return r;
}

public Matriz inversa(){
Matriz result=new Matriz(this.numfilas,this.numcolum);
double tmp;
Matriz I=new Matriz(this.numfilas,this.numcolum*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.numfilas]=1.0;
}
}
for(int i=0;i tmp=I.matriz[i][i];
for(int j=0;j<(this.numcolum*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.numcolum*2);j++)
I.matriz[k][j]-=tmp*I.matriz[i][j];
}
}
}
for(int i=0;i for(int j=0;j result.matriz[i][j]=I.matriz[i][j+this.numcolum];
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(m.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(resultado.imprimir());

resultado = m.resta(b);
System.out.println(resultado.imprimir());

resultado = m.multiplicacion(b);
System.out.println(resultado.imprimir());

resultado = b.traspuesta();
System.out.println(resultado.imprimir());

resultado = m.traspuesta();
System.out.println(resultado.imprimir());

resultado = m.inversa();
System.out.println(resultado.imprimir());

resultado = b.inversa();
System.out.println(resultado.imprimir());
}
}

domingo, 22 de marzo de 2009

Programacion orientada a objetos

Es un método de programación en el que un programa se contempla como un conjunto de objetos limitados que, a su vez, son colecciones independientes de estructuras de datos y rutinas que interactúan con otros objetos, o que dan acceso para modificar el contenido de un dato o propiedad del propio objeto. También se identifica con las siglas POO y OOP (del inglés Object Oriented Programming).
El concepto clave en la programación orientada a objetos es la denominada clase (de objetos). Una clase define las estructuras de datos y rutinas de un objeto.

[public] class Classname {
//definicion de variables y metodos
. . .
}

A su vez, un objeto es una instancia de una clase, que se puede usar como una variable en un programa; es decir, la creación de una instancia de una clase se corresponde con la declaración de una variable en la programación tradicional, pero refiriéndose a objetos.

Classname unObjeto;
Classname otroObjeto;

En cuanto a la funcionalidad y la metodología interna, la programación orientada a objetos se fundamenta en la metodos, la herencia y atributos. La encapsulación significa que en una clase se declaran los tipos de datos y el medio de manipularlos (sus métodos). La herencia supone crear clases derivadas de otras existentes, que heredan sus tipos y métodos y pueden contener otros nuevos. Si una nueva clase hereda propiedades de más de una antecesora, se denomina herencia múltiple; no todos los lenguajes orientados a objetos lo permiten. El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos.

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

//construimos la matriz a
a[0]=1; a[1]=1; a[2]=9; a[3]=9; a[4]=2;

//construimos la matriz b
b[0]=3; b[1]=2; b[2]=4; b[3]=2; b[4]=2;

//suma
for(int i=0; i<5; i++)
c[i]= a[i]+b[i];

for(int i=2;i>0;i--)
{
c[i]=a[i]+b[i]+(a[i+1]%b[i+1]);
x =c[i];
if(x>=10)
c[i]=x-10;
}
c[0]=a[0]+b[0];

for(int i=0; i<5; i++){
System.out.print(c[i]+ " ");
}
System.out.println();
}

lunes, 16 de marzo de 2009

Arreglos en Java

"Arreglos en Java"

Los arreglos en Java son objetos, demostrando el compromiso de Java con la orientación a objetos. En esta sección se encuentran diversos ejemplos de arreglos unidimensionales y multidimensionales, y se exponen las manipulaciones más comunes de estos. También el proceso de pasar arreglos a métodos y las técnicas elementales para ordenar y realizar búsquedas, junto con la presentación de la búsqueda binaria como una mejora sobre la búsqueda lineal.

Un arreglo se declara de la siguiente forma:
[] ;
O sea, para declarar, por ejemplo, un arreglo de números enteros utilizaremos la siguiente sentencia:
int[] arrInt;
Es importante notar que el arreglo aún no ha sido creado, sino meramente declarado. Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new:
arrInt = new int[10];
Este comportamiento debe comprenderse de esta forma: en Java todo es un objeto, y los objetos deben ser creados mediante el operador new. El caso de los arreglos no es diferente, el tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus instancias debe ser creada explícitamente, el tamaño puede pensarse como un parámetro al constructor de la clase.
A partir de este momento podemos utilizar arrInt como un arreglo de cualquier otro lenguaje
Una de las características que hacen de Java un entorno de programación seguro, y que se relaciona con el manejo de los arreglos es que el lenguaje no permite la indexación de arreglos fuera de rango, o sea, una asignación de este tipo generará una excepción:
ArrInt[25] = 1;
Otra forma de declararlos es la siguiente:
UNIDIMENSIONALES:
tipo nombre_array[]=new tipo[nº];
tipo nombre_array[]={valores};
BIDIMENSIONALES:
tipo nombre_array[][]=new tipo[nº][nº];
tipo nombre_array[][]={valores};
Para utilizar un arreglo en Java:
-Declare una variable para que contenga el arreglo
-Cree un nuevo arreglo de objeto y as�gnelo a la variable de arreglo
-Almacene informaci�n en ese arreglo
-Realice operaciones de almacenamiento y recuperaci�n con los elementos del arreglo
Ejemplo:
public class ArrayPlay{
int[] intarray = new int[0];
public static void main(String[] args){
ArrayPlay arrayplay = new ArrayPlay();
arrayplay.play();
}
Fuente de consulta:

domingo, 15 de marzo de 2009

Ejercicios con dos vectores en java

public static void main(String[] args) {
int [] a;
int [] b;
double [] c;
a = new int [3];
b = new int [3];
c = new double [3];
double productocruz;
double magnitud1, magnitud2;
double angulo, angulo1, angulo2;
int suma;
int resta;
double productoescalar;
a[0]=1; a[1]=2; a[2]=3;
b[0]=2; b[1]=3; b[2]=4;

//suma
for(int i=0; i<3 ; i++)
c[i] = a[i] +b[i];

for(int i=0; i<3; i++)
System.out.print("la suma de los vectores es: " + c[i] + "\n");

//resta
for(int i=0; i<3 ; i++)
c[i] = a[i] -b[i];

for(int i=0; i<3; i++)
System.out.print("La resta de los vectores: " + c[i] + "\n");

//producto escalar
productoescalar = 0;
for(int i=0; i<3; i++)
productoescalar += a[i] *b[i];
System.out.println("El producto escalar es:: " + productoescalar);

//magnitud
magnitud1 = Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));
magnitud2 = Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)+Math.pow(b[2],2));
System.out.println("La magnitud de a es: " + magnitud1);
System.out.println("La magnitud de b es: " + magnitud2);

//vector unitario
for(int i=0; i<3; i++)
c[i] = a[i]/productoescalar;
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]/productoescalar;
for (int i=0; i<3; i++)
System.out.println("El unitario de b es: " + c[i]);

//angulo
angulo1 = Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));
angulo2 = Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)+Math.pow(b[2],2));
angulo = Math.acos(productoescalar/(angulo1*angulo2));
System.out.println("El angulo es: " + angulo);

//producto cruz
productocruz = (((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: " +productocruz);
}
}

RESOLUCION
run:
la suma de los vectores es: 3.0
la suma de los vectores es: 5.0
la suma de los vectores es: 7.0
La resta de los vectores: -1.0
La resta de los vectores: -1.0
La resta de los vectores: -1.0
El producto escalar es:: 20.0
La magnitud de a es: 3.7416573867739413
La magnitud de b es: 5.385164807134504
El unitario de a es: 0.05
El unitario de a es: 0.1
El unitario de a es: 0.15
El unitario de b es: 0.1
El unitario de b es: 0.15
El unitario de b es: 0.2
El angulo es: 0.12186756768575456
El valor cruz es: 0.0
BUILD SUCCESSFUL (total time: 2 seconds)

martes, 10 de marzo de 2009

Tarea 1

¿Qué es Java?
Lenguaje de programación orientado a objetos desarrollado por la empresa Sun Microsystems en 1995 y que se ha extendido ampliamente en World Wide Web. Es un lenguaje de alto nivel y propósito general similar a C++, con marcadas características de seguridad y transportabilidad. Este lenguaje define una máquina virtual independiente de la plataforma donde se ejecuta, que procesa programas, llamados Applets, descargados desde el servidor Web. Además, debido al modo de ejecución de los Applets, este lenguaje es muy seguro frente a la presencia y ataque de virus informáticos.

A principios de la decada de los noventa se lo comenzo a desarrollar. Las aplicaciones Java
están típicamente compiladas en un bytecode. En el tiempo de ejecucion, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también se lo puede realizar.

¿Qué es JDK?
Es un software que provee herramientas de desarrollo para la creación de programas en java . Puede instalarse en una computadora local o en una unidad de red.

En la unidad de red se puede tener la aplicación distribuida en varias computadoras y trabajar como una sola aplicación.

La estructura de directorios del JDK/J2SE es la siguiente:
JDK 1.4.2
____________________________

bin lib jre
________ __________
java* tools.jar
javac* dt.jar bin lib
javap* ________ ______ _________ ________ ______
javah* java*
javadoc* rt.jar ext security i386 applet fonts
charsets.jar / \
/ \
localedata.jar server client

Como se puede observar, la estructura se encuentra dividida en tres grandes partes :
bin: Incluye los ejecutables para la generación de programas Java.
lib: Contiene las librerías (Clases) base empleadas en la generación de la gran mayoría de programas Java.
jre: Incluye el ambiente necesario para ejecutar programas Java, el cual a su vez se encuentra sub-dividido en distintos directorios.

Algunas caracteristicas son:
- Inclusión de las principales herramientas para desarrollo de aplicaciones.
- Inclusión de un potente editor que trabaja con el lenguaje Java, además tiene acceso a diferentes aplicaciones externas y a la documentación de las APIs.
- Integración con la maquina virtual para poder compilar y ejecutar directamente nuestras creaciones.
En conclusión, si te quieres introducir en el lenguaje de programación Java, entonces esta herramienta no puede faltar en tu ordenador.

¿Qué es JRE?
JRE es el acrónimo de Java Runtime Environment (entorno en tiempo de ejecución Java) y se corresponde con un conjunto de utilidades que permite la ejecución de programas java sobre todas las plataformas soportadas.

JRE es además un producto presente en la mayoría de clientes, que lo usan como plugin del navegador, de ahí la importancia de mantener actualizado el sistema. Se han dado bastantes casos de malware que ha intentado aprovechar vulnerabilidades en JRE para ejecutar código arbitrario en el sistema. Sin embargo, el hecho de que existan varias ramas en desarrollo (1.4.x, 5.x, 6.x...) con saltos de versiones y cambios en la nomenclatura, unido al hecho de que pueden convivir varias ramas en un mismo sistema de forma que necesiten actualización por separado, hacen que el mantenimiento de esta máquina virtual resulte confuso para muchos usuarios.

El usuario final usa el JRE como parte de paquetes software o plugins (o conectores) en un navegador Web. Sun ofrece también el SDK de Java 2, o JDK (Java Development Kit) en cuyo seno reside el JRE, e incluye herramientas como el compilador de Java, Javadoc para generar documentación o el depurador. Puede también obtenerse 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.

http://es.wikipedia.org/wiki/Java
http://es.wikipedia.org/wiki/JRE
http://es.wikipedia.org/wiki/JDK
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
http://www.mp3.es/Es/Java_Runtime_Environment_(JRE)
Biblioteca de consulta Encarta 2004.