Guía Arreglos
                                    Visual basic


1 – Arreglos unidimensionales (vectores)
Los Arreglos se utilizan para almacenar un conjunto de datos, que sean del mismo tipo
y todas estas bajo un mismo nombre.
Ejemplo, nombre de personas, edades.


1.1 - Declaración de los arreglos
   Para crear un arreglo se debe en primer lugar declararlo como cualquier otra
   variable, la única diferencia es que debemos indicar la cantidad de elementos que
   contendrá el arreglo, colocando el número de índice entre paréntesis.
   a) Forma 1

     Dim Nombre_Areglo(tamaño) as tipo_de_dato_que_guarda
     Donde tamaño es la cantidad de celdas que requiere

Ejemplo: dim nom(10) as
      Declara un arreglo de 11 posiciones partiendo de la posición 0.

   b) Forma 2

       Dim Nombre_arreglo (1 to num) as tipo_dato_que_guarda

              Donde num es un número entero

Ejemplo1:
    Ejemplo: dim nom(1 to 10) as string
       Declara un arreglo de 10 posiciones partiendo de la posición 1.
1.2 - Acceder a los datos de un arreglo
Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante el índice o
número del elemento del mismo. Por ejemplo:
Dim alumnos(1 To 4) As String
alumnos(1) = "juan"
alumnos(2) = "maria"
alumnos(3) = "ana"
alumnos(4) = "ignacio"

1.- Primero se declara el arreglo llamado alumnos, de tipo string y que contendrá 4
elementos.
2.- Luego le asignamos un valor de cadena como a cualquier otra variable de tipo
string, pero con la diferencia que para referirnos al elemento utilizamos el n° de índice
del mismo.


2.1 – Declaración de una matriz

  Dim Nombre_matriz (Nfila , Mcolumna) tipo_de_dato_


  Dim Nombre_matriz (1 to Nfila , 1 to Mcolumna) tipo_de_dato_
Donde Nfila es la cantidad de fila y Mcolumna es la cantidad de columnas


Ejemplo:
Declarar la matriz de orden 6 x 8
               Dim personas (1 to 6, 1 to 8) as string
               Dim personas ( 6, 8) as string


2.2 - Acceder a los datos de un arreglo
Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices
Por ejemplo:
personas (1, 1) = "Natalia"
personas (2, 1) = "pedro"
personas (1, 7) = "valeria"
personas (1, 8) = "josé"
personas (2, 2) = "carolina"
personas (4, 1) = "raquel"
personas (6, 2) = "eustaquio"
personas (6, 5) = "maria"
personas (6, 8) = "mariana"


El total de índices posibles para almacenar datos o valores en el ejemplo anterior es de
48 datos, ya que si multiplicamos 6 x 8 nos da como total 48 valores posibles para
utilizar en la matriz bidimensional.
Proyecto1
1.-Este proyecto se declara un arreglo de 3 posiciones ( 0, 1, 2)
2.- En el cual van a ser asignados en cada posición los nombre de 3 países.
3.- Usando Ucase (string) se convertirán a mayúscula
4.- Se muestra el contenido de cada posición usando un MsgBox(). Para simplificar
la acción.


Diseñe el siguiente formulario y copie en el command1 el siguiente texto




General
Dim paises (2) As String, I As Integer

Private Sub Command1_Click()
‘ asignación de los nombres en cada posición
      paises(0) = "Argentina"
      paises(1) = "Perú"
      paises(2) = "Brasil"
End Sub
Private Sub Command2_Click()
      ‘ convertir a mayúscula
      For I = 0 To 2
         paises(I) = UCase(paises(I))
      Next

      ‘ mostrar arreglo
      For I = 0 To 2
         MsgBox "nombre del pais : " & paises(I)     ' permite visualizar en pantalla
      Next I
End Sub

       Observaciones:

       * & permite unir o concatenar expresiones.
       * LCase(string) convierte a minúscula el string o cadena
       * Ucase(string)
