Упр 6 Проц тип Модули Корни Интегралы Экстремумы (956685), страница 2
Текст из файла (страница 2)
//ширина окна отображения таблицы
Form1.StringGrid1.Width:=510;
//заголовки столбцов
Form1.StringGrid1.Cells[0,0]:='Xпред';
Form1.StringGrid1.Cells[1,0]:='F(Xпред)';
Form1.StringGrid1.Cells[2,0]:='Xслед';
Form1.StringGrid1.Cells[3,0]:='F(Xслед)';
//поиск значений аргумента, предшествующих корням
//уравнения и запись в массив ArrFX
Korni(FuncX,a,b,N,ArrFX);
//задать число строк таблицы
Form1.StringGrid1.RowCount:=length(ArrFX)+1;
//Заполнение столбцов таблицы по данным из массива ArrFX
for i:=0 to high(ArrFX) do begin
//значения аргумента перед корнем
Form1.StringGrid1.Cells[0,i+1]:=FloatToStr(ArrFX[i]);
//значения функции перед корнем
Form1.StringGrid1.Cells[1,i+1]
:=FloatToStr(FuncX(ArrFX[i]));
//значения аргумента за корнем
Form1.StringGrid1.Cells[2,i+1]:=FloatToStr(ArrFX[i]+hx);
//значения функции за корнем
Form1.StringGrid1.Cells[3,i+1]
:=FloatToStr(FuncX(ArrFX[i]+hx));
end;//for i:=0 to high(ArrFX)
end //КОРНИ
else begin //ЭКСТРЕМУМЫ
//будут найдены приближения ЭКСТРЕМУМОВ
Form1.Width:=760;//ширина формы
//заголовок над таблицей
Form1.Label4.Caption
:='ТАБЛИЦА ПРИБЛИЖЕНИЙ ЭКСТРЕМУМОВ';
Form1.StringGrid1.ColCount:=5;//всегда 5 столбцов
//вначале только строка заголовков
Form1.StringGrid1.RowCount:=1;
//ширина окна отображения таблицы
Form1.StringGrid1.Width:=630;
//заголовки столбцов
Form1.StringGrid1.Cells[0,0]:='Xпред';
Form1.StringGrid1.Cells[1,0]:='F(Xпред)';
Form1.StringGrid1.Cells[2,0]:='F(Xэкстр)';
Form1.StringGrid1.Cells[3,0]:='F(Xслед)';
Form1.StringGrid1.Cells[4,0]:='Xслед';
//поиск значений аргумента, предшествующих экстремумам
//функции и запись в массив ArrFX
Extremumy(FuncX,a,b,N,ArrFX);
//задать число строк таблицы
Form1.StringGrid1.RowCount:=length(ArrFX)+1;
//заполнение столбцов таблицы по данным из массива ArrFX
for i:=0 to high(ArrFX) do begin
//значения аргумента перед экстремумом
Form1.StringGrid1.Cells[0,i+1]:=FloatToStr(ArrFX[i]);
//значения функции перед экстремумом
Form1.StringGrid1.Cells[1,i+1]
:=FloatToStr(FuncX(ArrFX[i]));
//значения функции вблизи экстремума
Form1.StringGrid1.Cells[2,i+1]
:=FloatToStr(FuncX(ArrFX[i]+hx));
//значения функции за экстремумом
Form1.StringGrid1.Cells[3,i+1]
:=FloatToStr(FuncX(ArrFX[i]+2*hx));
//значения аргумента за экстремумом
Form1.StringGrid1.Cells[4,i+1]:=FloatToStr(ArrFX[i]+2*hx);
end;//for i:=0 to high(ArrFX)
end;//if _ФУНКЦИИ_else if _КОРНИ_ else _ЭКСТРЕМУМЫ
end;//procedure TForm1.Button1Click(Sender: TObject)
Рис. 6
procedure myTabFunc(const Rabota:string; ArrFX:tArrFX);
var
i:integer;
begin
//увеличить ширину окна, через которое видна таблица
//на 120 пикселей, т.е. на ширину добавляемого столбца
Form1.StringGrid1.Width:=Form1.StringGrid1.Width+120;
//увеличить ширину формы на 120 пикселей, те
//на ширину добавляемого столбца
Form1.Width:=Form1.Width+120;
//увеличить на 1 число столбцов таблицы
StringGrid1.ColCount:=StringGrid1.ColCount+1;
//занести в заголовок последнего столбца название работы
StringGrid1.Cells[StringGrid1.ColCount-1,0]:=Rabota;
//копирование данных из массива ArrFX
//в последний столбец таблицы
for i:=0 to StrToInt(Form1.Edit3.Text) do begin
Form1.StringGrid1.Cells[Form1.StringGrid1.ColCount-1,i+1]
:=FloatToStr(ArrFX[i]);
end;//for i to StrToInt(Form1.Edit3.Text)
end; //procedure myTabFunc(const Rabota:string;ArrFX:tArrFX)
Рис. 7.
-
Обработчик щелчка на строке раскрывающегося списка, в котором переменной FuncX должно присваиваться имя выбранной пользователем функции. Так как номер строки списка, на котором выполнен щелчок, представлен свойством ItemIndex списка, то к получению желаемого результата приведётвыполнение оператора FuncX:=ArrFuncX[ComboBox1.ItemIndex].
-
Обработчик двойного щелчка на ячейке первого столбца таблицы со значением аргумента, который должен скопировать значение из указанной ячейки в поле ввода X0 () и из следующей ячейки столбца, если выделена кнопка ФУНКЦИИ, или из ячейки третьего столбца той же стоки, выделена кнопка КОРНИ, или из пятого столбца той же стоки, если выделена кнопка ЭКСТРЕМУМЫ.
-
Задания для самостоятельного выполнения (см. файл «к Упр 6 Задания Проц тип Корни Интегралы Экстремумы.doc»)
-
Отладить программу для функций, вычисляющих sin(x), tg(x), x+x, x*(x-2), разместив все модули в одной папке. Скопировать все файлы с именем Funkcii в подчинённую папку OldFunkcii и удалить исполняемый файл программы. Убедиться, что программа не выполняется. Командой меню Project\ Remove from Project… удалить из проекта модуль . Командой меню Project\ Add to Project… добавить в проект модуль из папки, куда он был перемещен. Убедиться, что программа работает.
-
Создать в подчинённой папке NewFunkcii новый модуль Funkcii с новыми функциями (по своему варианту задания) и заменить им, используя команды меню Project, прежний модуль.