Рудник_Э-11_Лабораторная_работа_6
.docxУчреждение образования
Гомельский государственный технический университет имени П.О. Сухого
Кафедра «Информатика»
Лабораторная работа № 6
по дисциплине: “Информатика”
Программирование циклических алгоритмов на языке Delphi. Табулирование функций.
Дата сдачи отчета Выполнил студент группы Э-11
Рудник Роман
Допуск к защите
Принял преподаватель
Дата защиты Богданова Н.С.
Цель работы: Получить навыки разработки циклических алгоритмов и их реализации в среде Delphi (на примере табулирования функции одной переменной). Научиться использовать в проекте несколько форм, новые визуальные компоненты StringGrid, Chart, RadioGroup и проверять корректность ввода исходных данных.
Задание 1
1. Табулирование функции одной переменной
В соответствии с видом функции, приведенном в таблице 1, вычислить значения функции y=f(x,a,b) для значений аргумента x, изменяющегося в интервале от xнач до xкон с шагом ∆x, и заданных констант a и b.
Исходные данные для отладки программы (xнач, xкон, ∆x, a, b), выбрать самостоятельно из интервала значений, где заданные функции определены. Для ввода исходных данных использовать главную форму. Выполнить проверку корректности ввода исходных данных (можно всех одновременно), используя защищенный блок.
Исходные данные и результаты вывести на второй форме. Значения аргумента x и функции y вывести в текстовую таблицу ВК StringGrid, используя форматный вывод, строки таблицы пронумеровать. Построить график функции y=f(x,a,b), используя компонент Chart.
По желанию можно предусмотреть в программе возможность табулирования трех функций (свой вариант и два соседних), используя для выбора нужной функции ВК RadioGroup.
Вид окна проекта
Таблица используемых ВК
Элемент интерфейса |
Компонент |
Свойство |
Значение свойства |
||
Заголовок окна |
Form1 |
Caption |
Лабораторная работа 6 1 задание |
||
Заголовок окна |
Form2 |
Caption |
Ответ |
||
x нач |
Label1 |
Caption |
x нач |
||
x кон |
Label2 |
Caption |
x кон |
||
шаг |
Label3 |
Caption |
шаг |
||
|
|
|
|
||
a |
Label4 |
Caption |
a |
||
b |
Label4 |
Caption |
b |
||
Кнопка решить |
Button1 |
Caption |
Решить |
||
Поле ввода x нач |
Edit1 |
Text |
|
||
Поле ввода x кон |
Edit2 |
Text |
|
||
Поле ввода шага |
Edit3 |
Text |
|
||
Поле ввода a |
Edit4 |
Text |
|
||
Поле ввода b |
Edit5 |
Text |
|
||
|
|
|
|
||
Картинка функции |
Image |
Picture |
Снимок.jpg |
||
Таблица с результатом |
Stringgrid1 |
Colcount Rowcount Fixsedcols fixsedrows |
3 50 0 1 |
||
График функкции |
Chart1 |
Sirieslist |
line |
Таблица используемых событий
Компонент |
Событие |
Имя процедуры обработки события |
Реализуемый алгоритм |
Button1 |
OnClick |
Tform1.Button1Click |
Расчёт функции |
Таблица используемых переменных
Имя переменной в задаче |
Имя переменной в программе |
Тип переменной |
Комментарий
|
xn |
xn |
real |
Начальное занчение х |
xk |
xk |
real |
Конечное значение х |
dx |
dx |
real |
Шаг |
x |
x |
real |
переменная |
y |
y |
real |
Результат |
a |
a |
real |
переменная |
b |
b |
real |
переменная |
|
|
|
|
|
|
|
|
Схема олгаритма
Начало
0
ввод x нач., х кон., dx, a, b
Вывод шапки таблицы с исходными данными
x=xнач
i=1
x<=xкон
Вывод i, x, y
x=x+dx
i=i+1
Конец
1
2
3
4
5
Нет
6
7
8
9
10
Рукописные тесты
Тест1
Исходные данные: x нач.=1, х кон.=70, dx=3, a=4, b=5
Ожидаемый результат :
n/n x y
-
1 112,385932:
-
4 4732,199222
-
7 14078,15487
-
10 4145,922266
-
13 4781,704840
-
16 6655,533260
-
19 6282,082651
-
22 6504,110513
-
25 10139,4393d
-
28 18940,45362
-
31 25301,20465
-
34 39311,18425
-
37 214292,7992
-
40 583308,5540
-
43 73925,45893
-
46 55306,69245
-
49 59606,85561
-
52 46498,09812
-
55 39149,49655
-
58 50839,13412
-
61 84726,06688
-
64 104982,613
-
67 140994,4965
24 70 577795,2948
Распечатка текста процедуры
procedure TForm1.Button1Click(Sender: TObject);
var
xn,xk,dx,x,y,a,b:real;
i:byte;
begin
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
dx:=StrToFloat(Edit3.Text);
a:=StrToFloat(Edit4.Text);
b:=StrToFloat(Edit5.Text);
with form2.stringgrid1 do
begin
Cells[0,0]:='№n/n';
Cells[1,0]:='x';
Cells[2,0]:='y';
end;
form2.show;
form2.Chart1.SeriesList[0].Clear;
x:=xn;
i:=1;
while x<=xk do
begin
y:=(sqr(a+b*x))/(1+power(cos(a*x),3));
Form2.StringGrid1.Cells[0,i]:=IntToStr(i);
Form2.StringGrid1.Cells[1,i]:=FloatToStr(x);
Form2.StringGrid1.Cells[2,i]:=FloatToStr(y);
form2.Chart1.SeriesList[0].AddXY(x,y);
x:=x+dx;
i:=i+1;
end;
end;
end.
Распечатка формы с результатами работы
Вывод: Получил навыки разработки циклических алгоритмов и их реализации в среде Delphi (на примере табулирования функции одной переменной). Научился использовать в проекте несколько форм, новые визуальные компоненты StringGrid, Chart, RadioGroup и проверил корректность ввода исходных данных.