Учебное пособие информатика
.pdf
Установите в компонент TabSheet1 (Ввод исходных данных) компоненты в соответствии с рис. 3.6, а в компонент TabSheet2 (Результаты расчётов) компоненты в соответствии с рис. 3.8. Компонент StringGrid (таблица) находится во вкладке Additional (рис. 3.7). Он позволяет организовать вывод данных в виде таблицы, состоящих из строк (Rows) и столбцов (Columns, сокращенно – Cols).
Рис. 3.6. Компоненты вкладки TabSheet1
Вкладка |
Компонент |
Additional |
StringGrid |
Рис. 3.7. Компоненты вкладки TabSheet2
31
Установите свойства компонента StringGrid следующим образом: ColCount (число столбцов) – 3, RowCount (число строк) – 1, FixedCols (число фиксированных столбцов) – 0, FixedRows (число фиксированных строк) – 1.
Рис. 3.8. Компоненты вкладки TabSheet2
Для доступа к ячейкам таблицы применяется метод Cells [j,i], где j – номер столбца, i – номер строки. Два раза щёлкните по кнопке «Рассчитать значения», и напишите следующий код:
32
В данном коде программы производятся следующие операции:
-строка 49 – устанавливает активной вкладку TabSheet2;
-строка 50 обнуляет счётчик строк i;
-строки 52…54 заполняют ячейки таблицы (Cells) символами x,y,z;
-строка 55 организует цикл вычисления значений функций y=y(x) и z=z(x);
-строка 60 добавляет в таблицу StringGrid строку;
-строки 61…63 добавляют в таблицу StrigGrid1 вычисленные значения функций y=y(x) и z=z(x).
Затем дважды щелкните по кнопке «Назад» и напишите код, который будет
выполнять две операции: устанавливать активной вкладку TabSheet1 и
объявлять новое количество строк в таблице StringGrid:
Также необходимо написать обработчик, который будет автоматически при запуске программы устанавливать активной вкладку TabSheet1. Такой обработчик FormCreate появится в окне кода программы, если дважды
33
щелкнуть левой кнопкой мыши по экранной форме Form1. При этом
необходимо написать следующий код:
После этого сохраните проект и запустите программу на выполнение, обратите внимание на то, как с изменением интервала значений функции по х изменяется количество строк в таблице StringGrid1.
Измените функции Y(X) и Z(X) в соответствии с индивидуальным заданием (табл.2.1) и оформите отчёт аналогично примеру, приведённому в приложении 1.
34
Задание 4. Вычисление значений функции
Данное задание построено на навыках программирования в Lazarus,
.полученных при выполнении предыдущих заданий
Задание: Для заданной функции y=f(x) (табл. 2.1) на отрезках [а;b], [c;d], [e;f] найти сумму или произведение значений функции – соответственно Y1, Y2, Y3, вычисленных с шагом h. Найти результат R= f(Y1, Y2, Y3) (табл. 4.1).
Таблица 4.1. Варианты заданий. Границы отрезков и результат R= f(Y1, Y2, Y3)
№ |
a |
b |
c |
d |
e |
f |
Y1 |
Y2 |
Y3 |
R |
h |
вар. |
|||||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
1 |
0 |
2 |
3 |
6 |
9 |
11 |
с |
с |
п |
R=(Y1+Y2)/Y3 |
0,1 |
2 |
0 |
3 |
4 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)/Y2 |
0,2 |
3 |
0 |
2 |
4 |
6 |
10 |
11 |
п |
с |
с |
R=(Y3+Y2)/Y1 |
0,3 |
4 |
1 |
3 |
5 |
6 |
9 |
12 |
с |
п |
п |
R=(Y2-Y3)/Y1 |
0,4 |
5 |
1 |
2 |
4 |
6 |
9 |
12 |
п |
п |
с |
R=(Y1-Y2)/Y3 |
0,35 |
6 |
1 |
3 |
4 |
6 |
10 |
11 |
п |
с |
п |
R=(Y1+Y2)/Y3 |
0,3 |
7 |
0 |
2 |
4 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)/Y2 |
0,25 |
8 |
0 |
3 |
3 |
6 |
9 |
11 |
с |
с |
п |
R=(Y1+Y2)/Y3 |
0,2 |
9 |
0 |
2 |
3 |
6 |
9 |
11 |
с |
п |
с |
R=(Y1+Y3)/Y2 |
0,15 |
10 |
1 |
3 |
4 |
6 |
10 |
12 |
п |
с |
с |
R=(Y3+Y2)2/Y1 |
0,1 |
11 |
1 |
2 |
4 |
6 |
10 |
11 |
с |
п |
п |
R=(Y1+Y2)/Y3 |
0,2 |
12 |
1 |
3 |
5 |
6 |
9 |
12 |
п |
п |
с |
R=(Y1+Y2)/Y3 |
0,3 |
13 |
0 |
2 |
5 |
6 |
9 |
12 |
п |
с |
п |
R=(Y1+Y3)/Y22 |
0,4 |
14 |
0 |
3 |
4 |
6 |
10 |
11 |
с |
п |
с |
R=(Y1+Y3)2/Y3 |
0,35 |
15 |
0 |
2 |
4 |
6 |
10 |
12 |
с |
с |
п |
R=(Y1+Y2)2/Y3 |
0,3 |
16 |
1 |
3 |
3 |
6 |
9 |
11 |
с |
п |
с |
R=(Y1+Y3)/Y22 |
0,25 |
17 |
1 |
2 |
3 |
6 |
9 |
11 |
п |
с |
с |
R=Y1/(Y3+Y2)2 |
0,2 |
18 |
1 |
3 |
4 |
6 |
10 |
12 |
с |
п |
п |
R=(Y3+Y2)/Y12 |
0,15 |
19 |
0 |
2 |
4 |
6 |
10 |
11 |
п |
п |
с |
R=(Y1+Y2)/Y32 |
0,1 |
20 |
0 |
3 |
5 |
6 |
9 |
12 |
п |
с |
п |
R=(Y1+Y3)2/Y2 |
0,2 |
21 |
0 |
2 |
5 |
6 |
9 |
12 |
с |
п |
с |
R=(Y1+Y3)/2٠۟Y2 |
0,3 |
22 |
1 |
3 |
4 |
6 |
10 |
11 |
с |
с |
п |
R=(Y1+Y2)2/Y3 |
0,4 |
23 |
1 |
2 |
4 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)/Y2 |
0,35 |
24 |
1 |
3 |
4 |
6 |
9 |
11 |
п |
с |
с |
R=3٠۟(Y3+Y2)/Y1 |
0,3 |
25 |
0 |
2 |
3 |
6 |
9 |
12 |
с |
п |
п |
R=(Y2+Y3)/Y12 |
0,25 |
26 |
0 |
3 |
4 |
6 |
10 |
12 |
п |
п |
с |
R=(Y1+Y2)/4٠۟Y3 |
0,2 |
35
Таблица 4.1 (Продолжение)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
|
|
|
|
|
|
|
|
|
|
|
27 |
0 |
2 |
4 |
6 |
9 |
11 |
с |
с |
п |
R=(Y1+Y2)2-Y3 |
0,1 |
28 |
1 |
3 |
5 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)2-Y3 |
0,2 |
29 |
1 |
2 |
5 |
6 |
10 |
11 |
п |
с |
с |
R=Y1-(Y2٠Y3) |
0,3 |
|
|
|
|
|
|
|
|
|
|
|
|
30 |
1 |
3 |
4 |
6 |
9 |
12 |
с |
п |
п |
R=Y1+Y2-Y3 |
0,4 |
|
|
|
|
|
|
|
|
|
|
|
|
31 |
0 |
2 |
4 |
6 |
9 |
12 |
п |
п |
с |
R=(Y1-Y2)/Y32 |
0,35 |
32 |
0 |
3 |
5 |
6 |
10 |
11 |
п |
с |
п |
R=(Y1-Y3)/Y22 |
0,3 |
33 |
0 |
2 |
5 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)2/Y3 |
0,25 |
34 |
1 |
3 |
4 |
6 |
9 |
11 |
с |
с |
п |
R=(Y1+Y2)2/Y3 |
0,2 |
35 |
1 |
2 |
4 |
6 |
9 |
11 |
с |
п |
с |
R=(Y12+Y32)/Y2 |
0,15 |
36 |
1 |
3 |
5 |
6 |
10 |
12 |
п |
с |
с |
R=(Y32+Y22)/Y3 |
0,1 |
37 |
0 |
2 |
3 |
6 |
10 |
11 |
с |
п |
п |
R=(Y3-Y2)/Y12 |
0,2 |
38 |
0 |
3 |
4 |
6 |
9 |
12 |
п |
п |
с |
R=(Y1-Y2)2/Y3 |
0,3 |
39 |
0 |
2 |
4 |
6 |
9 |
12 |
п |
с |
п |
R=2(Y1+Y3)/Y22 |
0,4 |
40 |
1 |
3 |
5 |
6 |
10 |
11 |
с |
п |
с |
R=(Y12+Y32)/Y22 |
0,35 |
41 |
1 |
2 |
3 |
6 |
10 |
12 |
с |
с |
п |
R=(Y1+Y2)2/Y3 |
0,3 |
42 |
1 |
3 |
4 |
6 |
9 |
11 |
с |
п |
с |
R=(Y1+Y3)/4٠Y2 |
0,25 |
|
|
|
|
|
|
|
|
|
|
|
|
43 |
0 |
2 |
4 |
6 |
9 |
11 |
п |
с |
с |
R=(Y3+Y2)/Y12 |
0,2 |
44 |
0 |
3 |
5 |
6 |
10 |
12 |
с |
п |
п |
R=(Y1+Y3)/Y22 |
0,15 |
45 |
0 |
2 |
5 |
6 |
10 |
11 |
п |
п |
с |
R=(Y1+Y2)/Y32 |
0,1 |
46 |
1 |
3 |
4 |
6 |
9 |
12 |
п |
с |
п |
R=(Y1+Y3)2/Y22 |
0,2 |
47 |
1 |
2 |
4 |
6 |
9 |
12 |
с |
п |
с |
R=(Y1٠Y3)/Y2 |
0,3 |
|
|
|
|
|
|
|
|
|
|
|
|
48 |
1 |
3 |
5 |
6 |
10 |
11 |
с |
с |
п |
R=(Y1+Y2)2/Y3 |
0,4 |
49 |
0 |
2 |
5 |
6 |
10 |
12 |
с |
п |
с |
R=(Y1+Y3)/Y22 |
0,35 |
50 |
0 |
3 |
4 |
6 |
9 |
11 |
п |
с |
с |
R=(Y1٠Y3)/Y22 |
0,3 |
51 |
0 |
2 |
5 |
6 |
9 |
12 |
с |
п |
п |
R=(Y2+Y3)/Y1 |
0,25 |
|
|
|
|
|
|
|
|
|
|
|
|
Примечание: В ячейках 8,9,10 сокращение «С» обозначет сумму значений, сокращение «П» - произведение значений функции y=f(x).
Ниже приведён пример выполнения этого задания.
36
Задание: для функции y=х4-х3-2х2+3х-3 на отрезке [-6,2;1,8] найти сумму значений Y1, на отрезке [6,4;10,3] найти произведение значений Y2, на отрезке [18,5;21,8] найти произведение значений Y3, вычисленных с шагом h=0.35.
Найти результат R=0,24٠Y1+0,5٠Y2-Y3.
1. Алгоритм программы
начало
Ввод исходных данных a,b,c,d,e,f,h
Y1=0; x=a
|
x≤b? |
нет |
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|||
|
|
|
|||
да |
|
y= х4-х3-2х2+3х-3 |
|||
Y1=Y1+y; x=x+h
Y2=1; x=c
нет x≤d?
да |
y= х4-х3-2х2+3х-3 |
Y2=Y2*y; x=x+h
Y3=1; x=e
нет x≤f?
да |
y= х4-х3-2х2+3х-3 |
Y3=Y3*y; x=x+h
А
37
А
R=0,24٠Y1+0,5٠Y2-Y3
Вывод результатов
Y1, Y2, Y3, R
x=a
нет x≤f?
да |
y= х4-х3-2х2+3х-3 |
Chart1.Series1.AddXY(x,y)
x=x+h
конец
2. Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart,math,
StdCtrls;
type
TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit;
38
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Button1: TButton; Chart1: TChart;
Series1: TLineSeries; Label10: TLabel; Edit10: TEdit;
procedure Button1Click(Sender: TObject); private
{Private declarations } public
{Public declarations }
end;
var
a,b,c,d,e,f,r,y,x,y1,y2,y3:Real; Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin //Ввод исходных данных a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); d:=StrToFloat(Edit4.Text); e:=StrToFloat(Edit5.Text); f:=StrToFloat(Edit6.Text); h:=StrToFloat(Edit7.Text);
Y:=0; // Вычисление значений функции на первом отрезке
X:=a;
While X<=b do begin y:=sqr(sqr(x))-power(x,3)-2*sqr(x)+3*x-3; Y1:=Y1+y;
x:=x+h;
39
end;
Y2:=1; // Вычисление значений функции на втором отрезке x:=c;
While X<=d do begin y:=sqr(sqr(x))-power(x,3)-2*sqr(x)+3*x-3; Y2:=Y2*y;
x:=x+h;
end;
Y3:=1; // Вычисление значений функции на третьем отрезке x:=e;
While X<=f do begin y:=sqr(sqr(x))-power(x,3)-2*sqr(x)+3*x-3; Y3:=Y3*y;
x:=x+h;
end;
R:=0.24*Y1+0.5*Y2-Y3; // Вычисление результата R Edit11.Text:=FloatToStr(R);// Вывод результатов на экран Edit8.Text:=FloatToStr(Y1);
Edit9.Text:=FloatToStr(Y2);
Edit10.Text:=FloatToStr(Y3); x:=a; //Построение графика
While X<=f do begin y:=sqr(sqr(x))-power(x,3)-2*sqr(x)+3*x-3; Chart1.SeRies1.ADDXY(x,y);
x:=x+h;
end;
end;
3. Результат работы программы
40
