Лабораторные работы №6 Delphi
.pdf
|
|
|
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
ЛАБОРАТОРНАЯ РАБОТА 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