44 - Estructura de datos tipo vector.


La estructura de datos tipo vector nos facilita trabajar con datos en la memoria. Las variables vistas hasta ahora solo pueden almacenar un solo elemento (entero, real, string etc.) con un vector podemos almacenar un conjunto de datos.

Un vector es una colección de datos que los accedemos por medio de un subíndice.

Veamos un ejemplo y expliquemos diferentes posibilidades de un vector:

<%option explicit%> 
<html> 
<head>
<title>problema</title>
</head>
<body>
<%
dim vec1(3)
vec1(0)=10
vec1(1)=20
vec1(2)=30
vec1(3)=40
dim f
response.write("Creación de un vector de 4 elementos ")
response.write("con todos los elementos del mismo tipo<br>")
for f=0 to 3 
  response.write("Elemento de la posicion " & f & " es " & vec1(f))
  response.write("<br>")
next
dim vec2(2)
vec2(0)="Rodriguez Pablo"
vec2(1)=38
vec2(2)=1500.50
response.write("Creación de un vector de 3 elementos ")
response.write("con los elementos de distinto tipo<br>")
for f=0 to 2 
  response.write("Elemento de la posicion " & f & " es " & vec2(f))
  response.write("<br>")
next
dim vec3()
redim vec3(2)
vec3(0)=10
vec3(1)=20
vec3(2)=30
response.write("Creación de un vector en forma dinámica (redim)<br>")
for f=0 to 2 
  response.write("Elemento de la posicion " & f & " es " & vec3(f))
  response.write("<br>")
next
redim preserve vec3(4)
vec3(3)=40
vec3(4)=50
response.write("Impresión del vector anterior redimensionado<br>")
for f=0 to 4 
  response.write("Elemento de la posicion " & f & " es " & vec3(f))
  response.write("<br>")
next
redim vec3(4)
vec3(3)=40
vec3(4)=50
response.write("Impresión del vector anterior redimensionado ")
response.write(" (sin preserve)<br>")
for f=0 to 4 
  response.write("Elemento de la posicion " & f & " es " & vec3(f))
  response.write("<br>")
next
%>
</body>
</html>

Para crear un vector utilizamos la siguiente sintaxis:

dim vec1(3)

Estamos definiendo el vector llamado vec1 y le indicamos que tiene 4 elementos (4 porque las componentes se numeran desde cero)

Para acceder a los elementos debemos indicar entre paréntesis a cual de ellos queremos acceder:

vec1(0)=10
vec1(1)=20
vec1(2)=30
vec1(3)=40

Como podemos comprobar hay un solo nombre de variable (vec1) que almacena 4 elementos de tipo entero.

Si queremos imprimir los cuatro elementos podemos disponer un for que se repita cuatro veces:

for f=0 to 3 
  response.write("Elemento de la posicion " & f & " es " & vec1(f))
  response.write("<br>")
next

En VBScript podemos definir vectores que almacenen datos de distinto tipo:

dim vec2(2)
vec2(0)="Rodriguez Pablo"
vec2(1)=38
vec2(2)=1500.50

Es decir la primer componente almacena un string, la segunda un entero y la tercera un valor real.

Para imprimirlo en forma completo lo recorremos con un for:

for f=0 to 2 
  response.write("Elemento de la posicion " & f & " es " & vec2(f))
  response.write("<br>")
next

Otra posibilidad es la creación de vectores dinámicos, es decir que puedan crecer o decrecer durante la ejecución del algoritmo. Para definir este tipo de vectores tenemos que implementar la siguiente sintaxis:

dim vec3()

Es decir no indicamos ningún valor entre paréntesis. Luego mediante el comando redim le indicamos dicho valor:

redim vec3(2)
vec3(0)=10
vec3(1)=20
vec3(2)=30

En cualquier momento podemos redimensionar dicho vector con la siguiente sintaxis:

redim preserve vec3(4)
vec3(3)=40
vec3(4)=50

Ahora nuestro vector puede almacenar 5 elementos. Además si utilizamos la palabra clave preserve los elementos que ya existen en el vector se conservan.

Si no queremos conservar los elementos originarios cuando redimensionamos un vector:

redim vec3(4)
vec3(3)=40
vec3(4)=50

Ahora las componentes vec3(0),vec3(1) y vec3(2) no están inicializadas.


Retornar