- приближенное значение интеграла.
 4. Для вывод справочной информации о пользовании программой необходимо нажать кнопку 
   
4. Заключение
 Данная программа была написана на языке Delphi 7.0. При разработке программы были учтены все требования к программе и выполнены в полной мере.
 При разработке данной программы Я закрепил знания по программированию в среде Delphi 7.0, также получил некоторые новые знания при разработке этой программы.
 
Приложение
 Листинг программы
 unit Unit1;
 interface
 uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExtCtrls;
 type
  TForm1 = class(TForm)
  Edit_F: TEdit;
  Button_Itogo: TButton;
  Edit_A: TEdit;
  Label1: TLabel;
  Label4: TLabel;
  Edit_B: TEdit;
  SS: TStringGrid;
  Edit_Int: TEdit;
  Label3: TLabel;
  Image1: TImage;
  Label6: TLabel;
  Label7: TLabel;
  Label8: TLabel;
  Label5: TLabel;
  Label9: TLabel;
  Label10: TLabel;
  Label11: TLabel;
  Label12: TLabel;
  Label13: TLabel;
  Button1: TButton;
  procedure Button_ItogoClick(Sender: TObject);
  procedure Label5Click(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
 var
  Form1: TForm1;
 implementation
 uses Unit_help,Unit_h;
 {$R *.dfm}
 procedure Formula( Var Vivod:string; Var Gl_massiv: Array of string);
 Var
 Sk_massiv: Array [0..100] of string;
 Tmp_st,st:integer; // Переменная степени
 i_sk:integer; //Номер ячейки c начала массива скобки
 j_sk:integer;// Переменная по перемещению по массиву скобки
 z:integer; //Номер ячейки от конца гл. массива
 i:integer; //Номер ячейки c начала гл. массива
 j:integer; // Переменная по перемещению по гл. массиву
 // Булевые типы (ложь) или (Истина) для гл. масиива и скобки
 Y, Ysk:Boolean;
 ch:Real; // Число
 Itog:Real; //Переменная значений вычислений
 begin // Начало
 {---- Вычисление значений в скобках -----}
 For z:=1 to 100 do //Чтение то конца гл. массива
  Begin
  // Если левая скобка найдена
  if Gl_massiv [100-z] = '(' then
 Begin
  i:= 100-z; j:= 0; Y:= False;
  Repeat
  Begin
  if Gl_massiv[i+1] <> ')' then //Найденаслед.закрывающаяскобка
  Begin
  Sk_massiv[j]:= Gl_massiv[i+1];
 // Скрываем чило использованное для вычисления
  Gl_massiv[i+1]:= '#';
 j:=j+1;
  i:=i+1;
  end
  else Begin Gl_massiv[i+1]:= '#'; Y:= True; end;
  end;
  Until Y=True;
  Y:= False;
 {--------- Вычислениевскобках ---------------}
 For i_sk:=0 to 100 do
  Begin
  Ysk:= False;
  {-------------- Косинус---------------}
  if Sk_massiv [i_sk]= 'cos' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then
  begin
  itog:= cos(Strtofloat(Sk_massiv[i_sk+j_sk]));
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  Ysk:= False;
  end;
  {-------------- Синус ---------------}
  if Sk_massiv[i_sk]= 'sin' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then
  begin
  itog:= sin(Strtofloat(Sk_massiv[i_sk+j_sk]));
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  Ysk:= False;
  end;
  end;
 {-------------- ^ квадрат ---------------}
 For i_sk:=0 to 100 do
  Begin
  Ysk:= False;
  if Sk_massiv[i_sk]= '^' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk-j_sk] <> '#' then begin
  itog:= Strtofloat(Sk_massiv[i_sk-j_sk]);
  Sk_massiv[i_sk-j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  Tmp_st:= StrToInt(Sk_massiv[i_sk+1]);
  ch:=itog;
 For st:=2 to Tmp_st do
  begin
  itog:= itog*ch;
  end;
  Sk_massiv[i_sk]:= Floattostr(itog);
 end;
 end;
  {-------------- Умножение / Деление ---------------}
  For i_sk:=0 to 100 do
  Begin
  Ysk:= False;
  {-------------- Умножение---------------}
  if Sk_massiv[i_sk]= '*' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk-j_sk] <> '#' then begin
  itog:= Strtofloat(Sk_massiv[i_sk-j_sk]);
  Sk_massiv[i_sk-j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then begin
  itog:= itog* Strtofloat(Sk_massiv[i_sk+j_sk]);
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  end; Ysk:= False;
  {--------------------- Деление ----------------}
  if Sk_massiv[i_sk]= '/' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk-j_sk] <> '#' then begin
  itog:= Strtofloat(Sk_massiv[i_sk-j_sk]);
  Sk_massiv[i_sk-j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then begin
  itog:= itog/Strtofloat(Sk_massiv[i_sk+j_sk]);
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  end; Ysk:= False;
 end;
 {-------------- cложение/вычитание -----------------}
  For i_sk:= 0 to 100 do
  Begin
  Ysk:= False;
  {-------------- сложение---------------}
  if Sk_massiv[i_sk]= '+' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk-j_sk] <> '#' then begin
  itog:= Strtofloat(Sk_massiv[i_sk-j_sk]);
  Sk_massiv[i_sk-j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then begin
  itog:= itog+ Strtofloat(Sk_massiv[i_sk+j_sk]);
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  end; Ysk:= False;
  {------------------- Вычитание ----------------}
  if Sk_massiv[i_sk]= '-' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk-j_sk] <> '#' then begin
  itog:= Strtofloat(Sk_massiv[i_sk-j_sk]);
  Sk_massiv[i_sk-j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then begin
  itog:= itog-Strtofloat(Sk_massiv[i_sk+j_sk]);
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  end; Ysk:= False;
  end;
 For i_sk:=0 to 100 do
  Begin
  Ysk:= False;
  {-------------- Натуральныйлогарифм --------------}
  if Sk_massiv[i_sk]= 'ln' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then
  begin
  ch:= Strtofloat(Sk_massiv[i_sk+j_sk]);
  If ch > 0 then
  Begin
  itog:= ln(Strtofloat(Sk_massiv[i_sk+j_sk]));
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
  end else Begin
  Showmessage('Натуральныйлогарифмменьшенуля');
  Sk_massiv[i_sk]:='0';
  Ysk:= True;
  end;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  Ysk:= False;
  end;
  {-------------- Коренькв.--------------}
  if Sk_massiv[i_sk]= 'sqrt' then
  Begin j_sk:=1; Ysk:= False;
  repeat
  if Sk_massiv[i_sk+j_sk] <> '#' then
  begin
  ch:= Strtofloat(Sk_massiv[i_sk+j_sk]);
  If ch > 0 then
  Begin
  itog:= sqrt(Strtofloat(Sk_massiv[i_sk+j_sk]));
  Sk_massiv[i_sk]:= Floattostr(itog);
  Sk_massiv[i_sk+j_sk]:= '#'; Ysk:= True;
 end else Begin
  Showmessage('Значение квадратного корня меньше нуля');
 Sk_massiv[i_sk]:='0';
  Ysk:= True;
  end;
  end else j_sk:= j_sk+1;
  until Ysk=True;
  Ysk:= False;
  end;
  end; Ysk:= False;
 j_sk:=0;
 Repeat
  Begin
  if Sk_massiv[0+j_sk] <> '#' then Begin
 // Запись в гл. массив значение скобки
 Gl_massiv[100-z]:= Sk_massiv[0+j_sk];
  Ysk:= true; end
  else j_sk:=j_sk+1;
  end;
 Until Ysk = true;
  end;
 end;
 {----- Вычиление значения в скобках закончено -----}
 //showmessage(Gl_massiv[0]);
 Vivod:= Gl_massiv[0];
 end; // Конецпроцедуры
 {--------------------------------------------------------}
 procedure TForm1.Button_ItogoClick(Sender: TObject);
 Var
 a,b,h:real; //Отрезок а, b и шаг h
 Fx,Fa,Fb:Real; //Результат и суммы значений F(xi)
 My_vivod:string;//Значение F(xi)
 mas,z,j:integer; //Номерячейкимассива
 i:integer; //Номер символа в строке формул
 s,st,ch:string; //Символ
 // Булевый тип (ложь) или (Истина) для выхода из цикла подсчета цифр
 Bool:Boolean;
 //Массивсимволовформулы
 My_massiv:Array [0..100] of string;
 begin
 //Присвоение к переменным значений отрезка а,b и шага h
 a:= StrToFloat(Edit_A.Text);
 b:= StrToFloat(Edit_B.Text);
 h:=StrToFloat(Edit_Int.Text);
 z:=0;
 // Вычисление значений Xi на отрезке a,b с шагом h
 Repeat
  Begin //Начало цикла
  //Вывод в массив значения Xi
 SS.Cells[0,z]:= FloatToStr(a);
 z:=z+1; //Переход на ячейку ниже
  a:=a+h; //Шаг
  end;
 Until a > b; //Продолжение цикла до конца отрезка а,b
 mas:=0;
 //Вывод всех значений F(xi) в массив
 Repeat
 begin
 i:=1; j:=1;
 Repeat
 //Вычисление F(xi) и вывод в массив
 Begin
  s:= Copy(Edit_F.text,i,1); //Копировать i-й символ в строке формул
  //Проверка на значение натурального логарифма
  if s='l' then Begin
 s:='ln'; i:= i+1; end;
 //Проверка на значение косинуса
  if s='c' then Begin