русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание процедур и функций


Дата добавления: 2014-11-28; просмотров: 660; Нарушение авторских прав


3.2.1.1 Процедуры инициализации

Процедуру очистки протокола можно оставить такой же, как в предыдущей работе, а так как модуль формы скопирован, то она у нас есть. В любом случае процедура будет соответствовать рисунку 3.4.

Рисунок 3.4 – Процедура очистки протокола

Что касается процедуры инициализации формы, то мы ее переделаем,

Прежде всего, создадим процедуру setKoef(), которая обеспечит установку начальных значений в поля ввода для переменных «а», «x» и «n», входящих в формулу. Параметрами, передаваемыми в процедуру, будут числовые значения этих переменных. В процедуре числа будут преобразовываться в строки, и заноситься в соответствующие компоненты TEdit. Такое преобразование целесообразно, так как в этом случае десятичный разделитель для дробных чисел будет установлен правильно при любой настройке системы.

Так как в этой процедуре мы будем обращаться к компонентам формы edtA, edtB, edtC, а процедура не принадлежит классу формы, то в ней перед именами компонент обязательно следует указывать имя формы, разделяя эти имена точкой.

Другой способ решения этой проблемы состоит в использовании конструкции with … do, с помощью которой имя формы выносится как бы за операторные скобки begin … end. Именно эта конструкция используется в процедуре setKoef(), показанной на рисунке 3.5.

Рисунок 3.5 – Процедура для инициализации полей ввода значений переменных, входящих в формулу

Теперь можно создать процедуру инициализации формы, связанную с событием onCreate. С помощью этой процедуры мы обеспечим очистку поля Memo и заполнение текстовых полей корректными исходными данными. Это ускорит отладку и проверку работоспособности программы.

В этой процедуре, представленной на рисунке 3.6, вначале имитируется нажатие кнопки «Очистить протокол», что приводит к вызову соответствующей процедуры.



Вторая строка тела процедуры вызывает процедуру setKoef(), в которую передаются значения переменных. Эти значения появятся в полях edtA, edtB, edtC.

Рисунок 3.6 – Процедура инициализации формы

3.2.1.2 Процедура считывания коэффициентов уравнения

Для расчета по формуле необходимо прочитать значения переменных из компонентов TEdit и преобразовать их в вещественные числа.

Возложим решение этой проблемы на специальную процедуру. Назовем процедуру getKoef. Параметрами процедуры будут три переменных вещественного типа, которые соответствуют переменным формулы. Так как эта процедура должна возвращать значения вышеуказанных параметров, то все они должны передаваться по наименованию, то есть, описаны в заголовке процедуры со словом var. Текст процедуры приведен ниже.

Рисунок 3.7 – Процедура считывания значений коэффициентов уравнения

3.2.1.3 Функция для расчета по формуле

В предыдущем проекте расчет по формуле, ввод исходных данных и вывод результатов были реализованы в одной процедуре и все эти операции были привязаны к форме. Однако это не совсем правильно, можно даже сказать, что совсем неправильно.

Дело в том, что расчет по формуле – это одна задача, а ввод исходных данных – совсем другая. Данные могут вводиться не только с формы, но и из файла, из массива или из какого-то другого источника данных. При этом расчет по формуле остается без изменений.

Кроме того, расчет по этой формуле может понадобиться и в других приложениях.

Вывод результатов – это тоже отдельная задача, которая может решаться различными способами.

Поэтому, для расчетов по формуле мы напишем функцию, которая не будет иметь отношения к форме.

Исходными данными для расчета по формуле являются вещественные числа a, x, n. Результатом – тоже вещественное число.

Описание функции для расчета по формуле может выглядеть так.

function myFormula1(a, x, n:real): real;

var ch, q, zn,

Begin

ch:=exp(x*ln(a))+sqr(sin(x)); //числитель формулы

q:=x*(n*a+a)/n/a; //подкоренное выражение

zn:= exp(ln(q)/n); //знаменатель формулы

result:= ch/zn;

end;

Эту функцию для расчета по формуле поместим в отдельном модуле.

Добавьте новый модуль в проект, воспользовавшись функцией главного меню File→New→Unit.

В интерфейсной части модуля объявите функцию, написав ее заголовок, а в раздел реализации вставьте ее описание. В результате, модуль должен иметь вид, представленный на рисунке 3.8.

Сохраните модуль в той же папке, что и модуль формы проекта (хотя это и не обязательно), присвоив ему имя UnitDop.

Откомпилируйте модуль, вызвав функцию главного меню Project→CompilePtoject.

Посмотрите содержимое папки, где вы сохранили модуль. Там должен появиться файл UnitDop.dcu, который содержит откомпилированный модуль. Если это так, то модуль готов к употреблению.

Рисунок 3.8 – Функция расчета по формуле в дополнительном модуле

3.2.1.4 Использование дополнительного модуля

Для того, чтобы в основном модуле можно было воспользоваться функцией расположенной в дополнительном модуле, следует, прежде всего, дополнить инструкцию uses основного модуля, добавив туда ссылку на модуль UnitDop.

Обрабатывая инструкцию uses,компилятор дойдет до ссылки на модуль UnitDop и начнет искать файл UnitDop.dcu. Прежде всего, поиск будет производиться в папке, где расположен проект и форма, но если там модуля нет, то компилятору необходимо подсказать, где искать этот файл.

В этом случае ызовите диалог настройки путей, вызвав функцию главного меню Project→Options, откройте в нем закладку Directories/Conditionals, и в строке Search Path укажите путь к папке, где расположен модуль.

3.2.1.5 Завершение работы над проектом

Для проверки работоспособности процедуры ввода коэффициентов и функции расчета по формуле, описанной в дополнительном модуле, напишем процедуру обработки события onClick для кнопки «Выполнить расчет. Процедура представлена на рисунке 3.9.

Рисунок 3.9 – Главная процедура с вызовом вспомогательной процедуры и функции

3.3 Исследование созданного приложения



<== предыдущая лекция | следующая лекция ==>
Область действия имен | Анализ передачи параметров по значению


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.057 сек.