Anda di halaman 1dari 5

ndice

Vectores
6. Vectores 1. Introduccin
2. Declaracin
3. Acceso
4. Paso de parmetros
Fundamentos de Informtica
5. Recorrido completo
Dpto. Lenguajes y Sistemas Informticos
6. Recorrido de bsqueda
7. Inicializacin
Curso 2012 / 2013

Vectores 1. Introduccin Vectores 2. Declaracin

1. Introduccin 2. Declaracin (I)


Necesidad Especificar el intervalo de ndices
Agrupar datos del mismo tipo bajo un mismo nombre Se especifica el ndice inferior y el superior
Vectores, matrices, tablas, arrays, listas, ... Ejemplo (7 elementos):
Acceso Dim v(-1 To 5) As Double
Se accede a los elementos por medio de un ndice
Las operaciones sobre vectores se hacen elemento a
elemento (e.g. no se puede copiar un vector de golpe)
Declaracin Ha de ser un intervalo vlido
Se declaran especificando los ndices Ejemplo error:
A menudo no conocemos cuntos elementos vamos a Dim v(10 To 1) As Integer
necesitar por lo que nos curaremos en salud
Paso de parmetros
Los vectores se pasan siempre por referencia

3 4
Vectores 2. Declaracin Vectores 3. Acceso

2.1 Declaracin (II) 3. Acceso


Especificar el ndice mximo (alternativa) Elemento
Podemos declarar un vector indicando el ndice mximo Accederemos a un elemento indicando su ndice en el
El ndice mnimo es el 0 vector entre parntesis
Ejemplo (7 elementos): Ejemplo:
Dim ds(6) As String pctRes.Print v(5)
ndices extremos del vector
Visual Basic nos permite conocer los ndices de los
elementos extremos de un vector:
Ha de ser un intervalo vlido LBound (LowerBound): ndice inferior
Ejemplo error: UBound (UpperBound): ndice superior
Dim v(-1) As String Frecuentemente no ocuparemos todo el vector por lo que
el elemento en la posicin UBound estar sin definir

5 6

Vectores 4. Paso parmetros Vectores 4. Paso parmetros

4. Paso de parmetros (I) 4. Paso de parmetros (II)


Por referencia Visual Basic
El paso de parmetros por valor implicara la copia de Al pasar los vectores por referencia no est claro si son
todos los elementos, lo cual suele ser lento e innecesario de entrada y/o de salida
La mayora de los lenguajes de programacin impiden el Se especifica que un parmetro es un vector (abriendo y
paso de vectores por valor. Si el programador desea cerrando parntesis) pero no se especifica el tamao ni
obtener una copia puede realizarla y enviarla por los ndices
referencia Se puede llamar a un subprograma con vectores de
Diagrama de flujo distinto tamao
Para disear la cabecera de un subprograma habr que Ejemplo de cabecera de un subprograma que recibe un
poner atencin a si se leen los datos previos del vector vector (e.g. para mostrar su contenido en un picture box):
(parmetro de entrada) y/o se modifica el valor de los
v: vector de real
elementos del vector (parmetro de salida) Pr
n: entero

Sub Pr (ByRef tbl() As Double, ByVal n As Integer)

7 8
Vectores 5. Recorrido Vectores 5.1 Recorrido

5.1 Sumar los nmeros positivos


5. Recorrido completo
Ejemplos
v: vector de real
SumaPosi real
Sumar los elementos de un vector n: entero
Contar los elementos del vector que cumplen una i: entero
propiedad r0 r: real
Realizar una operacin sobre todos los elementos del
vector i1
No
Modelo general de resolucin ii+1 in
Utilizaremos un bucle For que recorra todos los n S
elementos SumaPosi r
no s
Visual Basic v(i) > 0
De 1 a n de 0 a n-1
r r+v(i) Fin
De ini=Lbound(v) a Lbound(v)+n-1

9 10

Vectores 5.2 Recorrido Vectores 6. Bsqueda

5.2 Sumar los nmeros positivos


6. Recorrido de bsqueda
Function SumaPosi (ByRef v() As Double, ByVal n As Integer) _ Ejemplos
As Double Buscar la posicin de un nmero o una cadena en un
Dim i As String vector
Dim r As Double
r = 0
Buscar el primer elemento que cumple una propiedad
For i = 1 To n Step 1 v: vector de real
SumaPosi real
Modelo general de resolucin
n: entero

If v(i) > 0 Then i: entero


r: real
Hay dos condiciones de parada:
r0
r = r + v(i) 1. Hemos encontrado el elemento que buscbamos
End If i1
2. Hemos agotado todas las posibilidades
No
ii+1 in
Next i
S Convertiremos el bucle For en un bucle While que
SumaPosi = r SumaPos r

End Sub
no
v(i) > 0
s recorra todos los elementos o pare si encuentra lo que
r r+v(i) Fin
buscaba
Visual Basic
De 1 a n And Not Cond
De ini=LBound(v) a LBound(v)+ n-1 And Not Cond

11 12
Vectores 6.1 Bsqueda Vectores 6.2 Bsqueda

6.1 Buscar un nombre en lista 6.2 Buscar un nombre en una lista

Function Posicion (ByRef v() As String, ByVal s As String, _


v: vector de cadena
Posicion entero ByVal n As Integer) As Integer
s: cadena
n: entero i: entero Dim i As String

i1
v: vector de cadena
Posicion entero
s: cadena
i = 1 n: entero i: entero
i1
No While i <= n And v(i) <> s
i n v(i)s i = i + 1 i n v(i)s
No

S
S Wend no
i>n
s
no s ii+1
i>n If i > n Then i0
ii+1 i = 0
i0 End If Posicion i

Posicion = i
Fin
End Sub
Posicion i

Fin

13 14

Vectores 7. Inicializacin Vectores 7.1 Inicializacin

7.1 Inicializacin
7. Inicializacin de un vector
Enunciado Sub Inicializa (ByRef v() As Double)
Inicializar un vector a valores aleatorios entre 0 y 10 Dim i As String
Funciones nuevas For i = LBound(v) To UBound(v) Step 1
Rnd v(i) = Rnd * 10
Devuelve un nmero aleatorio de distribucin uniforme en Next i
[0, 1)
End Sub
Parmetros: no tiene
Randomize
Inicializa la semilla de nmeros aleatorios
Parmetros: no tiene
Descripcin
Para poder hacer pruebas vamos a utilizar un subprograma
que nos rellene los vectores a valores aleatorios. As no
tenemos que andar nosotros introducindolos. La distribucin
de Rnd nos permitir verificar la correccin de los resultados.

15 16
Vectores 8. Principal Vectores 8.1 Principal

8.1 Programa principal


8. Programa principal
Enunciado Sub CalculaMedia_Click ()
Inicializar un vector a valores aleatorios entre 0 y 10, Dim notas (1 To 200) As Double
calcula la media y muestra el resultado en pantalla Dim m As Double
Descripcin Inicializa (notas)
El programa principal ser el que declare el vector. El m = Media (notas, 200)
resto de los subprogramas lo utilizarn, pasndose los
MsgBox CStr (m)
parmetros por referencia
End Sub
Podemos reutilizar el subprograma de inicializacin del
apartado anterior

17 18

Anda mungkin juga menyukai