Расшифровка:
Код:
Pre (* Предусловие: *)
d # NIL 20 (* Если процедура будет вызвана с d = NIL, то получится трап 20 - т.е. ее нельзя вызывать с d = NIL *)
Post (* Постусловие: *)
stdDir' = NIL (* в случае, когда прежнее значение stdDir было NIL *)
stdDir = d (* новое значение stdDir будет равно d *)
stdDir' # NIL (* а в случае, когда прежнее значение stdDir не было NIL *)
stdDir = stdDir' (* новое значение stdDir будет равно прежнему значению stdDir - т.е. не изменится *)
dir = d (* новое значение dir будет равно d (в любом случае) *)
Это не часть языка, это соглашение, принятое в математических текстах. Например, q' читается "ку штрих". В применении к документации, обычно это означает "новое значение q" либо "прежнее значение q".
Например, пусть есть процедура Abs (VAR x: INTEGER). Ее можно описать так: "Процедура Abs помещает в переменную x значение модуля того значения, которое ей было передано в x". А можно лаконично, точно и математично - так:
Post
x = ABS(x')
Здесь x означает Новое значение х, а х' - прежнее значение x. (Иногда наоборот). Слово Post означает "постусловие", а Pre - предусловие. Предусловие - это логические соотношения, которые должны быть обеспечены вызывающей процедурой; постусловия - это логические соотношения, которые вызванная процедура обеспечивает по завершении своей работы. Если вы не знакомы с пред-, пост-условиями и инвариантами, могу порекомендовать Грис Д. "Наука программирования" - увлекательное чтение и возможность существенно прокачать хардскилы в программировании-в-малом.