Arreglos Introducción a las Estructuras de Datos.

Anuncio
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
Arreglos
Introducción a las Estructuras de Datos.
Arreglos Unidimensionales: Vectores
Vectores Estáticos en VB
Vectores Dinámicos en VB
Ordenando un Vector
Introducción a las Estructuras de Datos.
Una estructura de datos es una colección de datos que pueden ser caracterizados por su
organización y las operaciones que se definen en ella.
Los tipos de datos más frecuentemente utilizados son:
I.
Datos Simples
a. Estándar
i. Entero
ii. Real
iii. Carácter
iv. Lógico
b. No estándar (definido por el programador)
i. Subrango
ii. Enumerativo
II.
Datos Estructurados
a. Estáticos
i. Arreglos (array)
ii. Registro
iii. Archivo (fichero)
iv. Cadena
b. Dinámicos
i. Lista (pila/cola)
ii. Lista enlazada
iii. Árbol
iv. Grafo
Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en la
memoria se define antes de que el programa se ejecute y no puede modificarse durante la
corrida.
Las estructuras de datos dinámicas no tienen las limitaciones y restricciones en el
tamaño de memoria que son propias de las estructuras estáticas. Mediante el uso de un tipo
de datos específico, denominado puntero, es posible construir estructuras de datos
dinámicas soportadas por la mayoría de los lenguajes de programación.
Cuando un lenguaje de programación no soporta un tipo dado de estructura de datos
eventualmente puede ser simulada mediante el algoritmo apropiado.
Una característica importante que diferencia a los datos simples de los estructurados es que
para los datos simples cada variable representa un elemento, mientras que en los datos
estructurados cada un identificador (nombre) representa múltiples datos individuales,
pudiendo cada una de ellos ser referenciados individualmente.
1
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
Arreglos Unidimensionales: Vectores
Un arreglo es un conjunto finito y ordenado de elementos homogéneos. La propiedad
ordenado significa que el primer elemento, el segundo, el tercero,..., el enésimo puede ser
identificado. La homogeneidad implica que todos los elementos del arreglo son datos del
mismo tipo.
Un vector o arreglo unidimensional consta de n elementos que pueden representarse como:
A [1] A[2] A[3] ... A[i] ... A[n}
Nótese que todos los elementos comparten el mismo identificador (A en este caso) mientras
que el subíndice identifica a cada elemento individual.
Al número de elementos de un vector se le denomina rango del vector.
Los vectores se almacenan en la memoria central del computador en un orden adyacente de
posiciones de memoria sucesivas. Cada elemento de un vector se puede procesar como si
fuera una variable simple que ocupa una posición de memoria dada, de manera tal que cada
elemento del vector es accesible directamente.
Por ejemplo: el vector X[6] está compuesto por seis elementos. Su identificador (nombre del
vector) es X y cada elemento se individualiza por su subíndice.
X(1) X(2) X(3) X(4) X(5) X(6)
30 33 28 30 31 29
Vectores Estáticos 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 instrucción 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
2
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
Ejemplo 1
Implementar una aplicación VB que lea 10 números y calcule e imprima su promedio.
GUI
Codificación Básica
------------------------------------------------------------------------------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
3
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
Vectores Dinámicos en VB
Visual Basic permite cambiar el rango de un vector durante la ejecución del programa, pero
para ello debe declararse este como vector dinámico.
Dim identificador( ) As tipo
Nótese que se ha dejado vacío el espacio entre paréntesis 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 instrucción ReDim, cuya sintaxis general es:
ReDim identificador(N ) As tipo
Donde N es una variable numérica entera cuyo valor se ha determinado previamente.
Ejemplo 2
Implementar una aplicación VB que lea la cantidad de números a promediar y los números,
y calcule e imprima su promedio.
GUI
Codificación Básica
------------------------------------------------------------------------------General
Dim C As Integer
Dim N As Integer
Dim Suma As Double
Dim X() As Double
4
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
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 aplicación VB que lea una lista de números que termina con la palabra
FIN, y calcule e imprima su promedio.
GUI
5
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
Codificación Básica
----------------------------------------------------------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,
diferenciándose por su complejidad y eficiencia. Uno de los algoritmos de ordenamiento de
vectores más simple (aunque no muy eficiente) es el de ordenación por selección.
Para ordenar ascendentemente un vector numérico el algoritmo de ordenación por
selección 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.
6
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
GUI
Codificación Básica
----------------------------------------------------------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
-----------------------------------------------------------
7
Ejercicios de Visual Basic
Prof.: Lic. Toledo Marcelo Alejandro
e-mail: mtoledo@dgrfsa.gov.ar
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
8
Descargar