Anda di halaman 1dari 11

Representaci Representacin de Datos y Aplicaciones

Tema 8 Arrays

Natividad Mart Martnez Madrid nati@it.uc3m.es

Objetivos del tema 8


Ser capaz de disear, dimensionar y acceder de forma adecuada a un array Aprender a utilizar de forma adecuada las estructuras estticas de datos en conjuncin con las estructuras de control de flujo de programa

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Contenido del tema 8


Conceptos bsicos de arrays
Utilidad de las estructuras de almacenamiento masivo de datos Declaracin de arrays Creacin de arrays Inicializacin de arrays Acceso y comprobaciones sobre arrays Copia de arrays Arrays multidimensionales

Uso de arrays
Clculos aritmticos sobre matrices Algoritmos de bsqueda Algoritmos de ordenacin

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Arrays
Definicin: Un array es una secuencia de objetos o de datos primitivos, todos del mismo tipo, unidos bajo un identificador comn Permiten agrupar informacin relacionada Son de tipo referencia Sinnimos:
Tabla Matriz
Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Arrays
Cada objeto o dato del array est asignado a un posicin concreta del array, designada por un ndice
ndice 1er elemento = 0

c[0] -7 c[1] 0 c[2] 3 c[3] 8 c[4] 5 c[5] -4 c[6] 6 c[7] 6 c[8] 1 ndice ltimo elemento c[9] 2 = longitud - 1

Longitud del array = 10

ndice n-simo elemento = n - 1

ndice: expresin entera: 0 <= ndice <= longitud-1


Tema 8: Arrays Representacin de Datos y Aplicaciones Natividad Martnez Madrid 5

Declaracin de arrays
Se indica el tipo de los elementos contenidos por el array, seguido por [] y seguido por el nombre identificador del array
los [] tambin pueden ir detrs del nombre int[] enteros; int enteros[]; Punto[] puntos; Punto puntos[]; Los elementos pueden ser de tipo primitivo o de tipo referencia

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Uso de la memoria en declaracin de arrays


Memoria de pila Memoria de heap

int[] enteros;

enteros

null

Punto[] puntos;
class Punto { int x; int y; Punto (int x, int y){ this.x = x; this.y = y; } }
Tema 8: Arrays Representacin de Datos y Aplicaciones

puntos

null

Natividad Martnez Madrid

Creacin de arrays
Usando new, seguido del nombre del tipo de los elementos del array, seguido por el tamao del array (entre corchetes) nombreArray = new tipo[tamao]; enteros = new int[3]; puntos = new Punto[2];

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Creacin de arrays
El tamao del array tiene que indicarse en el momento de su creacin, y no puede cambiarse despus Los elementos se inicializan a cero, false o null en el momento de su creacin Igual que sucede con el resto de objetos, se puede declarar el array y crearlo en la misma sentencia:
int[] enteros = new int[3];

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

Creacin de arrays
Durante la creacin del array
Se reserva memoria para el atributo length Se reserva memoria para guardar la cantidad de elementos indicada Se asigna la direccin de esa rea de memoria a la referencia del array

Arrays de tipos primitivos


Espacio para guardar los valores concretos, ya que el tamao de los tipos primitivos es conocido a priori

Arrays de objetos
Espacio para guardar las referencias a los objetos
Tema 8: Arrays Representacin de Datos y Aplicaciones Natividad Martnez Madrid 10

Uso de la memoria en la creacin de un array


Memoria de pila Memoria de heap

enteros = new int[3];

enteros length enteros[0] enteros[1] enteros[2] 3 0 0 0

puntos = new Punto[2];

puntos length puntos[0] puntos[1] 2 null null

Cuidado! No es una llamada al constructor


Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

11

Inicializacin de arrays
Segn el tipo de los elementos:
Variables de tipos primitivos: enteros[0] = 7; Objetos de clases puntos[0] = new Punto(1,2);

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

12

Uso de la memoria en la inicializacin de un array


Memoria de pila Memoria de heap

enteros[0] = 7;

enteros length enteros[0] enteros[1] enteros[2] 3 7 0 0

puntos[0] = new Punto(1,2);

puntos length puntos[0] puntos[1] null 2

x y

1 2

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

13

Ejemplo: Inicializacin de arrays


public class Factorial { private int[] fact; public Factorial(int dimension) { fact = new int[dimension]; fact[0] = 1; for (int i = 1; i < fact.length; i++) fact[i] = fact[i-1] * i; } [...] }

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

14

Otra inicializacin de arrays


De manera explcita en el momento de su declaracin:
int[] arrayEntero = {1,2,3,4,5}; String[] diasSemana = {lunes, martes, miercoles, jueves, viernes, sabado,domingo}; Punto[] puntos = {new Punto(1,2), new Punto(3,4);

Determina el tamao del array Slo en el momento de la declaracin

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

15

Acceso a los arrays


Dos formas de acceder a su informacin: 1. Consulta de su longitud
Atributo de tipo entero positivo (de slo lectura) length que proporciona el tamao del array nombreArray.length

2. Indexacin
Acceso a los elementos del array a travs de su ndice El ndice siempre tiene un rango entre 0 y N-1 siendo N el tamao del array nombreArray[i]
Tema 8: Arrays Representacin de Datos y Aplicaciones Natividad Martnez Madrid 16

Ejemplo: Acceso arrays


Crea un array con los enteros del 1 al argumento introducido, e imprime la suma de los elementos
public class Serie { public static void main (String[] args){ int tamanyo = Integer.parseInt(args[0]); int[] a1 = new int[tamanyo]; int suma = 0; for (int i = 0; i < a1.length; i++) { a1[i] = i + 1; suma += a1[i]; } System.out.println("La suma es: " + suma); } }
Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

17

Ejemplo: Acceso arrays


public class Serie2 { private int[] a1; private int suma; public Serie2(int tamanyo){ a1 = new int[tamanyo]; suma = 0; for (int i = 0; i < a1.length; i++) { a1[i] = i + 1; suma += a1[i]; } } public static void main (String[] args){ int tamanyo = Integer.parseInt(args[0]); Serie2 rec = new Serie2(tamanyo); System.out.println("La suma es: " + rec.suma); } }
Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

18

Copia de arrays
La asignacin del valor de una variable de array a otra slo copiar la referencia
Punto[] puntos2 = puntos;

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

19

Uso de la memoria en la inicializacin de un array


Memoria de pila Memoria de heap

Punto[] puntos2 = puntos;

puntos2

puntos length puntos[0] puntos[1] null 2

x y

1 2

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

20

10

Ejemplo: Copia arrays


public class Arrays { public static void main (String[] args){ int[] a1 = {1,2,3,4,5}; int[] a2; a2 = a1; for (int i = 0; i < a2.length; i++) a2[i]++; for (int i = 0; i < a1.length; i++) System.out.println("a1[" + i + "] = " + a1[i]); } }

Qu imprime este programa?

Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

21

Copia de arrays
Se puede utilizar un bucle:
public class EjemploCopia { public static int[] copia (int[] x1){ int[] x2 = new int[x1.length]; for (int i = 0; i < x1.length; i++) x2[i] = x1[i]; return x2; } public static void main (String[] args){ int[] a1 = {1,2,3,4,5}; int[] a2 = copia(a1); for (int i = 0; i < a2.length; i++) a2[i]++; for (int i = 0; i < a1.length; i++) System.out.println("a1[" + i + "] = " + a1[i] + "; a2[" + i + "] = " + a2[i]); } }
Tema 8: Arrays Representacin de Datos y Aplicaciones

Natividad Martnez Madrid

22

11

Anda mungkin juga menyukai