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
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.
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?
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
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).
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)

....

....

...

....
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)
Ejercicio 1
Realizar prueba de escritorio al siguiente algoritmo. ¿Qué
mostraría?
INICIO
X(1) = 2, X(2) = 9, X(3) = 0, X(4) = -1, X(5) = 3
i=3
j=2
k=3
Mostrar X(4)
Mostrar X(i)
Mostrar X(k)
Mostrar X(j+1)
Mostrar X(2*j)
Mostrar X(i+j)
FIN
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.
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
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
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.
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)
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.
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
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
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
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
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:
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.
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
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:
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
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

Fundamentos de programacion

  • 1.
    Fundamentos de Programación Clase8 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 momentohemos 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 ejemploel 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 cambiose 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 esun 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 vectoresse 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)
  • 8.
    Ejercicio 1 Realizar pruebade escritorio al siguiente algoritmo. ¿Qué mostraría? INICIO X(1) = 2, X(2) = 9, X(3) = 0, X(4) = -1, X(5) = 3 i=3 j=2 k=3 Mostrar X(4) Mostrar X(i) Mostrar X(k) Mostrar X(j+1) Mostrar X(2*j) Mostrar X(i+j) FIN
  • 9.
    Ejercicio 2 Diseñar unalgoritmo 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 arreglosen 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 enVBA 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 enVBA 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 enVBA 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 darvalor 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 darvalor 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 darvalor 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 darvalor 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 darvalor 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 darvalor 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 datosdefinidos 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 datosdefinidos 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 unproyecto 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 Clase8 FIN DE LA CLASE Gracias por la atención Escuela de Sistemas, Facultad de Minas Universidad Nacional de Colombia – Sede Medellín