Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz...
-
Upload
maria-cristina-marin-castro -
Category
Documents
-
view
218 -
download
0
Transcript of Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz...
![Page 1: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/1.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Implementar un TDA Matriz que brinde operaciones para calcular el producto de un escalar por una matriz, la suma de dos matrices, establecer la matriz identidad, decidir si un matriz es cuadrada, decidir si una matriz es la matriz identidad, decidir si es una matriz simétrica.
La matriz se representa mediante un arreglo de dos dimensiones de números reales.
La clase que encapsula al arreglo brinda operaciones para establecer y obtener un elemento y para comparar, copiar y clonar matrices.
![Page 2: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/2.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0 1 2 3 4 5
Matriz m1;…m1.obtenerElem (1,3);
public float obtenerElem (int f,int c){ return mr[f][c]; }
0
1
2
![Page 3: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/3.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Matriz
real [] [] mr<<constructores>>Matriz (fMax,cMax : entero) <<comandos>>establecerElem (f,c : entero, elem : real)copy(m : Matriz)establecerIdentidad () invertirFilas(f1,f2:entero)xEscalar(r:real)
Asume que la posiciónes válida
Asume que se verificóque la matriz es
cuadrada
Asume que se verificóque f1 y f2 son válidas
![Page 4: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/4.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Matriz
real [] [] mr
<<consultas>>existePos(f,c : entero) : booleanobtenerNFil () : enteroobtenerNCol () : enteroobtenerElem (f,c : entero) : realclone() :Matrizequals(m:Matriz): booleanesCuadrada () : booleanesIdentidad():booleanesTriangularSuperior():booleanesSimetrica():booleanesRala():boolean
Asume que la posiciónes válida
Más de la mitadde los elementos
son 0
![Page 5: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/5.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Matriz
real [] [] mr
<<consultas>>cantElem (elem : real) : enteroestaElem(elem : real) : booleanmayorElemento () : realfilaMayorElemento () : enterovectorMayores () :Vectorsuma (m:Matriz) : Matrizproducto(m:Matriz):Matriztranspuesta():Matriz
Asume que se controlaron filas y col
Genera un vectorcon el mayor elemento
de cada fila
![Page 6: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/6.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Establecer casos de prueba adecuados para cada consulta y comando.
![Page 7: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/7.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public class Matriz {
private float[][] mr;
\\ Constructor
public Matriz(int nfil,int ncol){
mr=new float[nfil][ncol];
}
![Page 8: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/8.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public int obtenerNfil () { return mr.length; }
public int obtenerNcol () { return mr[0].length; }
![Page 9: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/9.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public boolean existePos(int f, int c) { return (f>=0 && f < obtenerNfil()) && (c>=0 && c < obtenerNCol());}
public float obtenerElem(int f,int c){\\ Asume que la posición es válida return mr[f][c];}
![Page 10: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/10.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
\\ Comandospublic void establecerElemento (int f,int c,
float x) {\\Asume que la posición es válida
mr[f][c]= x;}
![Page 11: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/11.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public void establecerIdentidad () {
iniMatriz(); for (int j=0;j<obtenerNcol();j++) mr[j][j] = 1; }
![Page 12: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/12.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public void iniMatriz () { for (int i=0;i<obtenerNfil();i++)
for (int j=0;j<obtenerNcol();j++) mr[i][j] = 0; }
![Page 13: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/13.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public void establecerIdentidad () { for (int i=0;i<obtenerNfil();i++)
for (int j=0;j<obtenerNcol();j++) if (i==j) mr[i][j] = 1; else mr[i][j] = 0; }
![Page 14: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/14.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
6 0
-3 -9
3 6
0
1
2
0 1
2 0
-1 -3
1 2
0
1
2
0 1
r=3
Producto de matriz por escalar.
para cada posición i,j mri,j = mri,j*r
![Page 15: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/15.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public void xEscalar (float r) { for (int i=0;i<obtenerNfil();i++) for (int j=0;j<obtenerNcol();j++) mr[i][j] = mr[i][j] * r;}
para cada posición i,j mri,j = mri,j*r
![Page 16: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/16.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public void copy (Matriz m) {
mr = new float[m.obtenerNfil()][m.obtenerNcol()]; for (int i=0;i<obtenerNfil();i++) { for (int j=0;j<obtenerNcol();j++) mr[i][j] = m.obtenerElem(i,j); };
}
![Page 17: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/17.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public int cantElem (float ele) { int cant = 0; for (int i=0;i< obtenerNfil();i++) for (int j=0;j< obtenerNcol();j++) if (mr[i][j] == ele)
cant++ ; return cant; }
![Page 18: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/18.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public boolean estaElemento (float ele){ boolean hay= false; int i = 0; while (i<obtenerNfil() && !hay){ int j = 0; while (j < obtenerNcol()&& !hay){ hay = (mr[i][j] == ele); j++ ; } i++; } return hay;}
![Page 19: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/19.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public boolean esCuadrada () { return (obtenerNfil() == obtenerNcol()) ; }
![Page 20: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/20.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0 1 2 3 4 5
0
1
2
3
4
5 esIdentidad(n)
![Page 21: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/21.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0 1 2 3 4 5
0
1
2
3
4
5 esIdentidad(n)
![Page 22: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/22.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0 1 2 3 4 5
0
1
2
3
4
5 esIdentidad(n)
![Page 23: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/23.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0
0 1 2 3 4 5
0
0
0
1
2
3
4
5
0
0
0 0 0 0 0 1
esIdentidad(n)
![Page 24: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/24.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
0 1 2 3 4 5
0
1
2
3
4
5
![Page 25: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/25.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
Caso trivialUna matriz m de nxn con n = 1 es la matriz identidad si su único elemento es 1
Caso recursivoUna matriz m de nxn con n > 1 es la matriz identidad sim[i,n-1] = 0 para 0<= i < n-1m[n-1,j] = 0 para 0<= j < n-1m[n-1,n-1] = 1y la matriz m’ de (n-1)x(n-1) es la matriz identidad
Planteo Recursivo
![Page 26: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/26.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public boolean esIdent () { if (!esCuadrada()) return false; else return esIdentidad(obtNfil()); }private boolean esIdentidad (int n) { if (n == 0) return (mr[0][0] == 1); else return (mr[n-1][n-1] == 1 && esCeroFila(n-1) && esCeroColumna(n-1)&&
esIdentidad(n-1)); }
![Page 27: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/27.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public Matriz sumaMatriz (Matriz m) {
}
3 0
-3 -1
3 1
0
1
2
0 1
2 0
-1 -3
1 2
0
1
2
0 1
5 0
-4 -4
4 3
0
1
2
0 1
suma=new Matriz (obtNFil(),obtNCol());…return suma;
![Page 28: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/28.jpg)
Introducción a la Programación Orientada a Objetos
Arreglos de 2 dimensionesTDA Matriz
public class Matriz {
private float[][] mr;
\\ Constructor
public Matriz (int nfil,int ncol){
mr =new float[nfil][ncol];
}
![Page 29: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/29.jpg)
Introducción a la Programación Orientada a Objetos
Administración de Memoria
/≡
float [][] mr;
Se declara una variable mr que referenciará a un objeto de la clase array con componentes de tipo array con componentes de tipo float.
mr
![Page 30: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/30.jpg)
Introducción a la Programación Orientada a Objetos
Administración de Memoria
mr = new float[5][3];
5length
3
3
3
3
3
mr
![Page 31: Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.](https://reader034.fdocuments.es/reader034/viewer/2022051402/5665b4e31a28abb57c947985/html5/thumbnails/31.jpg)
Introducción a la Programación Orientada a Objetos
Administración de Memoria
m1 = new Matriz(5,3);
5length
3
3
3
3
3
mr
m1