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.

11.1. Tipos ordinales definidos por el programador 237<br />

Succ(dom) ❀ error (ya que no existe el sigui<strong>en</strong>te al último valor)<br />

Ord(jue) ❀ 3<br />

Como <strong>en</strong> todo tipo ordinal, salvo <strong>en</strong> el caso de los <strong>en</strong>teros, el número de ord<strong>en</strong><br />

comi<strong>en</strong>za siempre por cero.<br />

Observaciones sobre los tipos <strong>en</strong>umerados<br />

• Dado que los tipos <strong>en</strong>umerados son ordinales, se pued<strong>en</strong> utilizar como<br />

índices <strong>en</strong> instrucciones for:<br />

var<br />

d: tDiasSemana;<br />

· · ·<br />

for d:= lun to dom do<br />

· · ·<br />

• Pued<strong>en</strong> pasarse como parámetros <strong>en</strong> procedimi<strong>en</strong>tos y funciones. Incluso,<br />

por tratarse de un tipo simple, puede ser el resultado de una función:<br />

function DiaMannana(hoy: tDıasSemana): tDiasSemana;<br />

{Dev. el día de la semana que sigue a hoy}<br />

begin<br />

if hoy = dom th<strong>en</strong><br />

DiaMannana:= lun<br />

else<br />

DiaMannana:= Succ(hoy)<br />

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

• Los valores de un tipo <strong>en</strong>umerado no se pued<strong>en</strong> escribir directam<strong>en</strong>te.<br />

Para resolver este problema hay que emplear un procedimi<strong>en</strong>to con una<br />

instrucción case que escriba, según el valor de la variable del tipo <strong>en</strong>umerado,<br />

la cad<strong>en</strong>a de caracteres correspondi<strong>en</strong>te al id<strong>en</strong>tificador del valor. El<br />

código de dicho procedimi<strong>en</strong>to podría ser:<br />

procedure EscribirDiaSemana(dia: tDiasSemana);<br />

{Efecto: escribe <strong>en</strong> el output el nombre de dia}<br />

begin<br />

case dia of<br />

lun: WriteLn(’Lunes’);<br />

mar: WriteLn(’Martes’);<br />

· · ·

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

Saved successfully!

Ooh no, something went wrong!