1. Universidad de Puerto Rico en PonceCiencias ComputadorasModulo instruccional de Arreglos Prof. Janice Santiago SICI 3011
2. Contenido Capitulo 1 Concepto arreglo Declarar un arreglo Declarar arreglos asignándole valores Uso de ReDim Uso de la cláusula Erase Capitulo 3 Listas ordenadas y no ordenadas Uso del MERGE Sortear “BubbleSort” Capitulo 2
6. Ejemplo #1 Para evaluar las notas para 30 estudiantes y calcular el promedio mostrando los nombres de los estudiantes cuyas puntuaciones están sobre el promedio. Se puede colocar 30 nombres de estudiantes y sus respectivas puntuaciones en un archivo de texto. El código sin arreglo resulta un poco extenso y poco eficiente por lo que la mejor solución para este ejercicio es crear Arreglos (“Arrays”).
7. Codigo sin arreglo de ejemplo #1 Dim student1 As String, score1 As Double Dim student2 As String, score2 As Double Dim student3 As String, score3 As Double . . Dim student30 As String, score30 As Double 'Analyze exam grades Dim sr As IO.StreamReader = IO.File.OpenText("SCORES.TXT") student1 = sr.ReadLine score1 = CDbl(sr.ReadLine) student2 = sr.ReadLine score2 = CDbl(sr.ReadLine) . . student30 = sr.ReadLine score30 = CDbl(sr.ReadLine) sr.Close() 'Compute the average grade . . 'Display names of above average students . .
8. Declarando un arreglo Basado en el ejemplo anterior, las variables se definen como : student(0), student(1), student(2), student(3), ..., student(29) y score(0), score(1), score(2), score(3), ..., score(29) Los números dentro de los paréntesis se llaman subscriptscada variable individual se llaman elementos. Es por ello que student(3) es el cuarto subscript del arreglo student( ). A los elementos de un arreglo se le asignan espacios en memoria consecutivas.
9. Si arrayName es el nombre del arreglo y n es un literal de tipo entero, una variable, o expresión declaramos: DimarrayName(n) As TipoDeDato Reserva espacio en memoria para almacenar los valores: arrayName(0), arrayName(1), arrayName(2), ..., arrayName(n). Donde n es el enlace superior del arreglo. El número de elementos en el arreglo, n + 1, es el tamaño del arreglo. Todos los subscripts deben tener el mismo tipo de dato. Ejemplo: Dim score(29) As Double Dim score(29) As Double
10. Podemos asignarle valores a cada variable con la instrucción de asignación y mostrar el resultado en los objetos como por ejemplo textbox o listbox. El valor inicial de las variables del arreglo es 0 a menos que se le asigne un valor. La siguiente instrucción asigna 0 a todos los elementos del arreglo. Dim score(29) As Double Las instrucciones: score(0) = 87 score(1) = 92,le asignan los valores 87 y 92 a los elementos cero y uno del arreglo respectivamente.
11. Al igual que cualquier variable, los arreglos pueden ser declarados y asignarle un valor inicial al mismo tiempo. Porejemplo: Dim arrayName() As varType = {value0, value1, value2, ..., valueN} Dim teamName() As String = {"Packers", "Packers", "Jets", "Chiefs"} Puede declarar un arreglo sin especificar el tamaño del mismo. Por ejemplo: DimarrayName() As varitype Después que un arreglo ha sido declarado, su tamaño (NO el tipo de dato) puede ser cambiado. El tipo de dato no es necesario especificarlo. Por ejemplo: ReDimarrayName(m)
12. Visual Basic permite que se declare el arreglo sin especificar su tamaño ya que se puede usar la cláusula ReDim para establecer el parámetro, en este caso el tamaño del arreglo. La desventaja de utilizar el ReDim es que el contenido del arreglo se pierde; es decir, realiza un resetdel contenido del arreglo al momento de ser ejecutada la instrucción que contiene el ReDim. Ahora bien, esto se puede mejorar si utilizamos la cláusula Preserve en la instrucción. Por ejemplo: ReDim Preserve arrayName(m) Importante: Los arreglos requieren de largos bloques en memoria para almacenar su contenido. Es por ello, que una buena práctica es eliminar el arreglo si el mismo no será utilizado nuevamente. La instrucción para eliminar un arreglo es: Erase arrayname