jueves, 23 de mayo de 2013

Tipos de datos compuestos y agregados


«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


Los datos compuestos se pueden subdividir  en campos  que tengan significado.
En algunos  ocasiones los datos  compuestos se conocen  también como datos o tipos agregados. Los tipos agregados son datos  cuyos valores  constan de colecciones de elementos de datos.  Un tipo agregado se compone de tipos  de datos previamente definidos. Existen tres  tipos agregados  básicos: Arrays (arreglos), secuenciales y registros.

Arreglos o Array

 

Un array 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.

Datos secuenciales

Una secuencia o cadena es en esencia, un array cuyo tamaño puede variar en tiempo de ejecucion. Por consiguiente, las secuencias son similares a arrays dinamicos o flexibles





Registros

Un registro puede contener elementos datos agregados y primitivos. Cada elemento agregado, eventualmente, se descompone en campos formados por elementos primitivos, Un registro se puede considerar como un tipo o colección de datos de tamaño fijo. Al contrario que en los arrays, en los que todos sus elementos deben ser del mismo tipo de datos, los campos de los registros pueden ser de diferentes de datos. A los campos de los registros se accede mediante identificadores.


Ejemplo 1 Entrada y salida de datos en java


El código fuente:

Clase principal:
public class Ejemplo1 {
    
   public static void main(String[] a3d) {
        Datos objeto  = new Datos();
     objeto.obtenerCaracter();
     objeto.mostrarDato();
//   objeto.obtenerFlujo();
//   objeto.mostrarDatos();
    }
}
Clase Datos:
public class Datos {
 
    // atributos globales
      private static char flujo;//variable temporal que recibe el dato
      private String linea = null; 
    
       
       //metodo para obtener Un caracter.
       public void obtenerCaracter(){
       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(Datos.class.getName()).log(Level.SEVERE, null, ex);
           }
       
       }
    //metodo para obtner flujo
    public void obtenerFlujo(){
         
   
    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(Datos.class.getName()).log(Level.SEVERE, null, ex);
           }
       
        
        
    }
    public void mostrarDatos(){
    System.out.println("Dato ingresado: "+linea);   
    }
    
     public void mostrarDato(){
    System.out.println("Dato ingresado: "+flujo);   
    }

}

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.