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.

19.2. Un ejemplo completo 429<br />

19.2 Un ejemplo completo<br />

Es conv<strong>en</strong>i<strong>en</strong>te concretar todas estas ideas mediante un ejemplo: como se vio<br />

<strong>en</strong> el apartado 11.3, la repres<strong>en</strong>tación de conjuntos <strong>en</strong> <strong>Pascal</strong> ti<strong>en</strong>e una fuerte<br />

limitación <strong>en</strong> cuanto al valor máximo del cardinal de los conjuntos repres<strong>en</strong>tados<br />

(por ejemplo, <strong>en</strong> Turbo <strong>Pascal</strong> el cardinal máximo de un conjunto es 256). En<br />

el sigui<strong>en</strong>te ejemplo, se pret<strong>en</strong>de repres<strong>en</strong>tar conjuntos sin esta restricción. Posteriorm<strong>en</strong>te,<br />

se utilizarán estos conjuntos ilimitados <strong>en</strong> un programa que escriba<br />

los números primos m<strong>en</strong>ores que uno dado por el usuario, usando el conocido<br />

método de la criba de Eratóst<strong>en</strong>es (véase el apartado 11.3.3). La idea de la<br />

repres<strong>en</strong>tación es disponer de un conjunto inicial con todos los <strong>en</strong>teros positivos<br />

m<strong>en</strong>ores que el valor introducido por el usuario e ir eliminando del conjunto<br />

aquellos números que se vaya sabi<strong>en</strong>do que no son primos. De acuerdo con esta<br />

descripción, una primera etapa de diseño del programa podría ser:<br />

Leer cota ∈ IN<br />

G<strong>en</strong>erar el conjunto inicial, {2, . . . , cota}<br />

Eliminar los números no primos del conjunto<br />

Escribir los números del conjunto<br />

Detallando un poco más cada una de esas acciones, se ti<strong>en</strong>e: G<strong>en</strong>erar el<br />

conjunto inicial se puede desarrollar así:<br />

Crear un conjunto vacío primos<br />

Añadir a primos los naturales de 2 a cota<br />

Para Eliminar los números no primos del conjunto, basta con lo sigui<strong>en</strong>te:<br />

para cada elem<strong>en</strong>to e∈conjunto, <strong>en</strong>tre 2 y √ cota<br />

Eliminar del conjunto todos los múltiplos de e<br />

En un nivel de refinami<strong>en</strong>to inferior, se puede conseguir Eliminar del conjunto<br />

todos los múltiplos de e de la sigui<strong>en</strong>te forma:<br />

coefici<strong>en</strong>te:= 2;<br />

repetir<br />

Eliminar e * coefici<strong>en</strong>te del conjunto<br />

coefici<strong>en</strong>te:= coefici<strong>en</strong>te + 1<br />

hasta que e * coefici<strong>en</strong>te sea mayor que cota<br />

Finalm<strong>en</strong>te, Escribir los números del conjunto no pres<strong>en</strong>ta problemas y se<br />

puede hacer con un simple recorrido de los elem<strong>en</strong>tos del conjunto.

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

Saved successfully!

Ooh no, something went wrong!