logo
Методичка_Delphi_Ч1

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

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

После создания шаблона процедуры можно приступить к ее написанию.

Процедура для рассматриваемого примера приведена ниже, на рисунке 2.5.

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

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

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

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

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

var

a, x, n, ch, q, zn, y : Real;

str : string;

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

str := 'a=' + edtA.text + '; x=' + edtX.text + '; n=' + edtN.text + ';' ;

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

try

a:=strToFloat(edtA.text);

x:=strToFloat(edtX.text);

n:=strToInt(edtN.text);

except

str := 'Не могу прочесть исходные данные’+ chr(13)+ str;

showMessage(str);

exit;

end;

В этом фрагменте производится попытка преобразования текстов в числа заданного типа путем выполнения инструкций, записанных после служебного слова try. Если такая попытка оказывается неудачной, то выполняются инструкции, записанные после служебного слова except. В этом случае изменяется значение строки str, в которой записаны значения исходных данных. Эта строка объединяется со строкой 'Не могу прочесть исходные данные’, а между ними вставляется символ перевода строки chr(13).

Инструкция showMessage(str) во время выполнения создаст на экране окно с сообщением, записанным в строке str.

Последняя инструкция (exit;) приводит к завершению работы процедуры.

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

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

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

Если вы решили не разбираться с функцией format(), то для вывода результата можно написать инструкцию, которая приводится ниже.

str := str + ’ y=’ + floatToStr(y);

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

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

memProtocol.Lines.Append(str);

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

Перед тем, как проверять работу приложения следует подготовить контрольный пример.