Arreglos: (extrado del libro Java 2 Manual de programacin Joyanes Aguilar)
7.1. En captulos anteriores se han utilizado variables para hacer los programas ms flexibles. Gracias a las variables se pueden almacenar, convenientemente, datos en los programas y recuperarlos por su nombre. Se pueden tambin obtener entradas del usuario del programa. Las variables pueden cambiar constantemente su valor. Sin embargo, en algunos casos se han de almacenar un gran nmero de valores en memoria durante la ejecucin de un programa. Por ejemplo, suponga que desea ordenar un grupo de nmeros, stos se deben almacenar en memoria ya que se han de utilizar posteriormente para comparar cada nmero con los restantes. Almacenar los nmeros requiere declarar variables en el programa y es prcticamente imposible declarar variables para miembros individuales, se necesita un enfoque organizado y eficiente. Todos los lenguajes de programacin, incluyendo Java, proporcionan una estructura de datos, array (<matriz, vector,,) capaz de almacenar una coleccin de datos del mismo tipo. Java trata estos arrays como objetos.
CONCEPTO DE ARRAY Un array (((matriz, vector, lista))) es un tipo especial de objeto compuesto por una coleccin de elementos del mismo tipo de datos que se almacenan consecutivamente en memoria. I,a Figura 7.1 es un array de 10 elementos de tipo double y se representa por un nombre, lista, con ndices o subndices.
Los arrays pueden ser unidimensionales (Figs. 7.1 y 7.2), conocidos tambin como listas o vectores, y multidimensionales, conocidos tambin como tablas o matrices, que pueden tener dos o ms dimensiones.
7.2. PROCESO DE ARRAYS El proceso que se puede realizar con arrays abarca las siguientes operaciones: declaracin, creacin, inicializacin y utilizacin. Las operaciones de declaracin, creacin e inicializacin son necesarias para poder utilizar un array. TALLER DE PROGRAMACION INTERMEDIA 5 AO
7.2.1. Declaracin La declaracin de un array es la operacin mediante la cual se define su nombre con un identificador vlido y el tipo de los elementos del array. La sintaxis para declarar un array puede adoptar dos formatos: tipoDato [ ] nombreArray tipoDato nombreArray [] Ejemplo double [] miLista; double miLista[]; } Se declara un array miLista de tipo double
float temperatura[]; float [ ] temperatura; } Se declara un array temperatura de tipo float Las declaraciones no especifican el tamao del array que se especificar cuando se cree el mismo.
7.2.2. Creacin Un array Java es un objeto y la declaracin no asigna espacio en memoria para el array. No se pueden asignar elementos al array a menos que el array est ya creado. Despus que se ha declarado un array se puede utilizar el operador new para crear el array con la sintaxis siguiente: nombreArray = new tipoDato [ tamao] ; nombreArray es el nombre del array declarado previamente, tipoDato es el tipo de dato de los elementos del array y tamao es la longitud o tamao del array y es una expresin entera cuyo valor es el nmero de elementos del array.
Ejemplo miLista = new double [8]; / / array miLista de 8 elementos temperatura = new float [30]; // array temperatura de 30 elementos
double [] miLista = new double[8]; float temperatura[] = new float[30];
Un array completo se puede inicializar con una sintaxis similar a double[] miLista = { 1.5, 2.45, 3.15, 7.25, 8.4 } ; esta sentencia crea el array miLista que consta de cinco elementos.
Clculo del tamao El tamao de un array se obtiene con una variable instancia length. As, por ejemplo, si se crea un array miLista, la sentencia miLista.length devuelve el tamao del array miLista (10, por ejemplo).
Utilizacin de los elementos del array Las variables que representan elementos de un array se utilizan de igual forma que cualquier otra variable. Algunas sentencias permitidas en Java: 1. temperatura[5] = 45; temperatura [8] = temperatura [5] + 10; System.out.println(temperatura[8]); 2. int punto = 5; temperatura [punto+3] = 55; System.out .println ("La temperatura 8 es + temperatura[punto+3] ) ; 3. System.out.println ("La segunda entrada es + entrada[2]);
Se pueden procesar elementos de un array mediante bucles (por ejemplo, for) por las siguientes razones: TALLER DE PROGRAMACION INTERMEDIA 5 AO
Todos los elementos del array son del mismo tipo y tienen las mismas propiedades; por esta razn, se procesan de igual forma y repetidamente' utilizando un bucle. El tamao de un array se conoce, por lo que el bucle ms idneo es for
Ejemplo 1. El bucle for siguiente introduce valores en los elementos del array. El tamao del array se obtiene en miLista.length. for (int i = 0; i < miLista.length; i++){ miLista[i] = (double) i;}
2. int[] cuenta = new int [100] ; int i; for (i=0 ; i < cuenta.length; i++){ cuenta[i] = 0;}
7.3. ARRAYS DE OBJETOS Los ejemplos anteriores han creado arrays de elementos de tipos primitivos. Es posible tambin crear arrays de cualquier tipo de objeto, aunque el proceso es un poco ms complicado. Por ejemplo, la siguiente sentencia declara un array de 10 objetos Circulo (Circulo es una clase definida previamente): Circulo [ ] arregloCirculo = new Circulo [10] ; El array de objetos se inicializa de modo similar a un array ordinario: for (int i = 0; i < arregloCirculo.length; i++){ arregloCirculo [i] = new Circulo ( ) ;}
Ejemplos: import java.io.*; public class Vivienda {
float metros; int codigo; float valormetro;
public Vivienda()throws IOException{ BufferedReader ent=new BufferedReader(new InputStreamReader(System.in));
System.out.println("ingrese codigo de casa "); this.codigo=Integer.parseInt(ent.readLine()); System.out.println("ingrese metros cuadrados "); this.metros=Float.parseFloat(ent.readLine());
this.valormetro= (float) 2365.48; }
public float valorcasa(){
return (this.metros*this.valormetro); }
}
import java.io.*;
public class usoVivienda {
public static void main(String[] args) throws IOException{
TALLER DE PROGRAMACION INTERMEDIA 5 AO
System.out.println("Ingrese cantidad de casas a valuar: "); BufferedReader ent=new BufferedReader(new InputStreamReader(System.in)); int totcasas=Integer.parseInt(ent.readLine()); Vivienda[] miCasa=new Vivienda[totcasas] ;
for(int i=0;i<miCasa.length;i++){
miCasa[i]=new Vivienda(); }
for(int i=0;i<miCasa.length;i++){ System.out.println("Casa codigo: "+miCasa[i].codigo+" El valor de la casa es: $"+ miCasa[i].valorcasa()); } } }
public class Alumno { double nota; static double notaCorte=6.0; public Inicializa(double nota) { this.nota=nota; } boolean estaAdmitido(){ return (nota>=notaCorte); } }
En una clase AlumnoApp, utilizamos los objetos de la siguiente forma:
import java.io.* class AlumnoApp { static public void main (String [] arg) { //Creamos un array de cuatro alumnos y asignamos a cada uno de ellos una nota.
Alumno[] alumnos={new Alumno(), new Alumno(), new Alumno(), new Alumno()};
int numAdmitidos=0; for(int i=0; i<alumnos.length; i++){ if (alumnos[i].estaAdmitido()){ numAdmitidos++; } } System.out.println("admitidos "+numAdmitidos);
//Accedemos al miembro dato notaCorte desde un objeto de la clase Alumno, para cambiarla a 7.0 alumnos[1].notaCorte=7.0; //Comprobamos que todos los objetos de la clase Alumno tienen dicho miembro dato esttico notaCorte cambiado a //7.0
Desarrollar una aplicacin que ayude a gestionar las notas de un centro educativo. Crear una clase alumno con el nombre del alumno, su dni, las notas del primer trimestre, segundo trimestre y tercer trimestre. Calcular la nota final que ser el promedio de los 3 trimestres. El programa debe gestionar N alumnos y mostrar sus datos.