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

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

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

Добавлен: 20.03.2025

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

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

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

СОДЕРЖАНИЕ

Реализация алгоритмов в среде Delphi Сборник заданий для лабораторных работ

Введение

Лабораторная работа №1. Реализация простейших циклических алгоритмов в консольном приложении среды Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №2. Решение задач обработки массивов в консольном приложении среды Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №3. Проектирование алгоритмов с использованием подпрограмм и их отладка в консольном приложении

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №4. Решение задач с параметрами-подпрограммами и модулями в консольном приложении Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Лабораторная работа №5. Разработка простейших оконных приложений в среде Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер основного обработчика индивидуальнойзадачи

Лабораторная работа №6. Создание оконных приложений обработки матриц в среде Delphi

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер обработчиков приложения индивидуальной задачи

Лабораторная работа №7. Программирование открытия и сохранения файлов с использованием стандартных диалоговых окон

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер обработчиков приложения индивидуальной задачи

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

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

ПриМер автономного модуля

Некоторые обработчики приложения, вычисляющего сумму элементов одномерного массива

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

1. Подготовка к работе

Пример обработчика вывода графических примитивов

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

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

1. Подготовка к работе

2. Задание и рекомендации по его выполнению

Приложение 1. Пример проекта отчета по консольному приложению Условие

Состав данных

Форма ввода

Приложение 2. Пример проекта отчета по оконному приложению Условие

Состав данных

Блок-схема алгоритма

  1. Задание и рекомендации по его выполнению

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

  1. Создайте приложение. В обработчик события OnPaint(перерисовка формы) вставьте заранее подготовленный код графического вывода примитивов на форму. Установите размеры клиентской области формы в соответствии с раз­мером рисунка (с помощью Инспектора объектов или программно); для рис. 7ClientHeight:=400;ClientWidth:=400. Сохраните приложение.

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

  3. Закройте это приложе­ние и создайте новое. На его форму с панелиSystemпе­ренесите ком­понентуPaintBox (см. рис. 9). Ответьте на во­прос: за­чем нужна эта компо­нента?

  4. Установите размерыPaintBox в соответст­вии с заданным ри­сунком. В обработчик событияOnPaintформы вставьте зара­нее подготовленный код графического вы­вода примитивов в компо­ненту PaintBox(а не на форму, как в предыду­щем приложении). Сохра­ните приложение. Отладьте его.

  5. Добавьте на форму кнопку (компоненту Button) и изме­ните ее за­головок на значе­ние «До­бавить фигуру». В ее об­работчике запишите опе­ратор, рисующий в рамкеPaintBoxпроизвольную до­полнительную фигуру. Со­храните и отладьте приложение. Свер­ните окно работающего приложения, а затем восстановите его. Сохранилось ли при этом в окне приложения изображение дополнительной фигуры? Почему?

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

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

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

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

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


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

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

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

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

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

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


Пример обработчика вывода графических примитивов

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. Подготовка к работе

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

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

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

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

  2. исключительная ситуация класса EConvertError при считывании значе­ния длины массива из компоненты Edit в приложении для задачи 3.4.N+1 (ла­бораторная работа №8); требуется заменить существующий условный опе­ратор на обработку исключения;

  3. генерация исключительной ситуации (с помощью оператора raise), если в качестве длины массива введено неположительное число (задача 3.4.N+1, ла­бораторная работа №8); требуется заменить существующий опе­ратор вывода сообщения об ошибке на генерацию исключения:

if n<=0 then raise Exception.Create('Введите положительное число');

  1. генерация исключительной ситуации, если значения исходных данных выходят за допустимые границы (задача 1.3.4.N+1, ла­бораторная работа №5; допустимые границы определить из условия задачи);

  2. (2-3) исключительные ситуации (деление на нуль, переполнение, извлечение корня из отрицательного числа и т. п.) при вычислении значений функций в лабораторной работе №9.

  1. Подготовка проекта отчета по лабораторной работе. Отчет должен содержать для каждой исключительной ситуации:

    1. описание ситуации;

    2. фрагмент программного кода для ее обработки.


2. Задание и рекомендации по его выполнению

  1. Для каждого подпункта п. 2 подготовки к лабораторной работе измените про­граммный код существующего приложения, добавив фрагмент с обработ­кой (генерацией) исключительной ситуации.

  2. Отладьте измененные приложения.

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

Приложение 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);