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.

8.6. Otras recom<strong>en</strong>daciones sobre el uso de parámetros 183<br />

begin<br />

estado:= True;<br />

WriteLn(Fea(1), ’ ’, Fea(1));<br />

WriteLn(Fea(2), ’ ’, Fea(2));<br />

WriteLn(Fea(Fea(5)))<br />

<strong>en</strong>d. {ConDefectos}<br />

La salida obt<strong>en</strong>ida al ejecutar el programa es la sigui<strong>en</strong>te:<br />

1 3<br />

2 5<br />

11<br />

Como puede apreciarse, sucesivas llamadas con los mismos parámetros devuelv<strong>en</strong><br />

resultados difer<strong>en</strong>tes al estar ligados al valor de variables externas.<br />

Una bu<strong>en</strong>a costumbre (posible <strong>en</strong> Turbo <strong>Pascal</strong>) es definir las variables después<br />

de los subprogramas. Así se evita el peligro de producir efectos laterales.<br />

8.6 Otras recom<strong>en</strong>daciones sobre el uso de<br />

parámetros<br />

8.6.1 Parámetros por valor y por refer<strong>en</strong>cia<br />

Se recomi<strong>en</strong>da emplear parámetros por valor siempre que sea posible (asegurando<br />

que los argum<strong>en</strong>tos no se alteran) y reservar los parámetros por refer<strong>en</strong>cia<br />

para aquellos casos <strong>en</strong> que sea necesario por utilizarse como parámetros de salida.<br />

Cuando se trabaja sobre datos estructurados grandes, como pued<strong>en</strong> ser vectores<br />

o matrices (véase el capítulo 12), puede estar justificado pasar dichas estructuras<br />

por refer<strong>en</strong>cia, aunque solam<strong>en</strong>te se utilic<strong>en</strong> como parámetros de <strong>en</strong>trada,<br />

porque de esta forma no hay que duplicar el espacio <strong>en</strong> la memoria para copiar<br />

la estructura local, sino que ambas compart<strong>en</strong> la misma posición de memoria.<br />

También se ahorra el tiempo necesario para copiar de la estructura global a la<br />

local. Algunos compiladores modernos dispon<strong>en</strong> de mecanismos de optimización<br />

que detectan los parámetros por valor no modificados <strong>en</strong> los subprogramas, evitando<br />

el gasto innecesario de tiempo y memoria invertido <strong>en</strong> efectuar su copia.<br />

Ello evita al programador alterar el mecanismo de paso, mant<strong>en</strong>iéndolo por valor<br />

(lo que refleja el comportami<strong>en</strong>to del programa, que deja intacto al argum<strong>en</strong>to)<br />

y a la vez se lleva a cabo efici<strong>en</strong>tem<strong>en</strong>te, usando el mecanismo de refer<strong>en</strong>cia.<br />

8.6.2 Parámetros por refer<strong>en</strong>cia y funciones<br />

En <strong>Pascal</strong>, tanto los procedimi<strong>en</strong>tos como las funciones pued<strong>en</strong> utilizar parámetros<br />

por valor y por refer<strong>en</strong>cia. Sin embargo la utilización de los parámetros

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

Saved successfully!

Ooh no, something went wrong!