You are on page 1of 16

Los Arrays o arreglos son conjuntos de Variables Agrupadas con un nombre, que se pueden manejar juntas o individualmente, en Visual

Basic .Net se pueden tener arreglos desde una dimensin y hasta un mximo de 32 dimensiones.

Como se definen
Para definir un arrays se utiliza Dim, Private, Friend o Public segn el alcance del mismo, por ejemplo la orden: Dim Cursos( , ) As String Define el array Cursos sin asignarle la cantidad de elementos de cada dimensin. El array anterior tendr que redefinirse a nivel de procedimiento usando la instruccin Redim, est funciona unicamente cambiando el tamao de la ltima dimensin. Generalmente se usa una variable que va aumentando, suponer que la variable Incluidos es la utilizada, la instruccin podra ser como la siguiente: Redim Cursos(2,Incluidos) y para conservar los datos actuales en el Array se utiliza la palabra Preserve: Redim Preserve Cursos(2,Incluidos)

Algo de lo que contiene


Todos los elementos del arrays deben ser del mismo tipo.En Visual Studio .Net los arrays derivan de la clase Arrays del NameSpaceSystem. Esta Clase (Array) proporciona los mtodos para crear, manipular, realizar busquedas y ordenacin de arrays. Un elemento es un valor de Array, al que se puede acceder haciendo uso del indice o indices segn las dimensiones. Por ejemplo, para acceder al elemento de la segunda fila y la tercera columna del arrays bidimensional con nombre Cursos se debe escribir Cursos(1,2), cabe adelantar que en Visual Basic .Net el valor inicial de cada dimensin es CERO. El mtodoGetLowerBound permite obtener el lmite inferior de una determinada dimensin. Para el lmite superior de la dimensin especificada se utiliza el mtodo GetUpperBound. La longitud de Array es el nmero total de elementos que puede contener. El mtodo GetLength permite obtener el nmero de elementos de un array. El rango de Array es el nmero de dimensiones de Array. La Propiedad Rank permite obtener el nmero de dimensiones de una array.

Ejemplo
El sistema de control de Matriculas de un instituto es muy lento, se necesita que los datos puedan procesarse de manera mas rpida y segura, se decide hacer un sistema por computadora; este deber registrar segn los siguientes productos descritos en la tabla: Cod. Producto IES SEC DBS Descripcin Computacin Informtica Secretariado Ejecutivo Da Bussines

De acuerdo a los Productos antes registrados pueden crearse cursos o promociones, el sistema ingresar y pedir: Nmero de la promocin en el formato 9999-XX donde las 9999 ser el ao actual y las XX el nmero del curso registrado en el ao, por ejemplo; 01, 02, 03, etc., tambin deber registrarse la descripcin del curso, la fecha de inicio, el nmero de vacantes y la cantidad de matriculados. Una vez registrado el o los cursos, se podr matricular alumnos, de los cuales se pedir el ingreso de Apellidos, Nombres, telfono y fecha de matricula. Los datos por cada curso deben de registrarse y aparecer en un formulario de reporte.

Esto es los datos que podemos ingresar, si queremos mas datos ingresamos mas en la tabla:

Los datos de la tabla siguiente : Producto Promociones 2004-06 Computacion e Informtica Fecha de Inicio: 01/11/2004 Vacantes: 25 Pereda Geronimo, Luis Matriculados Luque Villacorta, Fernando Telf. 9458548 Fecha: 25/10/2004

IES Computacin Informtica e

2011-07 Computacin e Informtica Fecha de Inicio: 05/11/2011

Telf. 9444567 Fecha: 28/09/2004 Terranova Carrin Esmeralda Telf. 9499498

Vacantes: 20

Fecha: 30/09/2004 Hinostroza Ramrez Carlos Telf. 9645676 Fecha: 30/09/2004 Villacorta Acosta, Carol Telf. 96442567 Fecha: 30/09/2004 Bolvar Saldaa, Silvia

