Está en la página 1de 28

ARREGLOS PARTE II

ARRAYS
MULTIDIMENSIONALES
ARREGLOS MULTIDIMENSIONALES
Cada elemento en el arreglo a se identifica en la figura mediante una
expresión de acceso a un arreglo de la forma a [fila] [columna]; a es el
nombre del arreglo, fila y columna solo los subíndices que identifican en
forma única a cada elemento en el arreglo a por número de fila y
columna. Observe que los nombres de los elementos en la fila cero
tienen todos un primer subíndice de 0, y los nombres de los elementos
en la columna 3 tienen un segundo subíndice de 3.
ARREGLOS UNIDIMENSIONALES
• Al igual que los arreglos unidimensionales, los arreglos multidimensionales
pueden inicializarse mediante inicializadores de arreglos en las declaraciones.
• Un arreglo bidimensional b con dos filas y dos columnas podría declararse e
inicializarse con inicializadores de arreglos anidados, como se muestra a
continuación:
int b[ ] [ ] = { { 1, 2}, { 3, 4 } };
• Los valores del inicializador se agrupan por fila entre llaves. Así 1 y 2
inicializan a b [ 0 ] [ 0 ] y b [ 0 [ 1 ], respectivamente 3 y 4 inicializan a b [1]
[0] y b [1] [1] respectivamente.

• El compilador cuenta con el número de inicializadores de arreglos anidados


(representados por conjuntos de llaves dentro de las llaves externas) en la
declaración del arreglo, para determinar el número de filas en el arreglo b.
ARREGLOS UNIDIMENSIONALES
• El compilador cuenta los valores inicializadores en el inicializador
de arreglos anidados de una fila, para determinar el número de
columnas en esa fila.
• Esto significa que las pilas pueden tener distintas longitudes.
• Los arreglos multidimensionales se mantienen como arreglos de
arreglos unidimensionales. Por lo tanto, el arreglo b en la
declaración anterior está realmente compuesto de dos arreglos
unidimensionales separados: uno que contiene los valores en la
primera lista inicializadora anidada {1 , 2} y uno que contiene los
valores en la segunda lista inicializadora anidada { 3, 4}. Así, el
arreglo b si es un arreglo de dos elementos, cada uno de los
cuales es un arreglo unidimensional de valores int.
ARREGLOS BIDIMENSIONALES CON FILAS DE DISTINTAS
LONGITUDES
• La forma en que se representan los arreglos multidimensionales
los hace bastante flexibles. De hecho, las longitudes de las filas
en el arreglo b no tienen que ser iguales, por ejemplo:
• int b [ ] [ ] = { {1,2}, {3, 4, 5 } };
• crea la regla entero b con dos elementos (los cuales se
determinan según el número inicializadores de arreglos
anidados) que representan las filas del arreglo bidimensional.
Cada elemento de b es una referencia a un arreglo
unidimensional de variables int. En el arreglo int de la fila 0 es
un arreglo unidimensional con dos elementos ( 1 y 2 ), y el
arreglo int de la fila 1 es un arreglo unidimensional con tres
elementos (3, 4 y 5).
CREACION DE ARREGLOS BIDIMENSIONALES MEDIANTE EXPRESIONES
DE CREACION DE ARREGLOS
• Un arreglo multidimensional con el mismo número de columnas
en cada fila puede crearse mediante una expresión de creación de
arreglos. Por ejemplo, en las siguientes líneas se declara el
arreglo b y se le asigna una referencia a un arreglo de 3 por 4:
int b[ ] [ ] = new int [3] [4];
• En este caso, utilizamos los valores literales 3 y 4 para especificar
el número de filas y columnas, respectivamente, pero esto no es
obligatorio. Los programas también pueden utilizar variables para
especificar las dimensiones de los arreglos, ya que new crea
arreglos en tiempo de ejecución, no en tiempo de compilación.
Al igual que con los arreglos unidimensionales, los elementos de
un arreglo multidimensional se inicializan cuando se crea el
objeto arreglo.
CREACION DE ARREGLOS BIDIMENSIONALES MEDIANTE
EXPRESIONES DE CREACION DE ARREGLOS
• Un arreglo multidimensional, en el que cada fila tiene un
número distinto de columnas, puede crearse la siguiente
manera:
int b[ ] [ ] = new int [2] [ ]; //crea 2 filas
b [0] = new int [5]; //crea 5 columnas para la fila 0
b [1] = new int [3]; //crea 3 columnas para la fila 1
 
• Estás instrucciones crean un arreglo bidimensional con
dos filas. La fila 0 tiene 5 columnas y la fila 1 tiene 3.
EJEMPLO DE ARREGLOS BIDIMENSIONALES: COMO MOSTRAR LOS
VALORES DE LOS ELEMENTOS
• En este ejercicio se demuestra como inicializar arreglos bidimensionales con
inicializadores de arreglos, y cómo utilizar ciclos for anidados para recorrer
los arreglos (es decir, manipular cada uno de los elementos de cada arreglo).

• El método main de la clase InicArregloBidimensional declara dos arreglos.


En la declaración del arreglo1 (línea 9) se utilizan inicializadores de arreglos
anidados para inicializar la primera fila del arreglo con los valores 1 2 y 3 y la
segunda fila con los valores 4 5 y 6.
 
• En la declaración del arreglo2 (línea 10) se utilizan inicializadores anidados
de distintas longitudes. En este caso, la primera fila se inicializa para tener
dos elementos con los valores 1 y 2 respectivamente. La segunda fila se
inicializa para tener un elemento con el valor de 3. La tercera fila se inicializa
para tener tres elementos con los valores 4 5 y 6 respectivamente.
EJEMPLO DE ARREGLOS BIDIMENSIONALES: COMO MOSTRAR LOS
VALORES DE LOS ELEMENTOS
EJEMPLO DE ARREGLOS BIDIMENSIONALES: COMO MOSTRAR LOS
VALORES DE LOS ELEMENTOS
• En las líneas 13 y 16 llaman al método imprimirAarreglo (líneas
20 a 31) para imprimir los elementos del arreglo1 y arreglo2,
respectivamente. El método imprimirArreglo especifica el
parámetro tipo arreglo como int arreglo [ ] [ ] para indicar que
el método recibe un arreglo bidimensional.
• La instrucción for (líneas 23 a 30) imprime las filas de un arreglo
bidimensional. En la condición de continuación de ciclo de la
instrucción for exterior, la expresión arreglo.length determina
el número de filas en el arreglo. En la expresión for interior, la
expresión arreglo [fila].length determina el número de
columnas en la fila actual del arreglo. Esta condición permite al
ciclo determinar el número exacto de columnas en cada fila.
EJEMPLO PRACTICO: La clase LibroCalificaciones usando arreglos
bidimensionales
EJEMPLO PRACTICO: La clase PruebaLibroCalificacionesBidimensional
EJEMPLO PRACTICO DE GUI y gráficos: como dibujar arcos

• Mediante el uso de la herramienta de gráficos de Java podemos


crear dibujos complejos, que si los codificamos línea por línea
sería tedioso. En el siguiente ejercicio utilizamos arreglos e
instrucciones de repetición para dibujar un arco iris mediante el
uso del método fillArc de Graphics. El proceso de dibujar arcos
en Java, es similar a dibujar óvalos; un arco es simplemente una
sección de un óvalo.
• El código inicializa con las instrucciones Import usuales para
ciertos dibujos (línea 3 a 5).
• Las líneas 9 y 10 declaran y crean dos nuevos colores: Violeta e
índigo. Como tal vez lo sepa, los colores de un arco iris son: rojo,
naranja, amarillo, verde, azul, índigo y violeta.
Dibujo de un arco iris, usando arcos y arreglo de colores
EJEMPLO PRACTICO DE GUI y gráficos: como dibujar arcos

• Java tiene constantes predefinidas sólo para los cinco primeros


colores. Las líneas 15 a 17 inicializan con un arreglo de los colores
del arco iris, empezando con los arcos más interiores primeros.
• El arreglo empieza con dos elementos Color.WHITE, que como
veremos pronto son para dibujar los arcos vacíos en el centro del
arco iris.
• Observe que las variables de instancia se pueden inicializar al
momento de declararse como se muestra en las líneas 10 a 17.
• En las líneas 20 a 23 el constructor, contiene una sóla instrucción
que llama al método setBackground (heredado del Jpanel). Con el
parámetro Color.WHITE
• El método SetBackground recibe un solo argumento Color y establece el
color de fondo.
• En la línea 30 paintComponent declara la variable local radio que
determina el radio de cada arco.
• Las variables locales centroX y centroY (líneas 33 y 34) determinan la
ubicación del punto medio en la base del arco iris.
• Las líneas 37 a 46 utiliza la variable de control contador para contar en
forma regresiva, partiendo del final del arreglo, dibujando los arcos más
grandes primero y colocando cada arco más pequeño encima del anterior.
• La línea 40 establece el color para dibujar el arco actual del arreglo. La
razón por la que tenemos entradas color.WHITE al principio del arreglo es
para crear el arco vacío en el centro.
• La llamada al método fillArc en las líneas 43 a 45 dibuja un semicírculo
relleno.
Clase PruebaDibujoArcoIris

• La clase PruebaDibujoArcoIris crea y estable un objeto


JFrame para mostrar el arco iris en la pantalla. Una vez
que el programa hace visible el objeto JFrame, el sistema
llama al método paintComponent en la clase
DibujoArcoIris para dibujar el arco iris en la pantalla
Clase PruebaDibujoArcoIris
EJERCICIOS DE RETO

1. Dibuje un espiral con forma cuadrada, centrada en el panel,


usando el método drawLine. Una técnica es utilizar un ciclo
que incremente la longitud de la línea después de dibujar
cada segunda línea. La dirección en la cual se dibujará la
siguiente línea debe ir después de un patrón distinto, como
abajo, izquierda, arriba, derecha.
2. Dibuje un espiral circular, usando el método drawArc para
dibujar un semicírculo a la vez. Cada semicírculo sucesivo
deberá tener un radio más grande y debe seguir dibujando
en donde terminó el semicírculo anterior.

También podría gustarte