Пример. Использование оператора программирования try-on-error
Операторы try-on-error, break, continue и return используются для обработки ошибок.
1. На вкладке Форматирование формул (Math Formatting) в группе Результаты (Results) выберите пункт Показывать нули в младших разрядах (Show Trailing Zeros).
2. Создайте матрицу 6x6 и используйте функцию
matrix, чтобы задать элементам матрицы известные значения.
3. Напишите программу, чтобы задать для диапазона элементов значения, определяемые функцией на данном диапазоне.
При выполнении программы возникает ошибка, когда при x=0 и y=0 делается попытка разделить (x+y) на нуль.
4. Измените программу, чтобы элементу (0,0) новой матрицы присваивалось значение соответствующего элемента матрицы Z вместо значения, приводящего к делению на ноль.
Эта программа обеспечивает исключение случая, когда для элемента (0,0) задается значение, приводящее к делению на ноль.
5. Используйте операторы try и break для своевременного перехвата условий возникновения ошибки, что позволит не останавливать выполнение программы. Условие возникновения ошибки, т. е. деление на ноль, представлено строкой "DBZ".
Блок on error выполняется, только если оператор try обнаруживает ошибку.
Mathcad выполняет программу следующим образом.
a. Первый цикл начинается со значениями x=0 и y=0.
b. Оператор try проверяет выражение на ошибки и обнаруживает ошибку деления на нуль. Это означает, что программа должна выполнить блок on error.
c. Блок on error выполняет первую инструкцию и задает для элемента (0,0) значение "DBZ", затем оператор break останавливает выполнение текущего цикла (x=0, y=0..5). В результате все остальные элементы row=0 остаются необработанными.
d. Программа переходит к следующему циклу x при (x=1, y=0..5) и при отсутствии других ошибок присваивает значения элементам row=1.
e. Продолжая выполнять оставшиеся циклы, программа заполняет весь заданный диапазон.
6. Замените оператор break оператором continue и посмотрите, как изменится результат.
В отличие от оператора break оператор continue продолжает выполнение следующей итерации в текущем цикле, и остальным элементам, для которых row=0, а также остальным элементам матрицы присваиваются значения (x+y)/(10x-y), как и ранее.
7. Замените оператор continue на оператор return и посмотрите, как изменится результат.
В отличие от оператора continue, который продолжает выполнение текущего цикла, оператор return останавливает программу и возвращает Y3 с элементом (0, 0), имеющим значение "DBZ".