46 - Estructura de datos tipo matriz.


Algunas situaciones utilizar un solo subíndice para acceder a un elemento de un vector puede ser inconveniente. El lenguaje VBScript nos permite definir estructuras de datos con dos dimensiones. De esta forma debemos acceder a cada elemento por medio de dos subíndices.

Veamos la sintaxis para definir y acceder a una matriz mediante un ejemplo:

<%option explicit%> 
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim matriz1(2,2)
matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3
matriz1(2,1)=3
matriz1(2,2)=3
response.write("Creación de una matriz de dos filas ")
response.write("y dos columnas<br>")
dim f,c
for f=0 to 2
  for c=0 to 2
    response.write(matriz1(f,c) & "-")
  next
  response.write("<br>")
next
response.write("Utilización de ubound en una matriz<br>")
for f=0 to ubound(matriz1,1)
  for c=0 to ubound(matriz1,2)
    response.write(matriz1(f,c) & "-")
  next
  response.write("<br>")
next
dim matriz2
redim matriz2(2,3)
matriz2(0,0)=1
matriz2(0,1)=1
matriz2(0,2)=1
matriz2(0,3)=1
matriz2(1,0)=2
matriz2(1,1)=2
matriz2(1,2)=2
matriz2(1,3)=2
matriz2(2,0)=3
matriz2(2,1)=3
matriz2(2,2)=3
matriz2(2,3)=3
response.write("Matriz creada dinámicamente<br>")
for f=0 to ubound(matriz2,1)
  for c=0 to ubound(matriz2,2)
    response.write(matriz2(f,c) & "-")
  next
  response.write("<br>")
next
redim preserve matriz2(2,2)
response.write("Matriz después de redimensionarla<br>")
for f=0 to ubound(matriz2,1)
  for c=0 to ubound(matriz2,2)
    response.write(matriz2(f,c) & "-")
  next
  response.write("<br>")
next
%>
</body>
</html>

Para definir una matriz utilizamos la sintaxis:

dim matriz1(2,2)

El primer subíndice indica las filas (es decir tiene tres filas 0,1 y 2) y el segundo subíndice indica las columnas.

Para inicializar cada componente por asignación:

matriz1(0,0)=1
matriz1(0,1)=1
matriz1(0,2)=1
matriz1(1,0)=2
matriz1(1,1)=2
matriz1(1,2)=2
matriz1(2,0)=3
matriz1(2,1)=3
matriz1(2,2)=3

Primero indicamos la fila y luego la columna.

Podemos imprimir la matriz disponiendo un for dentro de otro:

for f=0 to 2
  for c=0 to 2
    response.write(matriz1(f,c) & "-")
  next
  response.write("<br>")
next

La variable f nos indica la fila y la variable c indica la columna de la componente que queremos acceder.

En forma más genérica podemos preguntarle a la matriz mediante la función ubount el valor de la dimensión:

for f=0 to ubound(matriz2,1)
  for c=0 to ubound(matriz2,2)
    response.write(matriz2(f,c) & "-")
  next
  response.write("<br>")
next

ubound(matriz2,1) retorna la cantidad de fila de la matriz y ubound(matriz2,2) retorna la cantidad de columnas.

Podemos crear una matriz en forma dinámica:

dim matriz2
redim matriz2(2,3)

y por lo tanto en algún momento podemos redimensionarla:

redim preserve matriz2(2,2)


Retornar