Representación de Datos y Aplicaciones                            Representació                                          T...
Contenido del tema 8●       Conceptos básicos de arrays       ―       Utilidad de las estructuras de almacenamiento masivo...
Arrays● Cada objeto o dato del array está asignado a un posición  concreta del array, designada por un índiceÍndice 1er el...
Uso de la memoria en                                 declaración de arrays                                                ...
Creación de arrays● El tamaño del array tiene que indicarse en el  momento de su creación, y no puede cambiarse  después● ...
Uso de la memoria en                               la creación de un array                                                ...
Uso de la memoria en                        la inicialización de un array                                                 ...
Otra inicialización de arrays● De manera explícita en el momento de su  declaración:       int[] arrayEntero = {1,2,3,4,5}...
Ejemplo: Acceso arrays● Crea un array con los enteros del 1 al argumento  introducido, e imprime la suma de los elementos ...
Copia de arrays● La asignación del valor de una variable de  array a otra sólo copiará la referencia     Punto[] puntos2 =...
Ejemplo: Copia arrays                  public class Arrays {                      public static void main (String[] args){...
Próxima SlideShare
Cargando en…5
×

5

251 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
251
En SlideShare
0
De insertados
0
Número de insertados
7
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

5

  1. 1. Representación de Datos y Aplicaciones Representació Tema 8 Arrays Natividad Martínez Madrid Martí nati@it.uc3m.es Objetivos del tema 8● Ser capaz de diseñar, dimensionar y acceder de forma adecuada a un array● Aprender a utilizar de forma adecuada las estructuras estáticas de datos en conjunción con las estructuras de control de flujo de programaTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 2 1
  2. 2. Contenido del tema 8● Conceptos básicos de arrays ― Utilidad de las estructuras de almacenamiento masivo de datos ― Declaración de arrays ― Creación de arrays ― Inicialización de arrays ― Acceso y comprobaciones sobre arrays ― Copia de arrays ― Arrays multidimensionales● Uso de arrays ― Cálculos aritméticos sobre matrices ― Algoritmos de búsqueda ― Algoritmos de ordenaciónTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 3 ArraysDefinición:● Un array es una secuencia de objetos o de datos primitivos, todos del mismo tipo, unidos bajo un identificador común● Permiten agrupar información relacionada● Son de tipo referencia● Sinónimos: ― Tabla ― MatrizTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 4 2
  3. 3. Arrays● Cada objeto o dato del array está asignado a un posición 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 Longitud del array = 10 c[5] -4 c[6] 6 c[7] 6 c[8] 1 Índice n-ésimo elemento = n - 1 Índice último elemento = longitud - 1 c[9] 2 Índice: expresión entera: 0 <= índice <= longitud-1Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 5 Declaración de arrays● Se indica el tipo de los elementos contenidos por el array, seguido por [] y seguido por el nombre identificador del array ― los [] también pueden ir detrás del nombre int[] enteros; int enteros[]; Los elementos pueden ser Punto[] puntos; de tipo primitivo o de tipo referencia Punto puntos[];Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 6 3
  4. 4. Uso de la memoria en declaración de arrays Memoria de pila Memoria de heapint[] enteros; enteros nullPunto[] puntos; puntos null class Punto { int x; int y; Punto (int x, int y){ this.x = x; this.y = y; } }Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 7 Creación de arrays● Usando new, seguido del nombre del tipo de los elementos del array, seguido por el tamaño del array (entre corchetes) nombreArray = new tipo[tamaño]; enteros = new int[3]; puntos = new Punto[2];Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 8 4
  5. 5. Creación de arrays● El tamaño del array tiene que indicarse en el momento de su creación, y no puede cambiarse después● Los elementos se inicializan a cero, false o null en el momento de su creación● 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 9 Creación de arrays● Durante la creación del array ― Se reserva memoria para el atributo length ― Se reserva memoria para guardar la cantidad de elementos indicada ― Se asigna la dirección de esa área de memoria a la referencia del array● Arrays de tipos primitivos ― Espacio para guardar los valores concretos, ya que el tamaño de los tipos primitivos es conocido a priori● Arrays de objetos ― Espacio para guardar las referencias a los objetosTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 10 5
  6. 6. Uso de la memoria en la creación de un array Memoria de pila Memoria de heapenteros = new int[3]; enteros length 3 enteros[0] 0 enteros[1] 0 enteros[2] 0puntos = new Punto[2]; puntos length 2 puntos[0] null puntos[1] null ¡Cuidado! No es una llamada al constructorTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 11 Inicialización de arrays● Según el tipo de los elementos: ― Variables de tipos primitivos: enteros[0] = 7; ― Objetos de clases puntos[0] = new Punto(1,2);Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 12 6
  7. 7. Uso de la memoria en la inicialización de un array Memoria de pila Memoria de heapenteros[0] = 7; enteros length 3 enteros[0] 7 enteros[1] 0 enteros[2] 0puntos[0] = new Punto(1,2); puntos length 2 puntos[0] puntos[1] null x 1 y 2Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 13 Ejemplo: Inicialización 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 14 7
  8. 8. Otra inicialización de arrays● De manera explícita en el momento de su declaración: 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 tamaño del array● Sólo en el momento de la declaraciónTema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 15 Acceso a los arraysDos formas de acceder a su información:1. Consulta de su longitud ● Atributo de tipo entero positivo (de sólo lectura) length que proporciona el tamaño del array nombreArray.length2. Indexación ● Acceso a los elementos del array a través de su índice ● El índice siempre tiene un rango entre 0 y N-1 siendo N el tamaño del array nombreArray[i]Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 16 8
  9. 9. 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 18 9
  10. 10. Copia de arrays● La asignación del valor de una variable de array a otra sólo copiará la referencia Punto[] puntos2 = puntos;Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 19 Uso de la memoria en la inicialización de un array Memoria de pila Memoria de heap Punto[] puntos2 = puntos; puntos2 puntos length 2 puntos[0] puntos[1] null x 1 y 2Tema 8: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 20 10
  11. 11. 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez 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: ArraysRepresentación de Datos y Aplicaciones © Natividad Martínez Madrid 22 11

×