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

LabsDelphi1

.pdf
Скачиваний:
21
Добавлен:
31.03.2015
Размер:
492.92 Кб
Скачать

procedure TForm1.N3Click(Sender: TObject);

{обработчик пункта меню “вывод в файл”}

Var f:TextFile; s:string; {f-программное имя файла, s-физическое} i,j:integer; {счетчики строк и столбцов матрицы}

begin

if SaveDialog1.Execute then {если подтверждено сохранение файла в диалоговом окне}

begin

s:=SaveDialog1.FileName;{имя файла из диалогового окна} AssignFile(f,s); {связывание прогр. и физ. имен файла} Rewrite(f); {открытие файла для записи}

writeln(f,'n=', Edit1.Text, ' m=', Edit2.Text);{вывод в файл } {числа строк и столбцов матрицы}

writeln(f); {пропуск строки в файле} writeln(f,' Матрица');

for i:=1 to n do begin

for j:=1 to m do

write(f,StringGrid1.Cells[j,i], ' ');{вывод элементов матрицы} { в файл, значения разделяются пробелом}

writeln(f){переход к следующей строке в файле} end;

CloseFile(f);

{закрытие файла, обязательно для сохранения файла} end

end;

Ниже приведена форма файла исходных данных, форму выходного файла напишите сами.

<n> <m>

<a[0, 0]> <a[0, 1]> … <a[0, m-1]>

<a[n-1, 0]> <a[n-1, 1]> …<a[n-1, m-1]>

21

Лабораторная работа №8. Разработка оконных приложений, использующих автономные модули

Цель работы: закрепление знаний и навыков создания и использования подпрограмм и модулей; освоение приемов использования автономных модулей при разработке оконных приложений; закрепление навыков разработки оконных приложений

Продолжительность работы: 4 часа

1. ПОДГОТОВКА К РАБОТЕ

Перед началом выполнения работы студент должен:

1.Ознакомиться с принципами создания и использования автономных модулей по пособию М.М. Марана [3], §3.

2.Разработать проект отчета по разработке оконного приложения для задачи [1] 3.4.N+1. Проект отчета должен содержать:

1)номер и условие задачи;

2)состав данных разрабатываемой подпрограммы;

3)блок-схему алгоритма подпрограммы;

4)код автономного модуля, содержащего подпрограмму;

5)эскиз основной формы приложения для тестирования подпрограммы (обеспечивающего ввод исходных данных, вызов подпрограммы и вывод результатов);

6)программный код модуля и основных обработчиков на Паскале;

7)тесты.

3.Набрать программный код автономного модуля и основных обработчиков приложения в блокноте или в среде Delphi.

При разработке алгоритмов и программ необходимо учесть следующее:

1)длина массива должна задаваться считыванием значения из текстового окна (компоненты Edit); команда на задания длины – нажатие кнопки (которую можно подписать фразой «Ввод длины массива»);

2)для отображения массивов на форме следует использовать компоненту StringGrid; число строк (столбцов) StringGrid должно настраи-

ваться в соответствии с введенным значением длины массива;

22

3)приложение не должно иметь ограничений на размеры массивов; для хранения массивов в оперативной памяти рекомендуется использовать динамические массивы.

2.ЗАДАНИЕ И РЕКОМЕНДАЦИИ ПО ЕГО ВЫПОЛНЕНИЮ

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

2.В рамках существующего приложения с помощью команды главного меню File/New/Unit создайте автономный модуль. По умолчанию ему будет дано имя Unit2. Заполните разделы модуля Interface и Implementation, используя подготовленный заранее код. Сохраните модуль в папке приложения.

3.Подключите модуль Unit2 к модулю основной формы (Unit1), добавив в предложение uses модуля Unit1 имя Unit2 (или воспользуйтесь командой

Project/Add to Project главного меню Delphi).

4.Используя домашние заготовки, создайте необходимые обработчики для основной формы Form1. На данном этапе приложение должно иметь не менее двух обработчиков: первый – для ввода длины массива, второй – для запуска основного вычислительного алгоритма. Первый обработчик строится по тем же правилам, что и обработчик ввода размеров матрицы в лабораторной работе №6. Второй обработчик должен содержать считывание исходных данных из элементов формы, вызов подпрограммы (содержащейся в модуле Unit2) для обработки данных и запись результатов в элементы формы.

5.Отладьте полученное приложение, используя подготовленные тесты.

6.Сделайте главное меню приложения. Оно должно иметь следующие пункты:

Файл (с подпунктами Ввод из файла, Вывод в файл и Выход), Обработка (с подпунктами Ввод длины массива и Вычисление) и Помощь (с подпунктами Автор и Условие).

7.Создайте обработчики ввода из файла и вывода в файл, используя знания и навыки, полученные в лабораторной работе №7.

8.К командам пункта Обработка подключите обработчики соответствующих кнопок. Проверьте работоспособность этих команд.

9.Напишите обработчик для команды Выход пункта Файл главного меню. Этот обработчик должен содержать один оператор Close.