PROYECTO Nº2
Ingresar los nombres de 5 personas en un arreglo y luego muéstrelo.
Para el ingreso debe usar un Inputbox() y para mostrar debe usar un MsgBox()
Use un botón para cada efecto.




 Solución
 Dim nombre(4) As String, i As Integer

 Private Sub Command1_Click()
 ' permite leer los nombres en cada posición
   For i = 0 To 4
     nombre(i) = InputBox("ingrese nombre ", "Nombre")
   Next
  End Sub
 Private Sub Command2_Click()
 ' convertir a mayúscula
 For i = 0 To 4
    nombre(i) = UCase(nombre(i))
 Next
 ' mostrar
 For i = 0 To 4 ' muestra usando un MsgBox
    MsgBox "nombre ingresado : " & nombre(i) ' permite visualizar en pantalla
PROYECTO Nº3
 Next i


PROYECTO Nº3
Ingresar los nombres de N personas en un arreglo con un tope máximo de 100 datos y
luego muéstrelo.
Para el ingreso debe usar un Inputbox() y para mostrar debe usar un MsgBox()
Use un botón para cada efecto.
PROYECTO Nº4
Ingresar los nombres de N personas en un arreglo y la edad de ellas en otro arreglo.
   a. Muestre los datos
   b. Muestre el promedio de edad del grupo
   c. Muestre el nombre de la persona de mayor edad.
   d. Ordene en forma ascendente por el nombre y muestre ordenado los datos

PROYECTO Nº5
Ingresar los nombres edad y sexo de N personas en arreglos paralelos. Usa textbox
para su ingreso y un listbox para mostrar.




       Se pide mostrar:
       a) El promedio de edad del grupo
       b) El promedio de edad de los hombres
       c) El nombre de la persona mayor
       d) El nombre de la mujer mayor
       e) Muestra todos los datos ordenados en forma ascendente por el nombre
       f) Ingresa un nombre y determina si hay alguna persona que tenga ese
          nombre.
Posible solución

Dim NOM(2) As String, ED(2) As Integer, SEX(2) As String, X As Integer
Private Sub CMD1_Click() ' LLENAR LOS ARREGLOS
 t4.Text = X
 NOM(X) = T1.Text
 ED(X) = Val(T2.Text)
 SEX(X) = T3.Text
 X=X+1
 T1.Text = ""
 T2.Text = ""
 T3.Text = ""
 T1.SetFocus ‘ posiciona cursor en t1.text
 If X > 2 Then
 L1.Visible = True
 CMD2.Visible = True
 t4.Text = "TERMINO"
 End If
End Sub

Private Sub CMD2_Click() ' MOSTRAR LOS ARREGLOS
 L1.AddItem "NOMBRE" & " " & "EDAD" & " " & "SEXO"
 For p = 0 To 2
 L1.AddItem NOM(p) & "       " & ED(p) & "    " & SEX(p)
 Next
End Sub

PROYECTO Nº5
Ingresar número a una matriz de orden 3x3. Use textbox para el ingreso
Se pide:
a.   Muestre los datos
b.   Muestre la suma de todos los datos
c.   Muestre el mayor de todos los números
d.   Muestre el menor de todos los números
e.   Cuantos números hay entre 2 y 15
f.   Cuanto suma cada fila
g.   Cuanto suma cada columna
h.   El mayor de cada fila
i.   El menor de cada columna
j.   Suma de la diagonal principal


Posible Solución

Dim mat(1 To 3, 1 To 3) As Integer, x As Integer ‘ acepta los valores

Private Sub cmd1_Click()
mat(1, 1) = Val(t1.Text)
mat(1, 2) = Val(t2.Text)
mat(1, 3) = Val(t3.Text)
mat(2, 1) = Val(t4.Text)
mat(2, 2) = Val(t5.Text)
mat(2, 3) = Val(t6.Text)
mat(3, 1) = Val(t7.Text)
mat(3, 2) = Val(t8.Text)
mat(3, 3) = Val(t9.Text)

End Sub

Private Sub cmd2_Click() ‘limpiar
t1.Text = ""
t2.Text = ""
t3.Text = ""
t4.Text = ""
t5.Text = ""
t6.Text = ""
t7.Text = ""
t8.Text = ""
t9.Text = ""
t1.SetFocus
End Sub

