(* 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.