domingo, 24 de abril de 2011

Arreglos y vectores

ARREGLO: Es una Colección ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicación determinada dentro del arreglo y debemos conocerla para accederlo.

*Los arreglos mas conocidos son:
- Vectores: Son Estructuras Estaticas por preferencia.
v(3)

       0      1      2                            






- Matrices: Es una tabla bidimensional de números consistente en cantidades abstractas que pueden sumarse y multiplicarse.
 m(2,3)

   (0,0)         (1,0)     (2,0)        







        



- Cubo: Los datawarehouse.- Son almacenamiento de datos,donde se pueden conciderar cuanto conjuntos de datos tiene,y tiene una preferencia de 3 dimenciones.

*VECTORES:es una unidad de almacenamiento de datos que contiene:

1. inicializacion
2. Ingresar datos
3. Mostrar datos
4. Otros algoritmos
             - Ordenacion
             - Busqueda

  1. Inicializacion:
int v[]= new int[n];
object 0[]=new object[n];
int v1[]= {2,9,7,8};         ---> dimencion implicita
vector v2=new vector(5);

2. Ingresar datos:

v[0]=25;

       0        1         2                            
25
0
0



v2.add(300);      
v2.add(200);                    
v2.add(10,4);

       0            1          2         3         4
300
200
0
0
10



//Por teclado?

BufferedReader val=(new BufferdReader(new InputSheam Reader(System.in)));

int num=Interger.parseInt(val.readlime());

for(int i=0; ....;......;.....)

  v[i]=Integer.parseInt(val.readlime());

3. Mostrar datos
  Public static void mostrar(int x[]){
        for(int i=0; i<x length; i++){
          Sytem.out.printIn("["+i+"]"=+x[i]);
        }
 }
//invocacion en el main del metodo mostrar

   mostrar (v);
 
   v[0]=25
   v[1]=0
   v[2]=0

//mostrar datos con la class vector

Public static void mostrar v(vector x){
  for(int i=0; i<x.size()); i++);
    System.out.printIn("["+i+"]"=+x.get(i));
}

4. Ordenacion
Public void ordenar(int v[]){
  for(int i=0; i<v.length; i++){
    for(int j=0; j<v.length; j++){
      if(v[i]<v[j]){
          int aux=v[j];
          v[i]=v[j];
          v[j]=aux;
      }
    }
  }
}

//la forma mas facil es:

import java.util.Arrays;
  Arrays.sort(v);
  mostrar(v);

Busqueda
//Busqueda lineal no detectada cuando el algoritmo lo encuentra

Public static int Buscar(int v[], int elem){
  int pos=1;
}


//Busqueda binaria es la forma mas facil y corta de realizar

Import java.util.Arrays;
  Arrays.BinarySearch(v.elem);









  for(int i=0; i<v.length; i++){
    if(v[i]==elem)
    pos = i;
  }
  return pos;

lunes, 4 de abril de 2011

Estructuras Estaticas


Las estructuras de datos estáticas:
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra: enteros, reales, caracteres, boléanos, enumerados y subrangos (los últimos no existen en algunos lenguajes de programación)
La forma más fácil de almacenar el contenido de una variable en memoria en tiempo de ejecución es en memoria estática o permanente a lo largo de toda la ejecución del programa. No todos los objetos (variables) pueden ser almacenados estáticamente. Para que un objeto pueda ser almacenado en memoria estática su tamaño (número de bytes necesarios para su almacenamiento) ha de ser conocido en tiempo de compilación. Como consecuencia de esta condición no podrán almacenarse en memoria estática:
  • Los objetos correspondientes a procedimientos o funciones recursivas, ya que en tiempo de compilación no se sabe el número de variables que serán necesarias.
  • Las estructuras dinámicas de datos tales como listas, árboles, etc. ya que el número de elementos que las forman no es conocido hasta que el programa se ejecuta.
VECTORES:
  • Es una estructura de datos Estaticas lineal de 1 dimension.
  • Secuencia de elementos, donde los elementos se encuentran secuencialmente guardados en la memoria.
  • Se encuentra en memoria adyacente, es del mismo tipo y empieza en posicion 0 (cero). 
métodos más utilizados:

· Vector(int initialCapacity)
· add(Object element)
· elementAt(int index)
· get(int index)
· isEmpty()
· remove(int index)
· size()
Tenga en cuenta que la longitud de un vector v es v.size(), no v.length
Aquí tenemos un ejemplo de uso de la clase Vector
import java.util.*;
class TestVector{
public static void main (String[] args) {
Vector bv = new Vector(2); //crea un vector con capacidad 2
System.println(“Capacidad = “ + bv.capacity() + “ tamaño = “ + bv.size());

Arrays
Un array es un conjunto de valores del mismo tipo. Para hacer referencia a un
elemento concreto del array, especificamos el nombre del array seguido del número
de índice del elemento en particular entre corchetes []. Observe que el primer
elemento del array está indexado como 0, no como 1.




viernes, 1 de abril de 2011

Memoria

La memoria es una función del cerebro y, a la vez, un fenómeno de la mente que permite al organismo codificar, almacenar y recuperar información. Surge como resultado de las conexiones sinápticas repetitivas entre las neuronas, lo que crea redes neuronales (la llamada potenciación a largo plazo).
Experimento de Memoria espacial en ratones
La memoria permite retener experiencias pasadas y, según el alcance temporal, se clasifica convencionalmente en: memoria a corto plazo (consecuencia de la simple excitación de la sinapsis para reforzarla o sensibilizarla transitoriamente), memoria a mediano plazo y memoria a largo plazo (consecuencia de un reforzamiento permanente de la sinapsis gracias a la activación de ciertos genes y a la síntesis de las proteínas correspondientes).

Memoria Estática de Acceso Aleatorio es un tipo de memoria basada en semiconductores que a diferencia de la memoria DRAM, es capaz de mantener los datos (mientras esté alimentada) sin necesidad de circuito de refresco (no se descargan). Sin embargo, sí son memorias volátiles, es decir que pierden la información si se les interrumpe la alimentación eléctrica.

La memoria dinámica se refiere a aquella memoria que no puede ser definida ya que no se conoce o no se tiene idea del número de la variable a considerarse, la solución a este problema es la memoria dinámica que permite solicitar memoria en tiempo de ejecución, por lo que cuanta más memoria se necesite, más se solicita al sistema operativo. El sistema operativo maneja la memoria gracias al uso de punteros, por la misma naturaleza del proceso nos impide conocer el tamaño de la memoria necesaria en el momento de compilar.
Un dato importante es que como tal este tipo de datos se crean y se destruyen mientras se ejecuta el programa y por lo tanto la estructura de datos se va dimensionando de forma precisa a los requerimientos del programa, evitándonos así perder datos o desperdiciar memoria si hubiéramos tratado de definirla cantidad de memoria a utilizar en el momento de compilar el programa.