sábado, 1 de junio de 2013

Ejemplo: Uso de arreglos o array como estructura de datos

Aquel que pregunta una vez es tonto una vez, aquel que no pregunta nunca es tonto siempre.

Comparto un ejemplo del uso de arreglos, como una estructura de datos, proporcionando solución a un problema planteado.
Si la explicación aun no te queda clara puedes consultar la anterior publicación la cual es un instructivo como manual de bolsillo indispensable, con el cual puedes aprender rápidamente el uso de los mismos.

Fundamentos de Arreglos o Array
Apuntadores en java.

Ejemplo 1 parte 1

 



Código fuente

//Librerias importantes

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ArregloSimple {
    
      //Tipos Simples
  private  String mensaje;
  private  String linea;
  private boolean asignado;
  
     //forma#1
//  String [] Nombres;
//  String [] Clasificaciones={"Disponible","Espacio no Disponible","Error de formato","Sistema iniciado"};
  //forma#2
   private  String [] Nombres, Clasificacion={"Disponible","Espacio no Disponible","Error de formato","Sistema iniciado"};
  
   
   InputStreamReader Flujo_bytes= new InputStreamReader (System.in);
   BufferedReader entrada= new BufferedReader (Flujo_bytes); 
 public void iniciarSistema(){
      System.out.println("Para Iniciar el sistema debe ingresar el numero de datos a registrar:");
      try {
          linea= entrada.readLine();
         
      } catch (IOException ex) {
         System.out.println("Error ");

      }
      
      
      try{
      int numPersona= Integer.parseInt(linea);
      Nombres= new String[numPersona];
      System.out.println( Clasificacion[3]);
      }catch(NumberFormatException e){
         System.out.println("Error ");

      }
       
 }
 
 public void registrarUsuario(){
  boolean respuesta= true;
  while(respuesta){
  System.out.println("Ingrese el nombre de usuario");  
      try {
          linea= entrada.readLine();
          listarSimple(linea);
         
      } catch (IOException ex) {
         System.out.println("Error ");

      }
      
      try{
      System.out.println("Desea registrar otro usuario? SI o NO");   
      linea= entrada.readLine();
      System.out.flush();
      
       if( linea.equalsIgnoreCase("si")){
              continue;
              }else if( linea.equalsIgnoreCase("no")){
              break;
              }
      
      }catch (IOException ex) {
             System.out.println("Error ");

          }
  
  }
     
 
 }
  
public void listarSimple (String nombre){
asignado= false;
if(Nombres!=null){//analizar si existe
        
                for (int i = 0; i < Nombres.length; i++) {

                if(Nombres[i]== null){
                System.out.println("Casilla \t"+i+Clasificacion[0]);
                Nombres[i]=nombre;
                
                asignado=true;
                break;
                }
                    
                
            }
            
        }

if(asignado){
            mensaje="Asignado Exitosamente";
            System.out.println(mensaje); 
        }else{
              mensaje="No existe Espacio suficiente";
            System.out.println(mensaje); 
        }


}

public void listarDatos(){
 for (int i = 0; i < Nombres.length; i++) {

               
                System.out.println("Usuario \t"+Nombres[i]);
               
         }


}

    
}


//clase con el metodo principal (main)
public class Ejemplo2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      ArregloSimple objeto= new ArregloSimple();
      objeto.iniciarSistema();
      objeto.registrarUsuario();
      objeto.listarDatos();
      
      
    }
}

Estructura de datos tipo arreglo o array

Aquel que pregunta una vez es tonto una vez, aquel que no pregunta nunca es tonto siempre.



Lo que debemos saber

 

Definición de estructura de datos:
Una definición exacta de un estructura se puede mencionar:
Se puede definir como una estructura de datos a una organización o estructuración de una colección de elementos dato. Es decir que es un conjunto de datos con relaciones bien definidas.
Una definición  exacta de  arreglos:
Un array o Arreglos es normalmente, una colección de datos de un tamaño o longitud fija, cada uno de cuyo datos es accesible en tiempo de ejecución mediante la evaluación de las expresiones que representan a los sub indices o indices correspondientes. Todos los elementos de un array deben ser del mismo tipo.

Características de un arreglo

Finita: todo arreglo tiene un límite; es decir, se debe determinar cuál será el número máximo de elementos que formarán parte del arreglo.
  • Homogénea: todos los elementos de un arreglo son del mismo tipo. Es decir, todos enteros, todos booleanos, etcétera, pero nunca una combinación de distintos tipos.
  • Ordenada: se puede determinar cuáles son el primero, el segundo, el tercero, ... y el enésimo elementos.
  • Si un arreglo tiene la característica de que puede almacenar a N elementos del mismo tipo, entonces deberá permitir la recuperación de cada uno de ellos. 

Los índices tam-bién permiten hacer referencia a los componentes del arreglo en forma individual; es decir, distinguirán entre sus elementos. Por tanto, para hacer referencia a un elemento
de un arreglo se debe utilizar:

  • El nombre del arreglo.
  • El índice del elemento.

El proceso que se puede realizar con arrays abarca las siguientes operaciones:
Declaración, creación, inicialización y utilización. Las operaciones de declaración, creación e inicialización son necesarias para poder utilizar un arreglo o array.




Declaración de un arreglo

La declaración de un array es la operación mediante la cual se define su nombre con un identificador válido y el tipo de los elementos del array. La sintaxis para declarar un array puede adoptar dos formatos:

  tipoDato [ ] nombreArray 

TipoDato nombreArray[ ] 


  Ejemplo 


  //Se declara un array lilista de tipo double 

    double [ ] miLista;

    double miLista[]; 


  //  Se declara un array temperatura de tipo float 

    float temperatura[];

    float [ ] temperatura; 

    

    

Las declaraciones no especifican el tamaño del array que se especificará cuando se cree el mismo.

Creación de un arreglo

Un array o arreglo en Java es un objeto y la declaración no asigna espacio en memoria para el array. No se pueden asignar elementos al array a menos que el array esté ya creado. Después que se ha declarado un array se puede utilizar el operador new para crear el array con la sintaxis siguiente:
nombreArray = new tipoDato [ tamaño] ; 

nombreArray es el nombre del array declarado previamente, tipo Dato es el tipo de dato de los elementos del array y tamaño es la longitud o tamaño del array y es una expresión entera cuyo valor es el número de elementos del array.
Ejemplo

    miLista = new double [8]; // array miLista de 8 elementos 

    temperatura = new float [30]; // array temperatura de 30 elementos 

Inicialización y utilización

Cuando se crea un array, a los elementos se les asigna por defecto el valor cero para las variables numéricas de tipos de datos primitivos, ’ \u O O O para variables de tipo carácter, char, false para variables lógicas, boolean, y null para variables objetos. A los elementos del array se accede a través del índice. Los índices del array están en el rango de O a tamaño-l. Así, miLista contiene 8 elementos y sus índices son O, 1, 2, . . . , 7. Cada elemento del array se representa con la siguiente sintaxis:


    nombreArray[índice]; 

    Ejemplo 1

    milista [ 7];// representa el último elemento del array 

Ejemplo 2
Un array completo se puede inicializar con una sintaxis similar a
double[] miLista = { 1.5, 2.45, 3.15, 7.25, 8.4 };
esta sentencia crea el array mi Li s t a que consta de cinco elementos.

Cálculo del tamaño de un arreglo

El tamaño de un array se obtiene con una variable instancia length. Así, por ejemplo, si se crea un array milista, la sentencia miLista. length devuelve el tamaño del array
miLista (10, por ejemplo).