Пример 5. Использование процедуры Val и ShowMessage

Дано: выражение Y:= A/(5-X);

текстовое поле LabeledEdit1 – для ввода значения A;

текстовое поле LabeledEdit2 – для ввода значения X;

текстовое поле LabeledEdit3 – для вывода значения Y;

кнопка .Button1 – «Вычислить»;

процедура TForm1.Button1Click(Sender: TObject).

Требуется: дополнить процедуру TForm1.Button1Click(Sender: TObject), обеспечив вычисление значения Y. Использовать процедуры Val и ShowMessage.

procedureTForm1.Button1Click(Sender: TObject);

Var A, X, Y: Real;

cod: integer ; //порядковый номер недопустимого символа

Begin

Val (LabeledEdit1.Text, A, cod);

{попытка преобразовать строку LabeledEdit1.Text в вещественную переменную А}

if cod <> 0 //строка LabeledEdit1.Text содержит недопустимый символ

Then begin

ShowMessage('формат ввода вещественной переменной А – ХХ,ХХ!');

exit//досрочное завершение процедуры

End ;

Val (LabeledEdit2.Text, X, cod);

if cod <> 0

Then begin

ShowMessage('формат ввода вещественной переменной Х – ХХ,ХХ!');

Exit

End ;

if X <> 5 //проверка деления на 0

Then begin

Y:= A/(5-X);

LabeledEdit3.Text:=FloatToStrF(Y, ffGeneral, 5, 3); //вывод Y

End

else ShowMessage('деление на 0!') ;

End;

Схема алгоритма. Контроль ввода вещественных чисел, вычисления, представление результата procedureTForm1.Button1Click(Sender: TObject)  
True
Начало
Конец
Val (LabeledEdit1.Text, A, cod)
True
True
Val(LabeledEdit2.Text, Х, cod)
Cod <> 0
False
Cod <> 0
False
Деление на 0
Формат ввода А
X <> 5
Формат ввода X
Y:=A/(5-X)
Y
Exit
Exit
False

Тестирование программы

Цель тестирования – убедиться в правильности вычислений и исключения ситуаций, приводящих к аварийному завершению.

В общем случае следует задать такие значения исходных данных, при которых вычисления можно легко выполнить вручную. Для нашего случая положим А=5, Х=10, тогда А/(5-Х)=5/(5-10)=-1. Сравнив результаты ручных вычислений и выполнения программы можно сделать вывод о работоспособности программы.

Для сложных выражений типа aX4+bX3+cX2.. можно рекомендовать проверку по частям, сначала для aX4, положив b и c равными 0, далее для bX3 и т.д. Для рассмотренной задачи при вводе вещественных чисел возможен ввод нескольких запятых.

3.4 Содержание отчёта

· Задание.

· Листинг модуля с подробными комментариями.

· Схемы алгоритмов нелинейных процедур.

· Условия тестирования и ожидаемый результат.

· Перечень ситуаций, при которых возможно аварийное завершение Вашей программы.

Контрольные вопросы

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

2. Какие свойства у множества, как описывают множество?

3. Перечислите логические операции.

4. Какие значения могут принимать логические выражения?

5. Каков синтаксис оператора условного перехода?

6. Каково назначение контроля вводимых величин?

7. Каков синтаксис оператора выбора?

8. Какие функции позволяют преобразовать строку в число?

9. Какие функции позволяют преобразовать число в строку?

10. Как обеспечить требуемое количество знаков после запятой при выводе вещественных чисел?

11. Каково назначение процедуры ShowMessage? Что используют в качестве параметра процедуры?

12. Каково назначение процедуры Val(S; String; var V; code: integer)? Объясните смысл и назначение параметров.

ПриложениЕ

Наши рекомендации