Госком РФ
По информатизации и связи
Петербургский
Национальный Университет Телекоммуникаций
Им. Проф. М.А.Бонч-Бруевича
Кафедра АПС
П.А.Волынкин
ПРОГРАММИРОВАНИЕ
В СРЕДЕ ВИЗУАЛЬНОГО ПРОЕКТИРОВАНИЯ
DELPHI(Lazarus)
Учебное пособие
По Курсовому проектированию
Петербург
ПРЕДИСЛОВИЕ
Учебное пособие предназначено для курсового проектирования по одному из разделов учебной дисциплины «Информатика» — «Программирование в среде визуального проектирования». Работа охватывает целый цикл лекционного и лабораторного материала по программированию на языке большого уровня (Delphi, C++) для студентов 1-го курса.
Целью курсовой работы есть создание программы по изучению (расчет интеграла, первой либо второй производной, точек экстремума) заданной функции с применением графических возможностей интерфейса ОС Windows.
При проектировании употребляется код PASCAL в среде визуального программирования DELPHI.
1. Задание на курсовую работу по Информатике.
Личное задание на курсовую работу для каждого студента составляется из двух частей: номера задания и варианта задания.
Номера задания.
Задание 1
Вычислить определенный интеграл функции с возможностью оперативно поменять точность и пределы интегрирования.
Задание 2
Вычислить производную заданной функции в выбранной точке с возможностью оперативно поменять выбранную точность и точку.
Задание 3
Вычислить производную заданной функции в выбранной точке с возможностью оперативно поменять выбранную точность и точку с возможностью отображать график, как самой функции, так и график функции первой производной.
Задание 4
Вычислить вторую производную заданной функции в выбранной точке с возможностью оперативно поменять выбранную точность и точку при отображении графика самой функции.
Задание 5
Вычислить вторую производную заданной функции в выбранной точке с возможностью оперативно поменять выбранную точность и точку при отображении графика первой производной функции.
Задание 6
Вычислить точки экстремума заданной функции в выбранном диапазоне % с возможностью оперативно поменять выбранный точность и диапазон.
Задание 7
Вычислить точки перегиба заданной функции в выбранном с возможностью оперативно поменять выбранный точность и диапазон.
Номер задания выбирается студентом по первой букве собственного полного имени по нижеследующей таблице:
А | Б | В | Г | Д | Е | Ё | |
Ж | З | И | Й | К | Л | М | |
Н | О | П | Р | С | Т | У | |
Ф | Х | Ц | Ч | Ш | Щ | Ь | |
Ы | Ъ | Э | Ю | Я |
Варианты задания.
Создать программу расчета одной из следующих функции на языке Pascal\Delphi:
Вариант a:
y=|x|1/6(3sin(3x)*cos(2x)+2sin(2x)5cos(3x))
Вариант b:
y=x3/7(7sin(11x)+11cos(7x))
Вариант c:
y=x2/5(2sin(4x)+3cos(x3))
Вариант d:
y=x-3/7(3sin(2x)+cos(x+2×2))
Вариант e:
y=x-2/5(sin(2x)*cos(3x)+2cos(4x))
Вариант f:
y=x1/3(6sin(12x)+12cos(6x))
Номер функции выбирается студентом по первой букве собственной фамилии по нижеследующей таблице:
a | b | c | d | e | f |
А | Б | В | Г | Д | Е |
Ё | Ж | З | И | Й | К |
Л | М | Н | О | П | Р |
С | Т | У | Ф | Х | Ц |
Ч | Ш | Щ | Ь | Ы | Ъ |
Э | Ю | Я |
Методика исполнения работы
1. Проанализировать существующие методики численных расчетов интеграла, первой, второй производной либо точек экстремума либо перегиба (в зависимости от задания №1). Для анализа воспользоваться настоящим пособием, материалами лекций, предложенной литературой, и литературой, выбранной самостоятельно в библиотеке, интернете.
2. Выбрать одну из методик расчета, доказывав собственный выбор.
3. Разработать блок-схему метода расчетов:
— Обрабатываемой функции (в зависимости от варианта №2).
— интеграла, первой, второй производной либо точек экстремума либо перегиба (в зависимости от задания №1) с учетом автоматического обеспечения заданной пользователем точности.
4. По заданию №2 написать на языке PASCAL/DELPHI(Lazarus) текст пользовательской функции, оформив её в виде функции составе отдельного пользовательского модуля (без формы).
5. Написать на языке PASCAL/DELPHI(Lazarus) текст программы под Windows расчета интеграла, первой, второй производной либо точек экстремума либо перегиба (в зависимости от задания №1), учитывая следующие советы:
— должен быть осуществлен вывод проградуированных осей и графика функции координат на полотно формы. Должна быть осуществлена своевременная навигация (масштабирование и смещение по обоим осям совместно и раздельно) графика функции на полотно формы. В особом окне должны отображаться координаты курсора на поле графика.
— ввод точек границ интегрирования, дифференцирования либо промежутка поиска экстремумов либо перегиба (в зависимости от задания №1) и точности реализовать через особые окна и графически (указателем мыши на поле графика).
— Задаваемая пользователем точность должна быть гарантирована способами численных расчетов.
— Итог расчетов обязан выводиться как в отдельное окно, так и графически (для интеграла должна быть нарисована криволинейная трапеция, для производной – касательная, для второй производной – касательная к графику первой производной, для перегиба и точек экстремума – пронумерованные точки на графике).
— В отдельном окне вывести формулу обрабатываемой функции.
— Все результаты расчетов (данные, итог, погрешность, время и дата работы) должны записываться в отдельный файл, что возможно просмотреть в любую секунду.
6. Сделать рекомендации и выводы для пользователя созданной программы, предложить пути улучшения программы и ее предстоящих модификаций.
7. Пояснительная записка непременно обязана содержать:
— Титульный лист (учебное заведение, несколько, наименование работы, ФИО преподавателя и студента);
— Описание методик численного расчета и обоснование выбора одной из них;
— Блок-схема метода расчета с комментариями;
— Текст программы с необходимыми пояснениями делаемых действий;
— Описание работы программы для программистов.
— Распечатка вида созданной формы с пояснениями всех размещенных на ней компонентов;
— Управление для пользователя с описанием назначения программы, системных требований для работы с ней, с описанием назначения элементов интерфейса, с примерами расчёта и последовательностью работы.
— рекомендации и Выводы для пользователя созданной программы, пути улучшения программы и ее предстоящих модификаций.
Численные способы обработки функций.
Способ численного расчета.
Укажем последовательность действий для отыскания экстремумов и изучения роста постоянной функции y=f(x) в заданном промежутке, что возможно как конечным, так и нескончаемым. Будем вычислять, что функция y=f(x) имеет производную везде, за исключением, возможно, отдельных точек.
1) В первую очередь, необходимо отыскать точки промежутка, в которых производная равна нулю (стационарные точки), т.е. настоящие корни уравнения f'(х0)=0, и те точки, в которых производная не существует.
Обозначим все отысканные точки в порядке возрастания через x1, х2,…, хn.
Так, х1 х2
Это те точки промежутка, в которых функция f(x) может иметь экстремумы. Их время от времени именуют критическими.
2) После этого разбиваем при помощи точек хi промежуток [а, b] на частные промежутки: (a,x1),(x1,x2),…,(xn-1,хn), (хn, b), в каждом из которых производная сохраняет постоянный символ. В действительности, в другом случае производная была бы равна нулю (либо не существовала бы) ещё в точках, хороших от выделенных, а все такие точки мы уже нашли в п. 1. Следовательно, эти промежутки являются промежутками монотонности функции.
3) Находим символ производной в каждом из частичных промежутков, для чего достаточно определить её символ в какой-нибудь одной точке промежутка. По символу производной определяем темперамент трансформации функции в каждом промежутке монотонности (возрастает она либо убывает). Смотря за переменой символа производной при переходе через границы промежутков монотонности — точки х,, выясняем, какие конкретно из этих точек будут точками какие минимума и — максимума. Наряду с этим может оказаться, что какая-нибудь точка х, не является точкой экстремума функции. Это произойдёт в двух соседних промежутках (хi-1, х1) и (хi, хi+1), разделяемых точкой хi, функция монотонна в однообразном смысле, т.е. производная в них имеет одинаковый символ. Тогда они объединяются в один промежуток монотонности функции. В этом случае точка хi не будет точкой экстремума функции.
4) Подстановкой в выражение функции f(x) критических значений х=хi находим соответствующие значения функции: f(х1), f(х2),…, f(хn). Как уже отмечалось, не все из этих значений могут быть экстремальными.
В случае, если значения f(х1), f(х2),…, f(хn) вычислены, и определены значения функции на финишах промежутка f(a) и f(b), то движение трансформации функции легко представить и без изучения символа производной. Так как нам уже как мы знаем, что в каждом из промежутков (a,x1),(x1,x2),…,(xn-1,хn),(хn, b) функция не имеет точек экстремума и, следовательно, монотонна, то, сравнивая между собой значения функции на финишах каждого для того чтобы промежутка, мы и определим, где функция возрастает и где убывает.
Какой из приёмов направляться употребить, зависит от конкретных событий. Возможно, что эргономичнее и легче применять символы производной, а возможно и без того, что, нуждаясь, всё равняется в значениях функции в критических точках, несложнее применять эти значения и не выяснять символы производной.
Способ наискорейшего спуска.
Возможно отыскан минимум функции n переменных F(x1,…, xп) либо отысканы решения совокупности уравнений вида
(1)
Ответ совокупности (1) эквивалентно отысканию равного нулю минимума функции
(2)
Для нахождения минимума F задаем некое начальное приближение хi(0) (i = 1,n) и строим последующее приближение по формуле
(3)
где направления Vi(j) и величина шага на j — м шаге соответственно равны:
(4)
Все производные в (4) вычисляются при xi = хi(j) .
Итерационный процесс (3) длится до тех пор, пока не будет удовлетворяться условие
(5)
либо все производные не станут равны нулю (правильнее до тех пор пока числитель в l(j) не обратится в ноль).
Главные понятия Объектно-ориентированного Программирования (ООП).
Класс – особенный тип записи, что имеет в собственном составе поля, способы (процедуры либо функции для операций над полями) и свойства. Таковой тип именуется объектным типом:
Type
TMyObject = class(Tobject) {описание класса MyObject}
MyField : Integer; {поле}
Function MyMethod : Integer; {способ}
End;
Дабы применять новый тип в программе нужно заявить переменную этого типа – Объект (экземпляр класса):
Var
MyObject : TMyObject;
У Объекта имеются поля, способы, свойства.
Свойство – поле, но дешёвое не напрямую, а через способы. Примеры особенностей: цвет, ширина, высота, шрифт, видимость, доступность и др.
Событие – реакция программы на определенные действия пользователя. Событие дает о себе знать через трансформацию одного из параметров. Примеры событий: нажатие указателем мыши на объекте, перемещение мыши, нажатие клавиши и др.
Компонент – разновидность объекта, что возможно легко разместить на втором объекте. Компонент имеет комплект особенностей, каковые возможно определять, не изменяя исходного кода программы через Инспектор Объектов.
Компоненты бывают визуальными (для организации интерфейса с пользователем: кнопки, перечни, окна редактирования и др.) и невизуальными (для доступа к системным ресурсам).
Форма – визуальный компонент, владеющий особенностями окна Windows и служащий для размещения вторых компонентов. Любая форма представлена двумя файлами (*.pas и *.dfm).
Базы работы с Delphi.
Запуск оболочки Delphi.
Вызов Delphi по окончании инсталляции осуществляется при помощи активизации файла \PROGRAM FILES\BORLAND\DELPHI4\BIN\DELPHI32.EXE. Для этого нужно или отыскать и выбрать пункт меню Delphi, или, создав ярлык на рабочем поле, активизировать его. Через некое время на экране покажется фирменная заставка с указанием компании изготовителя, года и индекса издания данной версии, по окончании чего на экран будет выведена среда программирования Delphi.
Дополнительные элементы
Не считая перечисленных выше элементов среды программирования имеются еще три группы:
- Меню (Menu System)
- Панель с кнопками для стремительного доступа (SpeedBar)
- Редактор картин (Image Editor)
Меню предоставляет стремительный и эластичный интерфейс к среде Delphi, в силу того, что может управляться по комплекту “тёплых клавиш”. Это комфортно еще и по причине того, что тут употребляются слова либо маленькие фразы, более правильные и понятные, нежели иконки либо пиктограммы. Вы имеете возможность применять меню для исполнения широкого круга задач; вероятнее, для самые общих задач наподобие закрытия и открытия файлов, управления отладчиком либо настройкой среды программирования.
SpeedBar находится под меню, слева от Палитры Компонент. SpeedBar делает довольно много из того, что возможно сделать через меню. В случае, если задержать мышь над любой из иконок на SpeedBar, то Вы заметите что покажется подсказка, растолковывающая назначение данной иконки.
Редактор Картин, трудится подобно программе Paintbrush из Windows. Вы имеете возможность получить доступ к этому модулю, выбрав пункт меню Tools | Image Editor. Редактор Картин возможно применять для картин для кнопок, иконок и др. визуальных частей для программы.
Стандартные компоненты
На первой странице Палитры Компонент размещены объекты серьёзные для применения. Мало кто обойдется долгое время без кнопок, перечней, окон ввода и т.д. Все эти объекты такая же часть Windows, как мышь либо окно.
- TMainMenuпозволяет Вам поместить основное меню в программу. При помещении TMainMenu на форму это выглядит, как легко иконка. Иконки данного типа именуют невидимыми компонентом, потому, что они невидимы на протяжении исполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
- TPopupMenuпозволяет создавать всплывающие меню. Данный тип меню появляется по щелчку правой кнопки мыши.
- TLabelслужит для отображения текста на экране. Вы имеете возможность поменять цвет и шрифт метки, в случае, если два раза щелкнете на свойство Font в Инспекторе Объектов. Вы заметите, что это легко сделать и на протяжении исполнения программы, написав всего одну строке кода.
- TEdit- обычный управляющий элемент Windows для ввода. Он бывает использован для отображения маленького фрагмента текста и разрешает пользователю вводить текст на протяжении исполнения программы.
- TMemo -иная форма TEdit. Подразумевает работу с громадными текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие главные функции редактора. TMemo имеет ограничения на количество текста в 32Кб, это образовывает 10-20 страниц. (Имеется VBX и “родные” компоненты Delphi, где данный предел снят).
- TButtonпозволяет выполнить какие-либо действия при нажатии кнопки на протяжении исполнения программы. В Delphi все делается весьма легко. Поместив TButton на форму, Вы по двойному щелчку имеете возможность создать заготовку обработчика события нажатия кнопки. Потом необходимо заполнить заготовку кодом (выделено то, что необходимо написать вручную):
- TCheckBoxотображает строчок текста с мелким окном рядом. В окне возможно поставить отметку, которая свидетельствует, что что-то выбрано. К примеру, в случае, если взглянуть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то возможно заметить, что оно состоит в основном из CheckBox’ов.
- TRadioButtonпозволяет выбрать лишь одну опцию из нескольких. Если Вы снова откроете диалог Options | Project и выберете страницу Linker Options, то Вы имеете возможность видеть, что секции Map file и Link buffer file складываются из комплектов RadioButton.
- TListBoxнужен для показа прокручиваемого перечня. Хороший пример ListBox’а в среде Windows — выбор файла из перечня в пункте меню File | Open многих приложений. Заглавия файлов либо директорий и находятся в ListBox’е.
- TComboBoxво многом напоминает ListBox, за исключением того, что разрешает водить данные в мелком поле ввода сверху ListBox. Имеется пара типов ComboBox, но самый популярен выпадающий вниз (drop-down combo box), что возможно видеть внизу окна диалога выбора файла.
- TScrollbar — полоса прокрутки,появляется машинально в объектах редактирования, ListBox’ах при необходимости прокрутки текста для просмотра.
- TGroupBoxиспользуется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
- TPanel — управляющий элемент, похожий на TGroupBox, употребляется в декоративных целях. Дабы применять TPanel, его на форму и после этого положите другие компоненты на него. Сейчас при перемещении TPanel будут передвигаться и эти компоненты. TPanel употребляется кроме этого для линейки инструментов и окна статуса.
- TScrollBoxпредставляет место на форме, которое возможно скроллировать в вертикальном и горизонтальном направлениях. До тех пор пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Но, смогут быть случаи, в то время, когда пригодится прокручивать лишь часть формы. В таких случаях употребляется TScrollBox.
Это полный перечень объектов на первой странице Палитры Компонент. В случае, если Вам нужна дополнительная информация, то выберите на Палитре объект и надавите клавишу F1 — покажется Справочник с полным описанием данного объекта.
Проект Delphi
Любой проект имеет, по-крайней мере, шесть файлов, которые связаны с ним. Три из них относятся к управлению проектом из среды и напрямую программистом не изменяются. Вот эти файлы :
- Основной файл проекта, изначально именуется PROJECT1.DPR.
- Первый модуль программы /unit/, что машинально появляется в начале работы. Файл именуется UNIT1.PAS по умолчанию, но его возможно назвать любым вторым именем, наподобие MAIN.PAS.
- Файл основной формы, что по умолчанию именуется UNIT1.DFM, употребляется для сохранения информации о внешнем виде основной формы.
- Файл PROJECT1.RES содержит иконку для проекта, создается машинально.
- Файл, что именуется PROJECT1.OPT по умолчанию, есть текстовым файлом для сохранения установок, которые связаны с данным проектом. К примеру, установленные Вами директивы компилятора сохраняются тут.
- Файл PROJECT1.DSK содержит данные о состоянии рабочего пространства.
Очевидно, в случае, если сохранить проект под другим именем, то поменяют файлы и название с расширением RES, OPT и DSK.
По окончании компиляции программы получаются файлы с расширениями:
DCU — скомпилированные модули
EXE — исполняемый файл
DSM — служебный файл для запуска программы в среде, большой, рекомендуется стирать его при окончании работы.
~PA, ~DP — backup (сохраненные копии) файлы Редактора.
События в Delphi
Одна из главных целей среды визуального программирования — скрыть от пользователя сложность программирования в Windows. Наряду с этим, но, хочется, дабы такая среда не была упрощена через чур, не до таковой степени, что программисты утратят доступ к самой ОС.
Программирование, ориентированное на события — неотъемлемая черта Windows. Кое-какие программные среды для стремительной разработки приложений (RAD) пробуют скрыть от пользователя эту линии совсем, как словно бы она так сложна, что большая часть не смогут ее осознать. Delphi предоставляет полный доступ к подструктуре событий, предоставляемой Windows. Иначе, Delphi упрощает программирование обработчиков таких событий.
Объекты из библиотеки визуальных компонент (VCL) Delphi, равно как и объекты настоящего мира, имеют собственный свой поведение и набор свойств — комплект откликов на события, происходящие с ними. Перечень событий для данного объекта, на каковые он реагирует, возможно взглянуть, к примеру, в Инспекторе Объектов на странице событий. (В действительности, на данной странице представлен перечень особенностей, каковые имеют тип наподобие TMouseMoveEvent и представляют из себя процедуры-обработчики событий. Существует соглашение по заглавиям данных особенностей. К примеру, OnDblClick соответствует двойному щелчку мыши, а OnKeyUp — событию, в то время, когда надавленная клавиша была отпущена.) Среди комплекта событий для разных объектов из VCL имеется как события, портируемые из Windows (MouseMove, KeyDown), так и события, порождаемые конкретно в программе (DataChange для TDataSource).
Поведение объекта определяется тем, какие конкретно обработчики и для каких событий он имеет. Создание приложения в Delphi складывается из настройки особенностей применяемых объектов и создания обработчиков событий.
Несложные события, на каковые время от времени необходимо реагировать — это, к примеру, события, которые связаны с мышкой (они имеется фактически у всех видимых объектов) либо событие Click для кнопки TButton. Предположим, что вы желаете перехватить щелчок левой кнопки мыши на форме. Дабы сделать это — создайте новый проект, в Инспекторе Объектов выберите страницу событий и сделайте двойной щелчок на правой части для свойства OnClick. Вы получите заготовку для обработчика данного события:
procedure TForm1.FormClick(Sender: TObject);
begin
end;
Напишите тут следующее:
procedure TForm1.FormClick(Sender: TObject);
begin
MessageDlg(‘Hello’, mtInformation, [mbOk], 0);
end;
Любой раз, в то время, когда делается щелчок левой кнопки мыши над формой будет оказаться окно диалога.
При происхождении события, ОС передает не только уведомление о нем, но и некую связанную с ним данные. К примеру, при происхождении события “надавлена левая кнопка мыши” программа информируется о том, в каком месте это случилось. Если вы желаете получить доступ к таковой информации, то должны возвратиться в Инспектор Объектов и создать обработчик события OnMouseDown:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.TextOut(X, Y, ‘X=’+IntToStr(X)+’ Y=’+IntToStr(Y));
end;
Запустите программу, пощелкайте мышкой на форме. Как видите, в Delphi весьма на события. И не только на события, которые связаны с мышкой. К примеру, возможно создать обработчик для OnKeyDown (надавлена клавиша):
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MessageDlg(Chr(Key), mtInformation, [mbOk], 0);
end;
Итак, в случае, если подвести итог, то будет ясным следующее:
- Windows есть совокупностью ориентированной на события;
- События в Windows принимают форму сообщений;
- В недрах VCL Delphi сообщения Windows обрабатываются и преобразуются в более несложную для программиста форму;
- Обработка событий в Delphi сводится к написанию для каждого объекта собственных обработчиков;
- События в программе на Delphi вызываются не только сообщениями Windows, но и внутренними процессами.
Создание нового проекта
По окончании загрузки программы Delphi пользователю по умолчанию предлагается заготовка нового проекта.
Для нового проекта по окончании работы с прошлым направляться выбрать в меню опцию: File\New Application.
Сохранение проета
Первый ход — создать поддиректорию для программы. оптимальнее создать директорию, где будут храниться все Ваши программы и в ней — создать поддиректорию для данной конкретной программы. К примеру, Вы имеете возможность создать директорию MYCODE и в нее — вторую директорию TIPS1, которая содержала бы программу, над которой Вы только что трудились.
По окончании создания поддиректории для хранения Вашей программы необходимо выбрать пункт меню File | Save Project. Сохранить необходимо будет два файла. Первый — модуль (unit), над которым Вы трудились, второй — основной файл проекта, что обладает Вашей программой. Сохраните модуль под именем MAIN.PAS и проект под именем TIPS1.DPR. (Любой файл с расширением PAS и словом “unit” в начале есть модулем.)
Литература:
1 Лапчик М.П., Рагулина М.И., Хеннер Е.К.,Численные способы. 2004 год.
2 Киреев В. Численные способы в задачах и примерах.
3 Культин направляться.Б. Самоучитель программирования в Delphi 6.
4 Культин Н.Б. Базы программирования в Delphi 7.
5 Турбо Паскаль 7.0. BHV, 1996.
6 Бородин Ю.С., Вальвачев А.Н., Кузьмин А.И. Паскаль для персональных компьютеров. Справочное пособие. Минск, 1991.
7 Матчо Д., Фолкнер Д.Р. Delphi, М., Двучлен, 1995.
8 Дарахвелидзе П., Марков Е. Delphi – среда визуального программирования. BHV – Петербург, 1996.
Госком РФ
Петербургский
Национальный Университет Телекоммуникаций
Им. направляться. М.А.Бонч-Бруевича
Кафедра АПС
П.А.Волынкин
ПРОГРАММИРОВАНИЕ