ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.03.2025
Просмотров: 651
Скачиваний: 1
СОДЕРЖАНИЕ
Реализация алгоритмов в среде Delphi Сборник заданий для лабораторных работ
2. Задание и рекомендации по его выполнению
Лабораторная работа №2. Решение задач обработки массивов в консольном приложении среды Delphi
2. Задание и рекомендации по его выполнению
2. Задание и рекомендации по его выполнению
2. Задание и рекомендации по его выполнению
Лабораторная работа №5. Разработка простейших оконных приложений в среде Delphi
2. Задание и рекомендации по его выполнению
ПриМер основного обработчика индивидуальнойзадачи
Лабораторная работа №6. Создание оконных приложений обработки матриц в среде Delphi
2. Задание и рекомендации по его выполнению
ПриМер обработчиков приложения индивидуальной задачи
2. Задание и рекомендации по его выполнению
ПриМер обработчиков приложения индивидуальной задачи
Лабораторная работа №8. Разработка оконных приложений, использующих автономные модули
2. Задание и рекомендации по его выполнению
Некоторые обработчики приложения, вычисляющего сумму элементов одномерного массива
Лабораторная работа №9. Разработка оконных приложений, осуществляющих графический вывод
Пример обработчика вывода графических примитивов
Лабораторная работа №10. Обработка исключительных ситуаций
2. Задание и рекомендации по его выполнению
Приложение 1. Пример проекта отчета по консольному приложению Условие
Приложение 2. Пример проекта отчета по оконному приложению Условие
Задание и рекомендации по его выполнению
Вывод рисунка, состоящего из графических примитивов (задача 7.4.N+1)
Создайте приложение. В обработчик события OnPaint(перерисовка формы) вставьте заранее подготовленный код графического вывода примитивов на форму. Установите размеры клиентской области формы в соответствии с размером рисунка (с помощью Инспектора объектов или программно); для рис. 7ClientHeight:=400;ClientWidth:=400. Сохраните приложение.
Запустите и отладьте приложение. Результат работы приложения для рассматриваемого примера приведен на рисунке 8.
З
акройте
это приложение и создайте новое. На
его форму с панелиSystemперенесите компонентуPaintBox
(см. рис. 9). Ответьте на вопрос:
зачем нужна эта компонента?У
становите
размерыPaintBox в
соответствии с заданным рисунком.
В обработчик событияOnPaintформы вставьте заранее подготовленный
код графического вывода примитивов
в компоненту PaintBox(а не на форму, как в предыдущем
приложении). Сохраните
приложение. Отладьте его.Добавьте на форму кнопку (компоненту Button) и измените ее заголовок на значение «Добавить фигуру». В ее обработчике запишите оператор, рисующий в рамкеPaintBoxпроизвольную дополнительную фигуру. Сохраните и отладьте приложение. Сверните окно работающего приложения, а затем восстановите его. Сохранилось ли при этом в окне приложения изображение дополнительной фигуры? Почему?
Отразите результаты в отчете и покажите его преподавателю.
Вывод графиков функций (задача 7.1.N+1)
Создайте новое приложение. Установите размеры клиентской области формы в соответствии с предполагаемым размером графика. Перенесите на форму компоненту Chart. Сохраните приложение и периодически повторяйте сохранение.
В контекстном меню компоненты Chartвыберите пунктEdit Chart, что приведет к открытию окна настройки свойств компоненты (см. рис. 10).
В
этом окне выберите вкладкуChart,
а на ней – вкладкуSeries.
Для добавления графика в поле
диаграммы на этой вкладке нажмите
кнопкуAdd. В
открывшемся окнеTeeChartGalery(галерея типов диаграмм) на вкладкеStandard
выберите типLine,
снимите флажок3Dи нажмите кнопкуOK.
При этом в окно вкладкиSeriesбудет добавлен график с именемSeries1;
обратите внимание, что в файлеUnit1.pasв описание типаTForm1добавилась строка объявления нового
свойстваSeries1:
TLineSeries. При желании, используя кнопкуTitle, можно изменить
имя графика (серии). Кроме того, таким
способом в одно поле диаграммы можно
добавить несколько графиков.
Ознакомьтесь с другими вкладками окна настройки диаграммы, и выберите свойства графика по своему вкусу. Рекомендуется стиль легенды (вкладка Legend, окноLegend Style) установить в значениеSeries Name, а на вкладке верхнего уровняSeriesвыбрать удобные характеристики линии графика (толщину, стиль, цвет).
В обработчик события создания формы OnCreateвставьте заранее подготовленный программный код формирования в компонентахSeriesмассивов координат точек для создания графиков для пункта А задания 7.1.N+1. Отладьте приложение.
Проанализируйте полученный график. Проверьте, совпадает ли диапазон значений функции с его предварительной оценкой. Визуально определите характерные точки функции.
Повторите п.п.5-6 для исследования функции пункта Б задания 7.1.N+1.
Разработайте новое приложение для рисования графиков задания 7.1.N+1 по точкам (см. [3], §8.2). Проанализируйте графики и сравните их с графиками, полученными с помощью компоненты Chart.
Отразите результаты в отчете и покажите его преподавателю.
Пример обработчика вывода графических примитивов
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
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}
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. Подготовка к работе
Перед началом выполнения работы студент должен:
Ознакомиться с обработкой исключительных ситуаций по пособию [3], гл. 9.
Подготовить фрагменты программного кода обработки исключительных ситуаций для приложений, созданных в предыдущих лабораторных работах:
исключительная ситуация класса EConvertError (ошибка преобразования данных) при считывании значений исходных данных из компонент Edit и преобразовании этих значений к числовым типам с использованием функций StrToInt, StrToFloat в приложении для задачи 1.3.4.N+1 (лабораторная работа №5);
исключительная ситуация класса EConvertError при считывании значения длины массива из компоненты Edit в приложении для задачи 3.4.N+1 (лабораторная работа №8); требуется заменить существующий условный оператор на обработку исключения;
генерация исключительной ситуации (с помощью оператора raise), если в качестве длины массива введено неположительное число (задача 3.4.N+1, лабораторная работа №8); требуется заменить существующий оператор вывода сообщения об ошибке на генерацию исключения:
if n<=0 then raise Exception.Create('Введите положительное число');
генерация исключительной ситуации, если значения исходных данных выходят за допустимые границы (задача 1.3.4.N+1, лабораторная работа №5; допустимые границы определить из условия задачи);
(2-3) исключительные ситуации (деление на нуль, переполнение, извлечение корня из отрицательного числа и т. п.) при вычислении значений функций в лабораторной работе №9.
Подготовка проекта отчета по лабораторной работе. Отчет должен содержать для каждой исключительной ситуации:
описание ситуации;
фрагмент программного кода для ее обработки.
2. Задание и рекомендации по его выполнению
Для каждого подпункта п. 2 подготовки к лабораторной работе измените программный код существующего приложения, добавив фрагмент с обработкой (генерацией) исключительной ситуации.
Отладьте измененные приложения.
Результаты зафиксируйте в отчете и покажите преподавателю.
Приложение 1. Пример проекта отчета по консольному приложению Условие
Начальный вклад клиента в банке был равен Aруб. В течение каждого месяца рассматриваемого периода на счет добавляетсяB руб.; в конце каждого месяца на имеющийся вклад начисляетсяр %. Вывести величину вклада на начало 1, 2, ...Nмесяца.
Состав данных
|
Имя |
Смысл |
Тип |
Структура |
|
Исходные данные |
|||
|
A |
начальный вклад |
вещественный |
простая переменная |
|
B |
деньги, поступающие ежемесячно |
вещественный |
простая переменная |
|
р |
начисляемые ежемесячно проценты |
вещественный |
простая переменная |
|
N |
количество месяцев |
целый |
простая переменная |
|
Выходные данные |
|||
|
i |
номер месяца |
целый |
простая переменная |
|
V |
Величина вклада на начало i-го месяца |
вещественный |
простая переменная |
Форма ввода
Форма вывода
Блок-схема алгоритма
Программа на Паскале
Program primer2;
Var A,B,p,V:real; N,i:integer;
Begin
Writeln('Введите A,B,p,N'); Readln(A,B,p,N); V:=A;
for i:=1 to N do
begin
writeln(i:7, V);