24 mar 2015

Los Working Set en Eclipse. Una forma de organizar los proyectos

Cuando en Eclipse crece el número de proyectos con los que estamos trabajando, puede ser interesante organizarlos mediante los denominados Working Set, que vendrían a ser una especie de directorios o carpetas donde organizarlos.

Antes de agrupar en un Workin Set, hay que crearlo. Por defecto todos los proyecto del explorador están en el primer Workin Set. Para crear uno nuevo Desde el explorador de proyectos de Eclipse, pulsamos en el botón View Menu (triángulo con el vértice hacia abajo)


Nos aparece la siguiente ventana:


Elegimos la opción Select Working Set… y aparece una nueva ventana en la que pulsaremos el botón new:


Elegimos el tipo de Working Set, en este caso Java:


Por último ponemos nombre al Working Set y le añadimos los proyectos que va a contener.


Una vez hecho esto, aparentemente no ha cambiado nada y en el explorador aparecen todos los proyectos, tendremos que desplegar de nuevo el menú del botón View Menu y elegir de nuevo la opción Select Working Set, ahora ya nos aparecerá el Working Set que hemos creado y si lo seleccionamos sólo nos aparecerán los proyectos que hemos metido.


16 dic 2014

Algoritmos clásicos de ordenación en Java

 

Ordenación de vectores mediante algoritmos

Ordenación por intercambio

Ordenación por selección

Ordenación por el método de la burbuja




Ordenación de vectores mediante algoritmos

Ordenación por intercambio

Hace sucesivas pasadas, comprobando valores consecutivos. Si uno no es menor que el otro, se intercambian, con lo que se va ordenando parcialmente.  Se termina cuando en una pasada no se realiza ningún intercambio.

Inter= true;
while  (inter == true) { // mientras haya habido intercambio
            inter= false;
            for (i=0; i <= n-2; i++) {
                        if (t[i] > t[i+1]){
                                   aux= t[i];
                                   t[i] = t[i+1];
                                    t[i+1] = aux;
                                   inter= true;
                                   }
                        }
            }

 

Ordenación por selección

Se busca el mínimo, se intercambia con el primer elemento. Se repite el proceso con el resto de valores desordenados,  ubicando el segundo valor mínimo como el segundo de los ordenados, hasta que no existan valore desordenados.

for (k=0; k <= n-2; k++) { // buscamos el mínimo entre k y n
            indMin = k; //se toma el primero
            for (i=k           +1; i<=n-1; i++) {
                        if (t[i] < t[indMin]){
                                   indMin= i;        //nuevo mínimo
                                   }
            }
            aux = t[indMin];
            t[indMin] = t[k];
            t[k]= aux;
}

 

Ordenación por el método de la burbuja

Se trata de una ordenación por intercambio mejorada, ya que en cada iteración nos queda ordenado el último elemento, con lo que ya no es necesario llegar a ese elemento sino hasta el anterior.


for (i=0; i <= n-2; i++) {
            for (j=0; j <=  n-2 –i ; j++) {
                        if (t[j] > t[j+1]){
                                   aux = t[j];
                                   t[j] = t[j+1];
                                   t[j+1]= aux;
                                   }
            }
}

 

14 nov 2014

La clase PrintWriter de Java

Características.

Clase que nos permite escribir con formato texto tanto en la salida estándar, como en ficheros, en cadenas, o en streams.

Hay que especificar, a través de los argumentos, dónde se va a producir la salida.

EJ. 1:   PrintWriter pw1= new PrintWriter(System.out);
EJ. 2:   PrintWriter pw2= new PrintWriter(new File("fichero.txt"));

A partir de la versión 5, incluso se permite:

Ej. 3:    PrintWriter pw2= new PrintWriter("fichero.txt");

Implementa todos los métodos de la clase PrintStream. A diferencia de esta clase, sus métodos de escritura no se vacían automáticamente al escribir una nueva línea.

Principales métodos.

o   print(), escribe el argumento. Está sobrecargado para los tipos primitivos.
pw.print(Hola, mundo);
pw.print(2050);

o   println(), escribe el argumento y salta de línea.

o   printf(), salida con formato, similar a C.
pw.printf(Saludo: %s %d %n, Hola, mundo, 2050);

o   flush(),  vacía el stream.

o   close(), cierra vaciando previamente el stream.

o   write(), escribe el argumento.
pw.write(Hola, mundo);


Ejemplo:

public static void main(String[] args){
    …
       FileWriter f = new FileWriter(“salida.txt”);
  PrintStream ps = new PrintStream(f);
  for (int[] fila : matriz) {
      String st = "";
      for (int value : fila) {
            st += value + delimiter;
            }
         ps.printf("%s%n", st);
     }
  ps.close();

}

13 nov 2014

Estructuras de control en Java - El bucle for – each


Dentro de las estructuras de control repetitivas, Java cuenta con los tradicionales while(), do-while() y for () con estructuras idénticas a las utilizadas en C y en C++, con la salvedad de la condición de iteración que tiene que ser un valor lógico, no valiendo un valor numérico.

Java además, a partir de la versión 5, incorpora el bucle, conocido como for each.
  • Se utiliza de manera especial para controlar arrays o en general colecciones. 
  • Tiene la ventaja de no tener que utilizar una variable para controlarlo. 
  • Su funcionamiento se basa en iterar para cada uno de los elementos de la colección, sin necesidad de conocer el número de elementos de los que consta.


El formato de este bucle es: 

for( tipo var_elto: var_array){
//instrucciones
}

Su funcionamiento, consiste en ir tomando cada elemento del array var_array, que serán del tipo tipo_var y lo copia en var_elto para su procesamiento.


Ejemplo, for each frente a for tradicional:

public static void main(String[] args){
    int[] lista = {1, 2, 3, 4};
     // recorrido del array
    for(int n : lista)
        System.out.println(n);
     // recorrido del array con el for tradicional
 for(int i=0; i< lista.length; i++ )
        System.out.println(lista[i]);
}


Ejemplo, con una colección:

public static void main(String[] args){
    …
  ArrayList<String> aList = new ArrayList<String>();
    aList.add(“Madrid”);
    aList.add(“Palencia”);
    aList.add(“Guadalajara”);
  // recorrido de una colección
    for(String s : aList)
        System.out.println(s);
}


Ejemplo, procesando una matriz por filas y columnas: 

public static void main(String[] args){
    int[][] matriz;
  for (int[] fila : matrix) {
         for (int elto : fila) {
                System.out.printf("%8d", elto);
            }
      System.out.printf(“%n");
     }
}


Equivalente con el for tradicional: 

public static void main(String[] args){
    int[][] matriz;
  for (int i=0; i < matriz.length; i++) {
         for (int j=0; j < matriz[0].length; j++) {
                System.out.printf("%8d", matriz[i][j]);
            }
      System.out.printf(“%n");
     }

}