Antonio Salas G.
Colecciones de tipo ArrayList
Son utilizadas para agrupar objetos (elementos) que de alguna forma están relacionados son similar a los Arrays pero una de las diferencias entre Array y Colecciones de tipo ArrayList, es la manera de agregar y eliminar elementos, que estos elementos son tipos de datos por referencia y admite cualquier tipo de dato. Debemos usar New seguido del tipo de colección ya que los datos son almacenados como objetos.
.Add: Es utilizado para agregar elementos después del último registrado.
Dim clectionarraylist As New ArrayList
clectionarraylist.Add("Paco")
clectionarraylist.Add("Marco")
clectionarraylist.Add("Fermin")
clectionarraylist.Add("Chuy")
For Each aux As String In clectionarraylist
txt1.Text &= aux & vbCrLf
Next
.Clear: Elimina todos los elementos de la ArrayLis.
clectionarraylist.Clear()
.Containers: Indica si el elamento indicado esta en la colección.
txt1.Text &= clectionarraylist.Contains("Paco")
.Counts: Nos indica el numero de elementos.
txt1.Text &= clectionarraylist.Count
.IndexOf: Es para buscar un elemento y saber el índice en el que esta almacenado.
txt1.Text &= clectionarraylist.IndexOf("Fermin")
.Insert: Inserta un nuevo elemento en la posición indicada.
clectionarraylist.Insert(4, "Ivan")
.Remove: Elimina un elemento.
clectionarraylist.Remove("Marco")
.Sort: Ordena el contenido de la colección.
clectionarraylist.Sort()
HashTable: Nos permite almacenar cualquier tipo de datos.
Dim colectionHast As New Hashtable
colectionHast.Add(0, "Paco")
colectionHast.Add(1, "Marco")
colectionHast.Add(2, "Fermin")
colectionHast.Add(3, "Chuy")
For Each aux As String In colectionHast.Values
txt1.Text &= aux & vbCrLf
Next
.Add: Añadir nuevos elementos.
Dim colectionHast As New Hashtable
colectionHast.Add(0, "Paco")
colectionHast.Add(1, "Marco")
colectionHast.Add(2, "Fermin")
colectionHast.Add(3, "Chuy")
.Clear: Eliminar todos los elementos.
colectionHast.Clear()
.Contains: Indica si la clave indicada está en la colección.
txt1.Text = colectionHast.Contains(3)
.ContainsKey: Indica si la clave indicada está en la colección.
txt1.Text &= colectionHast.ContainsKey(2)
.ContainsValue: Indica si el valor indicado está en la colección.
txt1.Text &= colectionHast.ContainsValue("Fermin")
.Ramove: Elimina el elemento con la clave indicada.
colectionHast.Remove(2)
Queue. Es una colección del tipo FIFO (First In First Out) utilizada para crear colas de datos.
Dim colectionHast As New Queue
colectionHast.Enqueue("Paco")
colectionHast.Enqueue("Marco")
colectionHast.Enqueue("Fermin")
colectionHast.Enqueue("Chuy")
For Each aux As String In colectionHast
txt1.Text &= aux & vbCrLf
Next
.Peek: Para acceder al último elemento añadido, pero sin eliminarlo.
txt1.Text &= colectionque.peek & vbCrLf
.Enqueue: Añadir un nuevo elemento a la colección.
colectionHast.Enqueue("Paco")
colectionHast.Enqueue("Marco")
colectionHast.Enqueue("Fermin")
colectionHast.Enqueue("Chuy")
.Dequeue: Para sacar el primer elemento de la colección.
txt1.Text &= colectionque.Dequeue & vbCrLf
.Count: Nos indica el número de elementos.
txt1.Text &= colectionque.Count & vbCrLf
.Clear: Eliminar todos los elementos.
colectionque.Clear()
Stack. Es una colección del tipo LIFO (Last In First
Out) utilizada para crear pilas de datos.
Dim colectionstak As New Stack
colectionstak.Push("Paco")
colectionstak.Push("Marco")
colectionstak.Push("Fermin")
colectionstak.Push("Chuy")
For Each aux As String In colectionstak
txt1.Text &= aux & vbCrLf
Next
.Peek: Para acceder al último elemento añadido, pero sin eliminarlo.
txt1.Text &= colectionstak.Peek & vbCrLf
.Push: Para agregar un nuevo elemento al principio de la colección.
colectionstak.Push("Paco")
colectionstak.Push("Marco")
colectionstak.Push("Fermin")
colectionstak.Push("Chuy")
.Pop: Para recuperar el último elemento y eliminarlo de
la colección.
txt1.Text &= colectionstak.Pop & vbCrLf
.Count: Nos indica el número de elementos.
txt1.Text &= colectionstak.Count & vbCrLf
.Clear: Eliminar todos los elementos.
colectionstak.Clear()
Antonio Salas G.
Como en tutoriales pasados la finalidad es aprender a utilizar los ciclos que ofrece el lenguaje visual basic .net, lo que hace esta aplicación es mostrar en una caja de texto multilínea el tablero de ajedrez, representando las casillas blancas por una B y las negras por una N, además se ingresa una coordenada en donde se ubica un alfil y muestra la trayectoria donde se puede mover el alfil con un *.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer = 1
Dim b As Integer = 1
Dim c As Integer = 1
Dim d As Integer
Dim aux As String
While a <= 8
While b <= 8
d = Math.Abs(textbox1.Text - a)
If textbox2.Text - d = b Or textbox2.Text + d = b Then
aux = "*"
If c = 1 Then
c = 0
Else
c = 1
End If
Else
If c = 1 Then
aux = "B"
c = 0
Else
aux = "N"
c = 1
End If
End If
textbox3.Text = textbox3.Text + aux
b = b + 1
End While
textbox3.Text = textbox3.Text & vbNewLine
b = 1
a = a + 1
End While
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a As Integer = 1
Dim b As Integer = 1
Dim c As Integer = 1
Dim d As Integer
Dim aux As String
For a = 1 To 8
For b = 1 To 8
d = Math.Abs(textbox1.Text - a)
If textbox2.Text - d = b Or textbox2.Text + d = b Then
aux = "*"
If c = 1 Then
c = 0
Else
c = 1
End If
Else
If c = 1 Then
aux = "B"
c = 0
Else
aux = "N"
c = 1
End If
End If
textbox3.Text = textbox3.Text + aux
Next
textbox3.Text = textbox3.Text & vbNewLine
b = 1
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a As Integer = 1
Dim b As Integer = 1
Dim c As Integer = 1
Dim d As Integer
Dim aux As String
Do While a <= 8
Do While b <= 8
d = Math.Abs(textbox1.Text - a)
If textbox2.Text - d = b Or textbox2.Text + d = b Then
aux = "*"
If c = 1 Then
c = 0
Else
c = 1
End If
Else
If c = 1 Then
aux = "B"
c = 0
Else
aux = "N"
c = 1
End If
End If
textbox3.Text = textbox3.Text + aux
b = b + 1
Loop
textbox3.Text = textbox3.Text & vbNewLine
b = 1
a = a + 1
Loop
End Sub
En este manual explicaremos como hacer los múltiplos del 5 o cualquier otro numero con los distintos tipos de ciclos que hay en visual Basic .net (For, While y Do While). Con la finalidad de aprender a utilizar lo ciclos.
El programa requiere de dos valores A y B los cuales se tiene que introducir por el usuario, estos números será el rango al cual queremos obtener los múltiplos de algún número y estos los mostraremos en un TextBox multilínea.
Ciclo For
Primero declaramos nuestro método en el evento Click del botón 1, después declaramos las variables que vamos a utilizar (a, b, c).
Y ahora comparamos si los valores de las cajas de texto son numéricos si es así tenemos que evaluar la condición para que un numero sea múltiplo de otro, y esta condición es que al dividir los números el residuo sea 0, con la instrucción Mod obtenemos el residuo de una división.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim a As Integer
Dim b As Integer
Dim c As Integer
If IsNumeric(txta.Text) And IsNumeric(txtb.Text) Then
txtmultiplos.Text = ""
c = 0
a = Val(txta.Text)
b = Val(txtb.Text)
If a > b Then
c = a
a = b
b = c
End If
For c = a To b
If c Mod 5 = 0 Then
txtmultiplos.Text = txtmultiplos.Text +
Convert.ToString(c) + vbNewLine
End If
Next
Else
MsgBox("Error")
End If
End Sub
Ciclo While y Do While
Los ciclos While y Do while es prácticamente lo mismo, la diferencia es que el Do While se cierra con Loop y el While con End While.
Ten en cuenta que estos ciclos funcionan por condiciones a diferencia del For que repite las instrucciones un numero determinado de veces.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button2.Click
Dim a As Integer
Dim b As Integer
Dim c As Integer
If IsNumeric(txta.Text) And IsNumeric(txtb.Text) Then
txtmultiplos.Text = ""
a = txta.Text
b = txtb.Text
If a > b Then
c = a
a = b
b = c
End If
While a <= b
If a Mod 5 = 0 Then
txtmultiplos.Text = txtmultiplos.Text +
Convert.ToString(a) + vbNewLine
End If
a = a + 1
End While
Else
MsgBox("Error")
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button3.Click
Dim a As Integer
Dim b As Integer
Dim c As Integer
If IsNumeric(txta.Text) And IsNumeric(txtb.Text) Then
txtmultiplos.Text = ""
a = txta.Text
b = txtb.Text
If a > b Then
c = a
a = b
b = c
End If
Do While a <= b
If a Mod 5 = 0 Then
txtmultiplos.Text = txtmultiplos.Text +
Convert.ToString(a) + vbNewLine
End If
a = a + 1
Loop
Else
MsgBox("Error")
End If
End Sub
Como ya sabemos en la gran mayoría de los lenguajes de programación es necesario utilizar bases de datos para almacenar información
En la actualidad la gran mayoría de las aplicaciones que se desarrollan es necesario almacenar información en base de datos, por esta razón me vi obligado a compartir con ustedes este articulo.
Lo que vamos hacer es mostrar como nos podemos conectar a una base de datos de Access a través de Visual Basic.
Primero creamos nuestra base de datos. Abrimos Access, seleccionamos nuevo documento y le damos base de datos en blanco, la guardamos en alguna carpeta donde va ha estar nuestra aplicación en Visual.
Después crea una tabla con los campos que necesites para tu aplicación; ya que la creaste sierra Access y nos trasladamos a Visual Basic.
En Visual Basic le seleccionamos en nuevo proyecto EXE estándar, serramos el formulario que se abrió automáticamente, después creamos un modulo. Para esto en el menú proyecto presiona Agregar modulo y después aceptar.
En el modulo crearemos una función para hacer la conexión con la base de datos y además declararemos las variables ADODB de forma publicas para poder manipular los datos en cualquier parte de la aplicación.
Función main(), contiene la conexión a la base de datos.
Una variable AdoConexion, contiene el path a la base de datos.
Un AdoA que es una variable recordset.
Public AdoConexion As ADODB.Connection
Public AdoA As ADODB.Recordset
Dim sBase As String
sub main()
Set AdoConexion = New ADODB.Connection
Set AdoA = New ADODB.Recordset
sBase = App.Path
‘Driver para crear la conexión a la DB
AdoConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=TuBD.mdb;Persist Security Info=false"
AdoConexion.open
‘se le asignan la propiedades al recordset
AdoA.LockType = adLockOptimistic
AdoA.CursorType = adopenDynamic
AdoA.CursorLocation = adUseClient
Form1.Show
end sub
Ya que tenemos nuestro modulo preparado en los formularios podemos manipular los datos ejemplo, para hacer una consulta, a nuestra variable recordset le asignamos el resultado, la estructura es la siguiente.
AdoA.open "select * from tabla where id = " & casilla, AdoConexion
Para que no tengas ningún problema al estar manipulando los resultados de las consultas y te marquen errores es recomendable que antes de cada consulta cierres las consultas abiertas.
if AdoA.State = 1 Then
AdoA.close
end If
Y por ultimo para poder manipular los datos obtenidos en la consulta hay que realizar lo siguiente.
For I = 0 To AdoA.Fields.Count - 1
Text1(I) = AdoA.Fields(I)
Next
Programita que convierte distintos tipos de monedas pero utilizando una función definida por el usuario.
En el formulario agregamos dos etiquetas, dos combobox, dos cajas de texto y un botón (aceptar).
Utilizaremos la función convierte para realizar la conversión de la moneda.
function convierte(numero As Integer) As String
Dim peso As Integer, euro As Integer, dolarA As Integer,
dolarC As Integer, libra As Integer
Dim vec1(4) As Integer
valor de cada moneda en pesos
vec1(0) = 1 pesos
vec1(1) = 15 euro
vec1(2) = 11 dollar ameri
vec1(3) = 12 dollar canadi
vec1(4) = 5 libra
selec1 = Combo1.ListIndex
selec2 = Combo2.ListIndex
resul = numero * vec1(selec1)
convierte = resul / vec1(selec2)
end functionEn el botón aceptar:
Private sub Command1_Click()
if Text1.Text <> "" Then
Text2.Text = convierte(Text1.Text)
end If
end subEn la caja de texto, para validar que solo sean números.
Private sub Text1_KeyPress(KeyAscii As Integer)
if KeyAscii <> 8 Then los caracteres
if KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
end If
end If
end subEste programa permite escribir un numero y el te devuelve el nombre del valor escrito.
En el formulario agregamos dos botones (aceptar y salir) y una caja de texto.
Y utilizaremos dos funciones unidades y decenas.
Private function Unidades() As Integer
select Case Right(txtnumeros.Text, 1)
Case 1: labresultado.Caption = labresultado.Caption + "Uno"
Case 2: labresultado.Caption = labresultado.Caption + "Dos"
Case 3: labresultado.Caption = labresultado.Caption + "Tres"
Case 4: labresultado.Caption = labresultado.Caption + "Cuatro"
Case 5: labresultado.Caption = labresultado.Caption + "Cinco"
Case 6: labresultado.Caption = labresultado.Caption + "Seis"
Case 7: labresultado.Caption = labresultado.Caption + "Siete"
Case 8: labresultado.Caption = labresultado.Caption + "Ocho"
Case 9: labresultado.Caption = labresultado.Caption + "Nueve"
end Select
end function
Private function Decenas() As Integer
select Case Left(txtnumeros.Text, 1)
Case 1: labresultado.Caption = "Dieci "
Case 2: labresultado.Caption = "Veinti "
Case 3: labresultado.Caption = "Treinta "
Case 4: labresultado.Caption = "Cuarenta "
Case 5: labresultado.Caption = "Cincuenta "
Case 6: labresultado.Caption = "Sesenta "
Case 7: labresultado.Caption = "Setenta "
Case 8: labresultado.Caption = "Ochenta "
Case 9: labresultado.Caption = "Noventa "
end Select
end functionEn el botón aceptar:
Private sub cmmaceptar_Click()
if IsNumeric(txtnumeros.Text) Then
select Case txtnumeros.Text
Case 0: labresultado.Caption = "Cero"
Case 11: labresultado.Caption = "Once"
Case 12: labresultado.Caption = "Doce"
Case 13: labresultado.Caption = "Trece"
Case 14: labresultado.Caption = "Catorce"
Case 15: labresultado.Caption = "Quince"
Case 10: labresultado.Caption = "Diez"
Case 20: labresultado.Caption = "Veinte"
Case 30: labresultado.Caption = "Treinta"
Case 40: labresultado.Caption = "Cuarenta"
Case 50: labresultado.Caption = "Cincuenta"
Case 60: labresultado.Caption = "Sesenta"
Case 70: labresultado.Caption = "Setenta"
Case 80: labresultado.Caption = "Ochenta"
Case 90: labresultado.Caption = "Noventa"
end Select
if Right(txtnumeros, 1) = 0 Or (txtnumeros.Text >= 11 And
txtnumeros.Text <= 15) Then
else
if Len(txtnumeros.Text) = 1 Or
Left(txtnumeros.Text, 1) = 0 Then
labresultado.Caption = ""
Call Unidades
else
Call Decenas
Call Unidades
end If
end If
else
MsgBox ("Escribe solo numeros")
end If
txtnumeros.Text = ""
txtnumeros.SetFocus
end subEn el botón salir:
Private sub cmmsalir_Click()
Unload Me
end subUtilizaremos matrices para el siguiente programita, generaremos números aleatorios, los almacenaremos en una matriz, y obtendremos el número mayor de los pares de cada columna y los mostraremos.
Agregamos un botón y colocamos el siguiente código fuente.
Private sub Command1_Click()
Dim ma(5, 7) As Integer
Dim mayor As Integer
Text1.Text = ""
For q = 0 To 5
For q1 = 0 To 7
signo = Int((Rnd * 2) + 1)
nu = Int(Rnd * 100)
if signo = 1 Then
nu = nu * -1
end If
ma(q, q1) = nu
Text1.Text = Text1.Text & ma(q, q1) & " "
Next
Text1.Text = Text1.Text & vbCrLf
Next
mayor = -100
For q1 = 0 To 7
For q = 0 To 5
if ma(q, q1) Mod 2 = 0 Then
if ma(q, q1) > mayor Then
mayor = ma(q, q1)
end If
end If
Next
Label1(q1).Caption = mayor
mayor = -100
Next
end subTenemos que crear una caja de texto con ScrollBars vertical y multilínea, ademas ocho etiquetas en tipo vector.
Aquí esta este programa que convierte de binario a decimal, se tienen que pedir el número de bits que se quieran convertir.
Creamos el formulario y en el agregamos un botón (pedir), tres cajas de texto y tres etiquetas.
En el botón pedir es donde agregaremos todo el algoritmos para realizar la conversión.
Private sub cmdPedir_Click()
Dim i As Integer, i2 As Integer, nu As Integer, base As Integer, su As Integer
Dim sbits As String
su = 0
base = 0
if IsNumeric(Text1.Text) Then
nu = CInt(Text1.Text)
For i = (nu - 1) To 0 Step -1
v = InputBox("Escribe el bit")
if v = 1 Or v = 0 Then
sbits = sbits & v
else
i = i + 1
end If
if v = 1 Then
if i = 0 Then
base = 1
else
if i = 1 Then
base = 2
else
base = 2
For i1 = 1 To (i - 1)
base = base * 2
Next
end If
end If
su = su + (v * base)
end If
Next
end If
Text2.Text = sbits
Text3.Text = su
end subValidamos la caja de texto donde pedimos los bits para que solo escriban números.
Private sub Text1_KeyPress(KeyAscii As Integer)
if KeyAscii <> 8 Then
if KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
end If
end If
end subDescarga es te programa echo en visual que simula la configuración de la instalación de un programa para agregar los componentes, o para agregar los campos de una base de datos como en Access cuando creas una consulta?
El programa agrega elementos, los pasa de una lista a otro, los elimina, puede subir, bajar la posición, etc.
Descárgalo al final.
Este programita permite convertir de decimal a otra base, para que funciones es necesario que introduzca la base a la que quiere convertir, puede convertir de la base 1 a la 10 y también la base 16.
Al final puedes descargar el conversor para que lo veas con detalle.