Posted by : Otniel Ponce viernes, 7 de diciembre de 2012

                                                                     

Teoria


Arrays(Arreglos)

¿Que es un Array?: En programación, una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).


Ejemplo:


Donde el 0 es la primera posición y el 9 es la ultima del Indice(formando una fila), si ingresamos el numero 10 se almacenará en la posición 0, si ingresamos 8 se almacenara en la posición 1, y asi sucesivamente . Ejemplo Grafico:



Como se declara un vector en Visual Basic 6.0

Formula

Dim Nombre Del Vector o Matriz(Primer Valor To Ultimo Valor) As Tipo De Dato

Ejemplo:

Dim Fila(1 To 5) As Integer

Donde:

Nombre Del Vector o Matriz: Fila
Primer Valor: 1
Ultimo Valor: 5
Tipo De Dato: Integer


Práctica


Visual Basic 6.0
Ejercicio 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

Te debe quedar asi




Aqui esta el codigo (Darle doble click al CommandButton e introducir lo siguiente)

Private Sub Command1_Click()
'Declaramos el vector del 1 al 1000
Dim Numeros(1 To 1000) As Integer
    'Atrapamos los numeros en un TextBox y luego lo pasamos a la variable N
    N = Val(Text1)
    'Contamos desde el numeros que ingresamos en TextBox
    For K = 1 To N
    
        Numeros(K) = InputBox("Numero " & K)
            Suma = Suma + Numeros(K)
        Next
        Prom = Suma / N
        LabelP = Prom
            For K = 1 To N
                If Numeros(K) > Prom Then
                'En español es Agregar Elementos(AddItem) en el evento List1
                List1.AddItem Numeros(K)
                End If
            Next
            
End Sub
Ejercicio 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

Te debe quedar así



Aquí esta el código (Darle doble click al CommandButton e introducir lo siguiente)
Private Sub Command1_Click()
'Declaramos el vector del 1 al 120
Dim Vector(1 To 20) As Integer
Dim Mayor As Integer
Dim Menor As Integer
    
        For Indice = 1 To 10
            Vector(Indice) = InputBox("Numero " & Indice)
            Next
           
         'Leemos el primer dato ingresado en la posicion '1' del indice
            Mayor = Vector(1)
    
            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


Ejercicio 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

Te debe quedar así



Aquí esta el código (Darle doble click al CommandButton e introducir lo siguiente)
Private Sub Command1_Click()
    Dim Vector(1 To 1000) As Integer
    Dim Pares, Mayores As Integer
    
    N = Val(Text1)
    
    For Indice = 1 To N
        Vector(Indice) = InputBox("Dato " & Indice)
        
        If Vector(Indice) Mod 2 = 0 Then
        Pares = Pares + 1
        End If
        
        If Vector(Indice) > 100 Then
            Mayores = Mayores + 1
        End If
    Next
    
    Label2 = "Cantidad de pares " & Pares
    Label3 = "Mayores que 100 " & Mayores
    
End Sub


Ejercicio 4

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 

Lo que va a hacer dicho programa es leer el vector 'A' y 'B'

Vector A                     Vector B                    lo que hace es unirlo el vector 'A' y 'B'
_   _  _                          _  _  _                                      _  _  _  _ _  _ 
|7 |1| 4|                         |9 |6 |8|                                     |7 |1 |4 |9 |6 |8|


Luego de haberlos unidos los vextores 'A' y 'B', los ordena

 lo que hace es unirlo el vector 'A' y 'B'                         Vectores 'A' y 'B' ordenados
 _  _  _  _ _  _                                                                       _  _  _  _ _  _ 
 |7 |1 |4 |9 |6 |8|                                                                    |1 |4 |6 |7 |8 |9|

Se debe crear:

1 CommandButton

1 TextBox

2 Label

1 ListBox


Te debe quedar asi



Bien el algoritmo en Visual Basic es el siguiente:
Private Sub Command1_Click()

