Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARREGLOS
Después de la intuición de algunas proposiciones simples, cuando sacamos de ellas otra conclusión, es útil recorrer las
mismas proposiciones en un movimiento continuo y completamente ininterrumpido del pensamiento, reflexionar en sus
diversas relaciones mutuas y concebir de manera distinta varias de ellas a la vez, en la medida de lo posible; de esta
manera, en efecto, nuestro conocimiento se hace mucho más cierto y se aumenta sobre todo la extensión de nuestro
espíritu.
René Descartes – Reglas para la dirección de la mente – Regla XI - 1628.
Un arreglo, al igual que un registro, permite el almacenamiento de más de un dato en una misma variable a la vez, pero a
diferencia de éste, restringe este almacenamiento a datos del mismo tipo, siendo tal tipo cualquiera de los que ofrece Pascal,
con algunas excepciones. Así, elementos tales como: vectores, matrices y determinantes, listas y tablas pueden ser
manipulados tanto a nivel de cada uno de sus componentes o como toda una unidad, lo que agrega al programador un
conjunto aún mayor de posibilidades para el procesamiento ordenado de la información.
13.1 Composición X
Dado que es un tipo estructurado, el arreglo ofrece la 12.34 0.58 -5.2 108.1 -0.093
posibilidad de manipular un conjunto de datos como un
colectivo a la vez que permite el acceso a cada uno de Esta representación está incompleta. Para acceder a cada
esos datos individualmente. Los tipos registro y objeto elemento individual de este arreglo es necesario, como ya
también lo hacen, por lo que conviene saber cuáles son se dijo, un índice. Éste funciona de manera similar al
las principales características que los diferencian de éste: índice con el que se accede a cada caracter individual de
– Los tipos registro y objeto permiten el una cadena o al índice de un vector, de modo que, por
almacenamiento, en una misma variable y a la vez, ejemplo, el arreglo mostrado podría aparecer así:
de elementos de distinto tipo. En un arreglo, estos
elementos deben ser del mismo tipo.
X
– Para acceder a cada elemento individualmente, los
tipos registro y objeto utilizan la notación de punto. 12.34 0.58 -5.2 108.1 -0.093
El tipo arreglo utiliza un índice. 1 2 3 4 5
Para ilustrar la composición de un arreglo se puede usar En esta condición, se dice entonces que x1 = 12.34, x2 =
una representación ya conocida. En un capítulo anterior 0.58, x3 = -5.2, x4 = 108.1 y x5 = -0.093, muy parecido a la
se utilizó el esquema mostrado en el siguiente ejemplo notación vectorial usada en matemáticas. En Pascal, los
para representar una variable numérica y su contenido: subíndices se escriben entre corchetes. Así por ejemplo,
para ingresar por asignación el primer valor del arreglo,
X
se escribiría x[1]:=12.34;
12.34
Ejemplo 13-1
El siguiente segmento de programa imprime, en una aplicación
X
tipo cónsola, los elementos de un arreglo como el de los
ejemplos anteriores: una variable de nombre x que almacena 12.34 0.58 -5.2 108.1 -0.093
cinco valores numéricos:
‘a’ ‘b’ ‘c’ ‘d’ ‘e’
For i:=1 to 5 do
Writeln(x[i]); Observe que el primer elemento del primer ejemplo se
llamaría X[-2] y el del segundo, X['a']. Cuándo se
Observe entonces, que cuando la variable de control i toma el llama de una manera o de otra, queda determinado en la
valor 1, se imprime x[1], cuando toma el valor 2, se imprime declaración del tipo.
x[2], etc. Si se quisiera imprimir el arreglo en orden inverso,
No Confunda el valor del índice con el
es decir del quinto elemento al primero, se podría escribir: ► IMPORTANTE valor almacenado en la casilla. Ambos son
totalmente independientes a menos que el programador indique
For i:=1 to 5 do
lo contrario. De hecho, observe que el índice puede ser de un
Writeln(x[6-i]); tipo y el valor almacenado puede ser de otro totalmente distinto.
Y:=X[1]+Z[1]; 1 2 3 4 5
pueden ser visualizados fácilmente. Observe la siguiente tendrá el arreglo y cómo se llamará cada elemento, es
figura, en ella se muestra un arreglo de 3 filas por 4 decir, qué valores tomará el índice. En la misma
columnas por 5 páginas, llamado BOX: declaración, el segundo TIPO se refiere al tipo de los
elementos que almacenarán las casillas. Por ejemplo,
observe la siguiente declaración:
Type TA1 = Array[1..10] of Extended;
Otra consideración respecto de los rangos indica que el Así mismo, un arreglo puede ser campo de un registro,
rango puede estar formado no sólo por valores sino como se muestra en el siguiente ejemplo:
también por constantes: lo importante es que, al momento Type TR2 = Record
de la compilación, las constantes tengan definido un Nombre, Apellido: String;
valor, tal como se aprecia en el siguiente ejemplo, el cual Cedula: Integer;
está formado por una declaración válida:
Nota: Array[1..10] of Integer;
Const N = 100; End;
Type TVX = Array[0..N] of Double; Si quisiera imprimir el contenido de una variable de
Lo que no acepta Pascal es el uso de variables como nombre Alumno y del tipo TR2, se escribiría:
extremos de un rango, aun cuando estas tengan un valor Writeln(Alumno.Nombre);
al momento de compilar, por ejemplo: Writeln(Alumno.Apellido);
Var N: Integer = 10; Writeln(Alumno.Cedula);
For i:=1 to 10 do Writeln(Alumno.Nota[i]);
Type TVY: Array[1..N] of String;
no está permitido.
Otra manera de declarar la existencia de un arreglo es
Ejemplo 13-4
declarando una variable tipo arreglo sin declarar el tipo, Dadas las siguientes declaraciones:
de modo similar al que se hace con los registros: Type TR2 = Record
Nombre, Apellido: String;
VAR Cedula: Integer;
Nota: Array[1..10] of Integer;
NOMBRE DE VARIABLE : ARRAY [RANGO] OF TIPO; End;
DOS PUNTOS Datos = Array[1..1000] of TR2;
Var Seccion: Datos;
Por ejemplo, las siguientes declaraciones son válidas: i,k: Integer;
Observe la existencia de un arreglo –Seccion– cuyos
Var V1: Array[0..50] of Integer;
componentes son registros, en cuyos campos se incluye otro
V2: Array[-20..20] of String; arreglo. El siguiente segmento de programa imprime, en una
aplicación tipo cónsola, los elementos del arreglo Seccion de
En este caso se declaran dos variables tipo arreglo cuyos la siguiente manera: un dato por cada línea excepto las notas de
tipos no están identificados. cada registro las cuales se imprimen en la misma línea:
Como ya se dijo, los elementos de un arreglo pueden ser,
con algunas excepciones, de cualquier tipo; ello incluye For i:=1 to 1000 do
al tipo registro. Así, la siguiente es una declaración Begin
Writeln(Seccion[i].Nombre);
válida: Writeln(Seccion[i].Apellido);
Type TRec1 = Record Writeln(Seccion[i].Cedula);
Nombre, Apellido: String; For k:=1 to 10 do
Cedula: Integer; Write(Seccion[i].Nota[k]:4);
Writeln;
End; End;
Datos = Array[1..1000] of TRec1;
Observe que los elementos del arreglo son, cada uno, un La declaración de un tipo arreglo multidimensional se
registro, es decir, que cada casilla almacena en este caso escribe de la siguiente manera:
tres datos: un nombre, un apellido y una cédula, por lo
que se puede afirmar que este arreglo almacena 3000 TYPE
datos. Para acceder a cada campo de registro hay que NOMBRE DEL TIPO =
utilizar combinadamente el índice y la notación de punto.
Así, por ejemplo, para imprimir los valores almacenados ARRAY [RANGO 1, RANGO 2,….,RANGO N ] OF TIPO;
en una variable de nombre XX del tipo Datos, se
En esta declaración, la cantidad de RANGOS determina la
escribiría:
dimensionalidad del arreglo, es decir, la cantidad de
For i:=1 to 1000 do índices necesarios para ubicar cada elemento del mismo.
Begin Por lo general, todos los rangos son del mismo tipo, como
Writeln(XX[i].Nombre); en el siguiente ejemplo:
Writeln(XX[i].Apellido); Type TM1 = Array[1..10,1..5] of String;
Writeln(XX[i].Cedula);
Aquí se está declarando un tipo arreglo de 10 filas y 5
End; columnas, es decir, de 50 elementos, cuyas filas están
Programación con Delphi Ing. José Ricardo Vargas
Cap.13: Arreglos Pag. 13-5