home *** CD-ROM | disk | FTP | other *** search
- PROGRAM CalcDemo;
-
- USES Crt, Calc, Graph, Pgraph;
-
- {$I CALCUTIL.PAS}
-
- VAR a, b, dx : REAL;
- dummy : REAL;
- Formula : Calc_String;
- FormProg : Calc_Prog;
- x : Calc_VarTab;
- f, xv, yv, x1, x2 : Vektor;
- xmin, xmax, ymin, ymax : REAL;
- n : WORD;
- i : INTEGER;
- c : STRING[1];
-
- BEGIN
- WriteLn; WriteLn; WriteLn;
- WriteLn('Demo : CALC + Turbo 4.0 - Grafikbibliothek');
- WriteLn(' (c) 1989 TOOLBOX ');
- x := NewVarTab;
- dummy := AddToVarTab(x, 'X');
- CalcDecMod := TRUE;
- REPEAT
- WriteLn;
- WriteLn;
- WriteLn('Bitte den auszuwertenden Ausdruck eingeben: ');
- WriteLn;
- Write('f(x) = '); ReadLn(Formula); WriteLn;
- CompileExpression(Formula, x, FormProg);
- IF CalcResult THEN BEGIN
- WriteLn('Ausdruck "', Formula, '" korrekt übersetzt...');
- WriteLn;
- Write('Berechnung von f(x) zwischen a = '); Read(a);
- Write(' und b = '); Read(b);
- Write(' mit Schrittweite dx = '); ReadLn(dx);
- WriteLn;
- i := Round((abs(a-b)/dx));
- FOR n := 1 TO i+1 DO BEGIN
- xv[n] := a + dx;
- AssignVar(x, 'X', a);
- yv[n] := CalcExpression(FormProg, x);
- a := a + dx;
- END;
- OpenGraphik;
- SetTextStyle(SmallFont, HorizDir, 5);
- SetTextJustify(RightText, RightText);
- OutTextXY(GetMaxX, 0, 'f(x) = ' + Formula);
- GraphikWindow(70, GetMaxX-20, 45, GetMaxY-20);
- Extrema(xv, n, xmin, xmax);
- Extrema(yv, n, ymin, ymax);
- UScale(xmin, xmax, ymin, ymax, true, true, 2);
- XAxis(xmin, xmax, 'x', SmallFont, 5);
- YAxis(ymin, ymax, 'f(x)', SmallFont, 5);
- XGrid(0); YGrid(0);
- Curve(xv, yv, n, SolidLn, NormWidth, LightRed);
- CurveX(xv, yv, n, black);
- REPEAT UNTIL KeyPressed;
- WHILE KeyPressed DO c := ReadKey;
- CloseGraphik;
- KillExpression(FormProg);
- END;
- UNTIL Formula = '';
- KillVarTab(x);
- WriteLn('Demo beendet...');
- END.