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.

482 Apéndice A. Aspectos complem<strong>en</strong>tarios<br />

A.1.3 Ejemplo 3: transformación de listas<br />

Una transformación frecu<strong>en</strong>te de las listas consiste <strong>en</strong> aplicar cierta función<br />

(g<strong>en</strong>érica) a todos sus elem<strong>en</strong>tos. Una implem<strong>en</strong>tación <strong>en</strong> <strong>Pascal</strong> de esta transformación<br />

es casi directa desarrollando un procedimi<strong>en</strong>to AplicarALista que<br />

t<strong>en</strong>ga como argum<strong>en</strong>tos la función a aplicar y la lista a transformar:<br />

procedure AplicarALista(function F(x: real): real;<br />

var lista: tListaR);<br />

{Efecto: aplica F a cada uno de los elem<strong>en</strong>tos de lista}<br />

var<br />

aux: tListaR;<br />

begin<br />

aux:= lista;<br />

while aux nil do begin<br />

aux^.valor:= F(aux^.valor);<br />

aux:= aux^.sigui<strong>en</strong>te<br />

<strong>en</strong>d {while}<br />

<strong>en</strong>d; {AplicarALista}<br />

Donde los elem<strong>en</strong>tos de la lista deb<strong>en</strong> t<strong>en</strong>er un tipo conocido y fijo (<strong>en</strong> el<br />

ejemplo, real),<br />

type<br />

tListaR = ^tNodoR;<br />

tNodoR = record<br />

valor: real;<br />

sig: tListaR<br />

<strong>en</strong>d; {tNodoR}<br />

y éste debe ser el mismo antes y después de su transformación, por lo que la<br />

función convierte elem<strong>en</strong>tos de ese tipo <strong>en</strong> elem<strong>en</strong>tos del mismo. En este ejemplo<br />

la lista está formada por valores reales, por lo que también lo son el argum<strong>en</strong>to<br />

y el resultado de la función.<br />

Así, por ejemplo, la llamada AplicarALista(Sqr, listaDeReales) t<strong>en</strong>drá<br />

por efecto elevar al cuadrado todos los elem<strong>en</strong>tos de la lista listaDeReales.<br />

A.2 Variables aleatorias<br />

A m<strong>en</strong>udo es necesario construir programas <strong>en</strong> los que intervi<strong>en</strong>e el azar:<br />

este comportami<strong>en</strong>to indeterminista es inevitable con frecu<strong>en</strong>cia (por ejemplo,<br />

<strong>en</strong> procesos de muestreo), y otras veces es deseable (<strong>en</strong> programas relacionados<br />

con simulación, juegos, criptografía, etc.)

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

Saved successfully!

Ooh no, something went wrong!