Está en la página 1de 42

PROGRAMACIN I

Ing. Nancy Magaly Loja Mora



MACHALA-2014
INTRODUCCION
Las Estructuras de Datos son una coleccin de
datos cuya organizacin se caracteriza por las
funciones de acceso que se usan para almacenar y
acceder a elementos individuales de datos.
CLASIFICACION DE LOS TIPOS DE
DATOS
Dinmicos
Estticos
Cadenas
Estructurados
Simples
Ordinales
No-ordinales
TIPOS ESTRUCTURADOS
Mientras que una variable de un tipo simple slo
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 (arreglos),
colecciones sin orden mediante el tipo conjunto, e
incluso colecciones que contienen otros tipos, son
los llamados registros.
ARREGLOS
Un arreglo puede definirse como un grupo o una
coleccin finita, homognea y ordenada de
elementos.

TIPOS:
De una dimensin (unidimensional o vectores)
De dos dimensiones (bidimensionales o matrices)
De tres o ms dimensiones
ARREGLOS UNIDIMENSIONALES
Un arreglo unidimensional es un tipo de datos
estructurado que esta formado por una coleccin
finita y ordenada de datos del mismo tipo.

Tipo de Acceso: Acceso directo, es decir se puede
acceder a cualquier elemento del arreglo sin tener
que consultar a elementos anteriores o posteriores.
ARREGLOS BIDIMENSIONALES
Al igual que los anteriores es un tipo de datos
estructurado, finito, ordenado y homogneo, que se
usa para representar datos que pueden verse
como una tabla con filas y columnas.
Tipo de Acceso: Acceso directo, por medio de un
par de ndices.
ARREGLOS EN JAVA
Declaracin
tipo_dedato nom_variable [];
tipo_dedato [] nombre_variable;
Ejemplo
double array2[];
Definir tamao de arreglos:
arreglo = new tipo_dedato[capacidad];
Ejemplo
array = new String[10];
ARREGLOS EN JAVA
Declaracin y asignacin en una sola lnea

String array[] = new String[10]; //se declara un
arreglo y se asigna su tamao en una misma lnea
ARREGLOS EN JAVA
Asignacin de valores a elementos del array

String array[] = new String[10];

array[0]= "Ejemplo";
array[1]= "Hola";
array[2]= "Mundo";


EJEMPLO
int array[] = new int[3];

array[0] =2;
array[1] = 10;
array[2] = 7;

System.out.println("El valor de la primera posicion del
arreglo es" + array[0]);



3 6 8 1 0 4 2
0 1 2 3 4 5 6
Ejemplo de un arreglo que contiene 7 nmeros enteros
ndices
Elementos del
arreglo
Elemento que ocupa la
posicin 3 en el arreglo
Creacin:
int[ ] myArray;
// o tambin
int myArray[ ];
Cuando se declara una variable arreglo, sta no tiene ningn valor. Antes
de asignar cualquier valor, se debe reservar un espacio en memoria,
utilizando el operador new y asignarlo a la variable.
Declaracin:
nombreArreglo = new tipoDato[tamao];
miVector = new int[7];
Continuando con el ejemplo anterior
Al reservar espacio para los elementos de un vector, mediante
new, se inicializa automticamente en cero su contenido.
Cuando se ejecuta esta sentencia de creacin , la varianle
miVector, har referencia a un vector de 7 elementos enteros.
Creacin:
myArray = new int[7];
New: operador especial que reserva espacio en memoria
Arreglos
Utilizacin:
nombreArreglo [ndice]
Para acceder a un elemento de un arreglo, se coloca el nombre del
arreglo y entre corchetes el ndice del elemento que se desea.
3 6 8 1 0 4 2
0 1 2 3 4 5 6
Por ejemplo, si se desea obtener el nmero 4 del siguiente vector:
myArray [5]
Los ndices en un arreglo, van desde 0 hasta el tamao 1.
El tamao de un arreglo se obtiene con el mtodo length, con
la siguiente sintaxis:
Utilizacin:
nombreArreglo.length
En nuestro ejemplo:
myArray.length
Arreglos
EJEMPLOS
1) Se desea guardar los sueldos de 5 operarios.

