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.

6.2. Instrucciones de selección 91<br />

Si, por el contrario, se desea forzar esa construcción de modo que sea interpretada<br />

<strong>en</strong> contra del conv<strong>en</strong>io, <strong>en</strong>tonces se puede usar un par begin-<strong>en</strong>d para<br />

aislar la instrucción if anidada del sigui<strong>en</strong>te modo:<br />

if C1 th<strong>en</strong> begin if C2 th<strong>en</strong> I2 <strong>en</strong>d else I3<br />

Otro modo de lograr la misma interpretación consiste <strong>en</strong> añadir la rama else<br />

con una instrucción vacía, esto es<br />

if C1 th<strong>en</strong> if C2 th<strong>en</strong> I2 else else I3<br />

❡❡ En la explicación del conv<strong>en</strong>io sobre la interpretación del anidami<strong>en</strong>to de<br />

instrucciones if se ha escrito el código linealm<strong>en</strong>te, <strong>en</strong> lugar de usar un formato<br />

vertical (con sangrado), para recordar al programador que la semántica<br />

de <strong>Pascal</strong> es indep<strong>en</strong>di<strong>en</strong>te del formato que se dé al código. Es conv<strong>en</strong>i<strong>en</strong>te<br />

recordar que el sangrado sólo sirve para ayudar a algui<strong>en</strong> que vaya a leer el<br />

programa, pero no indica nada al compilador.<br />

Por ejemplo, <strong>en</strong> relación con la observación anterior, un programador poco<br />

experim<strong>en</strong>tado podría escribir la instrucción (6.1) d<strong>en</strong>tro de un programa del<br />

sigui<strong>en</strong>te modo<br />

if C1 th<strong>en</strong><br />

if C2 th<strong>en</strong><br />

I2<br />

else<br />

I3 {¡¡Cuidado!!}<br />

interpretando erróneam<strong>en</strong>te que la rama else está ligada con el primer if. Como<br />

consecu<strong>en</strong>cia, obt<strong>en</strong>dría un programa sintácticam<strong>en</strong>te correcto que arrojaría resultados<br />

imprevisibles debido a la interpretación incorrecta, por parte del programador,<br />

del anidami<strong>en</strong>to de instrucciones if. La solución del problema reside<br />

<strong>en</strong> “forzar” la interpretación del anidami<strong>en</strong>to para que el compilador <strong>en</strong>ti<strong>en</strong>da lo<br />

que el programador t<strong>en</strong>ía <strong>en</strong> m<strong>en</strong>te, esto sería escribir<br />

if C1 th<strong>en</strong> begin<br />

if C2 th<strong>en</strong><br />

I2<br />

<strong>en</strong>d<br />

else<br />

I3<br />

o bi<strong>en</strong><br />

if C1 th<strong>en</strong><br />

if C2 th<strong>en</strong><br />

I2<br />

else<br />

else<br />

I3<br />

Con frecu<strong>en</strong>cia, aunque no siempre, puede evitarse el anidami<strong>en</strong>to para elegir<br />

<strong>en</strong>tre más de dos opciones, pues para ello se dispone de la instrucción de selección<br />

múltiple case, que permite elegir <strong>en</strong>tre un número arbitrario de opciones con una<br />

sintaxis mucho más clara que la que se obti<strong>en</strong>e al anidar instrucciones if.

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

Saved successfully!

Ooh no, something went wrong!