Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Escuela de Sistemas
Prof Eduardo Diaz
Asignatura: Programación IV
Estructuras de Datos en Visual Basic
Tal como ocurre en VB6, al realizar esta declaración lo que conseguimos es definir un
array de 11 elementos: desde cero hasta 10. Si bien, en VB6 tenemos la posibilidad de
indicar cual era el valor del índice inferior predeterminado de los arrays, podemos elegir
entre cero y uno mediante la instrucción Option Base indicando a continuación un 0 o un
1. En Visual Basic 2010 no existe esa instrucción, es más en Visual Basic 2010 todos los
arrays deben tener como índice inferior el valor cero.
Otra posibilidad que teníamos en VB6 era indicar el rango de índices que podíamos
asignar, esto lo lográbamos usando la cláusula To al definir un array, por ejemplo:
Dim nombres(10 To 25) As String
Lo que si podemos hacer en Visual Basic 2010 es usar To para indicar el valor máximo
del índice, aunque no tiene la misma "potencia" que en VB6, al menos de esta forma el
código resultará más legible:
Dim nombres(0 To 10) As String
Declarar e inicializar un array
Lo que no podemos hacer en VB6 era declarar un array y al mismo tiempo asignarle
valores.
En Visual Basic 2010 esto lo hacemos indicando los valores a asignar justo después de la
declaración y encerrándolos entre llaves:
Con el código anterior estamos creando un array de tipo String con tres valores cuyos
índices van de cero a dos.
nombres(0,0)= Juan
nombres(0,1)= Pepe
nombres(1,0)= Ana
nombres(1,1)= Eva
Para cambiar el tamaño de un array, al igual que en VB6, usaremos la instrucción ReDim,
pero a diferencia de VB6 no podemos usar ReDim para definir un array, en Visual Basic
2010 siempre hay que declarar previamente los arrays antes de cambiarles el tamaño.
Lo que también podemos hacer en Visual Basic 2010 es cambiar el tamaño de un array y
mantener los valores que tuviera anteriormente, para lograrlo debemos usar ReDim
Preserve.
Si bien tanto ReDim como ReDim Preserve se pueden usar en arrays de cualquier número
de dimensiones, en los arrays de más de una dimensión solamente podemos cambiar el
tamaño de la última dimensión.
Una vez que hemos declarado un array y le hemos asignado valores, es posible que nos
interese eliminar esos valores de la memoria, para lograrlo, podemos hacerlo de tres
formas:
Redimensionando el array indicando que tiene cero elementos, aunque en el mejor de los
casos, si no estamos trabajando con arrays de más de una dimensión, tendríamos un array
de un elemento, ya que, como hemos comentado anteriormente, los arrays de .NET el
índice inferior es cero.
Usar la instrucción Erase. Al igual que en VB6, Erase elimina totalmente el array de la
memoria.
Asignar un valor Nothing al array. Esto funciona en Visual Basic 2010 pero no en VB6,
debido a que en Visual Basic 2010 los arrays son tipos por referencia.
Como acabamos de ver, en Visual Basic 2010 los arrays son tipos por referencia, y tal
como comentamos anteriormente, los tipos por referencia realmente lo que contienen son
una referencia a los datos reales no los datos propiamente dichos.
¿Cuál es el problema?
Si mostramos el contenido de ambos arrays nos daremos cuenta de que realmente solo
existe una copia de los datos en la memoria, y tanto nombres(0) como otros(0) contienen
el nombre "Antonio". En VB6 cada array era independiente del otro y esa asignación a
nombres(0) no afectaba al valor contenido en otros(0).
La idea es que Visual Basic infiera por nosotros el tipo de dato de forma directa.
Esto representa una buena práctica aunque nos impide hacer cosas que antes podíamos
hacer sin complicaciones.
En este ejemplo, habremos creado una matriz de 4 elementos. Sin embargo, podríamos
cambiar uno de sus elementos a otro valor de diferente tipo, como por ejemplo:
ejemploMatriz(1) = "s"
De esta manera, tendremos un resultado: 2009, "s", 2011, 2012.
Sin embargo, esto ha cambiado. Ahora, podemos declarar literales de matrices, haciendo
que estas matrices se declaren de acuerdo al tipo de dato declarado, es decir, infiriendo el
tipo de dato en la declaración.
1.- Escribir un programa en Visual Basic que lea N números, calcule la media aritmética
de los mismos y muestre los números leídos que son mayores que la media calculada.
Se debe crear:
1 CommandButton
1 TextBox
5 Label
1 ListBox
End Sub
2.- Escribir un programa en Visual Basic que lea 10 números que corresponden a los
elementos de un vector y determine y muestre el mayor y menor de ellos.
Se debe crear:
1 CommandButton
2 TextBox
2 Label
For Indice = 1 To 10
Vector(Indice) = InputBox("Numero " & Indice)
Next
For Indice = 1 To 10
If Vector(Indice) > Mayor Then
Mayor = Vector(Indice)
End If
Next
Menor = Mayor
For Indice = 1 To 10
If Vector(Indice) < Menor Then
Menor = Vector(Indice)
End If
Next
Text1 = Mayor
Text2 = Menor
End Sub
3.- Escribir un programa en Visual Basic que permita cargar "N" números en un
vector "V" y luego muestre la cantidad de elementos de "V" que son números pares y la
cantidad de elementos de "V" que son mayores que 100
Se debe crear:
1 CommandButton
1 TextBox
3 Label
N = Val(Text1)
For Indice = 1 To N
Vector(Indice) = InputBox("Dato " & Indice)
End Sub
4- Escribir un programa en Visual Basic que cree una matriz cuadrada de NxN y
verifique si la matriz es o no simétrica.
Te debe quedar así:
For Fila = 1 To N
For Columna = 1 To N
If Paso = 1 Then
Label1 = "No es simétrica"
Else
'Si Paso es 0
Label1 = "Si es simétrica"
End If
End Sub
Ingrese lo siguiente para que te aparezca "Si es simétrica"
|0|6|1| 9|
|6|1|8|0|
|1|8|2|2|
|9|0|2|3|
5.- Escribir un programa en Visual Basic que cree una matriz de NxN y calcule y
muestre: A) La suma de los elementos que están por encima de la diagonal
principal. B) La suma de los elementos que están por debajo de la diagonal
principal. C) La suma de los elementos que están en la diagonal principal y D) La suma
de los elementos que están en la diagonal secundaria.
Se debe crear:
1 CommandButton
1 TextBox
5 Label (Con BoderStyle 1-Fixed Single)
N = Val(Text1)
For Fila = 1 To N
For Columna = 1 To N
Matriz(Fila, Columna) = InputBox("Dato")
If Fila = Columna Then
Suma1 = Suma1 + Matriz(Fila, Columna)
ElseIf Fila < Columna Then
Suma2 = Suma2 + Matriz(Fila, Columna)
Else
Suma3 = Suma3 + Matriz(Fila, Columna)
End If
End Sub
Ejercicios a Resolver:
1.- Hacer un programa en Visual Basic que lea dos vectores de "N" elementos cada uno
y cree y ordene ascendentemente un tercer vector cuyos elementos sean los elementos
de los 2 vectores leidos
2.- Se dispone de un vector "T" de 30 numeros reales distintos de cero. Escribir un
programa en Visual Basic para crear un Vector "Q" en los que todos sus elementos
resulten de dividir los elementos del vector "T" por el elemento T(k), siendo k un valor
dado.
3.- Escribir un programa en Visual Basic que cree un vector de 20 numeros enteros, los
ordene ascendentemente (de menor a mayor) y decida si un numero "N" se encuentra
entre la posicion "i" y la posicion "j" del vector ya ordenado. Los valores de "N", "i"
y "j"deben ser leidos por teclado.
4.- Escribir un programa en Visual Basic que permita llenar con "X" y "O" una
matriz 3x3 y luego inspeccione los valores de sus elementos y diga "GANARON LAS
'X'" si en cualquiera de sus filas, columnas o diagonales hay 3 "X", o "GANARON las
'O'" en caso de que los valores sean "O", o "EMPATE" sino se cumple ninguna de las
condiciones anteriores.
Este es el famoso juego llamado la VIEJA o como en otros lugares TIC TAC TOE