Está en la página 1de 5

Programación de Computadoras - Curso Básico - Prof. John J. Muñoz P.

28

Arreglos Bidimensionales – Matrices


Una matriz es un tipo de datos estructurado compuesto de un número finito de elementos (tamaño
fijo) y elementos homogéneos (de un mismo tipo de datos), los cuales se accesan a través de dos
subíndices (dos dimensiones) y el nombre de la matriz. La información se almacena en posiciones
contiguas de memoria. Ejemplo: la matriz notas de doce elementos.

notas Columnas
1 2 3 4
1 17 15 18 16
Filas 2 12 10 8 13
3 3 11 19 7

Elementos
notas(1,1) notas(1,2) notas(1,3) notas(1,4)
notas(2,1) notas(2,2) notas(2,3) notas(2,4)
notas(3,1) notas(3,2) notas(3,3) notas(3,4)

Declaración de una Matriz

Dim nombre_matriz(tamaño filas, tamaño columnas) As Tipo

donde:
• nombre_matriz: identificador valido.
• Tamaño filas: cantidad máxima de filas de la matriz.
• Tamaño columnas: cantidad máxima de columnas de la matriz.
• Tipo: tipo de dato de los elementos de la matriz.

Ejemplo:
Dim notas(10, 10) As Integer

Acceso a un elemento de una Matriz

Se efectúa indicando el nombre de la matriz y encerrados entre paréntesis el subíndice


correspondiente a la fila y el subíndice correspondiente a la columna del elemento separados por
coma. Ejemplo:
notas(3, 2)
x(k, j)

Asignación a un elemento de una Matriz

A los componentes de una matriz se les puede asignar valores del mismo modo que a cualquier otra
variable, con tal que sean del mismo tipo de datos. Ejemplo:

notas(3, 2) = 11
x(k, j)= m + 2

Recorrido de una Matriz

Consiste en accesar uno a uno cada elemento de la matriz a través de ciclos de programación.

Por filas:
For k = 1 To n
For j = 1 To m
notas(k, j) = 0
Next
Next

donde el valor de la variable n es la cantidad de filas y el valor de la variable m es la


cantidad de columnas validas de la matriz.
Programación de Computadoras - Curso Básico - Prof. John J. Muñoz P. 29

Por columnas:
For j = 1 To m
For k = 1 To n
notas(k, j) = 0
Next
Next

Lectura de una Matriz

Ejemplo: Console.Write("Indique la cantidad de secciones: ")


n = Console.ReadLine()
Console.Write("Indique la cantidad de notas por sección: ")
m = Console.ReadLine()
For k = 1 To n
For j = 1 To m
Console.Write("Ingrese la nota(" & k & ", " & j & ": ")
notas(k, j) = Console.ReadLine()
Next
Next

Escritura de una Matriz

Ejemplo: Console.WriteLine("Notas de las secciones")


For k = 1 To n
For j = 1 To m
Console.Write(a(k, j) & vbTab)
Next
Console.WriteLine()
Next

Inserción de una Fila en una Matriz

Al final de la matriz:

For j = 1 To m
notas(n + 1, j) = 0
Next
n = n + 1

En una posición intermedia (5) de la matriz:

For k = n To 5 Step -1
For j = 1 To m
notas(k + 1, j) = notas(k, j)
Next
Next
For j = 1 To m
notas(5, j) = 0
Next
n = n + 1

Eliminación de una Fila (5) de la matriz

For k = 5 To n - 1
For j = 1 To m
notas(k, j) = notas(k + 1, j)
Next
Next
n = n - 1
Programación de Computadoras - Curso Básico - Prof. John J. Muñoz P. 30

Inserción de una Columna en una Matriz

Al final de la matriz:

For k = 1 To n
notas(n, j + 1) = 0
Next
m = m + 1

En una posición intermedia (3) de la matriz:

For j = m To 3 Step -1
For k = 1 To n
notas(k, j + 1) = notas(k, j)
Next
Next
For k = 1 To n
notas(k, 3) = 0
Next
m = m + 1

