home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 04 / calcdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-04-28  |  2.0 KB  |  68 lines

  1. PROGRAM CalcDemo;
  2.  
  3. USES Crt, Calc, Graph, Pgraph;
  4.  
  5. {$I CALCUTIL.PAS}
  6.  
  7. VAR a, b, dx : REAL;
  8.     dummy    : REAL;
  9.     Formula  : Calc_String;
  10.     FormProg : Calc_Prog;
  11.     x        : Calc_VarTab;
  12.     f, xv, yv, x1, x2 : Vektor;
  13.     xmin, xmax, ymin, ymax : REAL;
  14.     n : WORD;
  15.     i : INTEGER;
  16.     c : STRING[1];
  17.  
  18. BEGIN
  19.   WriteLn; WriteLn; WriteLn;
  20.   WriteLn('Demo : CALC + Turbo 4.0 - Grafikbibliothek');
  21.   WriteLn('            (c) 1989  TOOLBOX             ');
  22.   x := NewVarTab;
  23.   dummy := AddToVarTab(x, 'X');
  24.   CalcDecMod := TRUE;
  25.   REPEAT
  26.     WriteLn;
  27.     WriteLn;
  28.     WriteLn('Bitte den auszuwertenden Ausdruck eingeben: ');
  29.     WriteLn;
  30.     Write('f(x) = '); ReadLn(Formula); WriteLn;
  31.     CompileExpression(Formula, x, FormProg);
  32.     IF CalcResult THEN BEGIN
  33.       WriteLn('Ausdruck "', Formula, '" korrekt übersetzt...');
  34.       WriteLn;
  35.       Write('Berechnung von f(x) zwischen  a = '); Read(a);
  36.       Write('                         und  b = '); Read(b);
  37.       Write('            mit Schrittweite dx = '); ReadLn(dx);
  38.       WriteLn;
  39.       i := Round((abs(a-b)/dx));
  40.       FOR n := 1 TO i+1 DO BEGIN
  41.         xv[n] := a + dx;
  42.         AssignVar(x, 'X', a);
  43.         yv[n] := CalcExpression(FormProg, x);
  44.         a := a + dx;
  45.       END;
  46.       OpenGraphik;
  47.       SetTextStyle(SmallFont, HorizDir, 5);
  48.       SetTextJustify(RightText, RightText);
  49.       OutTextXY(GetMaxX, 0, 'f(x) = ' + Formula);
  50.       GraphikWindow(70, GetMaxX-20, 45, GetMaxY-20);
  51.       Extrema(xv, n, xmin, xmax);
  52.       Extrema(yv, n, ymin, ymax);
  53.       UScale(xmin, xmax, ymin, ymax, true, true, 2);
  54.       XAxis(xmin, xmax, 'x', SmallFont, 5);
  55.       YAxis(ymin, ymax, 'f(x)', SmallFont, 5);
  56.       XGrid(0);  YGrid(0);
  57.       Curve(xv, yv, n, SolidLn, NormWidth, LightRed);
  58.       CurveX(xv, yv, n, black);
  59.       REPEAT UNTIL KeyPressed;
  60.       WHILE KeyPressed DO c := ReadKey;
  61.       CloseGraphik;
  62.       KillExpression(FormProg);
  63.     END;
  64.   UNTIL Formula = '';
  65.   KillVarTab(x);
  66.   WriteLn('Demo beendet...');
  67. END.
  68.