algoritmos y estructura de datos - arreglos bidimensionales (matrices)

17
Arreglos Bidimensionales: Arreglos Bidimensionales: Matrices Algoritmos y Estructuras de Datos

Upload: aitnas

Post on 08-Aug-2015

241 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

Arreglos Bidimensionales: Arreglos Bidimensionales: Matrices

Algoritmos y Estructuras de Datosg y

Page 2: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 3: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

¿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

Page 4: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 5: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

Matrices en Algoritmos

1 2 3 4 … J … N

11

2

I [I, J]

M

5

Page 6: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

Matrices en Java

0 1 2 3 … J … N-1

00

1

I [I, J]

M-1

6

Page 7: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

Operaciones con Matrices

Page 8: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (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

Page 9: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 10: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

ú 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

Page 11: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 12: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 13: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 14: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 15: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

Page 16: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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

}

Page 17: Algoritmos y Estructura de Datos - Arreglos Bidimensionales (Matrices)

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}