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.

10.5. Recursión mutua 223<br />

<strong>en</strong> segundo lugar es predeclarado, escribi<strong>en</strong>do su <strong>en</strong>cabezami<strong>en</strong>to seguido por<br />

forward, y por lo tanto es reconocido <strong>en</strong> el subprograma definido <strong>en</strong> primer<br />

lugar. Al definir el segundo subprograma no es necesario repetir sus parámetros.<br />

El esquema de implem<strong>en</strong>tación <strong>en</strong> <strong>Pascal</strong> de dos procedimi<strong>en</strong>tos mutuam<strong>en</strong>te<br />

recursivos es el sigui<strong>en</strong>te:<br />

procedure Segundo(parámetros); forward;<br />

procedure Primero(parámetros);<br />

...<br />

begin {Primero}<br />

...<br />

Segundo (...)<br />

...<br />

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

procedure Segundo(parámetros);<br />

...<br />

begin {Segundo}<br />

...<br />

Primero (...)<br />

...<br />

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

A continuación se muestra un ejemplo <strong>en</strong> el que se aplica el concepto de<br />

recursión mutua. Se trata de un programa que comprueba el correcto equilibrado<br />

de paréntesis y corchetes <strong>en</strong> expresiones introducidas por el usuario. 6 Así, si se<br />

da como <strong>en</strong>trada la expresión [3 ∗ (2 + 1) − 5] + 7, el programa debe dar un<br />

m<strong>en</strong>saje que indique que los paréntesis y los corchetes están equilibrados, y, <strong>en</strong><br />

cambio, si la <strong>en</strong>trada proporcionada por el usuario es la expresión (a+[b∗5)−c],<br />

debe dar al m<strong>en</strong>os un m<strong>en</strong>saje de error <strong>en</strong> el equilibrado.<br />

Con este objetivo, un primer paso <strong>en</strong> el diseño del programa Equilibrado<br />

puede ser:<br />

repetir<br />

Leer carácter c<br />

<strong>en</strong> caso de que c sea<br />

‘(‘: Cerrar paréntesis<br />

‘)‘: Tratar paréntesis de cierre<br />

‘[‘: Cerrar corchete<br />

‘]‘: Tratar corchete de cierre<br />

hasta fin de la <strong>en</strong>trada<br />

6 Se considera que la expresión vi<strong>en</strong>e dada <strong>en</strong> una sola línea del input, para simplificar la<br />

codificación.

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

Saved successfully!

Ooh no, something went wrong!