Title: Algoritmos y Programacin Clase 8
1Algoritmos y ProgramaciónClase 8
- Variables tipo arreglo (Arrays)
- Vectores
- Matrices
2Repaso
- 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.
3Arreglos
- 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
4Clasificació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)
5Dimensiones 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)
6Dimensiones 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)
7Declaración de arreglos
- Un arreglo se declara con la instrucción Dim
- Dim nombreArreglo(dimensiones) As tipoDato
- 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ÃmiteInferior To lÃmiteSuperior
8Declaración de arreglos
- lÃmiteInferior To lÃ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.
9Declaración de arreglos
- Ejemplos
- Dim X(1 To 10) As Single, B() As Long
- Dim Y(20) As Integer, W(10, 20) As Double
- Dim Z(-30 To 50) As String
- 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?
10Tamañ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) As String
- El tamaño del vector Z es 50 (30) 1 81
elementos
11Arreglos 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) As Integer, 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.
12Arreglos 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() As Long, 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.
13Arreglos Dinámicos
- Sintaxis de la instrucción ReDim
- ReDim nombreArreglo(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ÃmiteInferior To lÃmiteSuperior
- lÃmiteInferior es opcional. Si se omite se asume
0. lÃmiteSuperior es requerido.
14Arreglos Dinámicos
- Ejemplo
- Dim F() As Single
- ...
- ReDim F(50)
- ...
- F(2) 10.52
- ...
- ReDim F(1 To 5, 5)
- ...
- F(3, 0) 4F(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.
15Arreglos 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.
16Arreglos Dinámicos
- Ejemplo
- Dim A() As Integer
- ReDim A(4)
- A(2) 5
- ReDim A(3)
- A(1) -2
- A(3) 8
- K 6
- ReDim Preserve A(K)
- A(K) -1
A
A0
0
A1
0
0
-2
A2
0
5
0
A3
0
8
A4
0
A5
0
A6
0
-1
Memoria RAM
17Ejemplo 1
- Para un vector x de n elementos reales, hallar la
suma, el promedio (?) y la desviación estándar
(?).
18Ejemplo 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.
19Ejemplo 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
20Ejemplo 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 gt 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 gt 1 Then Desv Sqr(Sum / (N 1))
21Ejemplo 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
22Ejemplo 2
- Realizar un algoritmo que permita sumar dos
matrices de orden nxm.
23Ejemplo 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
24Ejemplo 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,jBi,j
Mostrar C
Terminar
25Funció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.
26Funció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.
27Ejemplos 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
28Instrucció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.
29Tareas
- Realizar un algoritmo para obtener el mayor y el
menor valor de un vector A de n elementos
enteros. - Realizar un algoritmo para obtener el número de
valores positivos, negativos y ceros de un vector
W de m elementos enteros. - Realizar un algoritmo que permita multiplicar dos
matrices.