Fecha y hora actual: Jueves 17 Ene 2019 05:47
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.33 - Arrays

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.33 - Arrays

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Martes 20 Oct 2009 18:59

Título del mensaje: Curso VB .NET - Tema 1.33 - Arrays

Responder citando

Curso de programación en .NET - Tema 1.33 - Arrays

1. Arrays.
1.1 Objetivos del tema.

En este tema entramos en las estructuras de datos que se almacenan en memoria, veremos la utilización de arrays de una, dos y más dimensiones.

1.2 Introducción.
Hasta ahora los datos se han utilizado bajo una variable la cual podía albergar un único dato, o varios datos agrupados bajo una definición de tipo de usuario, pero en realidad seguía siendo una única información.

Un array es una estructura de datos que permite almacenar un número de datos en memoria que vendrá limitado por la capacidad de memoria del equipo y por el número de elementos que permita utilizar el lenguaje que estemos utilizando en ese momento.

Una variable permite almacenar un dato al cual le asignamos un nombre en el programa.
Un array tiene un nombre, igual que una variable, pero como su misión es la de permitirnos manejar más de una información, le incorporamos un índice para que podamos identificar cual de los datos que tenemos bajo esa variable queremos utilizar, o donde deseamos guardarlo.

1.3 Datos.
Hasta ahora utilizábamos una variable para un dato, y si deseamos utilizar dos datos, teníamos que tener dos variables.



Podemos mejorar la utilización de dicha información diseñando un tipo de usuario y agrupando los datos, pero eso solo soluciona parte del problema.



Hemos mejorado la gestión de los datos, pero necesitamos todavía disponer de una variable para cada grupo de datos.
Podríamos crear una variable que se llamará Persona_1 y otra que se llamará Persona_2.



Pero seguimos teniendo un problema, si en lugar de tener dos personas tenemos muchas, esa solución no es operativa.
La solución pasaría por crear un array, para ceñirnos al ejemplo de dos elementos.



Ahora disponemos de una estructura que nos permite utilizar los dos datos bajo una única denominación.



Solo tenemos que cambiar el índice que se utiliza en el nombre del array para referirnos a uno u otro elemento del array, a uno u otro dato.
Como el vector es del tipo Personas, para hacer referencia a la información que en él se almacena será de la siguiente forma.

  • Juan --> Clientes(1).Nombre
  • Pedro --> Clientes(2).Nombre
  • C/ Bajada de la Gloria, 12 --> Clientes(1).Direccion


1.4 Definición.
Los arrays pueden ser de cualquiera de los tipos disponibles en el lenguaje que estemos utilizando.
La sintaxis en el nombre de un array se compone siempre de un nombre y de un índice que es el que nos permite acceder a cada uno de los elementos que lo componen.



Los arrays pueden tener una, dos o más dimensiones.

Cuando tienen una dimensión se conocen también como vectores, y cuando disponen de dos o más dimensiones como matrices.



Las matrices se componen por lo tanto de un número determinado de filas y columnas en las que disponemos de los datos organizados si lo deseamos ver así en celdas.



1.5 Índice en un array.
Un array tiene un principio y un final, eso viene dado por el número de elementos que se indica en el momento de la creación.

Un vector de diez elementos dispone de índices desde 0 hasta nueve, o desde 1 hasta 10.
Eso va depender de la base en la que ese lenguaje trabaje.
Actualmente la más utilizada es la de base cero, eso implica que el primer índice de un vector es la cero y la última n-1, siendo n el número de elementos con los que se declara el array.

Cuando el primer índice es el uno, se dice que trabaja en base uno, u sus elementos van desde uno hasta n, el número de elementos del array.
Esto hace referencia igual para un vector que para una matriz.



Para referirnos en el vector “V” al elemento con el valor cuatro nos referiremos como V(2), si en el lenguaje utilizado la primera posición del vector es la cero, o bien V(3) si es la uno.

En una matriz, “M”, como la que tenemos en el ejemplo, el valor cuatro sería M(0,2) o M(1,3), en función de que la primera posición fuera la cero o la uno.



El primer valor de los paréntesis hace referencia a la fila y el segundo a la columna.

1.6 Acceso.
El acceso a los datos de un array, es directo no hay que recorrer los elementos anteriores al que queremos utilizar. Pero esto depende de que la información que almacenamos en el array permita que se pueda direccional.

En el ejemplo anterior no hay ningún criterio para localizar los datos que tenemos en V.

Sin embargo en el que sigue sí.



Los nombres de los meses están en el lugar que les corresponde.

Se ha dejado la posición 0 vacía y de esa forma ya no hay ningún problema entre índice y posición, aunque también se podría haber utilizado la posición como x-1.

Por lo tanto, lo que se necesita cuando se utiliza un array para acceder de forma rápida a la información es que esta esté ordenada.

1.7 Recorrido.
Un vector se puede recorrer en cualquiera de los dos sentidos.
Desde la primera a la última posición, o desde la última a la primera posición, o desde cualquier punto hasta cualquier otro, siempre y cuando estén dentro de los límites entre 0 y n-1, siendo n el número de elementos del vector.

Una matriz se puede recorrer en sentido horizontal, si lo deseamos ver de esta forma, fila a fila, o en sentido vertical, columna a columna.



Para el ejemplo de la matriz anterior, horizontal sería.
Código:
Recorrido horizontal
Entero X, Y
Crear M(3,3)
X = 0
Mientras (x < 3) // Filas
   Y = 0
   Mientras (y < 3) // Columnas
      Visualizar M(X,Y)
      y = y + 1
   Fin de mientras
   x = x + 1
Fin de mientras


Y el resultado de la visualización sería:
    1 2 3
    4 5 6
    7 8 9

Para la misma matriz en vertical sería.
Código:
Recorrido vertical
Entero X, Y
Crear M(3,3)
Y = 0
Mientras (y < 3) // Columnas
   X = 0
   Mientras (x < 3) // Filas
      Visualizar M(X,Y)
      X = X + 1
   Fin de mientras
   Y = Y + 1
Fin de mientras


Y el resultado de la visualización sería:
    1 4 7
    2 5 8
    3 6 9

Hay que darse cuenta que la estructura es la misma, el único cambio es el uso de los contadores, que en lugar de recorrer en el bucle interior las columnas, lo que se recorren son las filas.

La estructura repetitiva utilizada para la solución es un bucle anidado dentro de otro.
Es una estructura habitual dentro de la programación.

1.8 Carga de datos.
Una vez que disponemos de una estructura de datos en memoria, el siguiente paso es realizar la carga de los mismos en dicha estructura de datos.

Código:
Definición
Crear V(10) como Entero


La carga de los mismos se realizará habitualmente mediante una estructura de tipo repetitivo, lo cual no quita evidentemente que en alguna ocasión haya que hacerlo de alguna forma más rústica, V(0) = 5.
Código:
Carga
X=0
Hacer
   X=X+1
   Leer "Introduce un número ", V(X)
Hasta que X=10


La estructura del bucle dependerá de cómo en cada lenguaje se definan los elementos en el mismo.
La estructura de antes es válida, pero la que sigue también.
Código:
Carga
X=0
Hacer
   Leer "Introduce un número ", V(X)
   X=X+1
Hasta que X=10


1.9 Visualización.
Con la visualización sucede lo mismo.
Código:
Visualización
X=0
Hacer
   X=X+1
   Visualizar V(X)
Hasta que X=10


Podemos implementar este bucle o cambiarlo con la versión anterior.

1.10 Búsquedas.
Otra de las acciones habituales con un array es la de realizar la búsqueda de un dato dentro de esa estructura.
En la búsqueda se pueden plantear dos situaciones distintas.
  • Array ordenado.
  • Array sin ordenar.

Cuando la búsqueda se realiza en un array que está sin ordenar no queda más remedio que realizar una búsqueda desde el primer hasta el último elemento del vector.

Cuando está ordenado se pueden establecer distintos sistemas de búsquedas, unos más o menos eficientes.
Esta puede ser una estructura de búsqueda cuando el array no está ordenado.
Código:
Búsqueda sin ordenar
X=0
Hacer
   X=X+1
   Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado


Esta variable tomará el valor cierto cuando se de la situación de que V(X) sea igual a DatoBuscado.
Código:
Encontrado = V(X) = DatoBuscado

Cuando el array, vector, esté ordenado puede realizarse así.
Código:
Búsqueda vector ordenado
X=0
Hacer
   X=X+1
   Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado


De esta forma, cuando V(X) sea mayor que el elemento buscado, se finalizará la búsqueda.
Aquí si que es importante la estructura del bucle.
Si en lugar de
Código:
X=0
Hacer
   X=X+1
   Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado

Se monta
Código:
X=0
Hacer
   Encontrado = V(X) = DatoBuscado
   X=X+1
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado


Hay que tener en cuenta que V(X) no habrá sido todavía analizado en
Código:
Encontrado = V(X) = DatoBuscado


Pero existen otros sistemas de búsqueda más eficientes.
Uno de ellos es la búsqueda dicotómica o binaria.
El sistema de búsqueda se basa en hallar sucesivos centros en los índices del vector, hasta que se de la situación de que se encuentra o bien los límites izquierdo y derecho se cruzan.
Código:
Entero Izquierda, Derecha, x
Boolean Encontrado = Falso
// Límites izquierdo y derecho iniciales
Izquierda = 0 // Base cero.
Derecha = LongitudVector – 1
// Punto medio entre los dos límites
x = Entero((Izquierda / Derecha) / 2)
Mientras ((Encontrado = Falso) And (Izquierda < Derecha))
   Encontrado = (v[x] = x) // Lo hemos encontrado si son iguales
   Si no Encontrado
      Si v[x] > x Entonces Derecha = X // Está a la izquierda del centro
      Si v[x] < x Entonces Izquierda = X // Está a la derecha del centro
      X = (Izquierda/Derecha) / 2 // Calculamos el nuevo punto medio
   Fin de Si
Fin de mientras


En este ejemplo tendremos en X la posición del elemento existente cuando Encontrado sea cierto.

1.11 Aplicación de los vectores.
La aplicación de un vector al igual que el de una matriz, es muy diversa, y queda a la capacidad de imaginación de cada uno, pero vamos a ilustrar unos ejemplos.

Un ejemplo de la aplicación de un vector lo hemos visto antes, almacenar los datos del nombre de cada uno de los meses del año, o el nombre de los días de la semana.
Código:
NombreMes(12) Como Texto
NombreDias(7) Como Texto

DiaSemana = 7
Dia = 28
Mes = 12
Año = 2008

Visualizar “Hoy es “ + NombreDias(DiaSemana) + “, ” + Dia + “ de “ +
NombreMes(Mes) + ” de “ + Year + “.”


Que sería algo así
    "Hoy es domingo, 28 de diciembre de 2008."


1.12 Aplicación de las matrices.
Por no irnos por las ramas, una ilustración muy fácil sería la del juego de tres en raya, un sudoku.
El tres en raya sería una matriz de 3x3, el sudoku, podría ser una matriz de 9x9 o bien 9 matrices de 3x3, todo dependería de cómo quisiera cada uno implementar el programa.

Otro uso muy habitual de una matriz es su uso en cálculos estadísticos.



1.13 Ejercicios propuestos.
Los ejercicios los proponemos en el tema personalizado del lenguaje, Java o Visual Basic.


Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Martes 20 Oct 2009 21:49

Título del mensaje: Re: Curso VB .NET - Tema 1.33 - Arrays

Responder citando

Joder, éstos tutoriales se los curra sólo Casiopea? Porque están para enmarcarlos en un libro... le debe apasionar el tema de crear tutoriales.. Risa

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Miércoles 21 Oct 2009 10:30

Título del mensaje: Re: Curso VB .NET - Tema 1.33 - Arrays

Responder citando

Jajajajaj Tengo 7 u 8 de retraso, pero es que no doy abasto....



PD: SI, se los curra el solo.


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda arrays

jamatbar JavaScript 1 Jueves 06 Oct 2016 13:09 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de Desarrollo en Inteligencia Artificial

JL Iglesias Feria Programación de juegos o videojuegos 7 Miércoles 02 Dic 2015 18:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Anuncio Curso Aprendiendo a Programar con MicroSoft

Tesis Programación Web en general 0 Miércoles 25 Mar 2015 12:34 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,