Programación en Pascal/Arrays
De Wikilibros, la colección de libros de texto de contenido libre.
Los arrays son cadenas o listas de algo. Normalmente siempre serán del mismo tipo.
Hasta ahora, hemos visto un tipo de datos que es una cadena: los strings. Son cadenas de caracteres.
Los arrays son prácticamente imprescindibles en casi cualquier tipo de programa. De una forma u otra, todo programa necesita almacenar en memoria grandes cantidades de datos. Por ejemplo, un deditor de texto almacena caracteres; un programa de música datos de samples, un programa de conversión almacena datos del dato que va a convertir, un programa de video frames, un juego almacena sus características y escenas, y así con la práctica mayoría de los programas.
[editar] Declaración de un array
La organización "array" es, probablemente, la estructura de datos más conocida debido
a que en muchos lenguajes es la única disponible explícitamente.
Un "array" es una estructura homogénea que está constituida por componentes del
mismo tipo, llamado tipo base.
También se denomina estructura de acceso aleatorio, o acceso directo, porque todos sus
componentes pueden seleccionarse arbitrariamente y son igualmente accesibles. Para designar
a un componente aislado, el nombre de la estructura se amplía con el llamado índice de
selección del componente. El índice debe ser un valor del tipo definido como tipo índice del
array.
La definición de un tipo "array" T especifica un tipo base To y un tipo índice I.
TYPE T = ARRAY [ I ] OF To
'''Ejemplos:'''
TYPE vector = ARRAY [1..3] OF REAL
TYPE linea = ARRAY [1..80] OF CHAR
TYPE nombre = ARRAY [1..32] OF CHAR
Los índices de un "array" deben ser de tipo ordinal. No suele ser posible utilizar el tipo
INTEGER porque se excedería el espacio de memoria accesible. Para usar valores enteros
como índices, hay que indicar un subrango de enteros.
Un valor de tipo "array" se puede designar por un constructor donde se indica el nombre
del tipo y valores constantes de los componentes separados por comas y encerrados entre
paréntesis.
''' Ejemplo: ''' vector (2.57, 3.14, -8.16)
Para especificar un mismo valor a componentes consecutivos, se puede usar un factor
de repetición de la forma "n of valor"; donde "n" indica el número de componentes que
recibirán el mismo valor, y debe ser una expresión constante de tipo INTEGER. El "valor"
puede ser una constante u otro constructor del mismo tipo que el componente.
Ejemplos: vector (3 OF 1.0) es equivalente a vector (1.0,1.0,1.0)
vector (7.2, 2 OF 3.0)
Para seleccionar un componente individual de un "array" se usa un selector que consiste
en escribir el nombre de la variable de tipo "array" seguido por el nombre correspondiente al
componente, escrito entre corchetes.
'''Ejemplo: ''' si v := vector (2.57, 3.14, -8.16)
entonces v [1] es igual a 2.57.
Los componentes de un "array" se pueden someter a todas las operaciones permitidas
para su tipo. La única operación definida para el "array" como tal, es la asignación ( := ).
La forma habitual de operar con "arrays" es actualizar componentes aislados.
El hecho de que los índices tengan que ser de un tipo de datos definido tiene una
consecuencia importante: los índices pueden calcularse, es decir, puede ponerse una expresión
en lugar de una constante. La expresión debe evaluarse y su resultado determina el
componente seleccionado. Esta generalización proporciona una herramienta de programación
potente pero, al mismo tiempo, da ocasión a uno de los errores de programación más
frecuentes: el valor resultante puede estar fuera del intervalo especificado como campo de
variación de los índices. Se supone que en tales casos, la implementación en un equipo
concreto ha previsto la emisión de mensajes de error.
Los valores organizados en forma de "array" se suelen manejar utilizando índices
variables y sentencias repetitivas que permiten construir algoritmos para realizar tratamientos
sistemáticos.
Los índices son de tipo escalar, es decir, un tipo no estructurado en el que está definida
una relación de orden. Si el tipo base también está ordenado, entonces queda establecida una
relación de orden para ese tipo "array".
La relación de orden entre dos "arrays" está determinada por los dos componentes
desiguales, correspondientes, con menor índice.