23

10. Создайте и отладьте обработчики для команд пункта Помощь главного меню. Они должны вызывать информационные окна, содержащие, соответст-

венно, сведения об авторе приложения и условие задачи. Как работать с информационными окнами, изложено в §2.2.1 [3].

11.Дополните обработчик кнопки Ввод длины массива проверкой на положительность значения длины. При вводе неположительного числа должно появляться окно сообщения с соответствующей фразой. Программирование окна сообщения описано в §2.2.2 [3].

12.Дополните обработчик кнопки Ввод длины массива проверкой, является ли введенное значение числом. Если содержимое текстового окна Edit1 не может быть интерпретировано как число, то должно появляться окно сообщения с соответствующей фразой. При выполнении этого пункта рекомендуется использовать процедуру Val (см. [2] или помощь Delphi, а также приведенный ниже пример).

13.Сделайте 2-3 контекстных меню и привяжите их к разным элементам управления формы. Проверьте, работают ли эти меню.

14.Зафиксируйте результаты в отчете и покажите их преподавателю.

ПРИМЕР АВТОНОМНОГО МОДУЛЯ

unit Unit2;

{Модуль содержит одну функцию вычисления суммы элементов одномерного массива длины n}

interface {интерфейсная часть модуля} function sum (a: array of real; n: integer):real; implementation

function sum; {исполняемая часть модуля}

Var i: integer; s:real; begin

s:=0;

for i:=Low(a) to High(a) do s:=s+a[i];

sum:=s; end; end.

24

НЕКОТОРЫЕ ОБРАБОТЧИКИ ПРИЛОЖЕНИЯ, ВЫЧИСЛЯЮЩЕГО СУММУ

ЭЛЕМЕНТОВ ОДНОМЕРНОГО МАССИВА

Форма приложения приведена на рис.6.

Рис. 6. Форма приложения вычисления суммы

procedure TForm1.Button1Click(Sender: TObject);

{Обработчик нажатия кнопки ввода длины массива}

Var j:integer; begin

val(Edit1.Text,n,j); if j<>0 then

ShowMessage('Введите число') else

if n<=0 then

ShowMessage(' Введите положительное число ')

else begin

StringGrid1.ColCount:=n;

{В Инспекторе объектов установлено: StringGrid1.FixedCols=0} for j:=0 to n-1 do {Подписываем номера элементов массива}

StringGrid1.cells[j,0]:=IntToStr(j+1); end;

end;

25

procedure TForm1.Button2Click(Sender: TObject);

{Обработчик нажатия кнопки «Вычислить сумму»}

Var a: array of real; j: integer; begin

SetLength(a,n);{распределение памяти под массив, n – глобальная переменная}

for j:= 0 to n-1 do {ввод массива} if StringGrid1.Cells[j,1]='' then a[j]:=0

else

a[j]:= StrToFloat(StringGrid1.Cells[j,1]);

{далее вычисление суммы и вывод ее в текстовое окно:}

Edit2.Text:=FloatToStr(Sum(a,n)); end;

Лабораторная работа №9. Разработка оконных приложений, осуществляющих графический вывод

Цель работы: освоение приемов вывода графических изображений в среде

Delphi.

Продолжительность работы: 4 часа

1. ПОДГОТОВКА К РАБОТЕ Перед началом выполнения работы студент должен:

1.Ознакомиться с графическим вывода среде Delphi по пособию [3], гл. 8.

2.Разработать проект отчета по решению задач [1] 7.4.N+1, 7.1. N+1. По задаче

7.4.N+1 (рисунки с

0

150

300

 

 

 

 

 

 

 

 

 

100

200

300

Рис. 7. Пример задания

графическими примитивами) проект отчета должен содержать:

1)номер и условие задачи с рисунком, на котором проставлены отметки на координатных осях в пикселях (см. рис. 7);

2)программный код для вывода заданного изображения; код должен использовать методы холста (свой-

ства Canvas) – см. ниже приведенный пример.

26

По задаче 7.1.N+1 (построение графиков функций) проект отчета по каждому

пункту задания (А, Б) должен содержать:

1)формулу для исследуемой функции;

2)рассматриваемый интервал значений аргумента x;

3)характерные точки функции, подлежащие определению по графику;

4)самостоятельно полученную оценку интервала значений функции;

5)код обработчика, формирующего массивы координат точек для пост-

роения графика с помощью компоненты Chart (диаграмма) – см. ниже приведенный пример; 6) код обработчика, выводящего график по точкам – см. [3], §8.2;

рекомендуется написать универсальную подпрограмму, выводящую график произвольной функции, и применить эту подпрограмму в пунктах А и Б; в список параметров подпрограммы обязательно должны входить параметр-функция (определяющая, график какой функции выводится) и

минимальные и максимальные значения аргумента и функции.

7)тесты.

3.Набрать программный код основных обработчиков приложения в блокноте или в среде Delphi.

2. ЗАДАНИЕ И РЕКОМЕНДАЦИИ ПО ЕГО ВЫПОЛНЕНИЮ

Вывод рисунка, состоящего из графических примитивов (задача 7.4.N+1)

1. Создайте приложение. В обработчик события OnPaint (перерисовка формы)

вставьте заранее подготовленный код графического вывода примитивов на форму. Установите размеры клиентской области формы в соответствии с раз-

мером рисунка (с помощью Инспектора объектов или программно); для рис. 7

ClientHeight:=400; ClientWidth:=400. Сохраните приложение.

2. Запустите и отладьте приложение. Результат работы приложения для рассматриваемого примера приведен на рисунке 8.

27

 

 

3. Закройте это приложе-

 

 

ние и создайте новое. На

 

 

его форму

с

панели

 

 

System перенесите ком-

 

 

поненту PaintBox (см.

 

 

рис. 9). Ответьте на во-

 

 

прос: зачем нужна эта

 

 

компонента?

 

 

 

 

4. Установите

размеры

 

 

PaintBox в соответствии

 

 

с заданным рисунком. В

 

 

обработчик

 

события

 

 

OnPaint формы вставьте

 

 

заранее подготовленный

 

 

код графического вывода

 

 

примитивов

в

компо-

 

 

ненту PaintBox (а не на

Рис. 8. Результат графического вывода

форму, как в предыдущем

 

 

 

 

 

 

приложении).

Сохраните

 

 

приложение.

 

Отладьте

 

 

его.

 

 

 

 

PaintBox1 5. Добавьте

на

форму

 

 

кнопку

 

(компоненту

 

 

Button) и измените ее за-

 

 

головок на значение «До-

 

 

бавить фигуру». В ее об-

 

 

работчике

запишите опе-

Рис. 9. Компонента PantBox

 

ратор, рисующий в рамке

 

PaintBox

произвольную

 

 

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

6. Отразите результаты в отчете и покажите его преподавателю. 28

Вывод графиков функций (задача 7.1.N+1)

1.Создайте новое приложение. Установите размеры клиентской области формы в соответствии с предполагаемым размером графика. Перенесите на форму компоненту Chart. Сохраните приложение и периодически повторяйте сохранение.

2.В контекстном меню компоненты Chart выберите пункт Edit Chart, что приведет к открытию окна настройки свойств компоненты (см. рис. 10).

Рис. 10. Окно настройки диаграммы

3. В этом окне выберите вкладку Chart, а на ней – вкладку Series. Для добавления графика в поле диаграммы на этой вкладке нажмите кнопку Add. В открывшемся окне TeeChartGalery (галерея типов диаграмм) на вкладке Standard выберите тип Line, снимите флажок 3D и нажмите кнопку OK. При этом в окно вкладки Series будет добавлен график с именем Series1; обратите внимание, что в файле Unit1.pas в описание типа TForm1 добавилась строка объявления нового свойства Series1: TLineSeries. При желании, используя кнопку Title, можно изменить имя графика (серии). Кроме того, таким способом в одно поле диаграммы можно добавить несколько графиков.

29

4.Ознакомьтесь с другими вкладками окна настройки диаграммы, и выберите свойства графика по своему вкусу. Рекомендуется стиль легенды (вкладка Legend, окно Legend Style) установить в значение Series Name, а на вкладке верхнего уровня Series выбрать удобные характеристики линии графика (толщину, стиль, цвет).

5.В обработчик события создания формы OnCreate вставьте заранее подготовленный программный код формирования в компонентах Series массивов координат точек для создания графиков для пункта А задания 7.1.N+1.

Отладьте приложение.

6.Проанализируйте полученный график. Проверьте, совпадает ли диапазон значений функции с его предварительной оценкой. Визуально определите характерные точки функции.

7.Повторите п.п.5-6 для исследования функции пункта Б задания 7.1.N+1.

8.Разработайте новое приложение для рисования графиков задания 7.1.N+1 по точкам (см. [3], §8.2). Проанализируйте графики и сравните их с графиками, полученными с помощью компоненты Chart.

9.Отразите результаты в отчете и покажите его преподавателю.

ПРИМЕР ОБРАБОТЧИКА ВЫВОДА ГРАФИЧЕСКИХ ПРИМИТИВОВ

procedure TForm1.FormPaint(Sender: TObject);

{обработчик события перерисовки формы, выводит изображение в клиентскую область формы}

Var i:integer;{счетчик циклов для рисования эллипсов и прямых} begin {далее установка параметров изображения}

color:=clWhite;{цвет фона клиентской области формы -белый}

Canvas.Brush.Color:=clLtGray;{цвет заливки – светло-серый}

Canvas.Pen.Width:= 1;{толщина линий полагается равной 1}

Canvas.Pen.Color:=clBlack;{цвет линий - черный} Canvas.Pen.Style:=psSolid;{линии - сплошные} Canvas.Brush.Style:=bsBDiagonal;{штриховка - диагональная} for i:=1 to 3 do {в цикле рисуется три эллипса}

begin

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]