source: trunk/Examples/Arithmetic.pas

Last change on this file was 2, checked in by chronos, 5 years ago
  • Fixed: >= and <= operators.
  • Added: Read source code from file supplied as command line parameter.
File size: 816 bytes
Line 
1VAR x, y, z, q, r, n, f;
2
3PROCEDURE multiply;
4VAR a, b;
5BEGIN
6 a := x;
7 b := Y;
8 z := 0;
9 WHILE b > 0 DO
10 BEGIN
11 IF ODD b THEN z := z + a;
12 a := 2 * a;
13 b := b / 2;
14 END;
15END;
16
17PROCEDURE divide;
18VAR w;
19BEGIN
20 r := x;
21 q := 0;
22 w := y;
23 WHILE w <= r DO w := 2 * w;
24 WHILE w > y DO
25 BEGIN
26 q := 2 * q;
27 w := w / 2;
28 IF w <= r THEN
29 BEGIN
30 r := r - w;
31 q := q + 1;
32 END;
33 END;
34END;
35
36PROCEDURE gcd;
37VAR f, g;
38BEGIN
39 f := x;
40 g := y;
41 WHILE f # g DO
42 BEGIN
43 IF f < g THEN g := g - f;
44 IF g < f THEN f := f - g;
45 END;
46 z := f;
47END;
48
49PROCEDURE fact;
50BEGIN
51 IF n > 1 THEN
52 BEGIN
53 f := n * f;
54 n := n - 1;
55 CALL fact;
56 END;
57END;
58
59BEGIN
60 ?x; ?y; CALL multiply; !z;
61 ?x; ?y; CALL divide; !q; !r;
62 ?x; ?y; CALL gcd; !z;
63 ?n; f := 1; CALL fact; !f;
64END.
Note: See TracBrowser for help on using the repository browser.