import java.util.Scanner;
public class PruebaVector1 {
public static void main(String[] args) {
Scanner teclado;
teclado=new Scanner(System.in);
int[] sueldos=new int[5];
for(int i=0;i<5;i++) {
System.out.print("Ingrese valor del sueldo:");
sueldos[i]=teclado.nextInt();
}
for(int f=0;f<5;f++) {
System.out.println(sueldos[f]);
}
}
}
EJEMPLO
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.


EJERCICIOS
Escribe el cdigo en Java del siguiente mtodo

a) El mtodo
public void inicia1 (int n )

que declara un arreglo de enteros y le asigna a cada localidad
los valores 0,3,6,..,3*n donde n es la longitud del arreglo.

Por ejemplo, si se define el siguiente arreglo:

int A[ ];
A= new int[6];

Y despus se ejecuta la instruccin...
Int n=10;
inicia1( n);

...las localidades de A deben ser A[0]=0, A[1]=3, A[2]=6, A[3]=9,
A[4]=12 y A[5]=15...

Matrices
0 1 2 3 4 5
0

1

2

3

4

5
(matriz 2 3)
(matriz 4 0)
Arreglos Bidimensionales o Matrices
Un arreglo Bidimensional es un conjunto de datos
homogneos, finito y ordenado, donde se hace
referencia a cada elemento por medio de dos
ndices. El primero de los ndices se utiliza
generalmente para indicar la fila, y el segundo para
indicar columna.
Declaracin.
tipoDato nombreMatriz[ ][ ];
Para declarar una matriz de nmeros enteros, llamada
miMatriz, se puede hacer de la siguiente manera:
int miMatriz[ ][ ];
Matrices
Creacin:
nombreMatriz = new tipoDato[filas][columnas];
Para crear una matriz de 2 filas y 3 columnas de
nmeros enteros, llamada miMatriz, se escribe
miMatriz = new int [2][3];
Matrices
int [][] ventas = new int[4][6];
miMatriz = new int [2][3];
Creacin:
miMatriz[0][0] miMatriz[0][1] miMatriz[0][2]
miMatriz[1][0] miMatriz[1][1] miMatriz[1][2]
genera
Matrices
Creacin:
miMatriz = new int [2][3];
Primero crea un vector de 2 elementos
Elemento 0
Elemento 1
Matrices
Creacin:
miMatriz = new int [2][3];
Luego cada elemento lo transforma en un vector de 3
elementos
miMatriz[0][0] miMatriz[0][1] miMatriz[0][2]
miMatriz[1][0] miMatriz[1][1] miMatriz[1][2]
Fila 0
Fila 1
Columna 2
Columna 0
Matrices
OPERACIONES CON LOS ARREGLOS

Lectura
Escritura
Actualizacin
Ordenacin
Bsqueda
OPERACIONES CON LOS ARREGLOS
Lectura: Consiste en leer un dato de un arreglo.
Escritura: Asignarle un valor a cada elemento del
arreglo.
Actualizacin: Eliminar, insertar y modificar
datos. Se debe tomar en cuenta si el arreglo esta o
no ordenado.
Ordenacin: Es importante mantenerlos
ordenados, existen varios algoritmos para ello.
Bsqueda: Sirve para localizar un elemento dentro
de un conjunto de datos.
EJEMPLOS
Programa que lee por teclado nmeros enteros y los guarda
en una matriz de 3 filas y 2 columnas. A continuacin muestra
la matriz.
import java.util.*;
public class Bidimensional2 {
public static void main(String[] args) {
int FILAS = 3, COLUMNAS = 2;
Scanner sc = new Scanner(System.in);
int i, j;
int[][] A = new int[FILAS][COLUMNAS];
System.out.println("Lectura de elementos de la matriz: ");
for (i = 0; i < FILAS; i++) {
for (j = 0; j < COLUMNAS; j++) {
System.out.print("A[" + i + "][" + j + "]= ");
A[i][j] = sc.nextInt();
}
}


EJEMPLOS
Programa que lee por teclado nmeros enteros y
los guarda en una matriz de 3 filas y 2 columnas. A
continuacin muestra la matriz.
System.out.println("valores introducidos:");
for (i = 0; i < FILAS; i++) {
for (j = 0; j < COLUMNAS; j++) {
System.out.print(A[i][j] + " ");
}
}
}
}




