
- •1. 1 Опис мови програмування
- •1.3 Організація циклів
- •1.4 Одновимірні масиви
- •1.5 Робота з двовимірними масивами. Пошук та сортування даних
- •1.7 Робота з динамічними структурами даних
- •Розділ 2. Мова програмування delphi
- •2.1 Опис мови програмування Delphi
- •2.2 Розробка програмного продукту «Анкета студента»
- •2.3 Розробка програмного продукту «Проста програма»
- •2.4 Розробка програмного продукту «Проста програма»
- •2.5 Розробка програмного продукту «Обмін валюти»
- •2.6 Завдання для самостійної роботи
- •2.7 Задача про суму ряду
- •2.8 Задача про min/max функції
- •2.9 Задача табулювання функції
2.8 Задача про min/max функції
Завдання. Скласти програму пошуку мінімального та максимального значення функції на відрізку [а, b]. Значення а, b і кроку h вводяться з клавіатури. Розрахунок функції оформити як підпрограму-функцію: 2+x-x2
Конструктор форми зображено на рисунку 2.29
Рисунок 2.29
Результати виконання програми зображені на рисунку 2.30
Рисунок 2.30- Вікно робочої програми
Для розрахунку значень функції використовувалася підпрограма-функція ZnFun:
function ZnFun(x:real):real;
begin
ZnFun:=5*sqr(x)-7*x+100;
end;
Текст програмного коду:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, h : real;
MinX, MinY, MaxX, MaxY : real;
begin
Memo1.Clear;
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit3.Text);
MinY:=1e38;
MaxY:=-1e38;
while a<b do
begin
if ZnFun(a)<MinY then
begin
MinY:=ZnFun(a);
MinX:=a;
end;
if ZnFun(a)>MaxY then
begin
MaxY:=ZnFun(a);
MaxX:=a;
end;
a:=a+h;
end;
Memo1.Lines.Add('Max при x = '+FloatToStrF(MaxX,ffFixed,10,5)+
' y = '+FloatToStrF(MaxY,ffFixed,0,3)); end;
2.9 Задача табулювання функції
Завдання. Створити форму для розв’язування та відображення результатів табулювання функції.
Конструктор форми зображено на рисунку 2.31
Рисунок 2.31 – Конструктор форми
Додаткові завдання:
Додати до контекстного меню команду «Кінець та запрограмувати її».
Текст коду:
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
Створити ще одне контекстне меню з командами «Зняти прапорці», Встановити всі прапорці», «Встановити інверсивно».
Текст коду:
procedure TForm1.N9Click(Sender: TObject);{Процедура зняття прапорців}
begin
checkbox1.Checked := False;
checkbox2.Checked := False;
checkbox3.Checked := False;
end;
procedure TForm1.N10Click(Sender: TObject);{Процедура встановлення прапорців}
begin
checkbox1.Checked := True;
checkbox2.Checked := True;
checkbox3.Checked := True;
end;
procedure TForm1.N11Click(Sender: TObject);{Процедура встановлення прапорців інверсивно}
begin
if checkbox1.Checked then checkbox1.Checked := Falseelse checkbox1.Checked := True;
if checkbox2.Checked then checkbox2.Checked := Falseelse checkbox2.Checked := True;
if checkbox3.Checked then checkbox3.Checked := Falseelse checkbox3.Checked := True;
end;
Модифікувати програму, передбачивши можливість табулювання функції і її похідної. Вибір варіанта табулювання здійснити за допомогою додаткового прапорця. Додати кнопку графік для побудови графіка
Результат табулювання функції з похідною та роботи прапорця-«Похідна» продемонстровано на рисунках 2.32 та 2.33
.
Рисунок 2.32-Табулювання без похідної
Табулювання функції з похідною та графік зображено на рисунку 2.33
Рисунок 2.33-Табулювання з похідною та побудова графіком
До меню програми додаємо команду «Побудувати графік», а на формі кнопку «Графік».
Текст команди:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,y1,h,a,b:real;
begin
a:=strtofloat(Edit1.Text); b:=strtofloat(Edit2.Text); h:=strtofloat(Edit3.Text);
With Series1 do
Clear ;
x:=a; if checkbox2.checked then
While x<=b+h/2 do
begin
Series1.AddXY(x, 3*sqr(x)+2*x ,'' ,clRed); x:=x+h;
end
else
While x<=b+h/2 do
Begin Series1.AddXY(x, sqr(x)*x+sqr(x)-7 ,'' ,clRed);
x:=x+h;
end;
end;