Sunteți pe pagina 1din 18

Arrays, conceptos básicos

También conocido con las denominaciones de


matriz y vector, un array es aquel elemento
del lenguaje que nos permite agrupar un
conjunto de valores del mismo tipo, y acceder
a ellos a través de una misma variable o
identificador, especificando la posición o
índice en donde se encuentra el dato a
recuperar.
Sub Main()
' declarar un array de tipo String,
' el número de elementos es el indicado
' en la declaración más uno, porque la primera
' posición de un array es cero
Dim sNombres(3) As String
' asignar valores al array s
Nombres(0) = "Ana"
sNombres(1) = "Pedro"
sNombres(2) = "Antonio"
sNombres(3) = "Laura"
' pasar un valor del array a una variable
Dim sValor As String
sValor = sNombres(2)
' mostrar en la consola el valor pasado a una variable
' y un valor directamente desde el array
Console.WriteLine("Valor de la variable sValor: {0}", sValor)
Console.WriteLine("Valor del array, posición 1: {0}", sNombres(1))
Console.ReadLine()
End Sub
El primer índice de un array debe ser siempre cero

VB.NET no soporta la instrucción Option Base, que


nos permitía indicar que el primer índice de un array
podía ser cero o uno. Por lo tanto, al declarar ahora un
array en VB.NET, su número de elementos será el
indicado en la declaración más uno.
Código VB6 ==========
Option Base 1
Public Sub Main()
Dim sNombres(2) As String
sNombres(1) = "Pedro"
sNombres(2) = "Ana"
End Sub

Código VB.NET
=============
Public Sub Main()
' array de 3 elementos
Dim sNombres(2) As String
sNombres(0) = "Pedro"
sNombres(1) = "Ana"
sNombres(2) = "Jaime"
End Sub
No es posible crear arrays con rangos de índices

La característica que en VB6, nos permitía declarar un


array en el que sus índices estuvieran en un intervalo,
tampoco se admite ya en VB.NET. Al tener los arrays
que comenzar por cero en su primer índice, los rangos
de índices han dejado de tener sentido.
Código VB6, no soportado en VB.NET
==================================
Public Sub Main()
' array de 4 elementos, entre los
' índices 5 y 8
Dim Nombres(5 To 8) As String
Nombres(5) = "Pedro"
Nombres(6) = "Ana"
Nombres(7) = "Jaime"
Nombres(8) = "Elena" End Sub
Todos los arrays son dinámicos

En VB6, dependiendo del modo de creación de un


array, este podía ser estático, es decir, con un número
fijo e invariable de elementos; o bien dinámico, es
decir, su número de elementos podía ser modificado en
tiempo de ejecución.
En VB.NET sin embargo, todos los arrays son de
tamaño variable, tanto si se especifica como no un
tamaño al ser declarados
Declaración

Declararemos un array de igual forma que hacemos


con una variable normal, con la excepción de que junto
al nombre de la variable, situaremos unos paréntesis.
Esto indica que dicha variable contiene un array.
Opcionalmente, podemos especificar entre los
paréntesis las dimensiones del array, o número de
elementos que va a contener. Es posible también,
realizar una asignación de valores al array en el mismo
momento de su declaración
Sub Main()
' formas de declaración de arrays
' ===============================
' 1)
' estableciendo el número de elementos
Dim sNombres(2) As String
' 2)
' asignando valores al array al mismo tiempo que se declara,
' la lista de valores debe ir encerrada entre llaves
Dim sEstaciones() As String = {"Ana", "Pedro", "Luis"}
' 3)
' indicando el tipo de dato pero no el número de elementos,
' de este modo la variable todavía no es considerada un array
' ya que contiene una referencia a Nothing
Dim iValores() As Integer
' 4)
' indicando el tipo de dato y estableciendo una
' lista vacía de elementos,
' a diferencia del caso anterior, la variable ahora sí
' es considerada un array aunque de longitud cero
Dim iDatos() As Integer = {}
' 5)
' instanciando el tipo de dato, estableciendo el número
' de elementos al instanciar, e indicando que se trata de un array
' al situar las llaves
Dim iCantidades() As Integer = New Integer(20) {}
' 6)
' declarar primero la variable que contendrá el array,
' asignar valores al array al mismo tiempo que se instancia
' la lista de valores debe ir encerrada entre llaves
Dim iNumeros() As Integer
iNumeros = New Integer() {10, 20, 30, 10, 50, 60, 10, 70, 80}
End Sub
Asignación y obtención de valores

Para asignar u obtener valores de los elementos de un


array, emplearemos la variable que contiene el array
haciendo referencia al índice o posición a manipular. O
bien, puesto que un array es un objeto, utilizaremos los
métodos SetValue( ) y GetValue( ) que asignan y
obtienen respectivamente los valores del array
Sub Main()
' asignación de valores a los elementos de un array '
=================================================
Dim sNombres(4) As String
' directamente sobre la variable,
' haciendo referencia al índice
sNombres(0) = "Juan"
sNombres(1) = "Ana"
sNombres(2) = "Luis"
' o con el método SetValue(), asignando el
' valor en el primer parámetro y especificando
' la posición en el segundo
sNombres.SetValue("Elena", 3)
sNombres.SetValue("Miguel", 4)
' obtención de valores de un array ' ================================
Dim sValorA As String
Dim sValorB As String
sValorA = sNombres(2) ' directamente de la variable
sValorB = sNombres.GetValue(3) ' usando el meth GetValue
Console.WriteLine("Contenido de las variables")
Console.WriteLine("==========================")
Console.WriteLine("ValorA: {0} -- ValorB: {1}", sValorA, sValorB)
Console.ReadLine()
End Sub
Ejercicio 1
Encontrar el mayor y menor valor de un arreglo de 20
numeros determinando ademas el primer indice al que
corresponde.
Ejercicio 2
En un arreglo unidimensional se ha almacenado el numero
total de toneladas de cereales cosechadas durante cada mes
del año anterior. Construya un programa en V.B. que
proporcione la siguiente información:
a) ¿El promedio anual de toneladas cosechadas?
b) ¿Cuantos meses tuvieron una cosecha superior al
promedio anual?
c) ¿Cuantos meses tuvieron una cosecha inferior o igual al
promedio anual?
d) ¿Cual fue el mes en que se produjeron mayor numero de
toneladas?.
Public Class Form1
Public I, COSECHA(11), SUMA As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button1.Click
COSECHA(I) = TextBox1.Text
SUMA = SUMA + COSECHA(I)
ListBox1.Items.Add(cosecha(I))
I=I+1
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Dim K, WMAY, X, WMES, PROM, C1, C2 As Integer
K=I–1
PROM = SUMA / I
For X = 0 To K

If COSECHA(X) > PROM Then


C1 = C1 + 1
Else
C2 = C2 + 1
End If

If COSECHA(X) > WMAY Then


WMAY = COSECHA(X)
WMES = X
End If

Next
TextBox2.Text = PROM
TextBox3.Text = C1
TextBox4.Text = C2
TextBox5.Text = WMES
End Sub

S-ar putea să vă placă și