Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. MODULE Miesiac (typ_roku)
  2. VAR miesiac : {styczen, luty, marzec, kwiecien, maj, czerwiec, lipiec, sierpien, wrzesien, pazdziernik, listopad, grudzien};
  3. VAR dzien : 1..32;
  4. VAR maxDni : 28..31;
  5. ASSIGN
  6. init(miesiac) := styczen;
  7. next(miesiac) := case
  8. miesiac = styczen & dzien = maxDni : luty;
  9. miesiac = luty & dzien = maxDni: marzec;
  10. miesiac = marzec & dzien = maxDni: kwiecien;
  11. miesiac = kwiecien & dzien = maxDni: maj;
  12. miesiac = maj & dzien = maxDni: czerwiec;
  13. miesiac = czerwiec & dzien = maxDni: lipiec;
  14. miesiac = lipiec & dzien = maxDni: sierpien;
  15. miesiac = sierpien & dzien = maxDni: wrzesien;
  16. miesiac = wrzesien & dzien = maxDni: pazdziernik;
  17. miesiac = pazdziernik & dzien = maxDni: listopad;
  18. miesiac = listopad & dzien = maxDni: grudzien;
  19. miesiac = grudzien & dzien = maxDni: styczen;
  20. TRUE : miesiac;
  21. esac;
  22. init(dzien) := 1;
  23. next(dzien) := case
  24. ((dzien + 1) <= maxDni) : dzien + 1;
  25. TRUE: 1;
  26. esac;
  27. init(maxDni) := 31;
  28. next(maxDni) := case
  29. next(miesiac) = styczen & dzien = maxDni: 31;
  30. next(miesiac) = luty & typ_roku = normalny & dzien = maxDni: 28;
  31. next(miesiac) = luty & typ_roku = przestepny & dzien = maxDni: 29;
  32. next(miesiac) = marzec & dzien = maxDni: 31;
  33. next(miesiac) = kwiecien & dzien = maxDni: 30;
  34. next(miesiac) = maj & dzien = maxDni: 31;
  35. next(miesiac) = czerwiec & dzien = maxDni: 30;
  36. next(miesiac) = lipiec & dzien = maxDni: 31;
  37. next(miesiac) = sierpien & dzien = maxDni: 31;
  38. next(miesiac) = wrzesien & dzien = maxDni: 30;
  39. next(miesiac) = pazdziernik & dzien = maxDni: 31;
  40. next(miesiac) = listopad & dzien = maxDni: 30;
  41. next(miesiac) = grudzien & dzien = maxDni: 31;
  42. TRUE : maxDni;
  43. esac;
  44.  
  45. MODULE Rok(miesiac, dzien)
  46. VAR rok : 1900..2018;
  47. VAR typ : { normalny, przestepny };
  48. ASSIGN
  49. init(typ) := normalny;
  50. next(typ) := case
  51. (((next(rok)) mod 4 = 0 & (next(rok)) mod 100 != 0) | (next(rok)) mod 400 = 0) : przestepny;
  52. TRUE : normalny;
  53. esac;
  54. init(rok) := 1900;
  55. next(rok) := case
  56. next(miesiac) = styczen & dzien = 31 & rok + 1 <= 2018: rok + 1;
  57. TRUE: rok;
  58. esac;
  59.  
  60. MODULE main
  61. VAR
  62. Rok: Rok(Miesiac.miesiac, Miesiac.dzien);
  63. Miesiac: Miesiac(Rok.typ);
  64. DEFINE
  65. ROK:= Rok.rok;
  66. TYP_ROKU:= Rok.typ;
  67. MIESIAC:= Miesiac.miesiac;
  68. MAX_DNI:= Miesiac.maxDni;
  69. DZIEN:= Miesiac.dzien;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement