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.

266 Capítulo 12. Arrays<br />

El día 31 de diciembre de 1900 fue lunes<br />

Para todos los años del siglo hacer<br />

Para todos los meses del año hacer<br />

Asignar el día de la semana a cada día del mes<br />

donde, la acción Asignar el día de la semana a cada día del mes puede ser<br />

refinada <strong>en</strong> un nivel inferior de la sigui<strong>en</strong>te forma:<br />

Calcular cuántos días ti<strong>en</strong>e el mes<br />

Para todos los días del mes hacer<br />

asignar al día actual el mañana de ayer<br />

asignar a ayer el día actual<br />

Los bucles correspondi<strong>en</strong>tes a los años y los meses no pres<strong>en</strong>tan dificultad,<br />

sin embargo, los días del mes dep<strong>en</strong>d<strong>en</strong> del propio mes, y <strong>en</strong> el caso de febrero,<br />

de que el año sea o no bisiesto. Por eso hay que calcular CuantosDias ti<strong>en</strong>e el<br />

mes y para ello es necesario conocer el mes y el año.<br />

Durante el cálculo de CuantosDías se hará una llamada a EsBisiesto, una<br />

función que determina el número de días de febrero. 2 Se usa también una función<br />

Mannana para el cálculo correcto del día sigui<strong>en</strong>te, de forma que al domingo le<br />

siga el lunes.<br />

El programa completo es el sigui<strong>en</strong>te:<br />

Program AlmanaqueSigloXX (input,output);<br />

{Calcula el día de la semana correspondi<strong>en</strong>te a cada día del siglo XX}<br />

type<br />

tMeses = (<strong>en</strong>e, feb, mar, abr, may, jun, jul, ago, sep, oct,<br />

nov, dic);<br />

tDiasSemana = (lun, mat, mie, jue, vie, sab, dom);<br />

tAnnos = 1901..2000;<br />

tDiasMes = 1..31;<br />

tCal<strong>en</strong>darioSigloXX = array[tDıasMes, tMeses, tAnnos] of<br />

tDıasSemana;<br />

var<br />

almanaque: tCal<strong>en</strong>darioSigloXX;<br />

mes: tMeses;<br />

ayer: tDiasSemana;<br />

contAnnos: tAnnos;<br />

dias, contaDias: tDiasMes;<br />

2 En el desarrollo de esta función se t<strong>en</strong>drá <strong>en</strong> cu<strong>en</strong>ta que los años múltiplos de 100 no son<br />

bisiestos, salvo que sean múltiplos de 400.

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

Saved successfully!

Ooh no, something went wrong!