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.

166 Capítulo 8. Procedimi<strong>en</strong>tos y funciones<br />

Supongamos, <strong>en</strong> primer lugar, que esta variable ti<strong>en</strong>e un valor que le ha sido<br />

asignado previam<strong>en</strong>te <strong>en</strong> el programa, por ejemplo 10, y a continuación esta<br />

variable es pasada como parámetro al procedimi<strong>en</strong>to Write. Este procedimi<strong>en</strong>to<br />

recibe el valor de a y lo escribe <strong>en</strong> la pantalla. La acción de Write no modifica<br />

el valor de a, que sigue si<strong>en</strong>do 10.<br />

El proceso seguido es el sigui<strong>en</strong>te:<br />

a:= 10;<br />

{a = 10}<br />

Write(a) {aparece el valor de a <strong>en</strong> la pantalla}<br />

{a = 10}<br />

En cambio, supongamos ahora que utilizamos el procedimi<strong>en</strong>to Read con la<br />

misma variable a, y que el usuario escribe por el teclado un valor distinto al que<br />

t<strong>en</strong>ía a, por ejemplo 20. Como consecu<strong>en</strong>cia de la llamada, el valor de la variable<br />

a es modificado, de 10 a 20.<br />

Esquemáticam<strong>en</strong>te t<strong>en</strong>emos que:<br />

a:= 10;<br />

{a = 10}<br />

Read(a) {el usuario da el valor 20 por el teclado}<br />

{a = 20}<br />

Estas difer<strong>en</strong>cias se deb<strong>en</strong> a que <strong>en</strong> <strong>Pascal</strong> exist<strong>en</strong> dos formas de pasar<br />

parámetros que se difer<strong>en</strong>cian <strong>en</strong> la forma <strong>en</strong> que se sustituy<strong>en</strong> los parámetros<br />

formales por los reales al efectuarse la llamada. Estos mecanismos se conoc<strong>en</strong><br />

como:<br />

• Parámetros por valor:<br />

En este caso, se calcula el valor de los parámetros reales y después se<br />

copia su valor <strong>en</strong> los formales, por lo tanto los parámetros reales deb<strong>en</strong> ser<br />

expresiones cuyo valor pueda ser calculado. Este mecanismo se llama paso<br />

de parámetros por valor y ti<strong>en</strong>e como consecu<strong>en</strong>cia que, si se modifican los<br />

parámetros formales <strong>en</strong> el cuerpo del subprograma, los parámetros reales<br />

no se v<strong>en</strong> afectados.<br />

Dicho de otra forma, no hay transfer<strong>en</strong>cia de información desde el subprograma<br />

al programa <strong>en</strong> el punto de su llamada. Por lo tanto, los parámetros<br />

por valor actúan sólo como datos de <strong>en</strong>trada al subprograma.<br />

• Parámetros por refer<strong>en</strong>cia (o por dirección o por variable):<br />

En este otro caso, se hac<strong>en</strong> coincidir <strong>en</strong> el mismo espacio de memoria los<br />

parámetros reales y los formales, luego los parámetros reales han de ser

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

Saved successfully!

Ooh no, something went wrong!