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.

16.2. Aplicaciones no recursivas de los punteros 347<br />

de dos compon<strong>en</strong>tes de tipo real y un tipo dinámico tApPunto que señalará al<br />

tipo punto, además se necesitarán dos variables distancia y angulo para leer<br />

los valores de la distancia y el ángulo del salto, una de tipo punto para el orig<strong>en</strong><br />

del salto y otra de tipo tApPunto para el punto de destino.<br />

type<br />

tPunto = record<br />

x, y: real<br />

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

tApPunto = ^tPunto;<br />

var<br />

angulo, distancia: real;<br />

orig<strong>en</strong>: tPunto;<br />

pDestino: tApPunto;<br />

El cálculo del punto final se puede realizar mediante la definición (y posterior<br />

aplicación) de una función. Ésta t<strong>en</strong>dría que devolver un punto, formado por<br />

dos coord<strong>en</strong>adas; dado que esto no es posible, se devolverá un puntero al tipo<br />

tPunto (de ahí la necesidad del tipo tApPunto). D<strong>en</strong>tro de la función utilizaremos<br />

el puntero pPun para g<strong>en</strong>erar la variable apuntada y realizar los cálculos,<br />

asignándolos finalm<strong>en</strong>te a Destino para devolver el resultado de la función. La<br />

definición de la función es absolutam<strong>en</strong>te directa:<br />

function Destino(orig: tPunto; ang, dist: real): tApPunto;<br />

var<br />

pPun: tApPunto;<br />

begin<br />

New(pPun);<br />

pPun^.x:= orig.x + dist * Cos(ang);<br />

pPun^.y:= orig.y + dist * Sin(ang);<br />

Destino:= pPun<br />

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

Finalm<strong>en</strong>te, si se añad<strong>en</strong> los procedimi<strong>en</strong>tos de lectura de datos y escritura<br />

de resultados t<strong>en</strong>emos el sigui<strong>en</strong>te programa:<br />

Program Salto (input, output);<br />

type<br />

tPunto = record<br />

x, y: real<br />

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

tApPunto = ^tPunto;

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

Saved successfully!

Ooh no, something went wrong!