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 или повышает ошибку.