ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.03.2025

Просмотров: 300

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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


if i=3 then{для последнего эллипса заливка меняется }

Canvas.Brush.Style:=bsSolid;{на сплошную} Canvas.Ellipse (50, 80+(i-1)*100, 250, 120+(i-1)*100);

end;

{ниже – рисование треугольника}

Canvas.Polygon([Point(40,330),Point(100,330),Point(100,350)]);

{рисование верхней дуги}

Canvas.Arc(290,60,360,140,360,100,325,60);

{рисование нижней дуги}

Canvas.Arc(190,270,310,350,250,350,310,310); Canvas.Pen.Style:=psDash;{линии меняются на пунктирные}

{ниже – рисование вертикально стоящего прямоугольника}

Canvas.Rectangle(320,120,350,340); Canvas.Pen.Style:=psDashDot;{линии – штрих-пунктирные} Canvas.Brush.Style:=bsDiagCross;{перекрестная штриховка} Canvas.Rectangle(240,30,260,70);{малый прямоугольник} for i:=1 to 3 do{в цикле рисуются линии, стиль линии } begin { выбирается оператором case}

case i of

1:Canvas.Pen.Style:=psDash;

2:Canvas.Pen.Style:=psDashDot;

3:Canvas.Pen.Style:=psSolid; end;

Canvas.MoveTo(10, 100*i);{курсор – в начало линии} Canvas.LineTo(300,100*i);{рисование линии}

end;

end;

ПРИМЕР ОБРАБОТЧИКА, ФОРМИРУЮЩЕГО МАССИВЫ КООРДИНАТ ТОЧЕК СЕРИЙ ДЛЯ ВЫВОДА ГРАФИКОВ ФУНКЦИЙ С ПОМОЩЬЮ CHART

procedure TForm1.FormCreate(Sender: TObject);

{Обработчик выполняется при создании формы} Var n,i:integer;{n – число точек, i-номер точки}

x,y,h:real;{координаты точки и шаг приращения аргумента x}

31

begin n:=20; h:=2*pi/n;

x:=0;{начальное значение x}

Series1.Title:='sin';{изменение названий серий для легенды}

Series2.Title:='cos';

for i:=1 to n do {цикл по точкам} begin

y:=sin(x);

Series1.AddXY(x,y);{добавление точки к первой серии (графику)} y:=cos(x);

Series2.AddXY(x,y); {добавление точки ко второй серии (графику)} x:=x+h;{изменение x}

end; end;

Лабораторная работа №10. Обработка исключительных ситуаций

Цель работы: освоение приемов обработки исключительных ситуаций в Объектном Паскале.

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

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

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

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

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

1)исключительная ситуация класса EConvertError (ошибка преобразования данных) при считывании значений исходных данных из компонентEdit и преобразовании этих значений к числовым типам с использованием функций StrToInt, StrToFloat в приложении для задачи 1.3.4.N+1 (лабораторная работа №5);

2)исключительная ситуация класса EConvertError при считывании значения длины массива из компоненты Edit в приложении для задачи

32