Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие информатика

.pdf
Скачиваний:
12
Добавлен:
18.03.2016
Размер:
1.59 Mб
Скачать

Установите в компонент 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=х43-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= х43-2х2+3х-3

Y1=Y1+y; x=x+h

Y2=1; x=c

нет x≤d?

да

y= х43-2х2+3х-3

Y2=Y2*y; x=x+h

Y3=1; x=e

нет x≤f?

да

y= х43-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= х43-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