algoritmos y estructura de datos - arreglos bidimensionales (matrices)

Post on 08-Aug-2015

241 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arreglos Bidimensionales: Arreglos Bidimensionales: Matrices

Algoritmos y Estructuras de Datosg y

Objetivos

Reconocer las estructuras de datos denominadas arreglos bidimensionales o matrices.g

Declarar matrices en Java.Trabajar con los elementos de las matrices.Trabajar con los elementos de las matrices.

2

¿Qué es una Matriz?

Es un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es p , psignificativo y en el que se necesita especificar dos subíndices para poder identificar a cada uno de sus elementos.

En otros términos, una matriz es un vector de tvectores.

3

Representación de una Matriz

Fila 1

Fila 2

Fila 3Fila 3

Fila 4Fila 4

Columna 1 Columna 2 Columna 4

Columna 5

Columna 1

Columna 3

Columna 2 Columna 4

4

Matrices en Algoritmos

1 2 3 4 … J … N

11

2

I [I, J]

M

5

Matrices en Java

0 1 2 3 … J … N-1

00

1

I [I, J]

M-1

6

Operaciones con Matrices

Operaciones con Matrices

Las operaciones con matrices son casi las mismas que se pueden realizar con los vectores, así q p ,tenemos:– Declaración– Asignación– Lectura / Escritura– Recorrido (acceso secuencial)– Búsqueda

8

Declaración

tipoarray [liminf .. limsup] [liminf .. limsup]array [liminf .. limsup] [liminf .. limsup]de tipo : nombre_array

tipotipoarray [1..10][1..5] de entero : NUMEROS

varNUMEROS : N

ti [][] b ti [ fil][ l]

NUMEROS : N

tipo[][] nombre = new tipo[nro_fil][nro_col];

int[][] numeros = new int[10][5];

9

ú d lNúmero de Elementos en una MatrizMatrizPara determinar el número de filas de una matriz,

consultamos la propiedad length usando la p p gexpresión matriz.length

Para determinar el número de columnas, consultamos por la longitud de cualquiera de las filas, por ejemplo la fila 0, como se muestra en la e p e ión t i [0] l thexpresión matriz[0].length

10

i ió d lAsignación de Elementos –AlgoritmoAlgoritmoA[2][3] 5 //asigna 5 a la fila 2, columna 3

leer (A[i][j]) //solicita el elemento i, j

// Asigna 0 a todos los elementos de na matri// Asigna 0 a todos los elementos de una matriz// de 5 * 10desde i = 1 hasta 5 hacer

d d j h hdesde j = 1 hasta 10 hacerA[i][j] 0

fin_desdefin_desde

11

i ió d lAsignación de Elementos –JavaJavaA[1][2] = 5; //asigna 5 a la fila 2 columna 3

A[i][j] = Integer.parseInt(args[0]);

// Asigna 0 a todos los elementos de na matri// Asigna 0 a todos los elementos de una matriz// de 5 * 10for (i = 0; i < 5; i++)

f (j j j )for (j = 0; j < 10; j++)A[i][j] = 0;

12

Acceso Secuencial a Matrices

Se puede acceder a los elementos de una matriz para introducir datos (escribir) en ella o bien para visualizar su contenido (leer).

A la operación de efectuar una acción general sobre todos los elementos de una matriz al igual sobre todos los elementos de una matriz, al igual que en los vectores, se le denomina recorrido de la matriz.

Para ellos es preciso utilizar dos niveles de bucle: el externo que recorra las filas y el interno que recorra las columnas o viceversa Las variables de recorra las columnas o viceversa. Las variables de control de los bucles se usan como índices.

13

j l d l i dEjemplo de Algoritmo de Acceso Secuencial a MatricesAcceso Secuencial a Matricesalgoritmo leer_vectortipotipo

array[1..5][1..10] de entero : FINALvar

FINAL : FFINAL : Fentero : i

iniciodesde i 1 hasta 5 hacerdesde i 1 hasta 5 hacer

desde j 1 hasta 10 hacerleer (F[i][j])

fi d dfin_desdefin_desde

fin

14

j l d dEjemplo de Programa Java de Acceso Secuencial a MatricesAcceso Secuencial a Matricespublic class Leer_Matriz {

public static void main (String[] args) {public static void main (String[] args) {int fil = Integer.parseInt(args[0]);int col = Integer.parseInt(args[1]);int[][] num = new int[fil][col];int[][] num = new int[fil][col];int f, c, cont = 1;for (f = 0; f < num.length; f++)

for (c 0; c < num[0] length; c++) {for (c = 0; c < num[0].length; c++) {num[f][c] = cont;cont++;

}}}

}

15

Ej l d P J d Ejemplo de Programa Java de Escritura de Datos de una Matrizpublic class Escribir Matriz {public class Escribir_Matriz {

public static void main (String[] args) {int[][] num = new int[10][10];

// A i ió d l l t... // Asignación de los elementosint f, c;for (f = 0; f < num.length; f++) {

for (c = 0; c < num[0].length; c++) System.out.print(num[f][c]) + “ ”;

System.out.println();y p ();}

}}

16

}

P J G ió d Programa Java: Generación de una matriz de 50 números aleatoriospublic class Asigna Matriz {public class Asigna_Matriz {

// Genera números aleatorios 0 ó 1public static void main (String[] args) {

int[][] num = new int[10][5];int[][] num = new int[10][5];int f, c;double aux;for (f = 0; c < num length; c++) {for (f = 0; c < num.length; c++) {

for (c = 0; c < num[0].length; c++) {aux = Math.round ( Math.random() );num[f][c] = (int) aux;u [ ][c] ( t) au ;

}}

}

17}

top related