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.

254 Capítulo 12. Arrays<br />

Consideremos los sigui<strong>en</strong>tes ejemplos <strong>en</strong> los que veremos la necesidad y la<br />

utilidad de usar el tipo de datos array:<br />

• Imaginemos que queremos calcular el producto escalar, u·v, de dos vectores<br />

u y v de IR 3 mediante la conocida fórmula: u · v = u1v1 + u2v2 + u3v3.<br />

Con los datos simples que conocemos hasta ahora, t<strong>en</strong>dríamos que definir<br />

una variable para cada una de las compon<strong>en</strong>tes de los vectores, es decir,<br />

algo parecido a:<br />

var<br />

u1, u2, u3, v1, v2, v3: real;<br />

y a la hora de calcular el producto escalar t<strong>en</strong>dríamos que realizar la operación:<br />

prodEscalar:= u1 * v1 + u2 * v2 + u3 * v3;<br />

Para este caso sería más natural disponer de una “variable estructurada”<br />

que agrupe <strong>en</strong> un solo objeto las compon<strong>en</strong>tes de cada vector. El tipo array<br />

de <strong>Pascal</strong> permite resolver este problema.<br />

• Imaginemos que una constructora acaba de finalizar un grupo de 12 bloques<br />

de pisos (numerados del 1 al 12), cada uno de los cuales ti<strong>en</strong>e 7 plantas<br />

(numeradas del 1 al 7) y <strong>en</strong> cada planta hay 3 vivi<strong>en</strong>das (A, B y C).<br />

Supongamos que el <strong>en</strong>cargado de v<strong>en</strong>tas quiere llevar un control lo más<br />

s<strong>en</strong>cillo posible sobre qué vivi<strong>en</strong>das se han v<strong>en</strong>dido y cuáles no. Para<br />

ello, podríamos utilizar 12 × 7 × 3 = 252 variables de tipo boolean de<br />

la forma: bloqueiPlantajLetraX asignándole un valor True para indicar<br />

que la vivi<strong>en</strong>da del bloque i, planta j, letra X está v<strong>en</strong>dida o bi<strong>en</strong> False<br />

para indicar que no lo está.<br />

En este caso, sería mucho más cómodo utilizar algún tipo de datos estructurado<br />

para almac<strong>en</strong>ar esta información de forma más compacta y manejable<br />

(por medio de instrucciones estructuradas). La estructura más adecuada<br />

sería la de una matriz tridim<strong>en</strong>sional: la primera dim<strong>en</strong>sión indicaría el<br />

número del bloque, la segunda dim<strong>en</strong>sión la planta, y la tercera la letra de<br />

la vivi<strong>en</strong>da. Así, para indicar que <strong>en</strong> el bloque 3, el piso 5 ō A está v<strong>en</strong>dido,<br />

asignaremos un valor True el elem<strong>en</strong>to que ocupa la posición [3,5,’A’] de<br />

este dato estructurado; mi<strong>en</strong>tras que si <strong>en</strong> el bloque 5, el 1 ō C sigue estando<br />

disponible, asignaremos un valor False a la posición [5,1,’C’].

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

Saved successfully!

Ooh no, something went wrong!