Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Государственный комитет Российской Федерации



Государственный комитет Российской Федерации

По связи и информатизации

 

Санкт-Петербургский

Государственный Университет Телекоммуникаций

Им. Проф. М.А.Бонч-Бруевича

 

Кафедра АПС

П.А.Волынкин

 

 

ПРОГРАММИРОВАНИЕ

В СРЕДЕ ВИЗУАЛЬНОГО ПРОЕКТИРОВАНИЯ

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+2x2))

 

Вариант 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 <... < хn.

Это те точки интервала, в которых функция 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.

 

Государственный комитет Российской Федерации

По связи и информатизации

 

Санкт-Петербургский

Государственный Университет Телекоммуникаций

Им. Проф. М.А.Бонч-Бруевича

 

Кафедра АПС

П.А.Волынкин

 

 

ПРОГРАММИРОВАНИЕ


Поделиться:



Последнее изменение этой страницы: 2017-05-11; Просмотров: 203; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.121 с.)
Главная | Случайная страница | Обратная связь