Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч1.doc
Скачиваний:
7
Добавлен:
02.11.2018
Размер:
2.38 Mб
Скачать
      1. Создание процедур и функций Процедуры инициализации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Исходными данными для расчета по формуле являются вещественные числа 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.28 – Функция расчета по формуле в дополнительном модуле