assert
Утверждения для отладки
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
assert(cond
)
Оператор assert(cond)
объявляет что условие cond
сохраняется в тот момент времени, когда оператор оценен. По умолчанию MuPAD® не заботится об утверждениях. После установки testargs
(TRUE)
, однако, MuPAD проверяет каждое утверждение и остановки с ошибкой если булева оценка cond
не дает TRUE
.
Утверждения являются главным средством отладки для программистов: путем утверждения часто, чего они думают, чтобы достигнуть, программисты дают возможность для себя обнаруживать первый непреднамеренный промежуточный результат.
Предположим, что мы хотим записать функциональный f
это берет целое число в качестве его аргумента и возвращается 0, если то целое число трехзначного порядка, и 1 в противном случае. Одна идея, как закодировать это, могла быть следующей: учитывая целочисленный n, n по модулю 3 должен быть равен одному из - 1, 1, или 0. В любом случае, abs(n mod 3)
должен сделать то, что мы хотим:
f := proc(n: DOM_INT): DOM_INT local k: DOM_INT; begin k := n mod 3; assert(k = 1 or k = -1 or k = 0); abs(k) end_proc
Проверка утверждений включается или от использования testargs
:
oldtestargs := testargs(): testargs(FALSE): f(5)
Результат не равняется 1
. Для отладки целей мы включаем проверку утверждения:
testargs(TRUE): f(5)
Error: Assertion 'k = 1 or k = -1 or k = 0' has failed. [f]
Это показывает что локальная переменная k
должно быть, получил неправильное значение. Действительно, при написании нашей программы мы пропустили различие между mod
и симметричный остаток, данный mods
.
testargs(oldtestargs):
|
Булево выражение |
assert
возвращает TRUE
или повышает ошибку.