Редактирование: МФСП, 09 лекция (от 29 октября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 3: Строка 3:
Консультация
Консультация
-
В каждом билете должно быть 4 задачи. Теоретического материала никакого нет.
+
В каждом билете должно быть 4 задачи. Теор материала никакого нет.
-
# Либо перевод явной спецификации в неявную. Спецификации должны быть абсолютно эквивалентны. Любые неточности будут трактоваться как ошибки. Могут быть погрешности практического плана, это не беда. Если же искажена семантика, то это ошибка. Иногда включается обрб. трансляция, но это случай редкий. Тут рассматривается одна функция.
+
# Либо перевод явной спецификации в неявную. Спецификации должны быть абсолютно эквивалентны. Любые неточности будут трактоваться как ошибки. Могут быть погрешности практ. плана, это не беда. Если же искажена семантика, то это ошибка. Иногда включается обрб. трансляция, но это случай редкий. Тут рассм. одна функция.
-
# Даётся алгебраическая спецификация, и по ней необходимо дать явную, неявную спецификацию группы функций, чтобы в них были определены предусловия, и все спецификации должны отвечать требованиям аксиом, сформулированным в задаче. Тут группа функций рассматривается. Для каких-то функций можно использовать явную, для каких-то — неявную спецификацию, на выбор.
+
# Дайтся алг. спецификация, и по ней необх. дать явную, неявную спец. группы функций, чтобы в низ были опр. предлусловия, и все спец. долны отв. требованиям аксиом, сформ. в задаче. Тут группа функций рассматривается. Для каких-то функций можно исп. явную, для каких-то — неянвую спецификацию, на выбор.
-
# Даётся алгебраическая спецификация, плюс даётся явная спецификация. Надо доказать, что явная спец. явл. или не является уточнением алгебраической.
+
# Даётся алг. спецификация, плюс даётся явная спецификация. Надо доказать, что явная спец. явл. или не является уточнением алгебраической.
-
# Упрощение некоего выражения. В качестве выражения даётся фрагмент спецификации, в котором активно используется параллельность, внутренний/внешний выбор, взаимная блокировка, и так далее.
+
# Упрощение некоего выражения. В качестве выр. даётся фрагмент спецификации, в котором активно исп. параллельность, внутр/внешний выбор, взаимная блоеировка, и так далее.
== Конкретные примеры ==
== Конкретные примеры ==
Строка 22: Строка 22:
Подводные камни:
Подводные камни:
* Никогда нет присваивания.
* Никогда нет присваивания.
-
* В случае неизменённых переменных на запись в постусловии надо написать, что значение переменной сохраняется: x=x'
+
* В случае неизм. перем. на запись в постусловии надо написать, что знач. переменной сохр.: x=x'
* Выражение должно быть корректно
* Выражение должно быть корректно
Строка 45: Строка 45:
'''end'''
'''end'''
-
Для каждой комбинации входных данных выписывается результат в том или ином случае. Результат состоит из d, e и x.
+
Для каждой комб. входных данных выпис. результат в том или ином случае. Результат состоит из d, e и x.
Где подобная задача может встретиться: в переписывании legacy, как альтернатива реверс-инжинирингу.
Где подобная задача может встретиться: в переписывании legacy, как альтернатива реверс-инжинирингу.
-
Перевод из неявной спецификации в явную это обычное программирование.
+
Перевод из неявной спец. в явную это обычное программирование.
=== 2. (Билет 1, задание 2) ===
=== 2. (Билет 1, задание 2) ===
Строка 76: Строка 76:
∀ e : E, s1, s2 : S :- append(add(e, s1), s2)) ≡ add(e, append (s1, s2))
∀ e : E, s1, s2 : S :- append(add(e, s1), s2)) ≡ add(e, append (s1, s2))
-
Всегда на входе будет группа функций, работающая с общей структурой данных. При этом, видимо, E — элемент, S — структура. При этом внутреннее представление элемента не важно, а вот что за S, хорошо бы догадаться. Какие бывают виды структур: множество, список, отображение. Элементами его могут быть или сами элементы E, множества, списки, отображения. Помимо совсем простых, базовых структур, может быть более хитрая структура, например, круговой список. Структура может быть необязательно одноуровневой Т. о.с совет: сначала понять, какая структура данных скрыта за спецификацией, и после этого писать спецификацию.
+
Всегда на входе будет группа функций, работающая с общей структурой данных. При этом, видимо, E — элемент, S — структура. При этом внутр. предст. элемента не важно, а вот что за S, хорошо быд догадаться. Какие бывают виды структур: множество, список, отображение. Элементами его могут быть или сами элементы E, множества, списки, отображения. Помимо совсем простых, базовых структур, может быть более хитрая структура, например, круговой список. Структура может быть необяз. одноур. Т. о.с совет: сначала понять, какая стуктура данных скр. за спецификацией, и после этого писать спецификацию.
-
Ответ: видимо, S это кольцевой список.
+
Ответ: видимо, S это кользевой список.
'''type'''
'''type'''
E,
E,
Строка 115: Строка 115:
Какие правила:
Какие правила:
* Вычислять всё, что можно вычислить
* Вычислять всё, что можно вычислить
-
* Подстановка. Всегда в качестве условия даётся явное определение. Везде, где в алгебраической спецификации вы видите обращение к функции, в этом месте всегда можно сделать подстановку
+
* Подстановка. Всегда в кач. условия даётся явное опр. Везде, где в алг. спец. вы видите обр. к функции, в жтом месте всегда можно сделать подстановку
-
* Базовые операции с основными структурами данных в случае известных значений.
+
* Базовые операции с осн. структурами данных в сдлучае изв. значений.
-
Для каждой из аксиом проводятся преобр. для правой и левой части, пока либо они нне станут текстуально равны, либо пока они не станут явно неэквив.
+
Для каждой из аксиом проводятсчя преобр. для правой и левой части, пока либо они нне станут текстуально равны, либо пока они не станут явно неэквив.
-
Может в условии задач слегка ошибиться и можно увидеть по сигнатуре, что они не являются уточнением. Если такая ошибка найдётся, то ваше счастье.
+
Может в условии задач сегка ошибиться и можно увидеть по сигн., что они не явл. уточнением. Если такая ошибка найдётся, то ваше счастье.
Если запись будет не слишком подробной, то это нормально
Если запись будет не слишком подробной, то это нормально
Строка 134: Строка 134:
(b!2) || (y := a?) || '''if''' (x:=1); (a!x); ('''true''' П '''false''') '''then''' a!(b?) '''else''' a!(1+b?) '''end'''
(b!2) || (y := a?) || '''if''' (x:=1); (a!x); ('''true''' П '''false''') '''then''' a!(b?) '''else''' a!(1+b?) '''end'''
-
Финальная запись решения, это, как правило, набор выражений, различающихся внутренним выбором, каждое из них достаточно простое.
+
Финальная запись решения, это, как правило, набор выражений, раз. внутр. выбором, каждон из них дост. простое.
Для начала просканировать и найти контрагентов.
Для начала просканировать и найти контрагентов.
* Первый тред пишет b? второй читает
* Первый тред пишет b? второй читает
-
* Второй тред взаимодействует с оператором (a!x) из третьего треда
+
* Второй тред взаимод. с оператором (a!x) из третьего треда
a!(5+b?) || ((x:=('''if''' '''true''' П '''false''' '''then''' x:=b?;1 '''else''' b!3; x:=2; 6 '''end''') +x) ++ (b!4|| y:=b?))
a!(5+b?) || ((x:=('''if''' '''true''' П '''false''' '''then''' x:=b?;1 '''else''' b!3; x:=2; 6 '''end''') +x) ++ (b!4|| y:=b?))
-
По поводу: (x:=a?)||(x:=b?). Мы ничего не можем сказать без окружения. Если это изолированный оператор и ничего в каналах нет, то это бесконечное ожидание. Если порядок получения данных из каналов известен, то мы можем сказать что-то определённое, если же порядок неизвестен, то и сказать ничего не можем.
+
По поводу: (x:=a?)||(x:=b?). Мы ничего не можем сказать без окружения. Если это изолир. оператор и ничего в каналах нет, то это беск. одидание. Если порядок получения данных из каналов известен, то мы можем сказать что-то определённое, если же порядок неизв, то и сказать ничего не можем.
-
Может ли провзаимодействовать 5+b? и b!3 ? Только если после взаимодействия в интерлоке это взаимодействие не используется и оно будет выполнено, то да.
+
Может ли провзаим. 5+b? и b!3 ? Только если после взаимод в интерлоке это взаимод. не использ. и оно будет выполн., то да.
-
# Рассмотрим первые два случая: a!(5+b?) || ((x:=((x:=b?;1)П(b!3;x:=2;6))+x)||(y:=4)). Поскольку все взаимодействия произошли, то ++ заменяется на ||.
+
# Рассм. первые два случая: a!(5+b?) || ((x:=((x:=b?;1)П(b!3;x:=2;6))+x)||(y:=4)). Поск. все взаимод. произошли, то ++ заменяется на ||.
## a!(5+b?) || ((x:=(x:=b?;1)+x)||(y:=4)) — первое решение
## a!(5+b?) || ((x:=(x:=b?;1)+x)||(y:=4)) — первое решение
-
Больше выписывать не будем.
+
Больше выпис. не будем.
-
Варивант со внешним взаимодействием: почти наверняка это будет case:
+
Варивант со внеш. взаимодействием: почти наверняка это будет case:
case (1 П b?) '''of'''
case (1 П b?) '''of'''
1:
1:
Строка 158: Строка 158:
'''end''' || a! ... || b!(a?+2) || ...
'''end''' || a! ... || b!(a?+2) || ...
-
Результатом будет ветка кейса и те взаимодействия, которые не заверш..
+
Результатом будет ветка кейса и те взаимод., которые не заверш..
-
Организационные замечания:
+
Орг. замечания:
-
* Можно пользоваться молча любыми источниками информации
+
* Можно польз. молча любыми ист. информации
* Нельзя обмениваться информацией ни в каком виде
* Нельзя обмениваться информацией ни в каком виде
-
Результирующая оценка за предмет будет состоять из двух коллоквиумов и, возможно, оценки по успехам за практическое задание.
+
Результ. окзенка за предмет будет сост. из двух коллоквиум и возм. оценка по успехам за практ. задание.
{{МФСП}}
{{МФСП}}
{{Lection-stub}}
{{Lection-stub}}

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы