Arreglos
-
Upload
kenny-merle -
Category
Documents
-
view
236 -
download
1
Transcript of Arreglos
![Page 1: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/1.jpg)
Arreglos
![Page 2: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/2.jpg)
Los Arrays(arreglos) son parecido a grupos de variables de el mismo tipo que guardan informacion relacionada.◦ Un arreglo de una dimension es util cuando se
esta trabajando con un solo conjunto de data.◦ Un arreglo multidimensional puede ser utilizado
para trabajar con multiples conjuntos de data.
Introduccion
![Page 3: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/3.jpg)
ARREGLOS
Un arreglo es como un grupo de variables con un solo nombre. Guardas valores en el arreglo utilizando un subscrito.
![Page 4: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/4.jpg)
Un arreglo multiples valores de el el mismo tipo◦ Un grupo de variables con un solo nombre
Todas las variables adentro de un arreglo se llaman elemento y tienen que ser de el mismo tipo.
Puedes accesar los elementos de un arreglo por medio de subscritos.
Caracteristicas de un Arreglo
![Page 5: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/5.jpg)
Un subscripto, tambien llamado un “index”, es el numero que identifica a un elemento adentro de un arreglo.
La numeracion de Subscriptos trabaja como un “list box index”:◦ La numeracion de Subscriptos empiezan en 0◦ El primer elemento en un arreglo siempre tiene el
subscrito 0◦ El ultimo elemento es el total – 1
Caracteristicas de un Subscrito
![Page 6: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/6.jpg)
Se declara un arreglo muy parecido a como se hace una varibala
◦ ArrayName es el nombre de el arreglo◦ UpperSubscript es el valor maximo de sunscrito
que tendra el arreglo. Debe ser un entero positivo Debe ser nombrado una constante O un numero positivo entero
◦ DataType seria el tipo de data que guardaria el arreglo
Declarando un Arreglo
Dim ArrayName (UpperSubscript) As DataType
![Page 7: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/7.jpg)
Ejemplo de la declaracion de un arreglo
Dim intHours(6) As Integer
![Page 8: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/8.jpg)
Todos los elementos de un arreglo de tipo entero son inicialos a cero.◦ Lo mismo que sucede con una variable de tipo
entero. Cada elemento de un arreglo es inicializado
exactamente igual que una variable de el mismo tipo.◦ Numeros decimales son igualados a cero(0.0)◦ Elementos de tipo string son inicializados a el
valor especial Nothing
Inicializacion por defecto
![Page 9: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/9.jpg)
Un arreglo puede ser inicializado cuando se declara:
Este arreglo tiene un tamano especifico◦ El subscrito es dejado en blanco◦ Numero de elementos se deduce de su
inicializacion.◦ Subscrito de 5 es deducido.◦ El resultado es un arreglo de 6 elementos.
Dando valores especificos a los arreglos.
Dim intNumbers() As Integer = { 2, 4, 6, 8, 10, 12 }
![Page 10: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/10.jpg)
Una constante declarada puede ser utilizada como un subscrito de un array en vez de un numero.
Utilizando constantes en la declaracion de un arreglo.
Const intMAX_SUBSCRIPT As Integer = 100Dim intArray(intMAX_SUBSCRIPT) As Integer
![Page 11: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/11.jpg)
Puedes guardar un valor en el elemento de un array con una simple igualacion.
Trabajando con los elementos de un Array
intNumbers(0) = 100intNumbers(1) = 200intNumbers(2) = 300intNumbers(3) = 400intNumbers(4) = 500intNumbers(5) = 600
![Page 12: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/12.jpg)
Los elementos de un arreglo pueden guardar datos entrados por el usuario.
Usando los elementos de un arreglo para guardar datos de usuario
Const intMAX_SUBSCRIPT As Integer = 9Dim intSeries(intMAX_SUBSCRIPT) As IntegerDim intCount As Integer
For intCount = 0 To intMAX_SUBSCRIPT intSeries(intCount) = CInt(InputBox("Enter a number."))Next
![Page 13: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/13.jpg)
Los arreglos tienen una propiedad llamada Length ◦ Guardan el numero de elementos que tiene el
arreglo Por ejemplo
◦ strNames.Length – 1como el limite mayor de el loop
◦ La propiedad Length es 1 mas que el subscript
Obteniendo cuan largo es un arreglo
Dim strNames() As String = { "Joe", "Geri", "Rose" }For intCount = 0 to strNames.Length – 1 MessageBox.Show(strNames(intCount))Next
![Page 14: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/14.jpg)
Los elementos de un arreglo puedenser usados como cualquier variable en una operacion.◦ Por ejemplo
Multiplicacion
Suma
Editando un string String
Procesando el contenido de un arreglo
decGrossPay = intHours(3) * decPayRate
intTallies(0) += 1
MessageBox.Show(decPay(5).ToString("c"))
![Page 15: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/15.jpg)
El For Each loop can puede simplificar el proceso de un arreglo. ◦ Accesa el valor de los
elementos.◦ No puede modificar valores
El siguiente es el formato:
var es el nombre de l;a variable de el loop
◦ type es el tipo de dato de el ‘loop’
◦ array es el nombre de el arreglo
Supongamos que tenemos la siguiente declaracion de un arreglo:
El siguiente loop ensena los valores en el list box llamado lstShow:
Accesando los elementos de un arreglo con un ‘loop’
For Each var As type In array statementsNext
Dim intArray() As Integer = {10, 20, 30, 40, 50, 60}
For Each intVal As Integer In intArray lstShow.Items.Add(intVal)Next
![Page 16: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/16.jpg)
MAS SOBRE COMO PROCESAR ARREGLOS
Existen muchos usos para los arreglos y muchas tecnicas de programacion pueden ser aplicadas a ellos.
![Page 17: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/17.jpg)
Para sumar los valores adentro de un arreglo◦ Utiliza un For…Next con una variable
acumulador
Como encontrar el total de los valores adentro de un arreglo
Const intMAX_SUBSCRIPT As Integer = 24Dim intUnits(intMAX_SUBSCRIPT) As Integer
Dim intTotal As Integer = 0Dim intCount As Integer
For intCount = 0 To (intUnits.Length – 1) intTotal += intUnits(intCount)Next
![Page 18: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/18.jpg)
Tambien puedes usar unFor Each loop con una variable acumulador
Como encontrar el total de los valores adentro de un arreglo
Const intMAX_SUBSCRIPT As Integer = 24Dim intUnits(intMAX_SUBSCRIPT) As IntegerDim intTotal As Integer = 0
For Each intVal As Integer In intUnits intTotal += intValNext
![Page 19: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/19.jpg)
Suma los valores de el arreglo Divide la suma entre la cantidad de elemntos
Calculando el valor promedio en los valores de un arreglo
Const intMAX_SUBSCRIPT As Integer = 24Dim intUnits(intMAX_SUBSCRIPT) As IntegerDim intTotal As Integer = 0Dim dblAverage As DoubleDim intCount As Integer
For intCount = 0 To (intUnits.Length – 1) intTotal += intUnits(intCount)Next' Use floating-point division to compute the average.dblAverage = intTotal / intUnits.Length
![Page 20: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/20.jpg)
Mas alto Mas bajo
Como encontrar el valor mas alto o el mas bajo dentro de un arreglo
Dim intUnits() As Integer = {1, 2, 3, 4, 5}Dim intCount As IntegerDim intHighest As Integer
' Get the first element.intHighest = intUnits(0)
' Search for the highest value.For intCount = 1 To (intUnits.Length - 1) If intUnits(intCount) > intHighest Then intHighest = intNumbers(intCount) End IfNext
Dim intUnits() As Integer = {1, 2, 3, 4, 5}Dim intCount As IntegerDim intLowest As Integer
' Get the first element.intLowest = intUnits(0)
' Search for the lowest value.For intCount = 1 To (intUnits.Length - 1) If intUnits(intCount) < intLowest Then intLowest = intNumbers(intCount) End IfNext
![Page 21: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/21.jpg)
Se debe usar un loop para copiar los valores de un arreglo hacia otro.
Copiando los valores de un arreglo hacia otro
For intCount = 0 To (intOldValues.Length-1) intNewValues(intCount) = intOldValues(intCount)Next
![Page 22: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/22.jpg)
El metodo basico para buscar adentro de arreglo se llama sequential search◦ Utiliza un loop para
examinar los elementos de un arreglo
◦ Compara cada elemento con el valor de busqueda
◦ La busqueda para cuando el valor es encontrado o cuando se acaba
El Pseudocodigo para el loop es:
Dale search a un arreglo
found = Falsesubscript = 0Do While found is False and subscript < array's length If array(subscript) = searchValue Then found = True position = subscript End If subscript += 1End While
![Page 23: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/23.jpg)
Los programadores a veces desean organizar los elementos de un arreglo en orden ascendente◦ Los valores organizados
de menor a mayor El menor es guardado
en el primer elemento El valor mas alto es
guardado en el ultimo elemento
Para organizar los arreglos en orden ascendente◦ Debes utilizar el metodo
Array.Sort
Este es el formato general:
ArrayName is the name of the array you want to sort
◦ For example:
Organizando los arreglos
Array.Sort(ArrayName)
Dim intNumbers() As Integer = {7, 12, 1, 6, 3}
Array.Sort(intNumbers)
![Page 24: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/24.jpg)
Cuando pasas un arreglo al metodo Array.Sort el arreglo es organizado en orden ascendente◦ El el orden ocurre en
orden alfabetico Digitos numericos
primero Letras mayusculas Metras minusculas
Por ejemplo:
Organizando un arreglo
Dim strNames() As String = {"dan", "Kim", "Adam", "Bill"}Array.Sort(strNames)
![Page 25: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/25.jpg)
Utilazando ReDim puedes cambiar de elementos que tiene un arreglo
◦Preserve es opcional Los valores existentes de un arreglo son preservados Si no usas preserved los valores del arreglo se
destruyen◦Arrayname es el nombre de el arreglo siendo
cambiado◦UpperSubscript es el nombre del subscrito
Debe ser un numero positivo entero
Cambia el tamano de un arreglo
ReDim [Preserve] Arrayname (UpperSubscript)
![Page 26: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/26.jpg)
PROCEDIMIENTOS Y FUNCIONES QUE TRABAJAN CON LOS ARREGLOS
Se pueden pasar arreglos como argumentos para funciones y procedimientos. Esta capacidad te permite escribir procedimientos y funciones que hagan funciones con arreglos.
![Page 27: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/27.jpg)
Se pueden escribir ‘procedures’ para procesar data en arreglos◦ Guardar Data en los arreglos◦ Ensenar el contenido de un arreglo◦ Sumar o sacar el promedio de los
datos de un arreglo◦ Es sencillo, solo pasale el nombre de
el arreglo como el argumento al ‘procedure’ o funcion
Pasando Arreglos como argumentos
![Page 28: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/28.jpg)
Los elementos de un arreglo pueden accesado o modificados si pasados como ByVal o ByRef.◦ ByVal previene que un arreglo sea asignado a otro arreglo.◦ ByRef permite que un arreglo sea asignado a otro arreglo.
Despues que ResetValues sea ejecutado◦ Si fue pasado como ByVal, intNumbers no es cambiado y se
queda con los mismos valores { 1, 2, 3, 4, 5 }◦ Si fue pasado como ByRef, intNumbers va ser igual a los
valores de newArray { 0, 0, 0, 0, 0 }
Pasando arreglos by Value y by Reference
Dim intNumbers() As Integer = { 1, 2, 3, 4, 5 }ResetValues(intNumbers)Sub ResetValues(ByVal intArray() As Integer) Dim newArray() As Integer = {0, 0, 0, 0,0} intArray = newArrayEnd Sub
![Page 29: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/29.jpg)
Devolviendo un arreglo de una funcion
' Pideles tres nombres al usuario y devuelvelos como un arreglo de de strings.Function GetNames() As String() Const intMAX_SUBSCRIPT As Integer = 2 Dim strNames(intMAX_SUBSCRIPT) As String Dim intCount As Integer
For intCount = 0 To 3 strNames(intCount) = InputBox("Enter name " & (intCount + 1).ToString()) Next
Return strNamesEnd Function
Dim strCustomers() As StringstrCustomers = GetNames()
Un arreglo devolvido de una funcion debe ser devolvido a un arreglo del mismo tipo.
![Page 30: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/30.jpg)
ARREGLOS MULTIDIMENSIONALES
Se pueden crear arreglos con mas de dos dimensiones que son capaces de guardar datos complejos.
![Page 31: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/31.jpg)
Un arreglo con un suscrito es util paraone-dimensional array◦ Guardar y trabajar con un grupo de datos simples
Un arreglo de dos dimensiones es como un arreglo de arreglos◦ Se usa para guardar multiples grupos de datos◦ Se puede comparar con una tabla como la que se
presenta aqui.
Arreglos de dos dimensiones
![Page 32: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/32.jpg)
Un arreglo de dos dimensiones requiere dos suscritos.◦ El primer suscrito es para las lineas horizontales◦ El segundo suscrito es para las columnas
ArrayName es el nombre de el arreglo UpperRow es el valor mas alto de la linea vertical
Tiene que ser un valor entero positivo UpperColumn es el valor mas alto de la columna
Tiene que ser un valor entero positivo DataType es el tipo de valor de el dato
Ejemplo de una declaracion de un arreglo:
Declarando arreglos de dos dimensiones
Dim ArrayName (UpperRow,UpperColumn) As DataType
Dim dblScores (2, 3) As Double
![Page 33: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/33.jpg)
Usen nombres de constantes para especificar el suscrito de mas arriba.
Procesando datos en un arreglo de dos dimensiones
Const intMAX_ROW As Integer = 2Const intMAX_COL As Integer = 3Dim dblScores(intMAX_ROW, intMAX_COL) As Double
![Page 34: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/34.jpg)
Los elementos en el row 0.
Los elementos en el row 1.
Los elementos en el row 2.
Procesando datos en un arreglo de dos dimensiones
dblScores(0, 0) ' Elementos en row 0, column 0dblScores(0, 1) ' Elementos en row 0, column 1dblScores(0, 2) ' Elementos en row 0, column 2dblScores(0, 3) ' Elementos en row 0, column 3
dblScores(1, 0) ' Elementos en row 1, column 0dblScores(1, 1) ' Elementos en row 1, column 1dblScores(1, 2) ' Elementos en row 1, column 2dblScores(1, 3) ' Elementos en row 1, column 3
dblScores(2, 0) ' Elementos en row 2, column 0dblScores(2, 1) ' Elementos en row 2, column 1dblScores(2, 2) ' Elementos en row 2, column 2dblScores(2, 3) ' Elementos en row 2, column 3
![Page 35: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/35.jpg)
Ejemplo de como guardar un numero en un elemento del arreglo.
Ejemplo de como preguntarle al usuario una valor para guardar en el arreglo.
Ejemplo de como ensenar al usuario los elementos de el arreglo.
Procesando datos en un arreglo de dos dimensiones
dblScores(2, 1) = 95
For intRow = 0 To intMAX_ROW For intCol = 0 To intMAX_COL dblScores(intRow, intCol) = CDbl(InputBox("Enter a score.")) NextNext
For intRow = 0 To intMAX_ROW For intCol = 0 To intMAX_COL lstOutput.Items.Add(dblScores(intRow, intCol).ToString()) NextNext
![Page 36: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/36.jpg)
Cuando se va a proveer una lista de inicilizacion mantener siempre en mente que:◦ No puedes You cannot
provide the upper subscript numbers
◦ Debe escribir una coma para indicar el numero de dimensiones
◦ Los valores para cada row estan encerrados en sus propios parentesis.
Inicializacion de un Arreglo de dos dimensiones
Dim intNumbers(,) As Integer = { {1, 2, 3} , {4, 5, 6} , {7, 8, 9} }
intNumbers(0, 0) es igual a 1intNumbers(0, 1) es igual a 2intNumbers(0, 2) es igual a 3
intNumbers(1, 0) es igual a 4intNumbers(1, 1) es igual a 5intNumbers(1, 2) es igual a 6
intNumbers(2, 0) es igual a 7intNumbers(2, 1) es igual a 8intNumbers(2, 2) es igual a 9
Esta es la manera de declarar un arreglo con tres rows y tres columnas.
![Page 37: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/37.jpg)
El loop de afuera controla el suscrito de la columna. El loop de adentro suma el suscrito de el row.
Sumando las columna de un arreglo de dos dimensiones
' Suma de las columnas.For intCol = 0 To intMAX_COL ' Inicializa el acumulador. intTotal = 0 ' Suma todos los rows. For intRow = 0 To intMAX_ROW intTotal += intValues(intRow, intCol) Next ' Ensena la suma de la columna. MessageBox.Show(“Suma de las columnas" & intCol.ToString() & " is " & intTotal.ToString())Next
![Page 38: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/38.jpg)
Se pueden crear arreglos de hasta 32 dimensiones. El siguiente es un arreglo de tres dimensiones.
Arreglos de tres dimensiones y mas.
Dim intPages(2, 2, 3) As Decimal
![Page 39: Arreglos](https://reader036.fdocuments.mx/reader036/viewer/2022062419/55912bb31a28abbe628b45d7/html5/thumbnails/39.jpg)
Arreglos con mas de tres dimensiones son dificiles de visualizar.◦ Bien utiles en la programacion de algunas aplicaciones.◦ Por ejemplo:
Un almacén de la fábrica donde las cajas de widgets se apilan en palés, una serie de cuatro dimensiones puede almacenar un número de pieza para cada widget
Los cuatro suscritos de cada elemento pueden guardar: Numero de pallet Numero de caja Numero de row Numero de columna
Un arreglo de cinco dimensiones puede ser utilizado para multiples bodegas.
Arreglos de tres dimensiones y mas.