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

Лабораторные работы №6 Delphi

.pdf
Скачиваний:
44
Добавлен:
13.05.2015
Размер:
358.7 Кб
Скачать

 

 

 

xср =

1 ∑ ∑xij

 

 

 

 

 

m

n

 

 

 

 

nm

j=1

i=1

4.00

3.60

10.00

22.59

 

 

 

58.00

10.47

5.00

32.67

 

 

 

16.00

31.20

15.00

12.73

 

 

 

54.00

21.44

15.00

42.77

 

 

 

32.00

10.40

20.00

22.68

 

 

 

24.00

42.40

36.00

24.77

 

 

 

14.00

21.80

33.00

29.73

 

 

 

26.00

21.00

31.00

12.76

 

 

 

5.00

31.70

13.00

29.75

 

 

 

8.00

11.70

22.00

23.76

 

 

 

10.00

14.30

68.00

42.77

 

 

 

Задание 6

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij =

x

ij

xср

 

j

 

 

Sj

 

 

 

где Sj –среднеквадратическое отклонение по столбцу j.

 

 

 

Sj =

1

n

ср

)

2

 

 

 

 

 

(xij

xj

 

 

xjср –среднее значение х по столбцу j.

n i=1

 

 

 

 

 

 

 

 

 

 

16.00

1.29

15.00

2.73

 

 

 

 

 

 

6.00

8.00

4.00

2.85

 

 

 

 

 

 

3.00

9.45

3.00

2.83

 

 

 

 

 

 

1.00

5.00

4.00

2.86

 

 

 

 

 

 

3.00

6.00

9.00

2.88

 

 

 

 

 

 

4.00

6.60

8.00

2.82

 

 

 

 

 

 

12.00

3.00

7.00

2.78

 

 

 

 

 

 

30.00

2.53

16.00

2.75

 

 

 

 

 

 

35.00

2.00

10.00

2.72

 

 

 

 

 

 

29.00

2.66

18.00

2.72

 

 

 

 

 

 

77.00

2.00

17.00

2.58

 

 

 

 

 

 

Задание 7

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij =

x

ij

xср

 

 

 

 

Sj

 

 

 

21

где Sj –среднеквадратическое отклонение по столбцу j.

Sj =

 

1

m

n

x

ср 2

 

 

 

∑ ∑(xij

)

 

 

mn j=1

i=1

 

 

 

xср –среднее значение х по всей матрице.

31.00

2.67

19.00

2.69

17.00

3.34

20.00

2.70

1.00

15.00

5.00

2.82

9.00

16.00

5.00

2.81

2.00

15.00

6.00

2.78

1.00

11.00

3.00

2.84

2.00

10.00

7.00

2.81

5.00

10.00

5.00

2.80

5.00

13.00

6.00

2.87

1.00

7.00

11.00

2.87

1.00

6.00

18.00

2.84

Задание 8

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

 

 

 

yij

=

x

ij

xmin

 

 

 

 

 

j

 

 

 

xmaxj

xminj

 

 

 

 

 

где xjmin –минимальное значение х по столбцу j;

 

 

 

xjmax –максимальное значение х по столбцу j.

 

 

 

 

8.00

4.00

14.00

2.77

 

 

 

 

 

12.00

3.00

23.00

2.70

 

 

 

 

 

11.00

2.00

17.00

2.72

 

 

 

 

 

10.00

3.00

15.00

2.72

 

 

 

 

 

11.00

1.00

35.00

2.74

 

 

 

 

 

23.00

2.00

27.00

2.68

 

 

 

 

 

21.00

1.00

21.00

2.69

 

 

 

 

 

31.00

2.00

19.00

2.69

 

 

 

 

 

23.00

2.00

23.00

2.67

 

 

 

 

 

25.00

1.00

71.00

2.84

 

 

 

 

 

 

 

 

 

Задание 9

Дана матрица xij, получить и

вывести

в

таблицу новую матрицу yij, элементы которой

вычисляются следующим образом:

 

 

 

 

 

 

 

yij

=

x

ij

xmin

 

 

j

 

 

xmax xmin

 

 

 

где xmin –минимальное значение х по всей матрице; xmax –максимальное значение х по всей матрице.

22

4.00

13.60

10.00

22.59

58.00

20.47

5.00

32.67

16.00

11.20

15.00

12.73

54.00

31.44

15.00

12.77

32.00

20.40

20.00

22.68

24.00

12.40

36.00

32.77

14.00

31.80

33.00

12.73

26.00

21.00

31.00

42.76

5.00

11.70

13.00

22.75

8.00

11.70

22.00

12.76

10.00

14.30

68.00

22.77

Задание 10

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, в которой расположить элементы каждого столбца в порядке возрастания их значений.

4.00

13.60

10.00

22.59

58.00

20.47

5.00

32.67

16.00

11.20

15.00

12.73

54.00

31.44

15.00

12.77

32.00

20.40

20.00

22.68

24.00

12.40

36.00

32.77

14.00

31.80

33.00

12.73

26.00

21.00

31.00

42.76

5.00

11.70

13.00

22.75

8.00

11.70

22.00

12.76

10.00

14.30

68.00

22.77

Задание 11.

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, в которой расположить элементы каждого столбца в порядке убывания их значений.

16.00

1.29

15.00

2.73

6.00

8.00

4.00

2.85

3.00

9.45

3.00

2.83

1.00

5.00

4.00

2.86

3.00

6.00

9.00

2.88

4.00

6.60

8.00

2.82

12.00

3.00

7.00

2.78

30.00

2.53

16.00

2.75

35.00

2.00

10.00

2.72

29.00

2.66

18.00

2.72

77.00

2.00

17.00

2.58

Задание 12

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, в которой расположить элементы каждой строки в порядке возрастания их значений.

23

4.00

13.60

10.00

22.59

58.00

20.47

5.00

32.67

16.00

11.20

15.00

12.73

54.00

31.44

15.00

12.77

32.00

20.40

20.00

22.68

24.00

12.40

36.00

32.77

14.00

31.80

33.00

12.73

26.00

21.00

31.00

42.76

5.00

11.70

13.00

22.75

8.00

11.70

22.00

12.76

10.00

14.30

68.00

22.77

24

ЛАБОРАТОРНАЯ РАБОТА 3-5

ИСПОЛЬЗОВАНИЕ КОМПОНЕНТ СТРАНИЦЫ DIALOGS

В состав Windows входит ряд типовых диалоговых окон (например, окна выбора загружаемого или сохраняемого файла), использование которых помогает более корректно выполнять соответствующие операции. В Delphi реализованы классы, объекты которых предоставляют программисту удобные способы создания и использования таких окон.

Работа со стандартными диалоговыми окнами осуществляется в три этапа.

1.На форму помещается соответствующий компонент и производится настройка его свойств. Следует отметить, что во время работы программы сам компонент не виден. Настройка компонент может производиться как на этапе проектирования программы, так и в ходе выполнения программы.

2.Производится вызов стандартного для диалога метода, который создаст и выведет на экран диалоговое окно. Вызов этого метода осуществляется внутри обработчика какого-то события (например, после нажатия кнопки «СОХРАНИТЬ»). Окно диалога является модальным окном, поэтому сразу после обращения к методу Execute дальнейшее выполнение программы приостанавливается. Функция Execute возвращает в программу True, если результат диалога был успешным.

3.Проанализировав результат выполнения функции Execute, программа может выполнить использование введенных с помощью диалога данных.

Проиллюстрируем использование диалоговых окон на примере вызова данных из файла и сохранения данных в программе лабораторной работы 4. Дополним созданную ранее форму четырьмя компонентами (см. рис.1).

1.Компонент OpenDialog1.

2.Компонент SaveDialog1.

3.Кнопка «Открыть».

4.Кнопка «Сохранить».

Для объектов OpenDialog1 и SaveDialog1 определим следующие свойств в инспекторе объектов.

Filter = Текстовые файлы *.txt; Initial = A:.

Эти свойства указывают на то, что данные будут располагаться в файлах с расширением txt в корневом каталоге диска А.

кол.строк

 

 

кол.столбцов

 

 

Ввод размеров матр.

 

 

Ввести в таблицу

 

 

Вычисление

 

 

 

Открыть

Сохранить

OpenDialog

SaveDialog

 

25

Рис.1.

Для кнопки «Открыть» создадим следующий обработчик события.

procedure TForm1.Button4Click(Sender: TObject); var

s:string;

f:TextFile; begin

if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then

begin AssignFile(f,OpenDialog1.FileName); Reset(f);

readln(f,n,m); for i:=1 to n do begin

for j:=1 to 4 do begin

read(f,x[j][i]);

end;

readln(f);

end;

CloseFile(f);

SG1.RowCount:=n+1;

SG1.ColCount:=m; for i:=1 to n do begin

for j:=1 to 4 do begin

str(x[j][i]:10:4,s); SG1.Cells[j-1,i-1]:=s;

end;

end;

end;

end;

Приведенная процедура реализует ввод элементов матрицы, состоящей из n строк и m столбцов. Величины n и m, а также элементы матрицы записаны, в файле с расширением txt на диске А.

Функция OpenDialog1.Execute возвращает True если диалог был успешным, а функция FileExists возвращает True если выбранный в процессе диалога файл (OpenDialog1.FileName) существует в корневом каталоге диска А.

Для кнопки «Сохранить» создадим следующий обработчик события.

procedure TForm1.Button5Click(Sender: TObject); var

f:TextFile; begin

26

if SaveDialog1.Execute then begin

AssignFile(f,SaveDialog1.FileName);

Rewrite(f); writeln(f,n,' ',m); for i:=1 to n do begin

for j:=1 to 4 do begin

write(f,x[j][i]:10:4);

end;

writeln(f);

end;

CloseFile(f);

end;

end;

Данная процедура реализует запись в файл значений массива x[j][i]. Имя файла через переменную SaveDialog1.FileName определяется в процессе соответствующего диалога.

Порядок выполнения работы.

1.Дополните проект лабораторной работы 3-4 перечисленными выше компонентами.

2.Откомпилируйте и выполните программу решения задачи индивидуального задания. При выполнении задания сохраните исходные данные и результаты решения в разных файлах. Проверьте правильность чтения файла исходных данных.

3.Скопируйте на свою дискету матрицы исходных данных других студентов группы и проверьте - будет ли выполняться обработка этих файлов.

4.Дополните процедуру реакции на нажатие кнопки «сохранить» проверкой наличия указанного в процессе диалога файла на диске с выдачей соответствующего предупреждения на экран видеомонитора.

27

Рис.1: Стандартный диалог Windows для определения OLE объекта.

ЛАБОРАТОРНАЯ РАБОТА 3-6 ИСПОЛЬЗОВАНИЕ OLE-ОБЪЕКТОВ

Аббревиатура OLE обозначает Objects Linked and Embedded (Присоединенные И Встроенные Объекты. Данные, разделяемые между приложениями называются OLE объектом. Приложение, которое может содержать OLE объекты, называют OLE контейнером (OLE Container). Приложение, данные из которого можно включить в OLE контейнер в виде OLE объекта, называют OLE сервером.

Например, MicroSoft Word может включать в документ графические объекты, аудио- и видеоклипы и множество других объектов (такой документ иногда называют составным документом - compound document ).

Как следует из названия, OLE объекты можно либо присоединить к OLE контейнеру, либо включить в него. В первом случае данные будут храниться в файле на диске, любое приложение будет иметь доступ к этим данным и сможет вносить изменения. Во втором случае данные включаются в OLE контейнер и только он сможет просматривать и модифицировать эти данные.

OLE является дальнейшим развитием идеи разделяемых между приложениями данных. Каждый раз, когда в программе-клиенте пользователь обращается к OLE объекту с целью просмотра или редактирования данных (обычно двойной щелчок мышкой на объекте), запускается приложение-сервер, в котором и происходит работа с данными.

В программировании существует несколько видов OLE, отличающихся по способу активации OLE сервера. OLE версии 1 запускает сервер в отдельном окне. OLE 2 реализует то, что называется in-place activation and editing. В данном случае сервер запускается “внутри” приложения-клиента, модифицирует вид системного меню, линейки инструментов и др. Развитие идеи OLE привело к появлению OLE automation - приложение-клиент может выполнить часть кода сервера. Тип OLE объекта, помещенного в программу-клиент, определяется тем, какую версию OLE поддерживает сервер.

Объект TOLEContainer

Объект TOLEContainer находится на странице System Палитры Компонент и нужен для создания приложений OLE-контейнеров. TOLEContainer скрывает все сложности, связанные с внутренней организацией OLE и предоставляет программисту достаточно простой интерфейс. Построим простейшее приложение с использованием OLE объекта. Создайте новый проект и поместите на форму TOLEContainer, дважды щелкните мышкой на контейнере - появится стандартный диалог Windows “Insert Object” (см. рис.1)

В этом диалоге есть список всех зарегистрированных в системе OLE-серверов (регистрация происходит при инсталляции программы). Тип OLEобъекта определяется как раз тем сервером, который Вы укажете. Если создается новый объект (Create New),

то при нажатии кнопки OK

запустится программа OLEсервер, в которой и формируется новый объект. После выхода из программы-сервера новый OLE объект включается

(embedded object) в

программу. OLE объект можно создать используя уже имеющийся файл в формате одного из OLE-серверов. Для этого нужно выбрать пункт Create from File (см. рис.2)

28

Рис.2: Выбор OLE-объекта, хранящегося в файле.

Form1” (Win’95+MS Word 7.0). Запустите проект, он будет выглядеть примерно так:

Выбранный объект можно как включить в приложение, так и присоединить, отметив пункт Link.

Итак, давайте при создании нашего проекта создадим новый объект, выбрав для этого, например, Microsoft Word Document (рис.1). Нажмите OK и после того, как запустится MS Word, наберите там любой текст (“Это OLE-

объект Microsoft Word document”). Для завершения работы в меню есть специальный пункт

“File|Close and Return to

Рис.3: Простое приложение с OLE-контейнером.

Щелкните дважды мышкой на OLE-контейнер - запустится MS Word с документом из OLE-объекта, который можно редактировать, при этом все изменения сохраняются в OLE-объекте.

Если во время дизайна Вы выбираете объект для включения в OLE-контейнер, то он полностью записывается в файл формы (FORM1.DFM) и в дальнейшем прикомпилируется к EXE файлу. В случае очень больших объектов это может привести во время дизайна к длительным паузам и даже к возникновению ошибки “Out of resource”. Поэтому рекомендуется большие объекты делать присоединенными (linked).

TOLEContainer позволяет отображать в программе объект в его непосредственном виде (с различной степенью увеличения или уменьшения - свойство Zoom) или в виде пиктограммы, определяемой в диалоге на рис.1 (Display as Icon).

Выбор OLE-объекта может происходить не только во время дизайна, но и во время выполнения программы (об этом чуть ниже). Результаты работы с этим объектом можно сохранить в виде файла и в следующий раз восстановить его оттуда, для этого TOLEContainer имеет два метода SaveToFile и LoadFromFile.

Пример OLE приложения

Для создания нового OLE объекта нужно выбрать пункт меню File|New и далее Edit|Insert Object. Появится стандартный диалог Windows для инициализации OLE объекта

(см. рис.1). Если приложение OLE-сервер имеет возможность сохранять информацию об OLE объекте в Clipboard, то проинициализировать объект можно с помощью пункта меню Edit|Paste Special.

Сохранение OLE объекта в базе данных

Иногда необходимо хранить OLE объекты не в файлах, а в базе данных (BLOB поле в таблице). Конечно, в данном случае OLE объект должен быть присоединенным (embedded) в целях переносимости. К сожалению, в стандартной поставке Delphi нет специального объекта типа TDBOLEContainer для данных целей, но OLE объект можно сохранять и восстанавливать с помощью методов SaveToStream и LoadFromStream. Например:

procedure TOLEForm.SaveOLE(Sender: TObject);

29

var

BlSt : TBlobStream; begin

With Table1 do BlSt:=TBlobStream.Create(BlobField(FieldByName('OLE')), bmReadWrite); OLEContainer.SaveToStream(BlSt as TStream);

BlSt.Free;

end;

Порядок выполнения работы

1.Выполнить упражнение описанное в инструкции.

2.Создайте пустую форму и поместите на нее OLEContainer из страницы System палитры компонент. - двойным щелчком мыши раскройте меню OLE-объектов (рис.1);

- поместите в контейнер объект Microsoft Equation;

- поместите в объект формулу индивидуального задания.

3.Создайте проект для решения задачи индивидуального задания при этом необходимо предусмотреть: - ввод исходных данных с клавиатуры в диалоговые окна; - изображение на экране формулы, по которой производится вычисление функции;

- размещение результатов вычислений в таблице (StringGrid), с выводом в таблицу значений аргумента и

параметров; - возможность сохранения результатов вычислений в файле.

Задание 1.

 

 

 

 

U

=

1

 

 

 

 

 

(x a)2

2

 

 

 

 

 

 

exp

 

 

 

 

 

 

 

 

 

si

2π

 

 

 

 

 

2si

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn

xk

x

a

 

 

 

S0

 

S1

 

 

S2

S3

 

S4

 

0

6

0.2

3.0

 

 

0.5

 

0.7

 

 

1.0

1.5

 

2.0

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 2.

 

 

 

 

 

 

 

 

 

 

U = 0.007si 3

 

4πa3h

 

 

 

 

 

 

 

 

 

(h2 +x2 )3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn

xk

x

a

h

 

 

 

 

S0

 

 

S1

S2

 

S3

S4

-

300

25

100

150

 

 

 

 

0.1

 

 

0.1

0.2

 

0.3

0.4

300

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 3.

 

 

 

 

 

 

 

 

 

 

 

U = −a ln

x2

+(si

+b)2

 

 

 

 

 

 

 

 

 

 

 

si2 +x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn

xk

x

a

B

 

 

 

 

S0

 

 

S1

S2

 

S3

S4

-

300

25

200

150

 

 

 

 

10

 

 

20

40

 

60

100

300

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 4.

 

 

 

 

 

30