EJEMPLOS
2) Sumar la diagonal principal de una matriz
3) Sumar dos matrices
4) Sumar la diagonal secundaria



EJERCICIOS MATRICES
Sumar las filas de una matriz y colocar el resultado
en un vector.

ALGORITMOS DE ORDENAMIENTO
Mtodo de la Burbuja
El mtodo de la burbuja es uno de los mas simples,
es tan fcil como comparar todos los elementos de
una lista contra todos, si se cumple que uno es
mayor o menor a otro, entonces los intercambia de
posicin.
ALGORITMOS DE ORDENAMIENTO
Mtodo de la Burbuja

for (i=0; i<LIMITE; i++){
for j=0 ; j<LIMITE - 1; j++) {
if (vector[j] > vector[j+1]) {
temp = vector[j];
vector[j] = vector[j+1];
vector[j+1] = temp;
}
}
}
ALGORITMOS DE ORDENAMIENTO
Ejemplos
Ingresar en un vector un conjunto de nmeros y
ordenarlo de menor a mayor.

BURBUJA OPTIMIZADA
A este algoritmo le sumamos, el hecho que los
elementos que estn detrs del que se esta
comparando, ya estn ordenados, las
comparaciones serian aun menos y el mtodo seria
aun mas efectivo.
BURBUJA OPTIMIZADA
for(i = 0; i < vector.length; i++) {
for(j = 0; j < i; j++){
if(vector[i] < vector[j]){
aux = vector[j];
vector[j] = vector[i];
vector[i] = aux;
}
}
}
ALGORITMOS DE BUSQUEDAD
Bsqueda Secuencial o lineal
La bsqueda secuencial busca un elemento de una
lista utilizando un valor destino llamado clave.
En una bsqueda lineal, los elementos de una lista o
vector se exploran (se examinan) en secuencia, uno
despus de otro.
La bsqueda secuencial busca un elemento de una
lista utilizando un valor destino llamado clave.
Dado que el vector no est en un orden prefijado, es
probable que el elemento a buscar pueda ser el
primer elemento, el ltimo elemento o cualquier otro
EJEMPLOS
Ordene un vector de mayor a menor con el mtodo
de la burbuja optimizada y realice la prueba de
escritorio.
Encontrar un nmero dado por el usuario dentro de
un vector con el mtodo lineal. Muestre el nmero
encontrado.
Encontrar un nmero dado por el usuario dentro de
una matriz con el mtodo lineal. Muestre la
posicin del nmero.
Ordene un vector con el mtodo de burbuja
optimizada y luego encuentre un nmero dado por
el usuario. Muestre el nmero y tambin la posicin
del mismo.



BUSQUEDA BINARIA
Se utiliza cuando el vector en el que queremos
determinar la existencia de un elemento est
previamente ordenado.
Este algoritmo reduce el tiempo de bsqueda
considerablemente, ya que
disminuye exponencialmente el nmero de
iteraciones necesarias.
BUSQUEDA BINARIA











BUSQUEDA BINARIA
EJEMPLO
Ordene un vector de menor a mayor por el mtodo de burbuja
optimizada y luego utilice la bsqueda binaria para encontrar un
nmero ingresado por teclado.

También podría gustarte