2011-10 Secretariado Ejecutivo Fecha de Inicio: 08/11/2011 SEC Secretariado Ejecutivo 2011-12 Secretariado Ejecutivo Fecha de Inicio: 12/11/2011 vacantes: 25 Vacantes: 30

Telf. 96656443 Fecha: 30/09/2004 Sanchez Campos, Julia Telf. 9644444 Fecha: 01/10/2004

Este es el cdigo en Visual .net:

A continuacin sigue parte del cdigo en Visual Basic: En el Mdulo:

'************* MODULO ******************* 'Programacin: Ing. Fernando Luque Snchez

'Noviembre 2004 Module SistMatriculas 'Definicion de las variables para Productos PublicvProducto As String 'Para saber el Nmero de Promociones Aperturadas PublicvNumPromos As Integer

'Para saber el Nmero de Alumnos Matriculados PublicvNumAlumnos As Integer '''' ARREGLOS PARA ALMACENAR LOS DATOS 'Para Alamcenar los datos de las promociones PublicaPromos(,) As String Matriculados 'CdPromo, Descrip, Fecha, Vacantes,

'Para Alamcenar los datos de los alumnos PublicaAlumnos(,) As String ' ' CodAlumno, CodPromo, Descrip, Nombre, Telefono y Fecha Matricula

'Para el Ttulo del Reporte PublicVTitulo As String

'Datos de un Curso Aperturado PublicvDescrip As String Public vCodigo As String Public VfechainicioAs Date PublicvVacantes As Integer

'Para saber si los Formularios estn abiertos Public fPromosA As Integer

End Module

En el formulario Principal

Public Class frmPrincipal Inherits System.Windows.Forms.Form

#Region " Cdigo generado por el Diseador de Windows Forms "

*** codigo eliminado

#End Region

Private Sub Reportes(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles mnuRepPromos.Click

If sender Is mnuRepPromos Then

'REPORTE SOLAMENTE DE LAS PROMOCIONES ABIERTAS Dim NReporte As New frmReportes() VTitulo = "Reporte de Promociones" NReporte.ShowDialog() ElseIf sender Is mnuRepAlumnosPromo Then 'Reporte de los alumnos por Promocion Dim RepAlumnos As New frmRepAlumnxPromo() RepAlumnos.ShowDialog() End If End Sub

Private Sub Salir(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles mnuSalir.Click Application.Exit() End Sub

'MUESTRA EL FORMULARIO DE INGRESO DE PROMOCIONES. Private Sub mnuIngPromo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles mnuIngPromo.Click mnuIngPromo.Enabled = False Dim iPromos As New frmPromociones() iPromos.MdiParent = Me iPromos.Show() End Sub

'Procedimientos para la Insercin de Alumnos Private Sub mnuIngAlumnos_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles mnuIngAlumnos.Click Dim formAlumnos As New fAlumnosMatri() Me.mnuIngAlumnos.Enabled = False formAlumnos.ShowDialog() End Sub

'ACERCA DE.... Private Sub AcercaDe(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MenuItem2.Click Dim fAcerca As New frmAcerca() fAcerca.ShowDialog() End Sub

'Para determinar si el nmero de Promociones es Mayor a Cero Private Sub mnuMoves_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles mnuMoves.Click, mnuMoves.Select If fPromosA = 0 Then mnuIngPromo.Enabled = True _ Else mnuIngPromo.Enabled = False If vNumPromos = 0 Then mnuIngAlumnos.Enabled = False _ Else mnuIngAlumnos.Enabled = True End Sub

Private Sub mnuReporte_Select(ByVal sender As Object, ByVal e As Syst em.EventArgs) Handles mnuReporte.Select If vNumPromos = 0 Then mnuRepPromos.Enabled = False _ Else mnuRepPromos.Enabled = True If vNumPromos = 0 OrElse vNumAlumnos = 0 Then mnuRepAlumnosPromo.Enabled = False _ Else mnuRepAlumnosPromo.Enabled = True End Sub End Class

Otro ejemplo de progamacion con Arrays:

OptionStrictOn '<summary> ' Coleccin de objetos de tipo Control '</summary> PublicClassControlArray InheritsCollectionBase ' PrivatemNombreAsString ' PublicSubNew() MyBase.New() EndSub PublicSubNew(ByValelNombreAsString) MyBase.New() mNombre = elNombre EndSub

' PublicFunctionAdd(ByVal ctrl As Control) AsInteger ReturnMyBase.List.Add(ctrl) EndFunction ' ' Asignar los controles que contendr esta coleccin (14/Nov/02) PublicSubAsignarControles(ByValctrlsAsControl.ControlCollection, _ OptionalByValelNombreAsString = "") ' Asignar los controles a los arrays, ' para que esto funcione automticamente los nombres de los controles ' deberan tener el formato: nombre_numero ' nombre del control seguido de un guin bajo y el ndice IfelNombre = "" Then elNombre = mNombre EndIf ' si no se indica el nombre de los controles a aadir, ' lanzar una excepcin IfelNombre = "" Then ThrowNewArgumentException( _ "No se ha indicado el nombre base de los controles") ExitSub EndIf ' Me.Clear() asignarLosControles(ctrls, elNombre) Me.Reorganizar() EndSub PrivateSubasignarLosControles( _ ByValctrlsAsControl.ControlCollection, _ ByValelNombreAsString) DimctrAs Control ' ForEachctrInctrls

' Hacer una llamada recursiva por si este control "contiene" otros asignarLosControles(ctr.Controls, elNombre) ' Ifctr.Name.IndexOf(elNombre) > -1 Then Me.Add(ctr) EndIf Next EndSub ' PublicFunction Contains(ByVal ctrl As Control) AsBoolean list.Contains(ctrl) EndFunction ' PublicFunctionIndexOf(ByVal ctrl As Control) AsInteger Returnlist.IndexOf(ctrl) EndFunction ' PublicFunction Index(ByVal name AsString) AsInteger Dim ctrl As Control DimiAsInteger DimhalladoAsInteger = -1 ' Fori = 0 ToList.Count - 1 ctrl = CType(list(i), Control) IfStrComp(ctrl.Name, name, CompareMethod.Text) = 0 Then hallado = i ExitFor EndIf Next Returnhallado EndFunction PublicFunction Index(ByVal ctrl As Control) AsInteger DimiAsInteger ' i = ctrl.Name.LastIndexOf("_")

' Si el nombre no tiene el signo _ Ifi = -1 Then i = list.IndexOf(ctrl) Else i = CInt(ctrl.Name.Substring(i + 1)) EndIf Returni EndFunction ' PublicSub Insert(ByVal index AsInteger, ByVal ctrl As Control) List.Insert(index, ctrl) EndSub ' DefaultPublicProperty Item(ByVal index AsInteger) As Control Get ReturnCType(List.Item(index), Control) EndGet Set(ByVal Value As Control) list.Item(index) = Value EndSet EndProperty DefaultPublicProperty Item(ByVal name AsString) As Control Get Dim index AsInteger = Me.Index(name) ' Si existe, devolverlo, sino, crear uno nuevo If index = -1 Then 'index = Me.Add(ctrl) EndIf ReturnCType(List.Item(index), Control) EndGet Set(ByVal Value As Control) Dim index AsInteger = Me.Index(name) If index = -1 Then index = Me.Add(Value) EndIf

list.Item(index) = Value EndSet EndProperty DefaultPublicProperty Item(ByVal ctrl As Control) As Control Get ReturnCType(List(Me.IndexOf(ctrl)), Control) EndGet Set(ByVal Value As Control) List(Me.IndexOf(ctrl)) = Value EndSet EndProperty ' PublicPropertyNombre() AsString Get ReturnmNombre EndGet Set(ByVal Value AsString) mNombre = Value EndSet EndProperty ' PublicSub Remove(ByVal ctrl As Control) List.Remove(ctrl) EndSub ' ' Reorganizar el contenido de la coleccin y ordenar por ndice PublicSubReorganizar() DimcaAsNewControlArray() DimctrAs Control DimiAsInteger ' Fori = 0 ToMe.Count - 1 ForEachctrInMe Ifi = Me.Index(ctr) Then ca.Add(ctr)

ExitFor EndIf Next Next ' Me.Clear() ForEachctrInca Me.Add(ctr) Next EndSub EndClass

OptionStrictOn PublicClass Form1 Inherits System.Windows.Forms.Form #Region " Cdigo generado por el Diseador de Windows Forms " '... #EndRegion ' ' Arrays para contener los controles ' (definir los arrays que vamos a usar) Private m_Label1 AsNew ControlArray("Label1") Private m_TextBox1 AsNew ControlArray("TextBox1") Private m_RadioButton1 AsNew ControlArray("RadioButton1") ' ' Asignar los eventos a los controles PrivateSub asignarEventos() Dim txt As TextBox Dim opt As RadioButton '

' Aqu estarn los procedimientos a asignar a cada array de controles ' ForEach opt In m_RadioButton1 AddHandler opt.KeyPress, AddressOf RadioButton1_KeyPress Next ForEach txt In m_TextBox1 AddHandler txt.Enter, AddressOf TextBox1_Enter AddHandler txt.KeyPress, AddressOf TextBox1_KeyPress AddHandler txt.Leave, AddressOf TextBox1_Leave Next ' EndSub ' PrivateSub Form1_Load(ByVal sender AsObject, _ ByVal e As System.EventArgs) HandlesMyBase.Load ' ' Asignar los controles y reorganizar los ndices m_Label1.AsignarControles(Me.Controls) m_TextBox1.AsignarControles(Me.Controls) m_RadioButton1.AsignarControles(Me.Controls) ' Asignar slo los eventos asignarEventos() EndSub ' PrivateSub TextBox1_Enter(ByVal sender AsObject, _ ByVal e As System.EventArgs) ' Dim txt As TextBox = CType(sender, TextBox) Dim Index AsInteger = m_TextBox1.Index(txt) ' txt.SelectAll() ' resaltar la etiqueta m_Label1(Index).BackColor = Color.FromKnownColor(KnownColor.ControlDark)

' EndSub PrivateSub TextBox1_Leave(ByVal sender AsObject, ByVal e As EventArgs) ' Dim txt As TextBox = CType(sender, TextBox) Dim Index AsInteger = m_TextBox1.Index(txt) ' ' poner la etiqueta con el color normal m_Label1(Index).BackColor = Color.FromKnownColor(KnownColor.Control) EndSub PrivateSub TextBox1_KeyPress(ByVal sender AsObject, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) ' If e.KeyChar = ChrW(Keys.Return) Then Dim txt As TextBox = CType(sender, TextBox) Dim Index AsInteger = m_TextBox1.Index(txt) ' If Index = 2 Then m_RadioButton1(0).Focus() Else m_TextBox1(Index + 1).Focus() EndIf EndIf EndSub ' PrivateSub RadioButton1_KeyPress(ByVal sender AsObject, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) If e.KeyChar = ChrW(Keys.Return) Then Dim opt As RadioButton = CType(sender, RadioButton) Dim Index AsInteger = m_RadioButton1.Index(opt) ' If Index = 0 Then m_RadioButton1(Index + 1).Focus() Else m_TextBox1(0).Focus()

EndIf EndIf EndSub ' PrivateSub btnCerrar_Click(ByVal sender AsObject, _ ByVal e As System.EventArgs) _ Handles btnCerrar.Click Me.Close() EndSub EndClass

You might also like