Private Sub cmd3_Click() ‘ muestra en el listbox
For x = 1 To 3
   l1.AddItem mat(x, 1) & " " & mat(x, 2) & " " & mat(x, 3)
   Next

End Sub

PROYECTO Nº6
Modifique el proyecto 5 de tal forma que use otra forma de llenar la matriz

Guía nº 8 arreglos

  • 1.
    Guía Arreglos Visual basic 1 – Arreglos unidimensionales (vectores) Los Arreglos se utilizan para almacenar un conjunto de datos, que sean del mismo tipo y todas estas bajo un mismo nombre. Ejemplo, nombre de personas, edades. 1.1 - Declaración de los arreglos Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la única diferencia es que debemos indicar la cantidad de elementos que contendrá el arreglo, colocando el número de índice entre paréntesis. a) Forma 1 Dim Nombre_Areglo(tamaño) as tipo_de_dato_que_guarda Donde tamaño es la cantidad de celdas que requiere Ejemplo: dim nom(10) as Declara un arreglo de 11 posiciones partiendo de la posición 0. b) Forma 2 Dim Nombre_arreglo (1 to num) as tipo_dato_que_guarda Donde num es un número entero Ejemplo1: Ejemplo: dim nom(1 to 10) as string Declara un arreglo de 10 posiciones partiendo de la posición 1. 1.2 - Acceder a los datos de un arreglo Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante el índice o número del elemento del mismo. Por ejemplo: Dim alumnos(1 To 4) As String alumnos(1) = "juan" alumnos(2) = "maria" alumnos(3) = "ana" alumnos(4) = "ignacio" 1.- Primero se declara el arreglo llamado alumnos, de tipo string y que contendrá 4 elementos.
  • 2.
    2.- Luego leasignamos un valor de cadena como a cualquier otra variable de tipo string, pero con la diferencia que para referirnos al elemento utilizamos el n° de índice del mismo. 2.1 – Declaración de una matriz Dim Nombre_matriz (Nfila , Mcolumna) tipo_de_dato_ Dim Nombre_matriz (1 to Nfila , 1 to Mcolumna) tipo_de_dato_ Donde Nfila es la cantidad de fila y Mcolumna es la cantidad de columnas Ejemplo: Declarar la matriz de orden 6 x 8 Dim personas (1 to 6, 1 to 8) as string Dim personas ( 6, 8) as string 2.2 - Acceder a los datos de un arreglo Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices Por ejemplo: personas (1, 1) = "Natalia" personas (2, 1) = "pedro" personas (1, 7) = "valeria" personas (1, 8) = "josé" personas (2, 2) = "carolina" personas (4, 1) = "raquel" personas (6, 2) = "eustaquio" personas (6, 5) = "maria" personas (6, 8) = "mariana" El total de índices posibles para almacenar datos o valores en el ejemplo anterior es de 48 datos, ya que si multiplicamos 6 x 8 nos da como total 48 valores posibles para utilizar en la matriz bidimensional.
  • 3.
    Proyecto1 1.-Este proyecto sedeclara un arreglo de 3 posiciones ( 0, 1, 2) 2.- En el cual van a ser asignados en cada posición los nombre de 3 países. 3.- Usando Ucase (string) se convertirán a mayúscula 4.- Se muestra el contenido de cada posición usando un MsgBox(). Para simplificar la acción. Diseñe el siguiente formulario y copie en el command1 el siguiente texto General Dim paises (2) As String, I As Integer Private Sub Command1_Click() ‘ asignación de los nombres en cada posición paises(0) = "Argentina" paises(1) = "Perú" paises(2) = "Brasil" End Sub Private Sub Command2_Click() ‘ convertir a mayúscula For I = 0 To 2 paises(I) = UCase(paises(I)) Next ‘ mostrar arreglo For I = 0 To 2 MsgBox "nombre del pais : " & paises(I) ' permite visualizar en pantalla Next I End Sub Observaciones: * & permite unir o concatenar expresiones. * LCase(string) convierte a minúscula el string o cadena * Ucase(string)
  • 4.
    PROYECTO Nº2 Ingresar losnombres de 5 personas en un arreglo y luego muéstrelo. Para el ingreso debe usar un Inputbox() y para mostrar debe usar un MsgBox() Use un botón para cada efecto. Solución Dim nombre(4) As String, i As Integer Private Sub Command1_Click() ' permite leer los nombres en cada posición For i = 0 To 4 nombre(i) = InputBox("ingrese nombre ", "Nombre") Next End Sub Private Sub Command2_Click() ' convertir a mayúscula For i = 0 To 4 nombre(i) = UCase(nombre(i)) Next ' mostrar For i = 0 To 4 ' muestra usando un MsgBox MsgBox "nombre ingresado : " & nombre(i) ' permite visualizar en pantalla PROYECTO Nº3 Next i PROYECTO Nº3 Ingresar los nombres de N personas en un arreglo con un tope máximo de 100 datos y luego muéstrelo. Para el ingreso debe usar un Inputbox() y para mostrar debe usar un MsgBox() Use un botón para cada efecto.
  • 5.
    PROYECTO Nº4 Ingresar losnombres de N personas en un arreglo y la edad de ellas en otro arreglo. a. Muestre los datos b. Muestre el promedio de edad del grupo c. Muestre el nombre de la persona de mayor edad. d. Ordene en forma ascendente por el nombre y muestre ordenado los datos PROYECTO Nº5 Ingresar los nombres edad y sexo de N personas en arreglos paralelos. Usa textbox para su ingreso y un listbox para mostrar. Se pide mostrar: a) El promedio de edad del grupo b) El promedio de edad de los hombres c) El nombre de la persona mayor d) El nombre de la mujer mayor e) Muestra todos los datos ordenados en forma ascendente por el nombre f) Ingresa un nombre y determina si hay alguna persona que tenga ese nombre.
  • 6.
    Posible solución Dim NOM(2)As String, ED(2) As Integer, SEX(2) As String, X As Integer Private Sub CMD1_Click() ' LLENAR LOS ARREGLOS t4.Text = X NOM(X) = T1.Text ED(X) = Val(T2.Text) SEX(X) = T3.Text X=X+1 T1.Text = "" T2.Text = "" T3.Text = "" T1.SetFocus ‘ posiciona cursor en t1.text If X > 2 Then L1.Visible = True CMD2.Visible = True t4.Text = "TERMINO" End If End Sub Private Sub CMD2_Click() ' MOSTRAR LOS ARREGLOS L1.AddItem "NOMBRE" & " " & "EDAD" & " " & "SEXO" For p = 0 To 2 L1.AddItem NOM(p) & " " & ED(p) & " " & SEX(p) Next End Sub PROYECTO Nº5 Ingresar número a una matriz de orden 3x3. Use textbox para el ingreso
  • 7.
    Se pide: a. Muestre los datos b. Muestre la suma de todos los datos c. Muestre el mayor de todos los números d. Muestre el menor de todos los números e. Cuantos números hay entre 2 y 15 f. Cuanto suma cada fila g. Cuanto suma cada columna h. El mayor de cada fila i. El menor de cada columna j. Suma de la diagonal principal Posible Solución Dim mat(1 To 3, 1 To 3) As Integer, x As Integer ‘ acepta los valores Private Sub cmd1_Click() mat(1, 1) = Val(t1.Text) mat(1, 2) = Val(t2.Text) mat(1, 3) = Val(t3.Text) mat(2, 1) = Val(t4.Text) mat(2, 2) = Val(t5.Text) mat(2, 3) = Val(t6.Text)
  • 8.
    mat(3, 1) =Val(t7.Text) mat(3, 2) = Val(t8.Text) mat(3, 3) = Val(t9.Text) End Sub Private Sub cmd2_Click() ‘limpiar t1.Text = "" t2.Text = "" t3.Text = "" t4.Text = "" t5.Text = "" t6.Text = "" t7.Text = "" t8.Text = "" t9.Text = "" t1.SetFocus End Sub Private Sub cmd3_Click() ‘ muestra en el listbox For x = 1 To 3 l1.AddItem mat(x, 1) & " " & mat(x, 2) & " " & mat(x, 3) Next End Sub PROYECTO Nº6 Modifique el proyecto 5 de tal forma que use otra forma de llenar la matriz