Пример 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)? Объясните смысл и назначение параметров.
ПриложениЕ