Dim A(1 To 50) As Integer
Dim B(1 To 50) As Integer
Dim AB(1 To 100) As Integer

    N = Val(Text1)
    ' 'K' es el indice que cuenta la cantidad de datos ingresados
        For K = 1 To N 'Este es el vector 'A'
        'Ingresamos esn 'A': 7, 1 y 4
            A(K) = InputBox("Vector A(" & K & ") = ")
                Next
        
        For K = 1 To N 'Este el vector 'B'
        'Ingresamos esn 'A': 9, 6 y 8
            B(K) = InputBox("Vector B(" & K & ") = ")
                Next
                
                'Unimos el vector 'A' y 'B'
                
                    For K = 1 To N 'Este el vector 'B'
                   
                    'Pasamos los n umeros ingresados en el vector 'A' en el vector 'AB' que es la
                    'Union de los dos vectores
                    AB(K) = A(K)
                    ' 'N' es el numero ingresado en el TextBox por ejemplo si ponemos en 'N' un 3
                    'La 'N' sera el limite que se llegara el indice 'K' lo cual 'K' debe llegar al
                    'numero 3 que es 'N', en este caso para unir 'B' con 'A' que en el vector 'AB'
                    'ya almaceno los numeros del vector 'A', lo que va a hacer 'AB(K + N)' es empezar
                    'en el indice 'K' por el 1 y sumar 3 de la variable 'N', y seria:
                    '        |Posicion
                    '|K|   |N| |=| |K + N
                    '|1| + |3| |=| |4
                    '|2| + |3| |=| |5
                    '|3| + |3| |=| |6
                    
                 AB(K + N) = B(K)
                Next
                
                'Metodo de la burbuja
                ' 'M' es la ultima posicion
               

                  M = N + N 
               
     ' Donde 'N' vbale 5 y al sumarlos dos veces M = N + N => M = 5 + 5 => M = 10
                ' 1 hasta el 10 - 1
                
                For Posicion = 1 To M - 1
                    For K = 1 To M - 1
                        If AB(K) > AB(K + 1) Then
                            Auxiliar = AB(K)
                            AB(K) = AB(K + 1)
                            AB(K + 1) = Auxiliar
                        End If
                    Next
                Next
                'Del 1 hasta el 10
                For K = 1 To M
                    List1.AddItem AB(K)
                Next
            End Sub

________________________________________________________________________________
En los siguientes ejercicios solo por tu cuenta crearas el formulario en Visual Basic 6.0

Ejercicio 5

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.

El formulario debe quedarte asi



Codigo
'Hecho By Cyxymux

Private Sub Command1_Click()
'Vectores
Dim T(1 To 100) As Double
Dim Q(1 To 100) As Double

K = Val(T1)
    
    For N = 1 To 5
        T(N) = InputBox("Numero: " & N)
            'Si en el vector T es igual a cero
            If T(N) = 0 Then
                MsgBox ("No puede ser cero")
                'Decrementamos el indice
                N = N - 1
                End If
    Next
    
    For N = 1 To 5
        Q(N) = T(N) / T(K)
    Next
     
    
    For N = 1 To 5
        List1.AddItem T(N)
        List2.AddItem Q(N)
    Next

End Sub

Ejercicio 6

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.

Te debe quedar asi


Codigo:
Private Sub Command1_Click()

'vector
Dim V(1 To 10) As Integer
'Es el numero donde esta en dichas posiones
N = Val(Text1)
'Pôsicion 1
i = Val(Text2)
'Posicion 2
j = Val(Text3)
    
    
    For Indice = 1 To 10
        V(Indice) = InputBox("Numero: " & Indice)
    Next
    
        For IndiceAux = 1 To 9
            For Indice = 1 To 9
        If V(Indice) and V(Indice + 1) Then
            Auxiliar = V(Indice)
            V(Indice) = V(Indice + 1)
            V(Indice + 1) = Auxiliar
        End If
    Next
Next


For Indice = 1 To 10
    List1.AddItem V(Indice)
Next

Acceder = 0

For Indice = i To j
    If V(Indice) = N Then
        Acceder = 1
        Posicion = Indice
        End If
            Next
            
            If Acceder = 1 Then
                MsgBox ("Se encuentra en la posicion: " & Posicion)
                    Else
                        MsgBox ("no se encuentra")
                    End If

End Sub
Ejercicio 8

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í



Dale doble click al CommandButton y escribe el siguiente código
Private Sub Command1_Click()
    Dim Matriz(1 To 10, 1 To 10) As Integer
    Do
        N = InputBox("N = ")
        Loop Until N > 0 And N < 11
    For Fila = 1 To N
        For Columna = 1 To N
            Matriz(Fila, Columna) = InputBox("Dato ")
        Next
    Next
    
    Paso = 0 'Es un Switch(Es Booleano 0 y 1), su funcion principal es que si cumple la condición
    'En este caso esta en cero porque no se ha cumplido una condición
    
    For Fila = 1 To N
        For Columna = 1 To N
        
        If Matriz(Fila, Columna) <> Matriz(Columna, Fila) Then
            Paso = 1 'Paso se le asigna 1 porque la condicion es verdadera
            End If
        Next
    Next
    
    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|



Ejercicio 10

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)

Te debe quedar así


