You are on page 1of 12

FACULTAD DE INGENIERIA

ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

NETBEANS 6.0
DEFINICIONES BSICAS DE LAS
ESTRUCTURAS DE DATOS
En programacin, una estructura de datos es una forma de organizar un conjunto de datos
elementales con el objetivo de facilitar su manipulacin. Un dato elemental es la mnima
informacin que se tiene en un sistema.
Una estructura de datos define la organizacin e interrelacin de stos y un conjunto de
operaciones que se pueden realizar sobre ellos. Las operaciones bsicas son:
Adicionar un nuevo valor a la estructura.
Borrar un valor de la estructura.
Bsqueda, encontrar un determinado valor en la estructura para realizar una operacin con
este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estn
ordenados)
Otras operaciones que se pueden realizar son:
Ordenamiento, de los elementos pertenecientes a la estructura.
Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las
apareadas.
Existen dos clases de tipos de datos: Simples (sin estructuras) y Compuestos (estructurados).

estndar
Datos simples

Entero (integer, int)


Real (float, double)
Carcter (char)
Lgico (boolean)

definido por
el programador

Subrango (subrange)
Enumerativo

estticos

Array (vector/matriz)
Registro
Archivo (fichero)
Conjunto
Cadena (string)

Datos estructurados

dinmicos

Lista (pila/cola)
Lista enlazada
rbol
Grafo

Los tipos de datos simples o primitivos significa que no estn compuestos de otras estructuras de
1

datos; lo ms frecuentes y utilizados por casi todos los lenguajes de programacin son: enteros,
reales, carcter y lgico. Los tipos de datos compuestos estn construidos basados en tipos de
datos primitivos; el ejemplo ms significativo es la cadena (string) de caracteres.
Los tipos de datos simples pueden ser organizados en diferentes estructuras de datos: estticas y
dinmicas.
Las estructuras de datos estticas son aqullas en las que el tamao ocupado en memoria se
define antes de que el programa se ejecute y no puede modificarse ese tamao durante
la ejecucin del programa. Estas estructuras estn en casi todos los lenguajes de
programacin: array (vectores y matrices), registros, etc.
Las estructuras de datos dinmicas no tienen las limitaciones o restricciones en el tamao de
memoria ocupada, como si lo tiene las estructuras estticas.
Una caracterstica importante que diferencia a los tipos de datos es la siguiente: los tipos de datos
simples tienen como caracterstica comn que cada variable representa un elemento; los tipos de
datos estructurados, tienen como caracterstica comn que un identificador (nombre)
puede representar mltiples datos individuales, pudiendo cada uno de stos ser
referenciado independientemente.
La eleccin del tipo de estructura de datos idonea a cada aplicacin depender esencialmente del
tipo de aplicacin.

ARRAYS UNIDIMENSIONALES O VECTORES


Un arreglo unidimensional(vector) es un tipo de datos estructurado que est formado de una
coleccin finita y ordenada de datos del mismo tipo. Un array puede estar compuesto de todos sus
elementos de tipo de dato entero, otro puede tener todos sus elementos de tipo de dato reales,
etc.
A los arrays unidimensionales se le conoce tambin como arreglos unidimensionales. Un
array unidimensional es una estructura que se le asigna un nombre y a cada elemento que
tiene ese array se asocia con un nico ndice. El tipo de acceso a los arreglos
unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento
del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el
uso de un ndice para cada elemento del arreglo que nos da su posicin relativa

Ejemplo 1:
Se tiene un array unidimensional llamado Notas de 10 elementos; este vector va almacenar
2

elementos de tipo de dato entero.

Notas

i=1
i=2
i=3

.
.
.
i=7

.
.

El ndice del array unidimensional es la


variable i, que va a tomar valores
desde el
1
hasta
la
cantidad
mxima de elementos, que para este
ejemplo es 10.
Cada valor del ndice representa a un
elemento del arreglo, es decir,
el ndice i=1 representa al 1er elemento,
el ndice i=2 representa al 2do
elemento, el ndice i=3 representa al 3er
elemento y asi sucesivamente hasta
el ndice i=10 que representa al
ultimo elemento del array.

