ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Lenguaje De Programacion


Enviado por   •  23 de Septiembre de 2013  •  897 Palabras (4 Páginas)  •  164 Visitas

Página 1 de 4

Arrays dinámicos y estáticos en Visual Basic. Redim, Preserve. Ejercicio resuelto ejemplo (CU00342A)

Escrito por Mario R. Rancel

Resumen: Entrega nº41 del curso Visual Basic Nivel I.

Codificación aprenderaprogramar.com: CU00342A

ARRAYS DINÁMICOS Y ARRAYS ESTÁTICOS. INSTRUCCIÓN REDIMENSIONAR (REDIM Y REDIM PRESERVE)

En el apartado correspondiente a declaración de variables ya hemos tratado la forma de declarar arrays estáticos unidimensionales y multidimensionales a través de la instrucción Dim. Usaremos esta misma instrucción para declarar arrays dinámicos. Recordemos que habíamos definido array dinámico como aquel que es declarado con un número de elementos componentes indefinido. La sintaxis a emplear será:

Dim [Nombre del array]() As [Tipo de datos]

Redim [Nombre del array]([dimensiones]

Es decir, en la cabecera de código del formulario o de un procedimiento haremos una declaración sin especificar dimensiones que luego concretaremos a través de la instrucción Redim. Por ejemplo:

Un array estático no puede ser redimensionado. En cambio, uno dinámico puede sufrir múltiples redimensionamientos. No se puede declarar el tipo de dato cada vez que redimensionemos. Hay que hacerlo al declarar la matriz dinámica.

Por defecto, el uso de Redim implicará perder todos los datos anteriormente contenidos en la matriz que se redimensiona. Para conservar los datos anteriores podemos hacerlo de dos maneras. Por un lado, usando la cláusula Preserve según esta sintaxis:

Redim Preserve [Nombre del array]([dimensiones])

La limitación de usar Preserve viene dada porque únicamente se nos permite cambiar la última dimensión del array y porque no nos permite cambiar el número de dimensiones[1]. Si estamos trabajando con un array unidimensional no habrá problemas, pero con otro tipo de arrays puede haberlos.

Cuando se utiliza Preserve aumentando el número de elementos del array, los nuevos elementos tienen valor cero o nulo y los que existían anteriormente conservan su valor. Cuando se trata de una disminución de los elementos de un array, aquellos contenidos en dimensiones que desaparecen dejan de existir a todos los efectos, mientras que los existentes en dimensiones que se conservan mantienen su valor. Para un array que se ha redimensionado inicialmente como A(5, 5, 5):

a) Es válido: Redim Preserve A(5, 5, 8)

Modifica la última dimensión.

b) No es válido: Redim Preserve A(5, 8, 5)

Modifica una dimensión que no es la última.

Para conservar el contenido de arrays cuando no es posible a través de Preserve habremos de hacerlo declarando otro array con las dimensiones deseadas y transfiriendo elemento a elemento los valores desde un array a otro.

Una cuestión a tener en cuenta es que la instrucción Erase, cuyo funcionamiento habíamos visto que con matrices estáticas daba lugar a que todos los elementos de la matriz se convirtieran en ceros o cadenas vacías, al ser aplicada a un array dinámico da lugar a que este desaparezca totalmente. Por tanto, no podremos invocar la matriz después de usar Erase a no ser que la declaremos de nuevo. Para borrar el contenido de una matriz dinámica bastará con usar la instrucción Redim sin variar las dimensiones, o bien establecer el valor de cada uno de los elementos a cero o cadena vacía a través del código.

...

Descargar como (para miembros actualizados)  txt (5.5 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com