Dale doble click al CommandButton y escribe el siguiente código
Private Sub Command1_Click()
    
    Dim Matriz(1 To 100, 1 To 100)
    Dim Suma1 As Integer
    Dim Suma2 As Integer
    Dim Suma3 As Integer
    Dim Suma4 As Integer
    
        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
        
        If Fila + Columna = N + 1 Then
            Suma4 = Suma4 + Matriz(Fila, Columna)
        End If
    Next
Next
'Respuestas
Label2 = "La suma de la diagonal principal " & Suma1
Label3 = "La suma que está por encima en la diagonal principal " & Suma2
Label4 = "La suma que está por debajo de la diagonal principal " & Suma3
Label5 = "La suma que está en la diagonal secundaria " & Suma4
        
End Sub

Ejercicio 12

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

Para eso debemos crear una "Matriz de Controles", lo que significa que debemos crear 9 veces un TEXT1

Como se muestra gráficamente.

Creamos un TextBox


Le damos click derecho del Mouse y nos saldrá el siguiente cuadro lo cual sale una opción que dice copiar.


Ahora acercamos el cursor en el espacio del formulario le damos click derecho y pegar. O lo más fácil apretamos la tecla Ctrl y la tecla V las dos (teclas a la vez)



Luego de haberle dado pegar te va a salir un cuadro que te dice lo siguiente:
"Ya existe un control llamado Text1 ¿Deseas crear una matriz de controles?"

Les das click en SI o en Aceptar 

Creas 9 Text1

1 Labels

y un CommandButton

El formulario debe quedarte así


Dale doble click al CommandButton y escribe el siguiente codigo
Private Sub Command1_Click()

Dim M(1 To 3, 1 To 3) As String

M(1, 1) = Text1(0)
M(1, 2) = Text1(1)
M(1, 3) = Text1(2)
M(2, 1) = Text1(3)
M(2, 2) = Text1(4)
M(2, 3) = Text1(5)
M(3, 1) = Text1(6)
M(3, 2) = Text1(7)
M(3, 3) = Text1(8)


For f = 1 To 3
    
    
    If M(f, 1) = M(f, 2) And M(f, 2) = M(f, 3) Then
    
    Label1 = "Ganaron las " & M(f, 1)
    
    End If
    
Next
    
    For c = 1 To 3
    
    If M(1, c) = M(2, c) And M(2, c) = M(3, c) Then
    
    Label1 = "Ganaron las " & M(1, c)
    
    End If
    
    Next
    
    If M(1, 1) = M(2, 2) And M(2, 2) = M(3, 3) Then
    
    Label1 = "Ganaron las " & M(1, 1)
    
    End If
    
    If M(1, 3) = M(2, 2) And M(2, 2) = M(3, 1) Then
    
    Label1 = "Ganaron las " & M(1, 1)
    
    End If
    
    For f = 1 To 3
        For c = 1 To 3
        
        If M(c, f) <> M(f, c) Then
    
    Label1 = "Empate"
    
    End If
        
        Next
    Next
  
End Sub

{ 14 comentarios ... read them below or Comment }

  1. excelente pagina, muchas gracias por la informacion

    ResponderEliminar
  2. Muy buena info, graciasss!!!!

    ResponderEliminar
  3. Mi visual es 2005, que le tengo que modificar a este codigo para que me corra en el mio

    ResponderEliminar
    Respuestas
    1. En esta pagina te explica como utilizar codigo de Visual Basic 6.0 en Visual 2005.

      http://msdn.microsoft.com/es-es/library/kehz1dz1(v=vs.80).aspx

      Eliminar
  4. pueden acolitarme haciendo este programa
    ejercicio:
    menu
    1. ingreso de datos(matrices)
    2. ordenar una matriz sin que se repitan sus elementos
    3. impresion de las matrices original y resultante
    si pueden ayudarme se les agradece mucho..

    ResponderEliminar
  5. Muy buena explicacion ...muy descriptiva ...mejor aun que los videos gracias por compartirlo

    ResponderEliminar
  6. hey..!! gracias por la informacion, me es muy util pero tengo una pregunta, como hago rotar los elementos de un vector hacia la derecha o la izquierda? ej: si tengo un vector de 4 elementos 1,2,3,4, me debe quedar asi 2,3,4,1 o bien 4,1,2,3 me puedes ayudar?

    ResponderEliminar
  7. mi visual es 2008 que tengo que modificar para que me corra

    ResponderEliminar

Flakreath - La era de la información

Seguidores

Busqueda

Cargando...

Flakreath Chat

El Magistrado. Con la tecnología de Blogger.

Síguenos en Facebook

Suscribite vía Email:

Introduce tu Email:

- Copyright © Falkreath - La era de la información - Falkreath.com -