Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаРГР_Программирование.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.13 Mб
Скачать

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

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

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

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

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

В задаче расчета по формуле можно выделить три этапа:

  • ввод исходных данных;

  • собственно расчет по формуле;

  • вывод результатов.

Привязывать все три этапа к одной форме не совсем правильно. Можно даже сказать, что это совсем неправильно.

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

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

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

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

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

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

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

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

В разделе реализации модуля вставьте ее описание (рисунок 1.7).

Для упрощения написания выражения, расчет по формуле следует выполнять поэтапно. В рассматриваемом примере вначале вычислим значения числителя и знаменателя формулы, а затем найдем окончательный результат путем деления числителя на знаменатель. Числитель будет представлять переменная с именем ch, а знаменатель – переменная zn. Кроме того, перед вычислением знаменателя найдем значение подкоренного выражения, которое назовем q. Очевидно, что все эти переменные будут вещественного типа.

В результате реализации кода для функции модуль приобретет вид, представленный на рисунке 1.7.

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

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

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

1.2.2.5Процедура вызова выполнения расчета по формуле

Эта процедура должна быть связана с событием onClick кнопки «Выполнить расчет».

Процедура представлена на рисунке 1.8.

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

По условию, все переменные должна быть вещественного типа, поэтому тип результат будет тоже вещественным.

Помимо чисел, нам понадобится переменная, которая будет содержать строку с результатами расчета для протокола. Назовем ее str, а тип у нее должен быть String.

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

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

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

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

В том случае, если расчет выполнить не удалось, выводится сообщение о том, что расчет выполнить не удалось, а для протокола строка с исходными данными объединяется со строкой «Расчет невозможен».

Завершается процедура инструкцией, с помощью которой в поле Memo добавляется новая строка с результатами очередного расчета.

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