Una matriz es una estructura de datos que permite almacenar un CONJUNTO de datos del MISMO tipo.
Con un único nombre se define la matriz y por medio de DOS subíndices hacemos referencia a cada elemento de la misma (componente)
Hemos graficado una matriz de 3 filas y 5 columnas. Para hacer referencia a cada elemento debemos indicar primero la fila y luego la columna, por ejemplo en la componente 1,4 se almacena el valor 97.
En este ejemplo almacenamos valores enteros. Todos los elementos de la matriz deben ser del mismo tipo (Integer, Single, String etc.)
Las filas y columnas comienzan a numerarse a partir de cero, similar a los vectores.
Crear una matriz de 3 filas por 5 columnas con elementos de tipo Integer, cargar sus componentes y luego imprimirlas.
Module Module1 Public Class Matriz1 Private mat(2, 4) As Integer Public Sub Cargar() Dim f, c As Integer For f = 0 To 2 For c = 0 To 4 Console.Write("Ingrese componente:") mat(f, c) = Console.ReadLine() Next Next End Sub Public Sub Imprimir() Dim f, c As Integer For f = 0 To 2 For c = 0 To 4 Console.Write(mat(f, c) & " ") Next Console.WriteLine() Next Console.ReadKey() End Sub End Class Sub Main() Dim ma As New Matriz1() ma.Cargar() ma.Imprimir() End Sub End Module
Para definir una matriz debemos disponer una coma dentro de los paréntesis. El primer valor indica filas (3 filas) y el segundo columnas (cinco columnas):
Private mat(2, 4) As Integer
Recordar que los subíndices comienzan a numerarse desde cero.
De esta forma el compilador de Visual Basic .Net puede diferenciar los vectores de las matrices.
Luego debemos pasar a cargar sus 15 componentes (cada fila almacena 5 componentes y tenemos 3 filas)
Lo más cómodo es utilizar un For anidado, el primer For que incrementa el contador f lo utilizamos para recorrer las filas y el contador interno llamado c lo utilizamos para recorrer las columnas.
Cada vez que se repite en forma completa el For interno se carga una fila completa, primero se carga la fila cero en forma completa, luego la fila uno y finalmente la fila 2.
Siempre que accedemos a una posición de la matriz debemos disponer dos subíndices que hagan referencia a la fila y columna mat(f,c):
Public Sub Cargar() Dim f, c As Integer For f = 0 To 2 For c = 0 To 4 Console.Write("Ingrese componente:") mat(f, c) = Console.ReadLine() Next Next End Sub
Para imprimir la matriz de forma similar utilizamos dos For para acceder a cada elemento de la matriz:
Public Sub Imprimir() Dim f, c As Integer For f = 0 To 2 For c = 0 To 4 Console.Write(mat(f, c) & " ") Next Console.WriteLine() Next Console.ReadKey() End Sub
Cada vez que se ejecuta todas las vueltas del For interno tenemos en pantalla una fila completa de la matriz, por eso pasamos a ejecutar un salto de línea (con esto logramos que en pantalla los datos aparezcan en forma matricial):
Console.WriteLine()
En pantalla tenemos como resultado:
Crear y cargar una matriz de 4 filas por 4 columnas. Imprimir la diagonal principal.
x - - - - x - - - - x - - - - x
Module Module1 Public Class Matriz2 Private mat(3, 3) As Integer Public Sub Cargar() Dim f, c As Integer For f = 0 To 3 For c = 0 To 3 Console.Write("Ingrese componente:") mat(f, c) = Console.ReadLine() Next Next End Sub Public Sub ImprimirDiagonalPrincipal() Dim k As Integer For k = 0 To 3 Console.Write(mat(k, k) & " ") Next Console.ReadKey() End Sub End Class Sub Main() Dim ma As New Matriz2() ma.Cargar() ma.ImprimirDiagonalPrincipal() End Sub End Module
La definición, creación y carga de la matriz no varían con el ejemplo anterior.
Para imprimir la diagonal principal de la matriz lo más conveniente es utilizar un for que se repita 4 veces y disponer como subíndice dicho contador (los elementos de la diagonal principal coinciden los valores de la fila y columna):
Public Sub ImprimirDiagonalPrincipal() Dim k As Integer For k = 0 To 3 Console.Write(mat(k, k) & " ") Next Console.ReadKey() End Sub
Crear y cargar una matriz de 3 filas por 4 columnas. Imprimir la primer fila. Imprimir la última fila e imprimir la primer columna.
Module Module1 Public Class Matriz3 Private mat(2, 3) As Integer Public Sub Cargar() Dim f As Integer For f = 0 To 2 For c = 0 To 3 Console.Write("Ingrese componente:") mat(f, c) = Console.ReadLine() Next Next End Sub Public Sub PrimerFila() Console.WriteLine("Primer fila de la matriz:") Dim c As Integer For c = 0 To 3 Console.WriteLine(mat(0, c)) Next End Sub Public Sub UltimaFila() Console.WriteLine("Ultima fila de la matriz:") Dim c As Integer For c = 0 To 3 Console.WriteLine(mat(2, c)) Next End Sub Public Sub PrimerColumna() Console.WriteLine("Primer columna:") Dim f As Integer For f = 0 To 2 Console.WriteLine(mat(f, 0)) Next End Sub End Class Sub Main() Dim ma As New Matriz3() ma.Cargar() ma.PrimerFila() ma.UltimaFila() ma.PrimerColumna() Console.ReadKey() End Sub End Module
Creamos una matriz de 3 filas y 4 columnas:
Private mat(2, 3) As Integer
Luego de cargarla el primer método que codificamos es el que imprime la primer fila. Disponemos un For para recorrer las columnas, ya que la fila siempre será la cero. Como son cuatro los elementos de la primer fila el For se repite esta cantidad de veces:
Public Sub PrimerFila() Console.WriteLine("Primer fila de la matriz:") Dim c As Integer For c = 0 To 3 Console.WriteLine(mat(0, c)) Next End Sub
Para imprimir la última fila el algoritmo es similar, disponemos un for que se repita 4 veces y en el subíndice de la fila disponemos el valor 2 (ya que la matriz tiene 3 filas):
Public Sub UltimaFila() Console.WriteLine("Ultima fila de la matriz:") Dim c As Integer For c = 0 To 3 Console.WriteLine(mat(2, c)) Next End Sub
Para imprimir la primer columna el for debe repetirse 3 veces ya que la matriz tiene 3 filas. Dejamos constante el subíndice de la columna con el valor cero:
Public Sub PrimerColumna() Console.WriteLine("Primer columna:") Dim f As Integer For f = 0 To 2 Console.WriteLine(mat(f, 0)) Next End Sub
Cuando ejecutamos este programa tenemos un resultado similar a:
Module Module1 Public Class Matriz4 Private mat(1, 4) As Integer Public Sub Cargar() Console.WriteLine("Carga de la matriz por columna:") Dim c, f As Integer For c = 0 To 4 For f = 0 To 1 Console.Write("Ingrese componente de la fila " & f & " y la columna " & c & " :") mat(f, c) = Console.ReadLine() Next Next End Sub Public Sub Imprimir() Dim f, c As Integer For f = 0 To 1 For c = 0 To 4 Console.Write(mat(f, c) & " ") Next Console.WriteLine() Next Console.ReadKey() End Sub End Class Sub Main() Dim ma As New Matriz4() ma.Cargar() ma.Imprimir() End Sub End Module