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 | |
---|
1 | VAR x, y, z, q, r, n, f;
|
---|
2 |
|
---|
3 | PROCEDURE multiply;
|
---|
4 | VAR a, b;
|
---|
5 | BEGIN
|
---|
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;
|
---|
15 | END;
|
---|
16 |
|
---|
17 | PROCEDURE divide;
|
---|
18 | VAR w;
|
---|
19 | BEGIN
|
---|
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;
|
---|
34 | END;
|
---|
35 |
|
---|
36 | PROCEDURE gcd;
|
---|
37 | VAR f, g;
|
---|
38 | BEGIN
|
---|
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;
|
---|
47 | END;
|
---|
48 |
|
---|
49 | PROCEDURE fact;
|
---|
50 | BEGIN
|
---|
51 | IF n > 1 THEN
|
---|
52 | BEGIN
|
---|
53 | f := n * f;
|
---|
54 | n := n - 1;
|
---|
55 | CALL fact;
|
---|
56 | END;
|
---|
57 | END;
|
---|
58 |
|
---|
59 | BEGIN
|
---|
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;
|
---|
64 | END.
|
---|
Note:
See
TracBrowser
for help on using the repository browser.