ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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