i = 10

En base al ejemplo anterior podemos definir la sintaxis de un array unidimensional:


Sintaxis: Representacin grfica de un array unidimensional
NombreDelArray

i=1
i=2
i=3

.
.
.
i=x

.
.
i=n

Tambin se puede representar grficamente de la siguiente forma:

NombreDelArray

.
i=1
i=2

i=
x

i=
n

i=
x

i=
n

y de esta ultima tambin:

i=1
i=2

.
NombreDelArray

INGRESO DE DATOS
El ingreso de datos al arreglo se hace de la siguiente forma:
Sintaxis:
NombreDelArray [ ndice ] = ValorDelElemento
Leer ( NombreDelArray [ ndice ] )
Asignacin de valores al arreglo unidimensional
Del ejemplo 1, haremos el ingreso de los elementos al arreglo Notas:
Notas[ 1 ] = 15

Notas
15

Notas[ 2 ] = 18

18
14

Notas[ 3 ] = 14

17

Notas[ 7 ] = 17

20
Notas[ 10 ] = 20
Podemos apreciar que para ingresar un elemento al arreglo se debe determinar en que lugar se
almacenar, para ello utilizamos el ndice. Por ejemplo:
Notas [ 3 ] =

14 Elemento a almacenar en el arreglo

Nombre del arreglo

ndice

Para este ejemplo la nota 14 se almacenar en el ndice 3, pero se puede almacenar en


otro
ndice: Notas[ 5 ] = 14, o en otro: Notas[ 9 ] = 14. En la programacin podemos definir en que
ndice queremos almacenar un elemento.
Lectura de datos alarreglo unidimensional
Si queremos ingresar valores al arreglo por intermedio del teclado, haremos uso de la
funcin
Leer.
Ejemplos:
Leer (Notas[1])
Leer (Notas[7])

En esta instruccin ingresamos una nota en el ndice 1.


En esta otra instruccin ingresamos una nota en el ndice 7.

y asi para todos los ndices del arreglo.


Para el llenado de un arreglo unidimensional se hace uso de las estructuras repetitivas, la ms
utilizada es la estructura FOR. Por ejemplo tenemos un arreglo llamado arrayPrecios de 10, 20,
100 1000 elementos donde se almacenarn los precios de diferentes productos. Para este tipo
de casos se debe utilizar las estructuras repetitivas para su llenado de datos.
A continuacin se muestra en Pseudocdigo la forma de ingresar los 1000 datos de precios
al arreglo arrayPrecios.
desde i = 1 hasta 1000 hacer
Leer (arrayPrecios[i])
fin desde
MOSTRAR DATOS
Mostrar los datos de un arreglo unidimensional se hace de la siguiente forma:
Sintaxis:
NombreDelArray [ ndice ]

Del ejemplo 1, mostraremos los elementos del arreglo Notas:


Mostrar (Notas[ 1 ])
Esta instruccin muestra el valor 15
Mostrar (Notas[ 2 ])
Esta instruccin muestra el valor 18
Mostrar (Notas[ 7 ])
Esta instruccin muestra el valor 17, y asi sucesivamente cada instruccin mostrar los elementos

del arreglo.
De la misma forma como se ha hecho el llenado de datos del arreglo arrayPrecios, tambin sern
necesarias las estructuras repetitivas para mostrar sus elementos.
desde i = 1 hasta 1000 hacer
Mostrar (arrayPrecios[i])
fin desde
Nota:
Y esta misma estructura repetitiva nos servir para poder hacer los clculos que deseamos
realizar con los elementos del arreglo.

OPERACIONES CONVECTORES
Para llevar acabo estas operaciones necesitaremos de un arreglo. A continuacin se muestra un
arreglo llamado Edad de 7 elementos que almacena datos de tipo entero.
i=1
Edad

i=7

23 12 56 31 8 72 49

OPERACION

RESULTADO

Leer (Edad [1])

Lee un elemento por teclado (23) y lo almacena en


