Утверждение — это оператор для указания в явном виде неизменных свойств кода (инвариантов), которые не следуют из правил самого языка. Состоит из восклицательного знака и выражения логического типа.
// например
! a > b;
Выражение может иметь побочные эффекты, так как утверждения могут использоваться для проверки возвращаемых значений из процедур без необходимости использования промежуточной переменной, сохраняющей возвращаемое из процедуры значение.
Утверждения используются не только для осуществления проверок в телах подпрограмм, но и для до-определения типов переменных и самих подпрограмм через указание требований, так как обычные описания лишь приблизительно задают множество допустимых значений. В выражениях требованиий к типам из всех подпрограмм могут использоваться только константные функции.
Выражение в утверждении в правильном коде должно оставаться всегда истинным, и только из-за ошибок в коде оно может оказаться ложным. Ложь в утверждении является ошибочным состоянием.
Главное назначение утверждений — это пояснение и проверка кода. Выключение проверок утверждений (но не самих выражений с побочными эффектами) в правильном коде не меняет его поведения.
В утверждениях не могут использоваться непроверенные произвольные значения, например, полученные напрямую из ввода, так как произвольные значения не могут соответствовать неизменным свойствам. Только под охраной проверки, в которой переменная с произвольным содержимым участвует, значение перестаёт считаться произвольным. Выражение в утверждении, которое зависит от произвольных значений, включая входные данные, считается ошибочным состоянием даже если в конкретном применении выражение истинно.
Утверждения могут проверять константные выражения, но находится такие утверждения должны в отделе для постоянных. Нахождение среди исполняемого кода утверждений, проверяющих постоянные, является ошибкой.
Комментариев нет:
Отправить комментарий