Publicado el 14 de Enero del 2017
1.378 visualizaciones desde el 14 de Enero del 2017
98,0 KB
11 paginas
Creado hace 15a (03/12/2009)
Bloque II. Elementos del lenguaje de
programación Java
• 1.Introducción a los lenguajes de programación
• 2. Estructura de un programa
• 3. Datos y expresiones simples
• 4. Instrucciones de control
• 5. Entrada/salida simple
• 6. Arrays, secuencias y tablas
UNIVERSIDAD
DE CANTABRIA
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
1
Construcción de tablas mediante
arrays
Los arrays permiten guardar muchos datos del mismo tipo
• se agrupan bajo un nombre común
• se utiliza un índice numérico para referirse al dato individual
- en Java el índice se restringe: [0..N-1]
UNIVERSIDAD
DE CANTABRIA
• o varios índices en el caso de arrays multidimensionales
• los datos pueden ser variables o referencias a objetos
El tamaño es fijo: no puede cambiar
El array en Java se usa como un objeto
- se usa a través de una referencia
- se crea con new
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
2
UNIVERSIDAD
DE CANTABRIA
Arrays unidimensionales
Declaración:
tipo nombre[];
O también:
tipo[] nombre;
Para crear un objeto del tipo array
nombre=new tipo[tamaño];
• El tipo es el tipo base de los elementos del array
Pseudocódigo
tipo[0..tamaño-1] nombre;
tipo elemental
-
- o una clase
que aún no existe.
• El nombre representa una referencia a un objeto del tipo array,
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
3
real[0..2] coord;
Pseudocódigo
Ejemplos de creación de arrays
Declaración y creación
float coord[];
coord = new float[3];
O todo junto:
float coord[] = new float[3];
O equivalentemente:
float[] coord = new float[3];
El array referenciado por coord tiene tres
elementos enteros
• numerados 0,1, y 2.
• al crear el array todos sus elementos se inicializan a cero
0.0
0.0
0.0
coord
UNIVERSIDAD
DE CANTABRIA
0
1
2
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
4
Nota sobre el rango del índice
Si el que el array comience por cero representa un problema:
• se puede definir un elemento más, e ignorar la casilla cero
Por ejemplo
int[] diasMes = new int[13];
diasMes
UNIVERSIDAD
DE CANTABRIA
0
0
0
.
.
.
0
0
1
2
12
5
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
UNIVERSIDAD
DE CANTABRIA
Uso de arrays
Observar que un array no es una clase, sino un objeto
• no tiene operaciones
• pero sí el atributo length, que contiene el tamaño
diasMes.length // es 13
Uso de un elemento de un array:
nombre[indice]
Ejemplos de uso
final int ENERO=1, FEBRERO=2; // etc
diasMes[2] = 28;
diasMes[ENERO] = 31;
System.out.println
("Febrero tiene "+diasMes[FEBRERO]+" dias");
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
6
Uso de arrays (cont.)
Se puede escribir un literal de array en la inicialización, al crear la
referencia al array:
int diasMes[] =
{0,31,28,31,30,31,30,31,31,30,31,30,31};
Si se intenta acceder a una casilla que no existe, se produce un
error
UNIVERSIDAD
DE CANTABRIA
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
7
UNIVERSIDAD
DE CANTABRIA
Ejemplo de recorrido en tablas: media
de una tabla de enteros
public class Media {
public static void main(String[] args) {
int nums[] = {3,4,7,8,4,5,6};
int suma=0;
double media;
for (int i=0; i<nums.length; i++) {
suma=suma+nums[i];
}
media=(double)suma / nums.length;
System.out.println("La media es "+media);
System.out.println("Longitud es "+nums.length);
}
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
8
Uso de arrays como parámetros
Se pueden pasar a un método parámetros del tipo array
Por ejemplo, aquí se pasa un array de enteros llamado lista
public void método (int[] lista) {...}
UNIVERSIDAD
DE CANTABRIA
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
9
UNIVERSIDAD
DE CANTABRIA
Ejemplo de recorrido parcial: Máximo
de unas edades de personas
public class Persona {
private int edad;
private String nombre;
public Persona(int edad, String nombre) {
this.edad=edad;
this.nombre=nombre;
}
public int edad() {
return edad;
}
public String nombre() {
return nombre;
}
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
10
UNIVERSIDAD
DE CANTABRIA
Ejemplo de recorrido parcial (cont.)
public class ListaPersonas {
/**Calcula edad máxima de array de objetos de clase
* Persona, recorriendo la tabla desde el segundo
* elemento hasta el ultimo */
public static int edadMaxima(Persona[] perso) {
int max=perso[0].edad();
int i=1;
while (i<perso.length) {
if (perso[i].edad()>max) {
max=perso[i].edad();
}
i++;
}
return max;
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
11
UNIVERSIDAD
DE CANTABRIA
Ejemplo de recorrido parcial (cont.)
/** programa de prueba; crea una tabla de personas
* e invoca al metodo anterior
*/
public static void main (String[] args) {
Persona[] lista=new Persona[5];
lista[0]=new Persona(10,"juan");
lista[1]=new Persona(14,"pedro");
lista[2]=new Persona(18,"andres");
lista[3]=new Persona(8,"ana");
lista[4]=new Persona(13,"lucia");
System.out.println("Edad máxima:"+
edadMaxima(lista));
}
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
12
Ejemplo de búsqueda
Clase que guarda numero de un mes
• al constructor se le pasa el nombre del mes y lo busca en una
UNIVERSIDAD
DE CANTABRIA
tabla, guardando el número del mes (el índice)
• hay una operación para retornar el número de días del mes
• hay una operación para retornar el nombre del mes
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
13
UNIVERSIDAD
DE CANTABRIA
Ejemplo: mes
import fundamentos.*;
public class Mes {
// atributos
private int numMes;
// constantes estaticas
private static final int[] diasMes=
{0,31,28,31,30,31,30,31,31,30,31,30,31};
private static final String[] nombreMes =
{"Error",
"Enero", "Febrero", "Marzo",
"Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre",
"Octubre", "Noviembre", "Diciembre"};
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
14
UNIVERSIDAD
DE CANTABRIA
Ejemplo (cont.)
/** Si encontrado, numMes= numero encontrado
* pero si no encontrado, numMes=0 */
public Mes(String mes) {
int m=1; boolean encontrado=false;
numMes=0; // por si no lo encontramos
while ((!encontrado) && m<13) {
encontrado=
mes.equalsIgnoreCase(nombreMes[m]);
if (encontrado) {
numMes=m;
}
m++;
}
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
15
UNIVERSIDAD
DE CANTABRIA
Ejemplo (cont.)
/**
* Retorna el numero de dias del mes
*/
public int dias() {
return diasMes[numMes];
}
/**
* Retorna el nombre del mes
*/
public String nombre() {
return nombreMes[numMes];
}
}
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
16
Uso de un array completo
Se hace por su nombre
• Se puede cambiar la referencia al array.
int nums[]=new int[5];
nums
int nums1[]=new int[3];
...
nums1=nums;
Esto no copia el array
• sólo cambia la referencia
nums1
UNIVERSIDAD
DE CANTABRIA
0
0
0
0
0
0
0
0
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
17
UNIVERSIDAD
DE CANTABRIA
Arrays multidimensionales
Los arrays multidimensionales son arrays de arrays, con algunas
facilidades para hacer mas simple su uso.
Declaración y creación
int matrizA[][] = new int[4][5];
El índice izquierdo representa la fila, y el derecho la columna
Los elementos se usan de la manera
matrizA[2][3]
Aunque los tamaños de cada fila pueden ser distintos, no es
aconsejable (es fácil equivocarse)
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
18
Tablas de tamaño variable
Los arrays son de tamaño fijo
• Se puede guardar una tabla de tamaño variable (pero limitado)
• Basta usar sólo la primera parte del array, dejando el resto sin
UNIVERSIDAD
DE CANTABRIA
usar
• Hay que llevar cuenta del número de casillas útiles
Existe una clase en Java que representa tablas de tamaño variable,
cuyo tamaño puede crecer
• es la clase ArrayList
• está en el paquete java.util
• pertenece a las llamadas "Java collections"
• sólo se pueden almacenar objetos
DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
© Michael González Harbour y José Luis Montaña
3/dic/09
19
El uso de la clase ArrayList
Declaración y creación de una tabla cuyos elementos son objetos
de la clase Elemento
ArrayList <Elemento> v= new ArrayList <Elemento> ();
Métodos para manejar la tabla
UNIVERSIDAD
DE CANTABRIA
Cabecera
Descripción
int size()
Obtener el tamaño actual
Elemento get(int índice)
Obtener el elemento de la
casilla indicada
void set(int índice, Elemento e) Cambiar el elemento de la
boolean add(Elemento e)
casilla indicada
Añadi
Comentarios de: Bloque II. Elementos del lenguaje de programación Java - 6. Arrays, secuencias y tablas (0)
No hay comentarios