Unidad 34. Arrays en VB (V)





¿Pero que sucede?, si lo ordena, lo lógico es que lo devuelva, si no, para que sirve, por eso de ahí viene el cambio sintáctico de la utilización del método.

 

La diferencia entre un sistema y el otro es

 

public Sub  OrdenaVectorAscendente()  ' no se recibe el vector.

 

Primer ejemplo.

Se crea el objeto y se indica cuantos elementos ha de tener.

El vector está en el objeto.

Se visualiza, lo que hay en el objeto.

Se ordena, lo que hay en el objeto.

 

' se recibe y se devuelve el vector una vez ordenado.

public Sub  OrdenaVectorAscendente(ByRef V() as Integer)

 

Segundo ejemplo.

Se crea el vector.

Se crea el objeto, pero no se le pasa nada.

El vector solo está en el programa principal.

Al usar el método VerVector hay que enviarle el vector que ha de visualizarse.

Al usarse el método OrdenaVectorAscendente, como no hay vector en el objeto hay que enviarlo.

Y además lo recibimos ordenado para otros usos posteriores, como es el visualizarlo ordenado.

 

En pocas palabras el vector va y viene de un lado para otro.

Pero se puede enfocar de muchas otras formas.

4    Búsqueda.

La búsqueda no es más que la utilización de una estructura repetitiva para recorrer el array y localizar el contenido que buscamos.

Existen distintos tipos de búsquedas, unas más eficientes que otras, aplicar una u otra solo dependerá del volumen de datos a utilizar, y de las necesidades en tiempos de respuesta.

Casi siempre es necesario tener el vector ordenado, por cuestiones de eficiencia.

La búsqueda solo es necesaria cuando no es posible establecer una relación entre el dato y su posición como es el caso de los meses del año, los días de la semana, etc..

Hay una búsqueda muy lógica y sencilla, que es leer el vector hasta que se encuentra o hasta el final.

 

  Public Function BuscarDato(ByVal Que) As Integer

  Dim X As Integer = 0

  Dim Pos As Integer = -1   ' si no se encuentra devuelve -1

  While X < V.Length And Pos < 0

  If V(X) = Que Then Pos = X ' localizado y se asigna la posición

  X = X + 1   ' incremento

  End While

  BuscarDato = Pos ' si no se ha encontrado devolverá -1

  End Function

Este es el método que se puede añadir a la clase anterior para realizar la búsqueda, si lo encuentra devuelve la posición y  en caso contrario devuelve un valor negativo.

 

Poco eficiente y mejorable, si se le envía el vector ordenado.

Hay otras más eficientes, pero no es el fin de este tema.

 

El main para ésta opción sería el siguiente.

 

Sub Main()

  Dim Objeto As New ClaseVector(10)

  Dim Posic As Integer

  Objeto.GeneraVector()

  Objeto.VerVector()

  Posic = Objeto.BuscarDato(25)

  Select Case Posic

  Case Is > 0

  Console.WriteLine("Encontrado en la pósición {0} ", Posic)

  Case Else

  Console.WriteLine("No existe ")

  End Select

  Console.ReadKey()

End Sub

 

5    Invertir.

Otra de las posibles operaciones con un array, es la de invertir el contenido del mismo, ponerlo del revés.

Para ello creamos un bucle con dos contadores uno ascendente y otro descendente.

Podemos añadir el siguiente método a la clase.

 

  Public Sub Inversion()

  Dim W(V.Length - 1) As Integer

  Dim X As Integer

  Dim Y As Integer

 

  X = 0

  Y = V.Length - 1

  While X < V.Length

  W(Y) = V(X)

  X = X + 1

  Y = Y - 1

  End While

  V = W

  End Sub

 

El main para ésta opción sería el siguiente.

 

  Sub Main()

  Dim Objeto As New ClaseVector(10)

  Dim Posic As Integer

  Objeto.GeneraVector()

  Objeto.VerVector()

  Objeto.Inversion()

  Objeto.VerVector()

  Console.ReadKey()

  End Sub

 

Pero para ello también podemos utilizar uno de los tipos de colecciones vistos anteriormente.

 

  Public Sub Inversion()

  Dim X As Integer

  ' definir la pila.

  Dim Pila As New System.Collections.Stack

  ' volcado del vector a la pila

  x = 0

  While X < V.Length

  ' Introdución del contenido en la pila

  Pila.Push(V(X))

  X = X + 1

  End While

 

  ' recuperación del contenido de la pila sobre el vector.

  x = 0

  While Pila.Count <> 0

  ' extracción de un elemento de la pila

  V(X) = Pila.Pop()

  x = x + 1

  End While

  End Sub

 

Y utilizarla como lo que internamente implementa la colección, que es una pila.

El principal quedaría igual que antes.

Octubre-2010
Pág. 34.5

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies