Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios VB Arreglos
Ejercicios VB Arreglos
Arreglos
Introduccin a las Estructuras de Datos. Arreglos Unidimensionales: Vectores Vectores Estticos en VB Vectores Dinmicos en VB Ordenando un Vector
Vectores Estticos en VB
Para poder utilizar un vector en VB primero hay que declararlo, es decir, especificar su identificador, rango y tipo. Esto puede hacerse mediante la instruccin Dim, cuya sintaxis general es: Dim identificador(rango) As tipo Ejemplos: Dim N(12) As Double Dim Monto(2 to 14) as Long Dim T(-272 to 372) as Integer Dim Nombre(100) As String
Ejemplo 1 Implementar una aplicacin VB que lea 10 nmeros y calcule e imprima su promedio. GUI
Codificacin Bsica ------------------------------------------------------------------------------General Dim C As Integer Dim Suma As Double Dim X(10) As Double ------------------------------------------------------------------------------Private Sub txtNumero_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then C=C+1 X(C) = Val(txtNumero.Text) Suma = Suma + X(C) lblCantidad = C txtNumero.Text = "" End If If C = 10 Then lblPromedio.Caption = Str$(Suma / 10) txtNumero.Enabled = False End If End Sub
Vectores Dinmicos en VB
Visual Basic permite cambiar el rango de un vector durante la ejecucin del programa, pero para ello debe declararse este como vector dinmico. Dim identificador( ) As tipo Ntese que se ha dejado vaco el espacio entre parntesis reservado para fijar el rango del vector. El rango del vector se puede entonces determinar y/o ajustar durante la corrida del programa utilizando la instruccin ReDim, cuya sintaxis general es: ReDim identificador(N ) As tipo Donde N es una variable numrica entera cuyo valor se ha determinado previamente.
Ejemplo 2 Implementar una aplicacin VB que lea la cantidad de nmeros a promediar y los nmeros, y calcule e imprima su promedio. GUI
Codificacin Bsica ------------------------------------------------------------------------------General Dim C As Integer Dim N As Integer Dim Suma As Double Dim X() As Double 4
Private Sub txtCantidad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then N = Val(txtCantidad.Text) txtNumero.Enabled = True txtCantidad.Enabled = False End If End Sub Private Sub txtNumero_KeyPress(KeyAscii As Integer) ReDim X(N) As Double If KeyAscii = 13 Then C=C+1 X(C) = Val(txtNumero.Text) Suma = Suma + X(C) lblCantidad = C txtNumero.Text = "" End If If C = N Then lblPromedio.Caption = Str$(Suma / N) txtNumero.Enabled = False End If End Sub
Ejemplo 3 Implementar una aplicacin VB que lea una lista de nmeros que termina con la palabra FIN, y calcule e imprima su promedio. GUI
Codificacin Bsica ----------------------------------------------------------General Dim C As Integer Dim Suma As Double Dim X() As Double ----------------------------------------------------------Private Sub txtNumero_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If UCase(txtNumero.Text) = "FIN" Then lblPromedio.Caption = Str$(Suma / C) txtNumero.Enabled = False Else C=C+1 ReDim X(C) As Double X(C) = Val(txtNumero.Text) Suma = Suma + X(C) lblCantidad = C txtNumero.Text = "" End If End If End Sub
Ordenando un Vector
Muchas aplicaciones requieren que se ordenen ascendentemente o descendentemente los elementos de un vector. Existen muchos algoritmos que permiten ejecutar esta tarea, diferencindose por su complejidad y eficiencia. Uno de los algoritmos de ordenamiento de vectores ms simple (aunque no muy eficiente) es el de ordenacin por seleccin. Para ordenar ascendentemente un vector numrico el algoritmo de ordenacin por seleccin utiliza dos bucles anidados, de manera tal que se realizan recorridos sucesivos por el arreglo para localizar el elemento mayor y colocarlo en el lugar que le corresponde en la lista ordenada.
GUI
Codificacin Bsica ----------------------------------------------------------General Dim i As Integer Dim j As Integer Dim c As Integer Dim temp As Double Dim x(1 To 10) As Double ----------------------------------------------------------Private Sub txtNumero_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then c = c+1 x( c ) = val(txtNumero.Text) Picture1.Print x ( c ) If c = 10 Then txtNumero.Enabled =false End If End If End Sub -----------------------------------------------------------
Private Sub cmdOrdenar_Click() For i = 10 To 1 Step -1 maxIndex = 1 Se determina el indice del elemento mayor en el conjunto x(1) x(i) For j = 1 To i If x(j) > x(maxIndex) Then maxIndex = j End If Next j Se intercambian los valores de x(i) y el maximo encontrado en el recorrido de arriba temp = x(i) x(i) = x(maxIndex) x(maxIndex) = temp Next i lblNumerosOrdenados.Visible = true Picture1.Cls For i = 1 To 10 Picture1.Print x(i) Next End Sub