1 / 28

VBA – Arrays

VBA – Arrays. Variables tipo arreglo (Arrays): Vectores Matrices. Repaso. En la primera parte del curso se estudió: La representación de algoritmos usando estructuras básicas: secuencia, selección lógica, iteración. Los tipos de datos

Download Presentation

VBA – Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VBA – Arrays Variables tipo arreglo (Arrays): Vectores Matrices

  2. Repaso • En la primera parte del curso se estudió: • La representación de algoritmos usando estructuras básicas: secuencia, selección lógica, iteración. • Los tipos de datos • El concepto de variable  Almacenan un solo valor: numérico, cadena de caracteres, lógico, etc. Clase 8

  3. A1 A2 A3 … Ai … An-1 An A0 Arreglos • Un arreglo (o array) es un conjunto de elementos que tienen el mismo tipo de dato y se identifican con un único nombre de variable. • Para referirse a un determinado elemento del arreglo se utiliza un índice, que especifica su posición relativa en el arreglo. • Los arreglos pueden ser de cualquier tipo de dato: numérico, alfanuméricos, lógicos, etc. A = Clase 8

  4. A0,n … A0,1 A0,0 A0 A1,n … A1,0 A1,1 A1 … A2,n A2,1 A2,0 A2 … … … … … Am,n Am,0 An Am,1 … Clasificación de los arreglos • Los arreglos se clasifican de acuerdo al número de dimensiones que tienen: • Unidimensionales (Vectores) • Bidimensionales (Matrices o Tablas) • Multidimensionales (tres o más dimensiones) Clase 8

  5. Dimensiones y Subíndices • El número de dimensiones especifican el tipo de arreglo (vector, matriz, etc.). • Cada dimensión tiene un tamaño y se utiliza un subíndice para hacer referencia a una posición en esa dimensión. • Los vectores utilizan un solo subíndice que especifica la posición del elemento en la dimensión: A(i) Clase 8

  6. Dimensiones y Subíndices • Las matrices tienen dos dimensiones: a la primera dimensión se le llama Fila, a la segunda dimensión se le llama Columna • Las matrices utilizan dos subíndices: uno para las filas y otro para las columnas. A(i, j) Subíndice para filas (primera dimensión) Subíndice para columnas (segunda dimensión) Clase 8

  7. Declaración de arreglos • Un arreglo se declara con la instrucción Dim: DimnombreArreglo(dimensiones) AstipoDato • nombreArreglo: es el nombre de una variable • tipoDato: Opcional. Es el tipo de dato del arreglo (Integer, Long, Double, Boolean, String, etc.). • dimensiones: Opcional. Es una lista (separada por coma) de las dimensiones del arreglo. VB acepta hasta 60 dimensiones. Cada dimensión es de la forma: límiteInferiorTolímiteSuperior

  8. Declaración de arreglos límiteInferiorTolímiteSuperior • límiteInferior: Opcional. Es un entero (positivo o negativo) correspondiente al límite inferior del arreglo en esa dimensión. Si se omite, también se debe omitir la palabra clave To y su valor se asume cero. • límiteSuperior: Requerido. Es un entero (positivo o negativo) correspondiente al límite superior del arreglo en esa dimensión. límiteSuperior debe ser mayor o igual que límiteInferior. Clase 8

  9. Declaración de arreglos • Ejemplos: Dim X(1 To 10) AsSingle, B() As Long Dim Y(20) AsInteger, W(10, 20) As Double Dim Z(-30 To 50) AsString Dim A(5, -4 To 10) As Boolean Dim C(5, 5, 5, 4) As Long • Observaciones: • Los paréntesis (después del nombre de la variable) indican que la variable es un arreglo • Cuántos elementos tiene X? y B? y A? y C? Clase 8

  10. Tamaño de un arreglo • El tamaño de un arreglo se define como la multiplicación de cada uno de los tamaños de las dimensiones del arreglo. • El tamaño de una dimensión se calcula por la siguiente fórmula: Tamaño= límiteSuperior – límiteInferior + 1 • Por ejemplo, en la declaración: Dim Z(-30 To 50) AsString El tamaño del vector Z es 50 – (–30) + 1 = 81 elementos Clase 8

  11. Arreglos Estáticos • Un arreglo estático es aquel que, en su declaración, se define el número de dimensiones y el tamaño de cada dimensión. Es decir, tiene un número constante de elementos. • Ejemplo: Dim B(9) AsInteger, A(7, 19) As Single • El vector B tendrá 10 elementos de tipo entero. • La matriz A tendrá 8 filas y 20 columnas, es decir, 160 elementos de tipo real simple. Clase 8

  12. Arreglos Dinámicos • Un arreglo dinámico es aquel cuyo tamaño y número de dimensiones pueden cambiar. En la declaración se colocan los paréntesis vacíos. • Ejemplo: Dim X() AsLong, B() As String • Para poder hacer referencia a un elemento del arreglo dinámico, primero de debe redimensionar la variable utilizando la instrucción ReDim, especificando el número de dimensiones y el tamaño de cada dimensión. Clase 8

  13. Arreglos Dinámicos • Sintaxis de la instrucción ReDim: ReDimnombreArreglo(dimensiones) • nombreArreglo: es el nombre de la variable a redimensionar. • dimensiones: Requerido. Es una lista (separada por coma) de las dimensiones del arreglo. Cada dimensión es de la forma: límiteInferiorTolímiteSuperior • límiteInferior es opcional. Si se omite se asume 0. límiteSuperior es requerido.

  14. Arreglos Dinámicos • Ejemplo: Dim F() As Single ... ReDim F(50) ... F(2) = 10.52 ... ReDim F(1 To 5, 5) ... F(3, 0) = 4*F(1, 1) – 2.3 ReDim permite cambiar el número de elementos ó el número de dimensiones del arreglo pero NO su tipo de datos. Clase 8

  15. Arreglos Dinámicos • ReDim inicializa cada elemento del arreglo a su valor por defecto (los numéricos a 0; String a “”; Boolean a False; etc.). • ReDim Preserve permite conservar los datos del arreglo. • Si utiliza la palabra clave Preserve sólo puede cambiar el tamaño de la última dimensión del arreglo y no es posible cambiar el número de dimensiones. En este caso, los elementos del arreglo no se inicializan a su valor por defecto. Clase 8

  16. Arreglos Dinámicos • Ejemplo: Dim A() As Integer ReDim A(4) A(2) = 5 ReDim A(3) A(1) = -2 A(3) = 8 K = 6 ReDimPreserve A(K) A(K) = -1 A 0 A0 0 0 -2 A1 5 0 0 A2 A3 0 8 0 A4 0 A5 0 -1 A6 Memoria RAM

  17. Ejemplo 1 • Para un vector x de n elementos reales, hallar la suma, el promedio () y la desviación estándar (). Clase 8

  18. Ejemplo 1: Definición de variables • Datos de entrada: • N  Tamaño del vector X • Xi  Elemento i-ésimo del vector X • Datos de salida: • Suma  Suma de los elementos del vector X • Prom  Promedio de los elementos del vector • Desv  Desviación Estándar de los elementos del vector. Clase 8

  19. Ejemplo 1: Código fuente 'Declaración de variables Dim N As Integer, X() As Single, I As Integer Dim Suma As Single, Prom As Single, Desv As Single Dim Sum As Single 'Lectura de datos N = Val(InputBox("Ingrese el valor de N:")) ReDim X(1 To N) For I = 1 To N X(I) = Val(InputBox("X(" & I & ") =")) Next I Clase 8

  20. Ejemplo 1: Código fuente 'Cálculo de la Suma y Promedio Suma = 0 For I = 1 To N Suma = Suma + X(I) Next I If N > 0 Then Prom = Suma / N 'Cálculo de la Desviación Estándar Sum = 0 For I = 1 To N Sum = Sum + (X(I) – Prom) ^ 2 Next I If N > 1 Then Desv = Sqr(Sum / (N – 1)) Clase 8

  21. Ejemplo 1: Código fuente 'Mostrar resultados Text1.Text = "Vector Leído:" & vbCrLf For I = 1 To N Text1.Text = Text1.Text & "X(" & I & ")= " & _ X(I) & vbCrLf Next I Text1.Text = Text1.Text & "Suma = " & Suma & vbCrLf Text1.Text = Text1.Text & "Prom = " & Prom & vbCrLf Text1.Text = Text1.Text & "Desv = " & Desv & vbCrLf Clase 8

  22. Ejemplo 2 • Realizar un algoritmo que permita sumar dos matrices de orden nxm. Clase 8

  23. Ejemplo 2: Definición de variables • Datos de entrada: • N  Número de filas • M  Número de columnas • Ai,j  Elementos de la matriz A • Bi,j  Elementos de la matriz B • Datos de salida: • Ci,j  Elementos de la matriz C Clase 8

  24. Ejemplo 2: Algoritmo Inicio Leer N, M I = 1, N, 1 J = 1, M, 1 Leer Ai,j, Bi,j I = 1, N, 1 J = 1, M, 1 Ci,j = Ai,j+Bi,j Mostrar C Terminar Clase 8

  25. Función LBound • Devuelve un tipo Long que contiene el subíndice más pequeño disponible para la dimensión indicada de un arreglo. • Sintaxis: LBound(nombreArreglo, dimension) • nombreArreglo: Requerido. Nombre del arreglo. • dimensión: Opcional. Número entero que indica a qué dimensión corresponde el límite inferior devuelto. Use 1 para la primera dimensión, 2 para la segunda y así sucesivamente. Si dimensión se omite, se supone que es 1. Clase 8

  26. Función UBound • Devuelve un tipo Long que contiene el mayor subíndice disponible para la dimensión indicada de un arreglo. • Sintaxis: UBound(nombreArreglo, dimension) • nombreArreglo: Requerido. Nombre del arreglo. • dimensión: Opcional. Número entero que indica la dimensión cuyo límite superior se devolverá. Use 1 para la primera dimensión, 2 para la segunda y así sucesivamente. Si dimensión se omite, se supone que es 1. Clase 8

  27. Ejemplos: Función LBound y UBound Dim A(1 To 100, 3, -3 To 4) As Integer Instrucción Valor devuelto LBound(A) LBound(A, 1) LBound(A, 2) LBound(A, 3) UBound(A) UBound(A, 1) UBound(A, 2) UBound(A, 3) UBound(A, 4) 1 1 0 -3 100 100 3 4 Error Clase 8

  28. Instrucción Erase • La instrucción Erase vuelve a inicializar (a su valor por defecto) los elementos de los arreglos estáticos y elimina los arreglos dinámicos. • Sintaxis: Erase nombreArreglo • nombreArreglo: Requerido. Nombre del arreglo. • Antes de volver a utilizar un arreglo dinámico eliminado con la instrucción Erase, se debe volver a declarar las dimensiones del arreglo con la instrucción ReDim. Clase 8

More Related