Procedures, types .
MODULE D1;
<* NOOPTIMIZE + *>
FROM IO IMPORT RdChar, WrChar, WrStr, RdStr,
WrLn, RdCard, WrCard, RdInt, WrInt, RdReal, WrReal, RdBool, WrBool;
PROCEDURE IsSumDivisibleBy(x1, x2,
x3:CARDINAL):
BOOLEAN;
VAR result: BOOLEAN;
BEGIN
IF ((x1 + x2) MOD x3) = 0 THEN
result := TRUE;
ELSE
result := FALSE;
END;
RETURN result;
END IsSumDivisibleBy;
VAR opl: BOOLEAN;
BEGIN
WrLn;
opl := IsSumDivisibleBy(10, 6, 4);
WrBool(opl, 0);
END D1.
MODULE S4;
<* WOFF + *> <* NOOPTIMIZE + *>
FROM IO IMPORT RdChar, WrChar, WrStr, RdStr,
WrLn, RdLn, RdCard, WrCard, RdInt, WrInt,
RdReal, WrReal, WrFixReal, RdBool, WrBool;
FROM RealMath IMPORT sqrt, exp, sin, cos, tan,
arcsin, arccos, arctan, power, round;
CONST (* constants *)
PROCEDURE PrintRealArray(arr: ARRAY OF REAL); VAR i:CARDINAL;
BEGIN
FOR i := 0 TO HIGH(arr) DO
WrReal(arr[i], 2, 10);
END;
WrLn;
END PrintRealArray;
(* PROCEDURE AccountEvolution( );
BEGIN
END AccountEvolution;*)
VAR arr1: ARRAY[1..10] OF REAL;
(* 2 arrays of different size *)
arr2: ARRAY[1..20] OF REAL;
BEGIN
WrLn;
AccountEvolution(arr1, 2500.00, 4.2); (* 2500
Euro at 4,2%, 10 years *)
AccountEvolution(arr2, 2500.00, 3.0); (* 2500 Euro at 3,0%, 20 years *)
END S4.
MODULE S5;
<* NOOPTIMIZE + *>
FROM IO IMPORT RdChar, WrChar, WrStr, RdStr, WrLn, RdLn, RdCard,
WrCard, RdInt, WrInt, RdReal, WrReal;
FROM Lib IMPORT Delay;
FROM Wimdows IMPORT Window, KillWindow, GetKeyPressed, GetKey,
SetFont, Text, Rectangle, Circle, Disc, SetPixel;
FROM Wimdows IMPORT _clrBLACK, _clrBLUE, _clrGREEN, _clrCYAN,
_clrRED, _clrMAGENTA;
FROM Wimdows IMPORT _clrBROWN, _clrWHITE, _clrGRAY,
_clrLIGHTBLUE, _clrLIGHTGREEN;
FROM Wimdows IMPORT _clrLIGHTCYAN, _clrLIGHTRED,
_clrLIGHTMAGENTA, _clrLIGHTYELLOW, _clrBRIGHTWHITE;
FROM Windows IMPORT VK_ESCAPE;
CONST BITMAP_SIZE = 32;
SCREEN_SIZE = 700;
TYPE BitmapAr = ARRAY [1..BITMAP_SIZE],[1..BITMAP_SIZE] OF CHAR;
VAR
gHunter, gEuro, gBackground: BitmapAr;
gColorMap: ARRAY['a'..'z'] OF CARDINAL;
PROCEDURE CreateBitmaps();
BEGIN
(* Init the color map *)
gColorMap['a'] :=
_clrBLACK ;
(* 0*)
gColorMap['b'] :=
_clrBLUE ;
(* 1*)
gColorMap['c'] :=
_clrGREEN ;
(* 2*)
gColorMap['d'] :=
_clrCYAN ;
(* 3*)
gColorMap['e'] :=
_clrRED ;
(* 4*)
gColorMap['f'] :=
_clrMAGENTA ; (*
5*)
gColorMap['g'] :=
_clrBROWN ;
(* 6*)
gColorMap['h'] :=
_clrWHITE ;
(* 7*)
gColorMap['i'] :=
_clrGRAY ;
(* 8*)
gColorMap['j'] := _clrLIGHTBLUE ;
(* 9*)
gColorMap['k'] := _clrLIGHTGREEN
;(* 10*)
gColorMap['l'] := _clrLIGHTCYAN
;(* 11*)
gColorMap['m'] :=
_clrLIGHTRED ;(* 12*)
gColorMap['n'] := _clrLIGHTMAGENTA
;(* 13*)
gColorMap['o'] := _clrLIGHTYELLOW
;(* 14*)
gColorMap['p'] := _clrBRIGHTWHITE
;(* 15*)
(* 'z' is used for the background color *)
gHunter[1]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[2]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[3]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[4]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[5]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[6]:="zzzzzzzzzzzzzooooooozzzzzzzzzzzz";
gHunter[7]:="zzzzzzzzzzzooooooooooozzzzzzzzzz";
gHunter[8]:="zzzzzzzzzzoaaoooooooooozzzzzzzzz";
gHunter[9]:="zzzzzzzzzoooaaaaoooooooozzzzzzzz";
gHunter[10]:="zzzzzzzzoooooooaaaooooooozzzzzzz";
gHunter[11]:="zzzzzzzooooooooooaaaoooooozzzzzz";
gHunter[12]:="zzzzzzoooooooooooooaaaooooozzzzz";
gHunter[13]:="zzzzzzooooooeaoooooaaaaoooozzzzz";
gHunter[14]:="zzzzzooooooeeaaooooaaaaaaooozzzz";
gHunter[15]:="zzzzzooooooaaaaooooaaaaaaaaazzzz";
gHunter[16]:="zzzzzoooooooaaoooooaaaaooooazzzz";
gHunter[17]:="zzzzzooooooooooooooooooooooozzzz";
gHunter[18]:="zzzzzooooooooooooooooooooooozzzz";
gHunter[19]:="zzzzzoooooooooooooooooeooooozzzz";
gHunter[20]:="zzzzzoooooooooooooooioeooooozzzz";
gHunter[21]:="zzzzzziiiiiiiipppppiiieggggggzzz";
gHunter[22]:="zzzzeeiippppppiiiiiiieeggggggzzz";
gHunter[23]:="zzzzzziiiiiiiiiiiiiiiieggggggzzz";
gHunter[24]:="zzzzzzzzooooooooooooooeoozzzzzzz";
gHunter[25]:="zzzzzzzzzooooooooooooooozzzzzzzz";
gHunter[26]:="zzzzzzzzzzooooooooooooozzzzzzzzz";
gHunter[27]:="zzzzzzzzzzzooooooooooozzzzzzzzzz";
gHunter[28]:="zzzzzzzzzzzzzooooooozzzzzzzzzzzz";
gHunter[29]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[30]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[31]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gHunter[32]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[1]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[2]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[3]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[4]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[5]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[6]:="zzzzzzzzzzzzzzooooooozzzzzzzzzzz";
gEuro[7]:="zzzzzzzzzzzooooooooooooozzzzzzzz";
gEuro[8]:="zzzzzzzzzzooooooooooooooozzzzzzz";
gEuro[9]:="zzzzzzzzzooooozzzzzzzooooozzzzzz";
gEuro[10]:="zzzzzzzooooozzzzzzzzzzzoooozzzzz";
gEuro[11]:="zzzzzzzoooozzzzzzzzzzzzzoooozzzz";
gEuro[12]:="zzzzzzoooozzzzzzzzzzzzzzoooozzzz";
gEuro[13]:="zzzzzoooozzzzzzzzzzzzzzzzoooozzz";
gEuro[14]:="zzzzzoooozzzzzzzzzzzaaaaaoooozzz";
gEuro[15]:="zzzooooooooooooooooooaaaaaaaazzz";
gEuro[16]:="zzooooooooooooooooooaaaaaaaaaazz";
gEuro[17]:="zzzzooooozzzzzzzaaaaaazzzzaaaaaz";
gEuro[18]:="zzzzooooozzzzzaaaaaaaaazzzzaaaaa";
gEuro[19]:="zzzooooooooooooooooooazzzzzzzzzz";
gEuro[20]:="zzoooooooooooooooooozzzzzzzzzzzz";
gEuro[21]:="zzzzzooooozzaaaazzzzzzzzzzzzzaaa";
gEuro[22]:="zzzzzzoooozaaaazzzzzzzzzzzzzaaaa";
gEuro[23]:="zzzzzzoooooaaaaaaaaazzzzzzzaaaaz";
gEuro[24]:="zzzzzzoooooaaaaaaaazzzzzooooaaaz";
gEuro[25]:="zzzzzzzoooooaazzzzzzzzzoooooaazz";
gEuro[26]:="zzzzzzzzoooooazzzzzzzzoooooaazzz";
gEuro[27]:="zzzzzzzzzoooooazzzzzzooooooazzzz";
gEuro[28]:="zzzzzzzzzzoooooooooooooooaazzzzz";
gEuro[29]:="zzzzzzzzzzzooooooooooooazzzzzzzz";
gEuro[30]:="zzzzzzzzzzzzzzooooooozzzzzzzzzzz";
gEuro[31]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gEuro[32]:="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
gBackground[1]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[2]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[3]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[4]:="fcccfcccfcccfcccfcccfcccfccfcccc";
gBackground[5]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[6]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[7]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[8]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[9]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[10]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[11]:="fcccfcccfcccfcccfcccfcccfccfcccc";
gBackground[12]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[13]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[14]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[15]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[16]:="fcccfcccfcccfcccfcccfcccfccfcccc";
gBackground[17]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[18]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[19]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[20]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[21]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[22]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[23]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[24]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[25]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[26]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[27]:="cfcccfcccfcccfcccfcccfcccfccfccc";
gBackground[28]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[29]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[30]:="ccfcccfcccfcccfcccfcccfcccfccfcc";
gBackground[31]:="cccfcccfcccfcccfcccfcccfcccfccfc";
gBackground[32]:="cfcccfcccfcccfcccfcccfcccfccfccc";
END CreateBitmaps;
PROCEDURE DrawBitmap(bitmap: BitmapAr);
(* ... *)
END DrawBitmap;
VAR
c: CARDINAL;
BEGIN
(* Initialise graphics. Coordinatesystem: (0,0) is the top left
corner *)
Window("bitmaps", SCREEN_SIZE, SCREEN_SIZE);
CreateBitmaps();
DrawBitmap(gHunter);
(* tell user to press escape to finish the program... *)
SetFont(1, _clrRED);
Text("press ESC to quit", SCREEN_SIZE/2-50, 10);
(* ...and program will wait here until user presses escape *)
REPEAT
Delay(25);
UNTIL (GetKeyPressed(c) AND (c = VK_ESCAPE));
(* finally close the window *)
KillWindow();
END S5.
VAR gSeed: CARDINAL; (* deze globale variabele wordt bijgehouden om telkens de volgende waarde te berekenen *)
PROCEDURE RandomCard(min, max:
CARDINAL):
CARDINAL;
(* procedure geeft een random variabele
terug tussen min en max *)
VAR
factor: REAL;
BEGIN
factor := (VAL(REAL,
max - min) + 0.99999) / FLOAT(1013 - 1);
gSeed := (gSeed * 351
+ 138) MOD 1013;
RETURN min +
VAL(CARDINAL,
VAL(REAL, gSeed) * factor);
END RandomCard;