Mostrando entradas con la etiqueta TIPOS DE DATOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta TIPOS DE DATOS. Mostrar todas las entradas

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();
      
      
    }
}

lunes, 6 de mayo de 2013

Flujo de datos en java

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikvUAFmJVseJ4vGsBY8_fwBZvwUSZmjEVTendHw3ndL-fXZuoaDlNAtvGhSDrdrMdC55u2a6BaWJ20DloHV1Ziwc7a8GrOiAA3vbtFqeJJ-yq2NaBf6Frr10Zmz_kxjV3AsNHI48NEkheq/s1600/Flujo+de+datos.jpg
 Para introducirnos en el amplio mundo  de la programación   hablaremos de la importancia del manejo de los datos entrada y salida de los mismos, ya que esto es solo una muestra de lo que veremos el resto  de nuestras próximas publicaciones, el uso adecuado de los datos.
Es decir,  con la finalidad de comprender las funciones, mostrare código fuente  para que puedan analizar y usar en sus proyectos.
Por supuesto que se dará una breve explicación del funcionamiento y su implementacion.

Entrada y salida de datos en java ( Teclado y pantalla)

Lo que debemos saber de entrada de datos.
En la mayoría de casos la fuente de entrada de datos es el teclado  y la fuente de salida de datos es la pantalla.
La entrada y salida estándar son flujos de datos que actúan como canales de comunicación permitiendo la interacción entre un programa y su entorno en el sistema. En Java podemos tener acceso a estos flujos de datos desde la clase
java.lang.System.

La clase System define un objeto de la clase BufferedIputStream, cuya referencia viene dada  por in. El objeto esta asociado al flujo estándar de entrada, que por defecto  es el teclado. Los elementos  básicos de este flujo  son caracteres individuales , no cadenas como ocurre con el objeto out. Entre los métodos de las clase se encuentra  read(), que devuelve el carácter actual en el  buffer de  entrada (solamente 1 carácter).

Los Buffer son Espacios de memoria principal que se reservan para el almacenamiento intermedio de datos procedentes o con destino a los periféricos. Los dos esquemas más usuales de reserva de zonas que incorporan los Sistemas Operativos para mejorar su rendimiento son el buffer simple y el buffer doble.

Lo que debemos saber de salida de datos.
El objeto out definido en la clase System esta asociado con el flujo de salida, que dirige los datos a consola y permite visualizar en la pantalla de su equipo.

System.out  es una referencia a un objeto de la clase PrintStream, el cual contiene los métodos esenciales para mostrar la salida de datos por pantalla a través de un  buffer. Entre ellos tenemos:
print(); Transfiere una cadena de caracteres al buffer de la pantalla.
println(); Transfiere una cadena de caracteres y el caracter de fin de linea al buffer de la pantalla.
flus();  El buffer con las cadenas almacenadas se vuelcan en pantalla.

Ejemplo 1:
El código siguiente es un ejemplo simple de entrada de datos desde la consola.
Pero hacemos énfasis en el concepto anterior, donde explica que con el metodo  read(), solamente obtendremos un solo carácter.

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

public class EDDSimples {
    private static char flujo;//variable temporal que recibe el dato

    public static void main(String[] args) {
        System.out.println("Ingresar un dato");
        try {
            flujo=(char) System.in.read();// se castea para pertenecer al mismo tipo de variable
        } catch (IOException ex) {
            Logger.getLogger(EDDSimples.class.getName()).log(Level.SEVERE, null, ex);
        }
        
           System.out.println("El dato ingresado: "+flujo);
    }
}

Resultado del primer ejemplo


Ejemplo 2:
El código siguiente es un ejemplo simple de entrada de datos desde la consola.
Ahora no  recaudaremos un solo carácter  sino que  obtendremos todos los datos encontrados en una linea. Usando InputStreamReader se obtiene el flujos de bytes y es trasladado a flujos de caracteres.

BufferedReader Crea un flujo de caracteres de entrada de búfer que utiliza una memoria intermedia de entrada de tamaño predeterminado.
La variable linea solo obtiene la conversión de bytes a cadenas de caracteres.


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

public class EDDSimples {
    

   public static void main(String[] args) {
        
    String linea = null;   
    InputStreamReader Flujo_bytes= new InputStreamReader (System.in);
    BufferedReader entrada= new BufferedReader (Flujo_bytes);
    System.out.println("Ingresar un flujo de datos");    
    System.out.flush();
        try {
            linea= entrada.readLine();
        } catch (IOException ex) {
            Logger.getLogger(EDDSimples.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        System.out.println("Dato ingresado: "+linea);   
    }
}


Salida del ejemplo 2

viernes, 3 de mayo de 2013

Tipo de datos simples o primitivos


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYo39Kq2EXrL_bDRHFmFl1FDnlnzQcqeEcBHBo56KbriDqL0x2PjxefozlK4F7PmnWC5gNRV2Q4ekWovDwaTyyAON-8Z5VUQq0zXmqkF8UgwVdV7CNjU0p2CNT91j__tSRzc7S5C7bWFXF/s1600/Esquema+de+datos+simples.jpg«La mayoría de los buenos programadores programan no porque esperan que les paguen o que el público los adore, sino porque programar es divertido.»

-Linus Torvalds

 En el  desarrollo de software los equipos informáticos se han convertido en una herramienta imprescindible en las empresas actuales, desde las grandes hasta las muy pequeñas, incluyendo a los trabajadores autónomos  disponen de un equipo informático que les ayuda en su proceso productivo de la información  Por lo que los datos se han convertido en algo muy importante, su gestión y su resguardo  es de gran interés de los desarrolladores.

Hay solamente cuatro diferentes tipos de datos que consideramos mas simples o primitivos. Otros tipos de datos son tipos que representan datos mas complejos. Los tipos tienen que ver con la clase de dato, una variable puede alojar y determinar que clase de operaciones se pueden desarrollar con el dato alojado en ella.

Datos primitivos o fundamentales

Lo que debemos saber

El dato es una representación simbólica (numérica, alfabética  algorítmica), un atributo o característica de una entidad. Los datos describen hechos empíricos, sucesos y entidades.

 Carácter: Frecuentemente se les conoce como Char, porque generalmente los lenguajes de programación están en ingles. Este tipo de dato representa a los caracteres simples, como 'd'. Un tipo de dato complejo que se deriva del tipo carácter  es aquel que reúne mas de un carácter y forma palabras o frases, se llama tipo cadena o string. Ejemplo: la variable nombre Empleado de tipo string puede alojar el dato  "Hola mundo".

Booleano: Los valores booleanos son valores lógicos y pueden ser falso o verdadero. En estos valores se indica el verdadero con el numero 1 y el falso con el 0.  

Entero: Los enteros están entre los tipos de datos mas utilizados en los lenguajes de programación  Hay diferentes clases de números enteros y difieren por el tamaño de ellos, incluyendo enteros cortos y enteros largos. Por ejemplo, en Java, los enteros cortos se alojan en 8 bits, mientras que los enteros de tipo largo, ocupan hasta 64 bits de longitud. Los números enteros son positivos y negativos, por ejemplo -15 y 1000. Notemos que no tienen punto decimal.

Real( Float): Los números reales son números con parte decimal, por ejemplo -10.0, 113288.0 y 12.45. Sin embrago, hay lenguajes de programación como NetLogo, que no hacen diferencia entre numeros enteros y reales cuando son exactos, como el caso de 1 y 1.0.









Tipos de datos en java

Para java los tipos de datos simples representan  valores escalares, valores individuales, como pueden ser char o los enteros. Java no soporta un gran numero de tipos de datos predefinidos, pero tiene la capacidad para crear sus propios tipos de datos a partir de la construcción class. 
Estos son los principales tipos de datos básicos en java, sus tamaños en bytes y el rango de valores que puede almacenar.



Los tipos fundamentales en java son:
Entero: (números completos y sus negativos) de tipo int.
Variantes de enteros: Tipos byte, short y long.
Reales números decimales: tipo float, double.
Caracteres: letras, dígitos, símbolos y signos de puntuación.
Bolean: true y false.

Clasificaciones en los tipos de datos





«La mayoría de los buenos programadores programan no porque esperan que les paguen o que el público los adore, sino porque programar es divertido.»
-Linus Torvalds



Existen muchas clasificaciones para los tipos de datos. Una de estas es la siguiente:


Dinámicos 

Estáticos 
         El tipo cadena 
         Estructurados 
         Simples 
                  Ordinales 
                  No-ordinales 


Tipos estáticos
Casi todos los tipos de datos son estáticos, la excepción son los punteros. Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la ejecución del programa. Es decir,una vez declarada una variable de un tipo determinado, a ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuir.

Tipos dinámicos.
Dentro de esta categoría entra solamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. 


De acuerdo con la forma en que los datos se organizan, se clasifican en:
Tipos de datos simples.
Tipos de datos estructurados.


Tipos simples

Como su nombre indica son los tipos básicos. Son los más sencillos y los más fáciles de aprender. Los tipos simples más básicos son:entero,lógico,carácter y real. Y la mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados

Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos. Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array, colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.

Tipos ordinales

Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el conjunto de valores que representa se puede contar  , es decir, podemos establecer una relación uno a uno entre sus elementos y el conjunto de los números naturales.Dentro de los tipos simples ordinales, los más importantes son:

El tipo entero.
El tipo lógico.
El tipo carácter.
Tipos no-ordinales

Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo nos sirve para declarar variables que pueden tomar valores dentro del conjunto de los números reales. A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No se puede establecer una relación uno a uno entre ellos y los número naturales. 


Estructuras de Datos (Fundamentos)





«La mayoría de los buenos programadores programan no porque esperan que les paguen o que el público los adore, sino porque programar es divertido.»
-Linus Torvalds




  Saludos amigos hoy les publico una sintensis acerca de la importancia y el surgimiento de las estructuras de datos. 
La importancia de las computadoras radica fundamentalmente en su capacidad para
procesar información. Esta característica les permite realizar actividades que antes sólo
las realizaban los humanos.

 Con la aparición de los lenguajes de programación estructurados en la década de los 60, surge el concepto de tipo de datos (ing., data type), definido como un conjunto de valores que sirve de dominio de ciertas operaciones. Con el propósito de que la información sea procesada, se requiere que ésta se almacene en la memoria de la computadora. 


TIPOS DE DATOS
Definición : El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera del conjunto seproducirá un error. La asignación de tipos a los datos tiene
dos objetivos principales:
Por un lado, detectar errores en las operaciones
Por el otro, determinar cómo ejecutar estas operaciones.




A mediados de la década de los 70 el concepto de tipo abstracto de datos (ing., abstract data type; abreviadamente, TAD ), que considera un tipo de datos no sólo como el conjunto de valores que lo caracteriza sino también como las operaciones que sobre él se pueden aplicar, juntamente con las diversas propiedades que determinan inequívocamente su comportamiento. 


Se puede definir un tipo abstracto de datos como un conjunto de valores sobre los que se aplica un conjunto dado de operaciones que cumplen determinadas propiedades. El calificativo "abstracto" no significa "surrealista" sino que proviene de "abstracción"  y responde al hecho de que los valores de un tipo pueden ser manipulados mediante sus operaciones si se saben las propiedades que éstas cumplen, sin que sea necesario ningún conocimiento ulterior sobre el tipo; en concreto, su implementación en la máquina es absolutamente irrelevante. 


La implementación de un TAD consiste en determinar una representación para los valores del tipo y en codificar sus operaciones a partir de esta representación, todo ello usando un lenguaje de programación convencional.