Publicado el 12 de Enero del 2019
1.110 visualizaciones desde el 12 de Enero del 2019
226,0 KB
28 paginas
Creado hace 9a (21/10/2015)
Tema 5
Estructuras de datos simples
Programación
2015-2016
Programación - Tema 5: Estructuras de datos simples
1
Tema 5. Estructuras de datos simples
● Introducción.
● Arrays.
● Records.
Programación - Tema 5: Estructuras de datos simples
2
¿Qué es una estructura de datos?
Es un grupo de datos que queremos guardar
agrupado
==> en la misma variable.
Las estructuras de datos más simples son los
“arrays” y los “records”
Datos del mismo tipo → array
Datos de distinto tipo → record
– Java no dispone de record, pero se pueden utilizar
objetos.
Programación - Tema 5: Estructuras de datos simples
3
Tema 5. Estructuras de datos simples
● Introducción.
● Arrays.
● Records.
Programación - Tema 5: Estructuras de datos simples
4
Arrays
Ejemplo: temperatura máxima en Colmenarejo durante
una semana (7 variables) ¿y un año?
Definición: conjunto de datos que ocupan posiciones
sucesivas de memoria y a los que se accede mediante
una única variable.
Definición de arrays, 3 pasos:
– Declarar la variable
– Definir el nº de elementos
– Reservar memoria
tipo [] nombre ó tipo nombre []
nombre = new tipo [dimension]
int [] a , b;
int [] a = new int [3], b, c= new int [2];
Programación - Tema 5: Estructuras de datos simples
5
Arrays y memoria
Un array es un puntero: Una variable que no contiene un valor, sino una
referencia a otra posición de memoria.
Cuando se declara..
– Una variable → contenido indefinido.
– Un array → null (valor especial, “no apunta a nada”)
int [] arr1 = new int [4];
Valor inicial?
Programación - Tema 5: Estructuras de datos simples
6
Arrays y memoria
Valor inicial:
– 0 a números
– false a lógicos
– la cadena vacía a char
– null a String
Programación - Tema 5: Estructuras de datos simples
7
Guardar datos en arrays
• Acceso a elementos del array:
nombre [posición] = valor
Posición va de 0 a nº elementos-1.
(Java comprueba en ejecución)
● Asignación inicial:
int [] a; a = new int [] {1,2,3};
int [] a = new int [] {1,2,3,4}, b= {1,2};
int [a]; a = {1,2,3};
Programación - Tema 5: Estructuras de datos simples
8
Guardar datos en arrays
● ¿Qué ocurre si imprimimos un Array?
Programación - Tema 5: Estructuras de datos simples
9
Arrays y asignaciones
Igualando elementos de dos arrays. Los elementos de arrays sí
se comportan como variables normales
Copia de arrays. Si igualamos dos arrays, no se copian sino que
apuntan al mismo. Incluso aunque sean de distinto número de
elementos
– Para copiar hay que hacerlo elemento a elemento:
• usar System.arraycopy (origen, pos, destino, pos, nº
elementos),
• usar un bucle
Programación - Tema 5: Estructuras de datos simples
10
Arrays y asignaciones
Dos arrays sólo son iguales con == si apuntan a la misma
posición de memoria. Para ver si son iguales, hay que comparar
elemento a elemento.
int [] array1={1,3,5}, array2={1,3,5};
array1 == array2 → false
Programación - Tema 5: Estructuras de datos simples
11
Longitud de un array
Nombre.length devuelve el número de elementos
No se puede cambiar la longitud de un array.
– Una vez definido el nº de elementos no se puede variar. Hay
que crear uno nuevo y copiar los elementos.
Array de constantes. Aunque declaremos un array como final, sus
elementos se pueden cambiar (da igual que les hayamos dado
valor al crearlo o que se lo demos luego). Lo que es constante es
la posición de memoria a la que apunta.
Programación - Tema 5: Estructuras de datos simples
12
Longitud de un array
Nombre.length devuelve el número de elementos
No se puede cambiar la longitud de un array.
– Una vez definido el nº de elementos no se puede variar. Hay
que crear uno nuevo y copiar los elementos.
Array de constantes. Aunque declaremos un array como final, sus
elementos se pueden cambiar (da igual que les hayamos dado
valor al crearlo o que se lo demos luego). Lo que es constante es
la posición de memoria a la que apunta.
Programación - Tema 5: Estructuras de datos simples
13
Matrices
Declaración y creación, similar a los de una sola dimensión
El primer número son las filas y el segundo las columnas.
– En memoria, cada fila es un array
tipo [][] nombre ó tipo nombre [] []
nombre = new tipo [d1][d2]
tipo [][] nombre = new tipo [d1][d2]
tipo [][]nombre = {{1,2},{3,4},{5,6}}
Acceso a elementos de la matriz:
nombre [fila][columna] = valor;
Programación - Tema 5: Estructuras de datos simples
14
Matrices
Se puede declarar solamente el nº filas y dejar la segunda
dimensión sin crear → se pueden crear arrays irregulares.
int [][] a;
a = new int [3][];
a[0] = new int [1];
a[1] = new int [3];
a[2] = new int [2];
a.length → 3 (filas)
a[0].length → 1
a[1].length → 3
a[2].length → 2
Multi-dimensional arrays
– Tantas dimensiones como se quiera.
Programación - Tema 5: Estructuras de datos simples
15
Matrices y bucles anidados
Ejercicio: Imprimir un array de dos dimensiones.
int [][] arr = new int [][]{{1,2,3},{4,5},{6,7,8,9}};
Programación - Tema 5: Estructuras de datos simples
16
Matrices y bucles anidados
Ejercicio: Imprimir un array de dos dimensiones.
int [][] arr = new int [][]{{1,2,3},{4,5},{6,7,8,9}};
for (<tipo del array> elemento : <nombre del array>)
for (int [] filas : arr){
for (int elemento: filas){
}
System.out.print(elemento+" ");
}
System.out.println();
Programación - Tema 5: Estructuras de datos simples
17
Ejercicio
S6-Clase: Arrays
Programación - Tema 5: Estructuras de datos simples
18
Tema 5. Estructuras de datos simples
● Introducción.
● Arrays.
● Records.
Programación - Tema 5: Estructuras de datos simples
19
Recorsd → Objetos
En Java no hay registros como tal, sino objetos.
Un objeto es un nuevo tipo de datos, que nos permite guardar
datos de distintos tipos en la misma variable.
El nombre del tipo es el nombre de la clase (que debe coincidir
con el nombre del fichero .java)
Definimos cada uno de los datos que queremos guardar así:
– public <tipo> <variable>;
public class Fecha {
public int dia;
public String mes;
public int año;
public boolean festivo;
}
Programación - Tema 5: Estructuras de datos simples
20
Objetos
Una clase puede contener:
– un programa ( o bloques de programa)
– un nuevo tipo (la definición de una estructura de datos)
Record → Sin método main
Generalmente los programas constan de muchas clases que
definen objetos y una que tiene el main
Programación - Tema 5: Estructuras de datos simples
21
Declaración de variables
En el main de otra clase distinta
– No hace falta importarlo si están en el mismo paquete (en la
misma carpeta en el disco)
Se declara la variable de este tipo como la de cualquier otro
Hace falta crearla para poder empezar a usarla (parecido a los
arrays)
– Si no los creamos están a null.
– Son punteros.
Programación - Tema 5: Estructuras de datos simples
22
Nomenclatura
Atributo\Campo: cada una de las variables que conforma un
nuevo tipo (la doc oficial usa Field)
Clase: definición del nuevo tipo
Objeto: variable del nuevo tipo
Declarar y crear una variable de un tipo que es una clase ==
declarar y crear un objeto
Programación - Tema 5: Estructuras de datos simples
23
Uso de variables: acceso a atributos
Para acceder a un atributo
• <nombre variable>.<nombre atributo>
Fecha f1;
f1 = new Fecha ();
f1.dia = 12;
f1.mes = "Noviembre";
f1.año= 2010;
Ej.
creado
– Crear dos variables y darles distintos valores
– Intentar acceder a un atributo de un objeto que no ha sido
Programación - Tema 5: Estructuras de datos simples
24
Valores iniciales
¿Qué ocurre si intentamos utilizar un atributo sin darle valor?
– Valores iniciales (tipos básicos / String / otros objetos)
Se pueden asignar otros valores iniciales distintos cuando se
declara la clase:
public class Fecha {
public int dia = 1;
public String mes = "Enero";
public int año = 1900;
public festivo = true;
}
Programación - Tema 5: Estructuras de datos simples
25
Manipulando objetos
Imprimir
Comparar
Copiar
No se puede directamente. Deben hacerse atributo a atributo.
Existen formas de modificar este comportamiento.
Programación - Tema 5: Estructuras de datos simples
26
Resumen de variables
Sitios en los que se declaran variables:
– Dentro del método main: variables locales, sin valor inicial
automático
– En una clase aparte para crear un nuevo tipo: atributos,
con valor inicial automático
– Si hay main, NUNCA se deberían declarar variables fuera de él
Programación - Tema 5: Estructuras de datos simples
27
Ejercicio
S7-Clase: Objetos
Programación - Tema 5: Estructuras de datos simples
28
Comentarios de: Tema 5 Estructuras de datos simples (0)
No hay comentarios