PDF de programación - Bloque II. Elementos del lenguaje de programación Java - 6. Arrays, secuencias y tablas

Imágen de pdf Bloque II. Elementos del lenguaje de programación Java - 6. Arrays, secuencias y tablas

Bloque II. Elementos del lenguaje de programación Java - 6. Arrays, secuencias y tablasgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.177 visualizaciones desde el 14 de Enero del 2017
98,0 KB
11 paginas
Creado hace 14a (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
  • Links de descarga
http://lwp-l.com/pdf973

Comentarios de: Bloque II. Elementos del lenguaje de programación Java - 6. Arrays, secuencias y tablas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad