OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 08 Август, 2020 15:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: что означает одинарная кавычка?
СообщениеДобавлено: Среда, 22 Январь, 2020 17:42 
Аватара пользователя

Зарегистрирован: Понедельник, 13 Январь, 2020 15:49
Сообщения: 6
что означает одинарная кавычка (здесь пример из самого конца модуля Files).

stdDir' = NIL
stdDir = d
stdDir' # NIL
stdDir = stdDir'
dir = d


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 22 Январь, 2020 21:24 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 273
Расшифровка:
Код:
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 - предусловие. Предусловие - это логические соотношения, которые должны быть обеспечены вызывающей процедурой; постусловия - это логические соотношения, которые вызванная процедура обеспечивает по завершении своей работы. Если вы не знакомы с пред-, пост-условиями и инвариантами, могу порекомендовать Грис Д. "Наука программирования" - увлекательное чтение и возможность существенно прокачать хардскилы в программировании-в-малом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Январь, 2020 14:27 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2349
Откуда: Россия, Томск
Одиночная кавычка всегда обозначает новое/модифицированное/выходное значение переменной.
Если где-то используется в значении прежнего значения, это ошибка в документации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Январь, 2020 16:18 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 273
Александр Ильин писал(а):
Одиночная кавычка всегда обозначает новое/модифицированное/выходное значение переменной.
Если где-то используется в значении прежнего значения, это ошибка в документации.


Согласен с Александром; но, кмк, в ББ-документации всегда "наоборот": апострофом обозначают прежнее.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB