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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

374 Capítulo 17. Estructuras de datos recursivas<br />

17.3.3 Aplicación: gestión de la caja de un supermercado<br />

Con la ayuda del tipo cola se pres<strong>en</strong>ta a continuación un programa de simulación<br />

del flujo de cli<strong>en</strong>tes <strong>en</strong> una caja de supermercado.<br />

Una cantidad prefijada de cli<strong>en</strong>tes se va incorporando a la cola <strong>en</strong> instantes<br />

discretos con una cierta probabilidad también fijada de antemano; 5 cada cli<strong>en</strong>te<br />

lleva un máximo de artículos, de forma que cada artículo se contabiliza <strong>en</strong> una<br />

unidad de tiempo. Cuando a un cli<strong>en</strong>te le han sido contabilizados todos los<br />

artículos, es eliminado de la cola. En cada instante se muestra el estado de la<br />

cola.<br />

Un primer esbozo <strong>en</strong> seudocódigo de este programa sería el sigui<strong>en</strong>te:<br />

Leer valores iniciales<br />

Iniciar contadores<br />

repetir<br />

Mostrar la cola<br />

Procesar cli<strong>en</strong>te <strong>en</strong> caja<br />

Procesar cli<strong>en</strong>te <strong>en</strong> cola<br />

hasta que se acab<strong>en</strong> los cli<strong>en</strong>tes y los artículos<br />

La lectura de los valores iniciales consiste <strong>en</strong> pedir al usuario del programa el<br />

número de cli<strong>en</strong>tes, numCli<strong>en</strong>tes, la probabilidad de que aparezca un cli<strong>en</strong>te por<br />

unidad de tiempo, probLlegada, y el número máximo de artículos por cli<strong>en</strong>te,<br />

maxArti. Tras definir los valores iniciales de los contadores de tiempo t, y de<br />

cli<strong>en</strong>tes puestos <strong>en</strong> cola, contCli<strong>en</strong>tes, sólo hay que refinar las acciones del bucle<br />

del diseño anterior. Así, <strong>en</strong> un nivel de diseño más detallado Procesar cli<strong>en</strong>te <strong>en</strong><br />

caja se descompondría <strong>en</strong><br />

si el cli<strong>en</strong>te ya no ti<strong>en</strong>e artículos <strong>en</strong>tonces<br />

Retirarlo de la cola<br />

<strong>en</strong> otro caso<br />

Reducir el número de artículos del cli<strong>en</strong>te<br />

Mi<strong>en</strong>tras que el refinami<strong>en</strong>to de Procesar cli<strong>en</strong>te <strong>en</strong> cola sería<br />

si quedan cli<strong>en</strong>tes y random < probabilidad prefijada <strong>en</strong>tonces<br />

Añadir un cli<strong>en</strong>te e increm<strong>en</strong>tar el contador de cli<strong>en</strong>tes<br />

A partir del refinami<strong>en</strong>to anterior ya podemos pasar a la implem<strong>en</strong>tación <strong>en</strong><br />

<strong>Pascal</strong> de este programa.<br />

5 Para incluir factores de aleatoriedad se hace uso de Randomize y Random de Turbo <strong>Pascal</strong><br />

(véase el apartado A.2.1).

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

Saved successfully!

Ooh no, something went wrong!