Eliminación de una Columna (3) de la matriz

For j = 3 To m - 1
For k = 1 To n
notas(k, j) = notas(k, j + 1)
Next
Next
m = m - 1

Recorridos para Matrices CUADRADAS (de orden n ó de nxn elementos)

Elementos en la Diagonal Principal

For k = 1 To n
a(k, k) = 0
Next

Elementos en la Diagonal Secundaria

For k = 1 To n
a(k, n - k + 1) = 0
Next

Elementos sobre la Diagonal Principal

For k = 1 To n
For j = 1 To n
If k < j Then
a(k, j) = 0
End If
Next
Next

Elementos sobre la Diagonal Secundaria

For k = 1 To n
For j = 1 To n
If k < n - j + 1 Then
a(k, j) = 0
End If
Next
Programación de Computadoras - Curso Básico - Prof. John J. Muñoz P. 31

Next

ARITMETICA con Matrices

Multiplicación de un Escalar (5) por un Matriz

For k = 1 To n
For j = 1 To n
notas(k, j) = 5 * notas(k, j)
Next
Next

Suma de Matrices

For k = 1 To n
For j = 1 To m
c(k, j) = a(k, j) + b(k, j)
Next
Next

Multiplicación de Matrices

For k = 1 To n
For j = 1 To n
c(k, j) = 0
For p = 1 To m
c(k, j) = c(k, j) + a(k, p) * b(p, j)
Next
Next
Next

Transpuesta de una Matriz

For k = 1 To m
For j = 1 To n
t(k, j) = a(j, k)
Next
Next

Ejemplo:

'Programa que determina la cantidad de notas mayores que


'el promedio de notas de varias secciones
'Elaborado por: J. Muñoz Fecha: 05-07-2016
Module Module1
Sub leerm(ByRef a(,) As Integer, ByVal n As Integer, ByVal m As Integer)
For k = 1 To n
For j = 1 To m
Console.Write("Ingrese elemento (" & k & ", " & j & ": ")
a(k, j) = Console.ReadLine()
Next
Next
End Sub
Sub escribirm(ByVal a(,) As Integer, ByVal n As Integer, ByVal m As Integer)
For k = 1 To n
For j = 1 To m
Console.Write(a(k, j) & vbTab)
Next
Console.WriteLine()
Next
End Sub
Programación de Computadoras - Curso Básico - Prof. John J. Muñoz P. 32

Function promediom(ByVal a(,) As Integer, ByVal n As Integer, ByVal m As Integer)


As Single
Dim suma, k As Integer
suma = 0
For k = 1 To n
For j = 1 To m
suma = suma + a(k, j)
Next
Next
promediom = suma / (n * m)
End Function
Function cantidadm(ByVal a(,) As Integer, ByVal n As Integer, ByVal m As Integer,
ByVal valor As Single) As Integer
Dim cant, k As Integer
cant = 0
For k = 1 To n
For j = 1 To m
If a(k, j) > valor Then
cant = cant + 1
End If
Next
Next
cantidadm = cant
End Function
Sub Main()
'DECLARACIÓN de variable
Dim notas(10, 10), n, m As Integer
Dim prom As Single
'LECTURA de datos
Console.Write("Indique la cantidad de secciones: ")
n = Console.ReadLine()
Console.Write("Indique la cantidad de notas por sección: ")
m = Console.ReadLine()
leerm(notas, n, m)
'ESCRITURA de resultados
Console.WriteLine(" ******* NOTAS ********")
escribirm(notas, n, m)
'PROCESAMIENTO de datos
prom = promediom(notas, n, m)
'ESCRITURA de resultados
Console.WriteLine("Promedio de notas: " & prom)
Console.WriteLine("Cantidad de notas mayores al promedio: " &
cantidadm(notas, n, m, prom))
Console.ReadKey() ' Pausa
End Sub

End Module

También podría gustarte