gentoo linux, java, software libre y otras hierbas
May, 28 2007 - 3:49 pm

Tutoriales de Programación de Pics [semi-actualizados]

Algunos tutoriales de Programación de Pics…

Espero les sirva!!!

3 Comentarios | deja el tuyo

May, 28 2007 - 3:30 pm

Ordenamiento de arreglos con la clase Arrays

Pues bien, esta vez vamos a tratar uno de los temas típicos, en lo que a la programación se refiere, y me refiero al ordenamiento de arreglos. Esto no solo es un paso más en el desarrollo de la lógica, cuando estamos aprendiendo, sino una herramienta muy útil en el campo de la programación.Ahora bien, a nosotros nos enseñan los métodos típicos de ordenamiento de arreglos (arrays o vectores, como quieran llamarlo), como lo son el Burbuja, el Quicksort, etc. Pero hay una clase de la API de utlierías de Java (java.util) que nos facilita esto, y es la clase Arrays. Y utilizandola es fácil ordenar un arreglo, con tan solo una instrucción.

La clase Arrays proporciona métodos (funciones) estáticos para manipular arreglos. Estos métodos son de alto nivel, como el sort para ordenar un arreglo, binarySearch para buscar en un arreglo ordenado, equals para comparar arreglos y fill para colocar valores en un arreglo. Y además estos métodos se sobrecargan para los tipos primitivos de arreglos (int, double, etc.) y para los arreglos Object (String, JPanel, Jbutton, etc.).

Para que todo esto quede claro vamos a realizar un fácil ejemplo:

import java.util.*;
public class UsoArrays {
private int numerosEnteros[] = { 1, 2, 3, 4, 5, 6 };
private double numerosDouble[] = { 8.4, 9.3, 0.2, 7.9, 3.4 };
private int llenoEnteros[], copiaNumerosEnteros[];
// inicializar los arreglos
public UsoArrays()
{
llenoEnteros = new int[ 10 ];
copiaNumerosEnteros = new int[ numerosEnteros.length ];
Arrays.fill( llenoEnteros, 7 ); // llenar con 7s
Arrays.sort( numerosDouble ); // ordenar numerosDouble en forma ascendente
// copiar el arreglo numerosEnteros en el arreglo copiaNumerosEnteros
System.arraycopy( numerosEnteros, 0, copiaNumerosEnteros, 0, numerosEnteros.length );
}
// mostrar los valores en cada arreglo
public void imprimirArreglos()
{
System.out.print( "numerosDouble: " );
for ( int cuenta = 0; cuenta <numerosDouble.length; cuenta++)
System.out.print( numerosDouble[ cuenta ] + " " );
System.out.print( "\nnumerosEnteros: " );
for ( int cuenta = 0; cuenta <numerosEnteros.length; cuenta++)
System.out.print( numerosEnteros[ cuenta ] + " " );
System.out.print( "\nllenoEnteros: " );
for ( int cuenta = 0; cuenta <llenoEnteros.length; cuenta++)
System.out.print( llenoEnteros[ cuenta ] + " " );
System.out.print( "\ncopiaNumerosEnteros: " );
for ( int cuenta = 0; cuenta <copiaNumerosEnteros.length; cuenta++)
System.out.print( copiaNumerosEnteros[ cuenta ] + " " );
System.out.println();
} // fin del método imprimirArreglos
// comparar el contenido de los arreglos
public void imprimirIgualdad()
{
boolean b = Arrays.equals( numerosEnteros, copiaNumerosEnteros );
System.out.println( "numerosEnteros " + ( b ? "==" : "!=" ) +
" copiaNumerosEnteros" );
b = Arrays.equals( numerosEnteros, llenoEnteros );
System.out.println( "numerosEnteros " + ( b ? "==" : "!=" ) +
" llenoEnteros" );
}
public int buscarUnEntero(int x)
{
return Arrays.binarySearch(numerosEnteros, x);
}
public static void main( String args[] )
{
UsoArrays usoArrays = new UsoArrays();
usoArrays.imprimirArreglos();
usoArrays.imprimirIgualdad();
int ubicacion = usoArrays.buscarUnEntero( 5 );
System.out.println( ( ubicacion >= 0 ? "Se encontro el 5 en el elemento " +
ubicacion : "No se encontro el 5" ) + " en numerosEnteros" );
ubicacion = usoArrays.buscarUnEntero( 8763 );
System.out.println( ( ubicacion >= 0 ? "Se encontro el 8763 en el elemento " +
ubicacion : "No se encontro el 8763" ) + " en numerosEnteros" );
}
} // fin de la clase UsoArrays;

En este sencillo ejemplo, se muestra el uso del método:

  • Arrays.fill(): que recibe un como argumentos un arreglo, y el valor con el que se va a rellenar el mismo.

  • Arrays.sort(): que recibe como argumento un arreglo, que será ordenado ascendentemente.

  • System.arraycopy(): que recibe 5 argumentos. El primer argumento (valoresEnteros) es el arreglo a partir del cual se van a copiar los elementos; el segundo argumento (0) es el índice que especifica el punto de inicio en el rango de elementos que se van a copiar del arreglo; este valor puede ser cualquier índice de arreglo válido. El tercer argumento (copiaNumerosEnteros) especifica el arreglo de destino que almacenará la copia. El cuarto argumento (0) especifica el índice en el arreglo de destino, en donde deberá guardarse el primer elemento copiado. El último argumento especifica el numero de elementos a copiar del arreglo en el primer argumento. En este caso copiaremos todos los elementos en el arreglo.

  • Arrays.equals(): este método recibe como argumentos dos arreglos que serán comparados, y que retorna un valor boolean como resultado de la comparación. true si son iguales, false en caso contrario… si, ya se que es obvio, pero es que hay gente que… en fin.

 

Aunque me salí un poco del tema principal (ordenamiento de arreglos), creo que la esencia del mismo queda más que comprendida. Solo agregar que si hasta ahora estás aprendiendo a programar, es mejor que implementes los métodos de ordenamiento a mano, es decir, empleando la lógica y utilizando instrucciones como for, if, else, etc. ya que no tendría gracia utilizar estos métodos sin siquiera tener un poco de experiencia… esta API la implementaron para hacernos las cosas más fáciles, pero no abuses.Saludos!!!

10 Comentarios | deja el tuyo

May, 28 2007 - 1:51 pm

Acerca de OpenJavaDay – OpenSolarisDay

No, esto no es un video tutorial XD… es un vídeo acerca de OpenJavaDay y OpenSolarisDay, copio y pego información:

Sun Microsystems y las Comunidades Abiertas de Java y OpenSolaris te invitan al OpenJavaDay – OpenSolarisDay, que se celebrará el próximo dÍa 31 de Mayo, en la Universidad Carlos III de Madrid (campus de Leganés), un encuentro que constituye la décima edición en España de la sesión para desarrolladores.

Concebido como un foro abierto de carácter tecnológico, reunirá a los principales expertos para que compartan las últimas novedades sobre JavaFX, NetBeans, Glassfish, OpenSolaris, OpenJDK, BPEL, OpenESB y SOA entre otras muchas.

El objetivo: hacer realidad la Era de la Participación, promovida por Sun, en el que las Tecnologías Abiertas cobran protagonismo gracias a las Comunidades que se crean en torno a ellas, dando un valor social a los usuarios, y haciendo posible la Web 2.0.

Bonita manera de hacer publicidad, no creen?

Sin comentarios | deja el tuyo

« Entradas anteriores