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.

90 Capítulo 6. Instrucciones estructuradas<br />

El programa asigna a la variable feb el número de días del mes febrero, <strong>en</strong><br />

g<strong>en</strong>eral este número es 28 salvo para años bisiestos. 2<br />

❡❡ <br />

Obsérvese el uso de los puntos y comas <strong>en</strong> el ejemplo anterior: la instrucción<br />

de selección acaba tras la asignación feb:= 29 y, al estar <strong>en</strong> una secu<strong>en</strong>cia<br />

de acciones, se termina con punto y coma.<br />

Aunque, <strong>en</strong> principio, la instrucción if sólo permite seleccionar <strong>en</strong>tre dos<br />

alternativas, es posible usarla para realizar una selección <strong>en</strong>tre más de dos opciones:<br />

la idea consiste <strong>en</strong> el anidami<strong>en</strong>to, esto es, el uso de una instrucción if<br />

d<strong>en</strong>tro de una de las ramas th<strong>en</strong> o else de otra instrucción if. Como ejemplo<br />

supóngase que se quiere desarrollar un programa que asigne a cada persona una<br />

etiqueta <strong>en</strong> función de su altura (<strong>en</strong> cm), el sigui<strong>en</strong>te fragm<strong>en</strong>to de código realiza<br />

la selección <strong>en</strong>tre tres posibilidades: que la persona sea de estatura baja, media<br />

o alta.<br />

if altura < 155 th<strong>en</strong><br />

WriteLn(’Estatura Baja’)<br />

else if altura < 185 th<strong>en</strong><br />

WriteLn(’Estatura Media’)<br />

else<br />

WriteLn(’Estatura Alta’)<br />

En el segm<strong>en</strong>to anterior se asigna la etiqueta de estatura baja a qui<strong>en</strong> mida m<strong>en</strong>os<br />

de 155 cm, de estatura media a qui<strong>en</strong> esté <strong>en</strong>tre 156 y 185 cm y de estatura alta<br />

a qui<strong>en</strong> mida 186 cm o más.<br />

El anidami<strong>en</strong>to de instrucciones if puede dar lugar a expresiones del tipo<br />

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

que son de interpretación ambigua <strong>en</strong> el sigui<strong>en</strong>te s<strong>en</strong>tido: ¿a cuál de las dos<br />

instrucciones if pert<strong>en</strong>ece la rama else? En realidad, la ambigüedad sólo existe<br />

<strong>en</strong> la interpretación humana, ya que la semántica de <strong>Pascal</strong> es clara:<br />

El conv<strong>en</strong>io que se sigue para eliminar la ambigüedad consiste <strong>en</strong><br />

emparejar cada rama else con el th<strong>en</strong> “soltero” más próximo.<br />

Sigui<strong>en</strong>do el conv<strong>en</strong>io expuesto, la expresión anterior se interpreta sin ambigüedad<br />

como se indica a continuación:<br />

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

2 El criterio empleado para detectar si un año es o no bisiesto ha sido comprobar si el año es<br />

múltiplo de 4; esto no es del todo correcto, ya que de los años múltiplos de 100 sólo son bisiestos<br />

los múltiplos de 400.

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

Saved successfully!

Ooh no, something went wrong!