09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

260 Capítulo 12. Arrays<br />

12.1.2 Características g<strong>en</strong>erales de un array<br />

Además de las operaciones permitidas con un array y la forma de acceder<br />

a sus elem<strong>en</strong>tos, hay que destacar las sigui<strong>en</strong>tes características comunes al tipo<br />

array, indep<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te de su tamaño o de su dim<strong>en</strong>sión:<br />

• Los arrays son estructuras homogéneas, <strong>en</strong> el s<strong>en</strong>tido de que sus elem<strong>en</strong>tos<br />

compon<strong>en</strong>tes son todos del mismo tipo.<br />

• El tamaño del array queda fijado <strong>en</strong> la definición y no puede cambiar<br />

durante la ejecución del programa, al igual que su dim<strong>en</strong>sión. Así, el<br />

tamaño de cualquier variable del tipo<br />

type<br />

vector = array[1..3] of real;<br />

será de 3 elem<strong>en</strong>tos, mi<strong>en</strong>tras que su dim<strong>en</strong>sión será 1. Como estos valores<br />

no podrán variar, si necesitásemos utilizar un vector de IR 4 t<strong>en</strong>dríamos<br />

que definir otro tipo array con tamaño 4 y dim<strong>en</strong>sión 1.<br />

• Los datos de tipo array se pued<strong>en</strong> pasar como parámetro <strong>en</strong> procedimi<strong>en</strong>tos<br />

y funciones, pero el tipo que devuelve una función no puede ser un array<br />

(ya que un array es un tipo de datos compuesto). Para solucionar este<br />

problema, se debe utilizar un procedimi<strong>en</strong>to con un parámetro por variable<br />

de tipo array <strong>en</strong> vez de una función. Este parámetro adicional va a ser el<br />

resultado que pret<strong>en</strong>díamos devolver con la función (se incluy<strong>en</strong> ejemplos<br />

de esto <strong>en</strong> los apartados sigui<strong>en</strong>tes).<br />

Cuando los arrays son grandes y se pasan como parámetro por valor a los<br />

subprogramas, se duplica el espacio <strong>en</strong> memoria necesario para su almac<strong>en</strong>ami<strong>en</strong>to,<br />

puesto que hay que guardar el array original y la copia local<br />

(véase el apartado 8.2.3). Además, el proceso de copia requiere también<br />

un cierto tiempo, tanto mayor cuanto más grande es el array. Por estos<br />

motivos, cuando el array no se modifica <strong>en</strong> el cuerpo del subprograma,<br />

es aconsejable pasarlo como parámetro por refer<strong>en</strong>cia, pues de esta forma<br />

no hay duplicación de espacio ni tiempo ocupado <strong>en</strong> la copia (véase el<br />

apartado 8.6.1). En cualquier caso, el programador debe cuidar extremadam<strong>en</strong>te<br />

las ev<strong>en</strong>tuales modificaciones de esa estructura <strong>en</strong> el subprograma,<br />

ya que repercutirían <strong>en</strong> el parámetro real.<br />

Usualm<strong>en</strong>te, los arrays de una dim<strong>en</strong>sión se suel<strong>en</strong> d<strong>en</strong>ominar vectores, mi<strong>en</strong>tras<br />

que los de más de una dim<strong>en</strong>sión recib<strong>en</strong> el nombre g<strong>en</strong>érico de matrices.<br />

En los sigui<strong>en</strong>tes apartados se pres<strong>en</strong>tan algunas de sus particularidades.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!