home *** CD-ROM | disk | FTP | other *** search
- (* Plot the function f(x) = exp(-x) * cos(2*pi*x) on the screen in
- the range x = 0 ... 4. Use 32 lines for the unit coordinate. *)
-
- MODULE printerplot;
-
- FROM InOut IMPORT Write, WriteLn;
- FROM MathLib0 IMPORT exp, cos;
-
- CONST xscale = 32;
- yscale = 50;
- yshift = 65;
- twopi = 6.2831833071796;
-
- VAR i,n: CARDINAL;
- k,j: INTEGER;
- x,y: REAL;
-
- BEGIN
- n := 0;
- REPEAT
- x := FLOAT(n)/FLOAT(xscale); i := 0;
- y := exp(-x)*cos(x*twopi);
- k := TRUNC((y*FLOAT(yscale))+0.5);
- IF k < 0 THEN
- FOR j := 0 TO yshift + k DO Write(' ') END; Write('*');
- k := -k - 1;
- IF k > 0 THEN
- FOR j := 0 TO k DO Write(' ') END; Write('|');
- END
- ELSE
- FOR j := 0 TO yshift DO Write(' ') END;
- IF k > 0 THEN
- Write('|');
- DEC(k);
- IF k > 0 THEN FOR j := 0 TO k DO Write(' ') END END
- END;
- Write('*');
- END;
- WriteLn;
- INC(n);
- UNTIL n > 96;
- END printerplot.
-