Calendar - for "REAL" programmers: Difference between revisions
Content added Content deleted
(remove Lua as Lua needs lower letters) |
(added FreeBASIC) |
||
Line 984: | Line 984: | ||
</pre> |
</pre> |
||
Actual lineprinters offer the opportunity of overprinting lines, so with underlines (and for overlines, an underline on the previous line) the appearance can be improved. Vertical bars can also be used, and more advanced lineprinters (IBM1403 etc. using the "TN" chain) or dot-matrix printers also supplied "corner" glyphs so that boxes would not have leaks. |
Actual lineprinters offer the opportunity of overprinting lines, so with underlines (and for overlines, an underline on the previous line) the appearance can be improved. Vertical bars can also be used, and more advanced lineprinters (IBM1403 etc. using the "TN" chain) or dot-matrix printers also supplied "corner" glyphs so that boxes would not have leaks. |
||
=={{header|FreeBASIC}}== |
|||
<lang freebasic>' VERSION 16-03-2016 |
|||
' COMPILE WITH: FBC -S CONSOLE |
|||
#IFNDEF TRUE ' DEFINE TRUE AND FALSE FOR OLDER FREEBASIC VERSIONS |
|||
#Define FALSE 0 |
|||
#Define TRUE NOT FALSE |
|||
#ENDIF |
|||
FUNCTION WD(M AS INTEGER, D AS INTEGER, Y AS INTEGER) AS INTEGER |
|||
' ZELLERISH |
|||
' 0 = SUNDAY, 1 = MONDAY, 2 = TUESDAY, 3 = WEDNESDAY |
|||
' 4 = THURSDAY, 5 = FRIDAY, 6 = SATURDAY |
|||
IF M < 3 THEN ' IF M = 1 OR M = 2 THEN |
|||
M += 12 |
|||
Y -= 1 |
|||
END IF |
|||
RETURN (Y + (Y \ 4) - (Y \ 100) + (Y \ 400) + D + ((153 * M + 8) \ 5)) MOD 7 |
|||
END FUNCTION |
|||
FUNCTION LEAPYEAR(Y AS INTEGER) AS INTEGER |
|||
IF (Y MOD 4) <> 0 THEN RETURN FALSE |
|||
IF (Y MOD 100) = 0 ANDALSO (Y MOD 400) <> 0 THEN RETURN FALSE |
|||
RETURN TRUE |
|||
END FUNCTION |
|||
' ------=< MAIN >=------ |
|||
' HARD CODED FOR 132 CHARACTERS PER LINE |
|||
DIM AS STRING WDN = "MO TU WE TH FR SA SU" ' WEEKDAY NAMES |
|||
DIM AS STRING MO(1 TO 12) => {"JANUARY", "FEBRUARY", "MARCH", "APRIL", _ |
|||
"MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", _ |
|||
"OCTOBER", "NOVEMBER", "DECEMBER"} |
|||
DIM AS STRING TMP1, TMP2, D(1 TO 12) |
|||
DIM AS UINTEGER ML(1 TO 12) => {31,28,31,30,31,30,31,31,30,31,30,31} |
|||
DIM AS UINTEGER I, I1, J, K, Y = 1969 |
|||
'SCREENRES 1080,600,8 |
|||
IF LEAPYEAR(Y) = TRUE THEN ML(2) = 29 |
|||
TMP1 = "" |
|||
FOR I = 1 TO 31 |
|||
TMP1 = TMP1 + RIGHT((" " + STR(I)), 3) |
|||
NEXT I |
|||
FOR I = 1 TO 12 |
|||
TMP2 = "" |
|||
J = WD(I,1, Y) |
|||
IF J = 0 THEN J = 7 |
|||
J = J - 1 |
|||
TMP2 = SPACE(J * 3) + LEFT(TMP1, ML(I) * 3) + SPACE(21) |
|||
D(I) = TMP2 |
|||
NEXT I |
|||
PRINT |
|||
TMP1 = "INSERT YOUR SNOOPY PICTURE HERE" |
|||
PRINT SPACE((132 - LEN(TMP1)) \ 2); TMP1 |
|||
PRINT |
|||
TMP1 = STR(Y) |
|||
PRINT SPACE((132 - LEN(TMP1)) \ 2); TMP1 |
|||
PRINT |
|||
' 6 MONTH ON A ROW |
|||
TMP2 = " " |
|||
FOR I = 1 TO 6 |
|||
TMP2 = TMP2 + WDN |
|||
IF I < 6 THEN TMP2 = TMP2 + " " |
|||
NEXT I |
|||
FOR I = 1 TO 12 STEP 6 |
|||
TMP1 = "" |
|||
FOR J = I TO I + 4 |
|||
TMP1 = TMP1 + LEFT(SPACE((22 - LEN(MO(J))) \ 2) + MO(J) + SPACE(11), 22) |
|||
NEXT J |
|||
TMP1 = TMP1 + SPACE((22 - LEN(MO(I + 5))) \ 2) + MO(I + 5) |
|||
PRINT TMP1 |
|||
PRINT TMP2 |
|||
FOR J = 1 TO 85 STEP 21 |
|||
FOR K = I TO I + 4 |
|||
PRINT MID(D(K), J ,21); " "; |
|||
NEXT K |
|||
PRINT MID(D(I + 5), J ,21) |
|||
NEXT J |
|||
PRINT |
|||
NEXT I |
|||
' EMPTY KEYBOARD BUFFER |
|||
WHILE INKEY <> "" : VAR _KEY_ = INKEY : WEND |
|||
PRINT : PRINT "HIT ANY KEY TO END PROGRAM" |
|||
SLEEP |
|||
END</lang> |
|||
{{out}} |
|||
<pre> INSERT YOUR SNOOPY PICTURE HERE |
|||
1969 |
|||
JANUARY FEBRUARY MARCH APRIL MAY JUNE |
|||
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU |
|||
1 2 3 4 5 1 2 1 2 1 2 3 4 5 6 1 2 3 4 1 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 |
|||
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 |
|||
JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER |
|||
MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU |
|||
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 1 2 1 2 3 4 5 6 7 |
|||
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 |
|||
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 |
|||
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 |
|||
28 29 30 31 25 26 27 28 29 30 31 29 30 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 </pre> |
|||
=={{header|Icon}} and {{header|Unicon}}== |
=={{header|Icon}} and {{header|Unicon}}== |