1. Fundamentos de Programación
Clase 8
Contenido
Arreglos: vectores y matrices
Tipos de Datos definidos por el Usuario (TDU)
Escuela de Sistemas, Facultad de Minas
Universidad Nacional de Colombia – Sede Medellín
2. Arreglos
Hasta el momento hemos trabajado con variables
“escalares”, es decir:
Una variable
Almacena un único valor
Sin embargo hay problemas en los que es conveniente
utilizar arreglos.
3. Arreglos
Considérese por ejemplo el siguiente algoritmo:
INICIO
Leer N
S=0
Para i: 1, <= N, +1
Leer A
S=S+A
Escribir S
FIN
Si luego de la instrucción Escribir S se añadiera Escribir
El último
A, ¿Cuál valor de A escribiría?
4. Arreglos
Si en cambio se trabaja con variables con subíndice todos
los valores quedan almacenados, y se pueden volver a
utilizar para otros procesos durante el algoritmo. El
ejercicio anterior con variables con subíndice se podría
ver de la siguiente forma:
INICIO
Leer N
S=0
Para i: 1, <= N, +1
Leer Ai
S = S + Ai
Escribir S
FIN
5. Arreglos
Un arreglo es un conjunto de elementos que tienen el
mismo nombre y el mismo tipo de dato.
A() =
A1
A2 A3
... Ai
...
An-1
An
Cada valor puede ser accesado por la posición o índice
que ocupa dentro del arreglo.
Los arreglos pueden ser de tipo numérico o de tipo texto
(cadenas de caracteres).
6. Tipos de arreglos
• Los arreglos de una
dimensión se les llama
vector o lista.
• Los demás se les conoce
como arreglos
multidimensionales.
A(3)
....
A(n)
A(1,1)
• Los arreglos de dos
dimensiones se les
conoce como matriz o
tabla (Anxn).
A(1)
A(1,3)
....
A(1,n)
A(2,1)
A(2,3)
....
A(2,n)
....
....
...
....
7. Subíndices
• Para vectores se utiliza un solo subíndice.
A(i)
Subíndice de
cada elemento
(1, 2, …, n)
• Para matrices se utilizan dos subíndices (uno para
las filas y otro para las columnas).
A(i,j)
Subíndice
para filas
Subíndice para
columnas
(1, 2, …, m)
(1, 2, …, n)
9. Ejercicio 2
Diseñar un algoritmo para leer un arreglo de N elementos
y mostrar cuál es su promedio, cuál es el mayor valor y
cuál es la cantidad de elementos negativos.
10. Ejercicio 2
INICIO
Leer N
Suma = 0
CN = 0
Para i=1, <= N, +1
Leer Xi
Suma = Suma + Xi
Si Xi < 0
CN = CN + 1
Fin Si
Fin Para
Promedio = Suma/N
Mayor = X1
Para i=2, <= N, +1
Si Xi > Mayor
Mayor = Xi
Fin Si
Fin Para
Mostrar Promedio, CN, Mayor
FIN
11. Declaración de arreglos en VBA
• Un arreglo se declara con la instrucción Dim:
Ej: Dim X() As Single
• Los paréntesis indican que la variable X es un
arreglo
• Al poner Single indica que X() tendrá todos
sus elementos de tipo real simple
12. Arreglos estáticos en VBA
En VB un arreglo ESTÁTICO es aquel que siempre
tiene el mismo número de elementos.
elementos.
Ej:
Ej:
Dim B(5) As integer
B(5
Dim A(10,6) As single
A(10,
En un proyecto declaramos en arreglo estático cuando
sabemos de antemano cuantos elementos va a tener.
tener.
13. Arreglos dinámicos en VBA
En VBA un arreglo DINÁMICO es aquel cuyo tamaño
(número de elementos) puede cambiar con el tiempo.
tiempo.
Ejs:
Ejs:
Dim T() as integer
n = 50
ReDim T(n)
Dim G() as single
p = val(texto1.text)
val(texto1
q = val(texto2.text)
val(texto2
ReDim G(p,q)
G(p,q)
14. Arreglos dinámicos en VBA
En general la forma de cambiar el tamaño de un arreglo
DINÁMICO en VBA es:
es:
Dim nombreVariable() as tipo
…
Redim nombreVariable(# elementos)
Nota:
Nota: Redim permite cambiar el número de elementos
del arreglo. No su tipo de datos
arreglo.
15. Maneras de dar valor a los
elementos de un arreglo
1. Asignación directa de valores
2. Leer los valores
3. Generar valores de manera aleatoria y
asignarlos a los elementos del vector
4. Leer los elementos a partir de celdas de Excel
5. Leer los elementos a partir de archivos de texto
16. Maneras de dar valor a los
elementos de un arreglo
1. Asignación directa:
Pseudocódigo:
X1 = 2
X2 = -8
…
A=7
XN = A
En VBA:
X(1) = 2
X(2) = -8
…
A=7
X(N) = A
17. Maneras de dar valor a los
elementos de un arreglo
2. Leer valores:
Pseudocódigo:
Para i=1, <=N, +1
Leer Xi
Fin Para
En VBA:
For i=1 To N
X(i) = Inputbox(“Ingrese X(” & i & “):”)
Next i
18. Maneras de dar valor a los
elementos de un arreglo
3. Generar valores aleatorios: Todos los lenguajes de
aleatorios:
programación tienen una instrucción para generar un
número aleatorio. En VB esta instrucción es Rnd y
aleatorio.
devuelve un valor real en el rango (0,1].
Ej: llenar el vector X con N valores aleatorios
entre A y B
Pseudocódigo:
Para i=1, <=N, +1
Xi = A + Rnd*(B-A)
Rnd*(BFin Para
VBA:
For i=1 To N
X(i) = A + Rnd*(B-A)
Rnd*(BNext i
19. Maneras de dar valor a los
elementos de un arreglo
4. Desde celdas de Excel: VBA permite la comunicación directa con el
Excel:
archivo de Excel sobre el cual se esté trabajando:
trabajando:
20. Maneras de dar valor a los
elementos de un arreglo
5. Desde un archivo de texto:
texto:
Objeto Excel
Nom$ = ThisWorkbook.Path & "" & "Vector_1.txt"
i = 0: Open Nom$ For Input As #1
Do While (Not EOF(7))
i=i+1
Redim Preserve X(i)
Input #1, X(i)
Loop
Close#1
• ThisWorkbook.Path contiene la trayectoria (ruta)
donde está grabado el libro de Excel que contiene
a su vez el proyecto VBA.
• Restricción: El archivo de Excel y el archivo de
textos deben estar en la misma carpeta.
21. Tipos de datos definidos por el
usuario
Todos los lenguajes de programación tienen sus propios
tipos de datos (estándar): enteros, reales, booleanos, etc.
(estándar):
etc.
La mayoría (incluyendo VBA) permiten además que el
programador defina tipos de datos particulares a partir de
los tipos estándar.
estándar.
En VBA dicha definición se hace con la instrucción:
instrucción:
Type nombre_del_tipo
(Aquí van los elementos)
End Type
22. Tipos de datos definidos por el
usuario
Una vez que se define un tipo de datos con Type … End
Type, este entra a formar parte de los tipos de datos
disponibles en el proyecto.
proyecto.
La definición debe hacerse en “General”.
“General”.
Igualmente, cuando se esté
empleando dicho tipo de datos,
el editor de programas mostrara
sus componentes previamente
definidos:
23. Tareas
• Crear un proyecto VBA y definir un tipo de datos
Punto,
Punto, que contenga las coordenadas de un punto en
el plano cartesiano.
cartesiano.
Leer las coordenadas de N puntos desde un archivo
de datos y almacenarlas en un vector
Mostrar cuál es la menor y mayor distancia de dichos
puntos respecto al origen (0,0) y mostrar los puntos a
los que corresponden.
corresponden.
• Comenzar a
problemateca 3
desarrollar
los
ejercicios
de
la
24. Fundamentos de Programación
Clase 8
FIN DE LA CLASE
Gracias por la atención
Escuela de Sistemas, Facultad de Minas
Universidad Nacional de Colombia – Sede Medellín