Download ARREGLOS EN JAVA
Document related concepts
no text concepts found
Transcript
ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java ARREGLOS EN JAVA I. INTRODUCCIÓN En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales). En un gran número de problemas es necesario manejar un conjunto de datos más o menos grande que están relacionados entre sí, de tal forma que constituyen una unidad para su tratamiento. Por ejemplo si se quiere manipular una lista de 100 edades de personas, es conveniente tratar el conjunto de datos de forma unitaria en lugar de utilizar 100 variables para cada dato simple. . Un conjunto de datos homogéneo que se tratan como una sola unidad se denomina estructura de datos. Si una estructura de datos reside en memoria central (memoria RAM), se llama estructura de datos interna. Recíprocamente si reside en un soporte externo (disquete, disco, cd, memoria USB, cinta, se denomina estructura de datos externa. La estructura de datos más importante desde el punto de vista de utilización es una matriz, que es implementado en la totalidad de lenguajes de programación. Esta estructura corresponde con los conceptos matemáticos de vector, matriz o poliedro. II. DEFINICION Un arreglo (lista o tabla) es una secuencia de datos del mismo tipo (estructura homogénea), los datos se llaman elementos del arreglo enumerados consecutivamente 0,1,2,3,…. y se encuentran almacenados consecutivamente en memoria. Cada elemento puede ser accedido directamente por el nombre de la variable matriz seguido de uno o más subíndices. matriz m 0 1 2 3 4 5 6 7 8 9 Un arreglo puede contener, por ejemplo, la edad de los estudiantes de una clase, las horas diarias laboradas por un trabajador, el número de estudiantes por ciclo de Ingeniería de Sistemas, etc. En general, la representación de un arreglo se hace mediante variables suscritas o de subíndices y pueden tener una o varias dimensiones (subíndices). III. CLASIFICACIÓN DE ARREGLOS Los arreglos según su dimensión se clasifican en unidimensionales, bidimensionales y multidimensionales; y según su contenido en numéricas, de caracteres y de referencia a objetos. 1. ARREGLOS UNIDIMENSIONALES (Vectores) Son arreglos de una sola dimensión, tienen un solo índice. Cada elemento del vector se accesa mediante su nombre seguido del número correspondiente al subíndice que se escribe entre corchetes. Por ejemplo, supongamos que tenemos un vector de enteros llamada m, el cual contiene 8 elementos. Estos elementos se identificaran de la siguiente forma: Vector m Acceso al cuarto elemento es m[3] 5 4 8 7 3 2 1 6 m[0] m[1] m[2] m[3] m[4] m[5] m[6] m[7] Elementos del Vector Subíndices El arreglo unidimensional tiene ocho elementos: m[0] contiene 5, m[1] contiene 4, m[2] contiene 8, m[3] contiene 7, m[4] contiene 3, m[5] contiene 2, m[6] contiene 1, m[7] contiene 6. El diagrama representa realmente una región de la memoria de la computadora, ya que un arreglo se almacena siempre con sus elementos en una secuencia de posiciones de memoria contigua. En Java, los índices del arreglo siempre tienen como limite inferior 0, y como índice superior el tamaño del arreglo menos 1. Igual que sucede con otras variables, antes de utilizar un arreglo primero hay que declararla. La declaración de un arreglo especifica el nombre del arreglo y el tipo de elemento de la misma. Para crear y utilizar un arreglo hay que realizar tres operaciones: declararla, crearla e iniciarla. 1º. DECLARAR UN ARREGLO UNIDIMENSIONAL La declaración de un arreglo unidimensional, se realiza de las 2 formas siguientes: tipoDato[ ] nombreVariable; tipoDato nombreVariable[ ]; CURSO: Estructura de la Información 1 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java donde tipoDato indica el tipo de datos de los elementos del arreglo, que pueden ser de cualquier tipo primitivo o referenciado; y nombreVariable es un identificador que nombra al arreglo. Los corchetes modifican la definición normal del identificador para que sea interpretado por el compilador como un arreglo. Veamos algunos ejemplos. int[ ] m; declara un arreglo de tipo int float[ ] temperatura; declara un arreglo de tipo float Note que las declaraciones no especifican el tamaño del arreglo. El tamaño será especificado cuando se cree el arreglo, operación que se hará durante la ejecución del programa. Los corchetes también se pueden colocar después del nombre del arreglo. int m[ ]; float temperatura[ ]; 2º. CREAR UN ARREGLO UNIDIMENSIONAL Después de haber declarado un arreglo, el siguiente paso es crearla o construirla. Crear un arreglo significa reservar la cantidad de memoria necesaria para contener todos sus elementos y asignar al nombre del arreglo una referencia a ese bloque. Esto puede expresarse genéricamente así: nombreVariable = new tipoDato[tamaño] donde nombreVariable es el nombre del arreglo previamente declarado, tipoDato es el tipo de datos de los elementos del arreglo; y tamaño es una expresión entera que especifica los números de elementos. El hecho de utilizar el operador new significa que Java implementa los arreglos como objetos, por lo tanto serán tratadas como cualquier otro objeto. Las siguientes líneas de código crean los arreglos de una dimensión declaradas en el ejemplo anterior: m = new int [10]; temperatura = new float[31]; Crea un arreglo identificada por m con 10 elementos de tipo int; es decir, puede almacenar 10 valores enteros; el primer elemento es m[0], el segundo es m[1],… y el ultimo es m[9]. Crea una matriz de temperatura de 31 elementos de tipo float. Es bastante común declarar y crear un arreglo en una misma línea. Esto puede hacerse así: tipoDato[ ] nombreVariable = new tipoDato[tamaño]; tipoDato nombreVariable[ ] = new tipoDato[tamaño]; Veamos un ejemplo: int[ ] m = new int[10]; float[ ] temperatura = new float[31] Más Ejemplos: int Edad[ ] = new int[100]; Declara un arreglo llamado Edad que contiene 100 elementos de tipo enteros (int). String Nombres[ ] = new String [25] ; Declara un arreglo llamado Nombres que puede almacenar 25 nombres de personas. double Salario[ ] = new double[50] ; Declara un arreglo llamado Salario que puede almacenar 25 elementos de tipo doublé. Cuando se crea un arreglo, el tamaño del mismo puede ser también especificado durante la ejecución a través de una variable a la que se asignara como valor el número de elementos requeridos. int nElem; nElem=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese # de elementos del arreglo“); int [ ] m = new int[nElem]; 3º. INICIAR UN ARREGLO UNIDIMENSIONAL Un arreglo es un objeto, por lo tanto, cuando es creada, sus elementos son automáticamente iniciados, igual que sucedía con las variables miembro de una clase. Si el arreglo es numérico sus elementos son iniciados a 0 y si no es numérico, a un valor análogo a 0; por ejemplo un elemento booleano es inicializado a false y las referencias a objetos a null. Si deseamos iniciar un arreglo con otros valores diferentes a los predeterminados, podemos hacerlo de la siguiente forma: double[] ingresos={1000,5000,7000,10000,12000,15000}; CURSO: Estructura de la Información 2 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java el ejemplo crea un arreglo ingresos de tipo double con tantos elementos como valores se hayan especificado entre llaves. Para practicar la teoría vamos a realizar un programa que asigne datos a un arreglo unidimensional m de nElementos y, a continuación, como comprobación del trabajo realizado, escriba el contenido de dicho arreglo. La solución será similar a la siguiente: Numero de elementos del Arreglo: 10 Ingrese los valores del Arreglo: m[0]=1 m[1]=2 m[2]=3 . . . m[9]=10 Los Elementos ingresados son: 1 2 3 … 10 Para ello, en primer lugar definimos la variable nElem para fijar el número de elementos del arreglo, creamos el arreglo m con ese número de elementos y definimos el subíndice i para acceder a los elementos de dicho arreglo. int nElem; nElem=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese # de elementos del arreglo“); int m[]= new int[nElem]; // crear el arreglo int i = 0; // subíndice m El paso siguiente es asignar un valor desde el teclado a cada elemento de la matriz. for (i=0; i<nElem; i++) { m[i]=Integer.parseInt(JOptionPane.showInputDialog("m[" + i + "] = ")); } Una vez leído los elementos para el arreglo visualizamos para comprobar el trabajo realizado. String AreaSalida="Los Elementos ingresados son: \n"; for(int i=0;i<nElem;i++) { AreaSalida = AreaSalida + " " + m[i]; } JOptionPane.showMessageDialog(null, Salida); El Programa completo se muestra a continuación: import javax.swing.JOptionPane; public class Clase_Arreglos001 { public static void main(String[] args) { int nElem=0; nElem=Integer.parseInt(JOptionPane.showInputDialog("Ingrese # de elementos del arreglo ")); int m[]=new int[nElem]; int i=0; //Subindice //Asignar valores al arreglo for(i=0;i<nElem;i++) { m[i]=Integer.parseInt(JOptionPane.showInputDialog("m [" + i + "] = ")); } //Visualizar datos String Salida="Los Elementos ingresados son: \n"; for(i=0;i<nElem;i++) { Salida = Salida + " " +m[i]; } JOptionPane.showMessageDialog(null, Salida); } CURSO: Estructura de la Información 3 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java } TAMAÑO DE UN ARREGLO. Atributo length Java considera cada arreglo como un objeto, debido a ello se puede conocer el numero de elementos de un arreglo accediendo al campo length. Por ejemplo, la última parte del ejercicio anterior podríamos escribirla también así. //Visualizar datos String Salida="Elementos ingresados: \n"; for(i=0;i<m.length;i++) { Salida = Salida + " " +m[i]; } JOptionPane.showMessageDialog(null, Salida); APLICACIONES EMPLEANDO ARRAYS UNIDIMENSIONALES 1. Programa que incluye un arreglo con elementos inicializados con valores diferentes a los predeterminados: Diseñar la siguiente interfaz y agregue el siguiente código para el botón. //Código para el botón private void btnVisualizarActionPerformed(java.awt.event.ActionEvent evt) { //Declarar e inicializar el arreglo int miarreglo[]={15,20,14,10,19,17}; //Visualizar Datos String Salida=""; for(int i=0;i<miarreglo.length;i++) { Salida=Salida+miarreglo[i]+"\n"; } txtLista.setText(Salida); } 2. Programa que incluye un arreglo de enteros y los datos son asignados directamente en el código: CURSO: Estructura de la Información 4 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java //Código para el botón private void btnVisualizarActionPerformed(java.awt.event.ActionEvent evt) { //Declarar y crear el arreglo También una asignación asignacióncon con Tambiénpodemos podemos hacer hacer una double miarreglo[]=new double[5]; números números aleatorios aleatorios //Asignar miarreglo[0]=15; miarreglo[1]=20; miarreglo[2]=14; miarreglo[3]=10; miarreglo[4]=19; //Visualizar Datos String Salida=""; for(int i=0;i<miarreglo.length;i++) { Salida=Salida+miarreglo[i]+"\n"; } txtLista.setText(Salida); Hay que recordar que el número generado es del tipo double. Es por ello que para finalizar deberemos de hacer un casting a un entero. } 3. Programa que incluye un arreglo de enteros y los datos son asignados por teclado: private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) { //Leer la caja de texto int tam=Integer.parseInt(txtElem.getText()); //Declarar y crear el arreglo int miarreglo[]=new int[tam]; //Asignar for(int i=0;i<tam;i++) { miarreglo[i]=Integer.parseInt(JOptionPane.showInputDialog("Elem ["+i+"]")); } //Visualizar String Salida=""; for(int i=0;i<tam;i++) { Salida=Salida+miarreglo[i]+"\n"; } txtLista.setText(Salida); } CURSO: Estructura de la Información 5 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java 4. Programa que incluye un arreglo de enteros y los datos son asignados desde un cuadro de texto: Diseñe el formulario teniendo en cuenta el nombre de los controles Programa funcionando txtArreglo //Código del programa OPERACIONES CON ARREGLOS: I. SUMA DE 2 ARREGLOS A i=0 i=1 i=2 B 10 15 20 C 20 10 15 + 30 25 35 = . i=n-1 X Y X+Y C[i]= A[i] + B[i] En Código: II. PRODUCTO DE 2 ARREGLOS A i=0 i=1 i=2 for(i=0;i<n;i++) { C[i]= A[i] + B[i]; } B 10 15 20 C 20 10 15 * = 200 150 300 . . i=n-1 X Y X*Y C[i]= A[i] * B[i] En Código: for(i=0;i<n;i++) { C[i]= A[i] * B[i]; } CURSO: Estructura de la Información 6 DOCENTE: Ing. Fabián Silva Alvarado ISTP CIDET – COMPUTACION E INFORMATICA Arreglos en Java III. DIFERENCIA DE 2 ARREGLOS En Código: for(i=0;i<n;i++) { C[i]= A[i] - B[i]; } IV. DIVISION DE 2 ARREGLOS En Código: for(i=0;i<n;i++) { C[i]= A[i] / B[i]; } Ejemplo: Imprimir la planilla de salarios de los trabajadores de una empresa de acuerdo al siguiente formato: --------------------------------------------------------------------------------------------------------------------------------------------------------------PLANILLA DEL MES DE JULIO 2011 --------------------------------------------------------------------------------------------------------------------------------------------------------------CODIGO APELLIDOS Y NOMBRES SAL_BAS BONIF SAL_PARC DSCTO SAL_NETO --------------------------------------------------------------------------------------------------------------------------------------------------------------- **** **** **** **** ****************** ****************** ****************** ******************* ****.** ****.** ****.** ****.** ***.** ***.** ***.** ***.** ****.** ****.** ****.** ****.** ***.** ***.** ***.** ***.** ****.** ****.** ****.** ****.** --------------------------------------------------------------------------------------------------------------------------------------------------------------- TOTALES *****.** ******.** --------------------------------------------------------------------------------------------------------------------------------------------------------------Especificaciones: a) b) c) d) e) f) Cada trabajador se identifica con su nombre y su código Cada Trabajador tiene un salario básico (SAL_BAS) entre 1000 y 2000. Cada trabajador tiene una bonificación (BONIF) del 12% del Salario Básico El Salario Parcial (SAL_PARC) es igual a SAL_BAS+ BONIF. Cada trabajador tiene un descuento (DSCTO) del 9% del SAL_PARC El Salario Neto (SAL_NETO) es igual a SAL_PARC – DSCTO. Codigo[i] Ape_Nomb[i] Sal_Bas[i] Bonif[i] Sal_Parc[i] Descuento[i] Sal_Neto[i] i=0 i=1 i=2 . . . i=99 Implementar en Java CURSO: Estructura de la Información 7 DOCENTE: Ing. Fabián Silva Alvarado