el Arreglo Edad dentro del ndice 1. Y as
sucesivamente ingresamos los demas valores al arreglo.

Mostrar (Edad [4])

Muestra el elemento que existe dentro del ndice 4:


el valor a mostrar es 31. Y de la misma forma
podemos mostrar todos los elementos del arreglo.

P = Edad [4] * 2

Se multiplica el elemento que existe dentro del ndice


4
con el nmero 2 y el resultado se asigna a la variable P.
P = 31 * 2
P
62variable S se almacena la suma de los elementos
En= la
que se encuentran en el ndice 2 y 5.
S = 12 + 8
S = 20

S = Edad [2] + Edad [5]

Edad [5] = Edad [3] - Edad [1]

En el ndice 5 del arreglo Notas se almacena la resta de


los elementos que se encuentran en el ndice 3 y 1.
Edad [5] = 56 - 23
Edad [5] = 33

Edad [6] = (Edad [4] * 4 + 8) / Edad [2]

En el ndice 6 del arreglo Notas se almacena el resultado


de la expresin.
Edad [6] = (31*4 + 8)/12
Edad [6] = 11

Edad [7] = Edad [5] + Edad [6]

En el ndice 7 del arreglo Notas se almacena la suma de


los elementos que se encuentran en el ndice 5 (Observar
que en la 5ta operacin Nota[5] toman un nuevo valor) y
el ndice 6.
Edad [7] = 33 + 11
Edad [7] = 44

Edad [2] = Edad [2] / Edad [2]

En el ndice 2 del arreglo Notas se almacena el resultado


de la divisin del elemento que se encuentra en el ndice
2 entre su mismo valor.
Edad [2] = 12 - 12
Edad [2] = 1

Edad [4] = Edad [7] + Edad [6] - En el ndice 4 del arreglo Notas se almacena la suma y
Edad [5] + Edad [4] - Edad [3] + resta de los elementos que se encuentran en los ndices
7, 6, 5 y 4.
Edad [2] - Edad [1]
Edad [7] = 44 + 11 33 + 31 56 + 1 - 23
Edad [7] = - 25

En conclusin:

Los arreglos en Java son dinmicos, pero no extensibles, lo cual significa que deben ser creados con el
tamao que tendrn hasta el final de su vida.
Un arreglo se declara de la siguiente forma:
<tipo>[ ] <nombre>;
O sea, para declarar, por ejemplo, un arreglo de nmeros enteros utilizaremos la siguiente sentencia:
int[] arrInt;
Es importante notar que el arreglo an no ha sido creado, sino meramente declarado. Para crear el
arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new:
arrInt = new int[10];
Este comportamiento debe comprenderse de esta forma: en Java todo es un objeto, y los objetos deben
ser creados mediante el operador new. El caso de los arreglos no es diferente, el tipo de datos del
arreglo (int [] en este caso) es una clase y cada una de sus instancias debe ser creada explcitamente, el
tamao puede pensarse como un parmetro al constructor de la clase.
A partir de este momento podemos utilizar arrInt como un arreglo de cualquier otro lenguaje.
Una de las caractersticas que hacen de Java un entorno de programacin seguro, y que se relaciona
con el manejo de los arreglos es que el lenguaje no permite la indexacin de arreglos fuera de rango, o
sea, una asignacin de este tipo generar una excepcin:
ArrInt[25] = 1;
Otra forma de declararlos es la siguiente:
UNIDIMENSIONALES:
tipo nombre_array[]=new tipo[n];
tipo nombre_array[]={valores};
BIDIMENSIONALES:
tipo nombre_array[ ][ ]=new tipo[n][n];
tipo nombre_array[ ][ ]={valores};

Ejemplo) Se sabe que la velocidad de un proyectil est dada por la ecuacin, en forma vectorial:
V= ai+ bj+ ck. Disee una aplicacin que sea capaz de leer los valores de las constantes a, b y c. y
muestre la magnitud y direccin de dicho proyectil.

Solucin:
1 im por tjavax.swing.*;
2
public classProyectil{
3 public static void main (String args []){
4 String leer;
5 double magnitud, direccion, sum;
6 doublevector[]=new double[3];
7 intban=1;
8 while(ban==1)//miestras hayan datos a procesar
9 {
10 //leemos el valor de las constantes
11 leer=JOptionPane.showInputDialog("Ingrese el valor de a:");
12 vector[0]=Double.parseDouble(leer);
13 leer=JOptionPane.showInputDialog("Ingrese el valor de b:");
14 vector[1]=Double.parseDouble(leer);
15 leer=JOptionPane.showInputDialog("Ingrese el valor de c:");
16 vector[2]=Double.parseDouble(leer);
17 //calculamos la magnitud
18 //la cual es la raz cuadrada de las suma+
19 //de las componentes al cuadrado
20 sum=(vector[0]*vector[0])+(vector[1]*vector[1])+(vector[2]*vector[2]);
21 magnitud=Math.sqrt(sum);
22 //La direccin viene dada por la tangente inversa
23 //del cociente de las componentes x,y
24 direccion=Math.atan(vector[1]/vector[0]);
25 JOptionPane.showMessageDialog(null, "El valor de la magnitud es: "+magnitud+"\n
y con un angulo direccional de: "+direccion+" Radianes");
26 leer=JOptionPane.showInputDialog("Hay ms datos a procesar?\n\nSi=1 y No=0");
27 ban=Integer.parseInt(leer);
28 }//del while
29 }//del main
30}//de la clase

Ejemplo 2) Se tienen las notas de 5 exmenes de 10 alumnos, y se desea promediar la nota


final de cada uno de ellos. Disee una aplicacin que solucione este problema.

Solucion:
1 import javax.swing.*;
2 public classMatrizNota s{
3 public static void main (String args []) {
4 int f,c;
5 double suma, promedio;
6 double notas [][]=new double[10][5];
7 String leer;
8 for(f=0; f<10; f++)//las filas
9{
10 suma=0;
11 for(c=0; c<5; c++)
12 {
13 leer=JOptionPane.showInputDialog("Ingrese la nota: "+c+" del alumno: "+f);
14 notas[f][c]=Double.parseDouble(leer);
15 while(notas[f][c]>10 || notas [f][c]<0)
16 {
17 leer=JOptionPane.showInputDialog("Ingrese la nota: "+c+" del alumno:"+f);
18 notas[f][c]=Double.parseDouble(leer);
19 }
20 suma=suma+notas[f][c];
21 }
22 promedio=suma/5;
23 JOptionPane.showMessageDialog(null,"El alumno, tiene un promedio de:
"+promedio);
24 }
25 }
26}
Algunas de sus caractersticas ms importantes de los arrays son las siguientes:

1. Los arrays se crean con el operador new seguido del tipo y nmero de elementos.
2. Se puede acceder al nmero de elementos de un array con la variable miembro implcita
length (por ejemplo, vect.length).
3. Se accede a los elementos de un array con los corchetes [ ] y un ndice que vara de
length-1.
4. Se pueden crear arrays de objetos de cualquier tipo. En principio un array de objetos es un
array de referencias que hay que completar llamando al operador new.
5. Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero
para valores numricos, el carcter nulo para char, false para boolean, null para Strings y para
referencias).
6. Como todos los objetos, los arrays se pasan como argumentos a los mtodos por referencia.
7. Se pueden crear arrays annimos (por ejemplo, crear un nuevo array como argumento actual
en la llamada a un mtodo).
INICIALIZACINDE ARRAYS:
1. Los arrays se pueden inicializar con valores entre llaves {...} separados por comas.

2. Tambin los arrays de objetos se pueden inicializar con varias llamadas a new dentro de
unas llaves {...}.
3. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un array con
dos nombres, apuntando al mismo y nico objeto.
4. Creacin de una referencia a un array. Son posibles dos formas:
double[] x; // preferible
double x[];
5. Creacin del array con el operador new:
x = new double[100];
6. Las dos etapas 4 y 5 se pueden unir en una sola:
double[] x = new double[100];

You might also like