Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuando el arreglo est agrupado por fila o columna se tiene un vector, desde el punto de vista matemtico,
mientras que est agrupado por un conjunto de filas y columna, se tiene una matriz.
El esquema anterior es una representacin de dos tipos de objetos definidos como arreglos: lineales o cuadrticos.
Los arreglos pueden tener una o ms dimensiones. Matemticamente los arreglos unidimensionales constituyen
los vectores y los multidimensionales, las matrices.
En trminos de programacin por computadora, es ms comn el uso de arreglos uni y dimensionales, en algunos
casos, los tridimensionales.
En VBA los arreglos tienen un nombre pues se consideran un tipo de variable. As como cada variable requiere de
una localidad de memoria para almacenar su valor, as tambin, cada uno de los elementos del arreglo requieren de
una localidad de memoria para almacenar su valor. Por esta razn, a los elementos de un arreglo se denotan de
acuerdo al siguiente criterio:
M(1), M(2), , M(10)
X(1,1)
X(1,2)
X(1,3)
X(1,4)
(X(1,5)
X(2,1)
X(2,2)
X(2,3)
X(2,4)
(X(2,5)
En este ejemplo el arreglo Datos tiene 80 elementos por fila y 5columas y el arreglo C contiene 8 filas y 5
columnas. En este caso, para Datos se separan 400 localidades de memoria y para C, 40 localidades.
Nota:
Si en el caso del arreglo X, se intenta usar el elemento X(11), se estar usando un subndice fuera de lmite. Esto
significa que los arreglos deben ser declarados tomando en cuenta su mximo tamao.
Ejemplo 19
Escriba Un programa que lea un conjunto de 10 datos numricos, los almacene en un arreglo unidimensional y
luego los imprima.
Solucin
Sea Datos el nombre del arreglo. Supondremos que tiene 50 elementos. Usaremos la sentencia DIM para definir el
arreglo como de tipo Integer.
Ya que se trata de introducir 10 datos, usaremos For Next para ingresar los datos repetidamente. La variable de
conteo en el For ser I, no ser necesario definirla.
Usaremos FOR ::: NEXT para leer los datos y otro para imprimir los valores ledos. Aunque bien podramos leer e
imprimirlos dentro del mismo FOR NEXT.
Usaremos a InputBox() como funcin para ingresar los datos
El cdigo es el siguiente:
Sub Arreglos01()
Dim Datos(10) As Integer
' Lectura de datos
For I = 1 To 10
Datos(I) = InputBox("Ingrese el dato: ")
Next
' Impresin de los datos
MsgBox ("Estos son los datos ledos:")
For I = 1 To 10
MsgBox (Datos(I))
Next
End Sub
Ejemplo 20
Escriba un procedimiento que permita obtener la suma y el promedio de un conjunto de n datos, ledos desde el
teclado.
Solucin
Ante todo, se debe ingresar los datos a ser procesados.
Como en el ejemplo anterior, usaremos Datos como nombre del arreglo que recibir los datos ingresados;
usaremos tambin la variable Suma que contendr la suma de todos los datos ingresados y Prom, la variable que
contenga el promedio.
Luego de leer los datos, usaremos otro FOR NEXT para calcular la suma de los elementos; aunque se podra
realizar la suma a la vez que se van leyendo los datos.
Sub Arreglos02()
Dim Datos(10) As Double
Dim Suma, Prom As Double
Suma = 0
N = InputBox("Numero de datos a ser ledos")
For I = 1 To N
Datos(I) = InputBox("Ingrese el dato: ")
Next
' Obtencin de la suma
For I = 1 To N
Suma = Suma + Datos(I)
Next
'
Prom = Suma/N
'
Impresin de resultados
MsgBox("La suma es: " & Suma & " , el promedio es: " & Prom)
End Sub
Funciones
Como hemos dicho antes, un procedimiento tambin puede estar constituido por una funcin.
La sintaxis de una funcin es:
Function NombreDeFuncion(Arg1, Arg2, , Argk)
[ Sentencias ]
End Function
La diferencia entre el procedimiento estndar que hemos descrito y este otro que es una funcin est en que un
procedimiento funcin devuelve un valor (aunque sea nulo), mientras que un procedimiento estndar no devuelve
valor alguno.
El hecho que un procedimiento pase algunos valores a otro no es lo mismo que la capacidad que tienen las
funciones de devolver un resultado.
Tanto un procedimiento que devuelve un resultado como una funcin que devuelve un resultado tienen su
semejanza y su diferencia de uso, dependiendo del contexto en donde se encuentran.
Ejemplo 24
El siguiente procedimiento ProcPrin llama a otro procedimiento Lee, que se encarga de leer dos valores, e imprime
el valor devuelto por la funcin Decide quien se encarga de determinar si se debe sumar o multiplicar los valores
ledos.
El cdigo es el siguiente:
Sub ProcPrin()
Dim a, b As Double
Call Lee(a, b)
MsgBox (Decide(a, b))
End Sub
Sub Lee(x, y)
x = InputBox("Primer valor: ")
y = InputBox("Segundo valor: ")
End Sub
: Base, Altura
End If
Case "a", "A"
Trapecio = H / 2 * (Bmay + Bmen)
End Select
End Function
Ejemplo 26
Daremos por nombre a la funcin: FRaiz1 aquella funcin que nos devuelve la primera raz y FRAiz2 a
la que devuelve la segunda raz. En cuanto a los parmetros sern A, B y C. El cdigo correspondiente es
el que sigue.
Function FRaiz1(a, b, c)
If (b * b - 4 * a * c < 0) Then
MsgBox "Las races son imaginreas"
Return
Else
FRaiz1 = (-b + Sqr(b * b - 4 * a * c)) / (2 * a)
End If
End Function
Function FRaiz2(a, b, c)
If (b * b - 4 * a * c < 0) Then
MsgBox "Las races son imaginreas"
Return
Else
FRaiz2 = (-b - Sqr(b * b - 4 * a * c)) / (2 * a)
End If
End Function
Cmo usar esta funcin de usuario
Una vez que ha creado una determinada funcin, para verificar su adicin al conjunto de funciones,
haga uso del asistente y seleccione la categora de "Funciones definidas por el usuario". All encontrar
una lista de ellas.
Para usarla, puede hacer uso del asistente de funciones o digitar en la celda donde desee el resultado
como sigue:
= FRaiz1(A1,B1,C1)
= FRaiz2(A1,B1,C1)