Редактирование: МФСП, 02 семинар (от 08 сентября)

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

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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
Цель этих 4—5 занятий будет рассказать оcновы RSL.
+
Цель этих 4--5 занятий будет рассказать онвы RSL.
-
Практическое задание: Необходимо будет по задаче написать явную-неявную спецификацию, тестовое покрытие, тестовый драйвер и реализацию на С++, удовлетворяющую спецификации.
+
Пркт. задание: Небх. будет по здаче написать явную-неявную пецификацию, тетовое покрытие, тетовый драйвер и реализацию на С++, удовлетвряю.щую пец.
Типы данных в RSL:
Типы данных в RSL:
Строка 7: Строка 7:
* Int +, −, ×, /, \, ↑, abs, real
* Int +, −, ×, /, \, ↑, abs, real
* Nat {|I=Int, i > 0|}
* Nat {|I=Int, i > 0|}
-
* Real. Всегда должны присутствовать точка и одна цифра после точки. +, −, ×, /, abs, int (сиречь trunc)
+
* Real. Вегда должны приут. точка и одна цифра после точки. +, −, ×, /, abs, int (сиречь trunc)
* Char 'A'...'Z'
* Char 'A'...'Z'
* Text — посл. символов
* Text — посл. символов
-
* Unit. Единственное значение, использующееся для функций без параметров
+
* Unit. Единст. Значение, исп. для функц. без параметров
== Логика в RSL ==
== Логика в RSL ==
-
Трёхзначная, помимо true/false есть ещё chaos (ошибка, нетипизированное).
+
Трёхзначная, пмимо true/false есть ещё chaos (ошибка, нетипизированное).
-
Все таблицы ит. строятся из того, что в RSL ленивые вычисления логических выражений, крме того ~chaos = chaos.
+
Все таблицы ит. троятся из тог, что в RSL ленивые выч. лог. выр, крме того ~chaos = chaos.
(по гор. второй операнд, по верт. — первый)
(по гор. второй операнд, по верт. — первый)
Строка 132: Строка 132:
</td></tr></table>
</td></tr></table>
-
Для описания альтернатив используется if-then-else:
+
Для описания альтернатив исп. if-then-else:
'''if''' expr1 '''then''' expr2 '''else''' expr3 '''end'''
'''if''' expr1 '''then''' expr2 '''else''' expr3 '''end'''
Строка 146: Строка 146:
'''if''' a '''then''' expr2 '''else''' expr3 '''end''' = expr2 = '''if''' a '''then''' expr2 [<math>\frac{true}{a}</math>]'''else''' expr3[false/a] '''end''' = expr2
'''if''' a '''then''' expr2 '''else''' expr3 '''end''' = expr2 = '''if''' a '''then''' expr2 [<math>\frac{true}{a}</math>]'''else''' expr3[false/a] '''end''' = expr2
-
В RSL, как и в обычном матлоге, используются кванторы &exist;, &forall;, !&exist;.
+
В RSL, как и в бычном матлоге, исп. кванторы &exist;, &forall;, !&exist;.
-
Задачи. Будут выписываться тождества обычной логики, нужно проверить, работает ли оно в RSL:
+
Задачи. Будут выпис. тождества обычной логики, нужно прверить, работает ли оно в RSL:
-
~~a &equiv; a — выполняется
+
~~a &equiv; a — выполняетя
true or a &equiv; true — выполняется
true or a &equiv; true — выполняется
Строка 213: Строка 213:
&forall; i: Int &bull; &exist; j: Int &bull; i+j=0 — истина (при j = -i)
&forall; i: Int &bull; &exist; j: Int &bull; i+j=0 — истина (при j = -i)
-
&forall; i: Int &bull; &exist; j: Nat &bull; i+j=0 — не удовл (нельзя найти j для положительного i)
+
&forall; i: Int &bull; &exist; j: Nat &bull; i+j=0 — не удовл (нельзя найти j для полож. i)
&exist; i: Int &bull; &forall; j: Int &bull; i+j=0 — не верно
&exist; i: Int &bull; &forall; j: Int &bull; i+j=0 — не верно
-
Написать на RSL выражение, выражающее тот факт, что нет наиболее целого числа:
+
Написать на RSL выражение, выраж. тот факт, чт нет наиб. целого числа:
~(&exist; i: Int &bull; &forall; j: Int; &bull; (i >= j &equiv; true))
~(&exist; i: Int &bull; &forall; j: Int; &bull; (i >= j &equiv; true))
Строка 225: Строка 225:
== Описание функций в RSL ==
== Описание функций в RSL ==
-
Прежде чем узнать описание функций, узнаем, что такое декартово произведение типов:
+
Прежде чем узнать описание функций, узаем, что такое декартово произведение типов:
Type1 &times; Type2 &times; ... &times; Typen
Type1 &times; Type2 &times; ... &times; Typen
Строка 231: Строка 231:
(5, "ABC", true): Intx &times; Text &times; Bool
(5, "ABC", true): Intx &times; Text &times; Bool
-
Для декартовых произведений определено только равенство и неравенство
+
Для декартовых произв. опр. тлько равентв и нер.
-
Константы в RSL — частный случай функций (функции без аргументов). Функции могут задаваться:
+
Контанты в RSL — частный случай функций (функ. без арг.). Функции могут задаваться:
-
* Явно. описание, как вычисляется, или знач.
+
* Явно. опис., как вычисл, или знач.
-
* Неявно. Накладываются условия на значения.
+
* Неявно. Накл. условия на знач.
-
* Аксиоматически. Опис.,
+
* Аксиоматически. Опис., ...
Константы:
Константы:
Строка 243: Строка 243:
Явное задание:
Явное задание:
-
name: Type = val #задание значения
+
name: Type = val #задание знач.
Пример: x : Int = 5
Пример: x : Int = 5
Строка 251: Строка 251:
x : Int &bull; x > 0
x : Int &bull; x > 0
-
Аксиоматически: можно использовать оба варианта
+
Аксиоматически: мжно исп. оба варианта
В разделе опис. констант: x: Int
В разделе опис. констант: x: Int
-
В разделе опис. аксиом:
+
В раздее опис. аксиом:
'''Axiom'''
'''Axiom'''
x &equiv; 1 или например
x &equiv; 1 или например
Строка 259: Строка 259:
Функции в RSL:
Функции в RSL:
-
* Всюду вычислимые. Для любого x из области предусловия существует единственное y, таке что f(x) = y^
+
* Всюду выч. Для любого x из бл. пр. сущ. единст. y, таке что f(x) = y^
&forall; x: T1 &bull; !&exist; y : T2 &bull; f(x)=y
&forall; x: T1 &bull; !&exist; y : T2 &bull; f(x)=y
-
* Частично вычислимые. Для некоторых значений x могут иметь 0, 2 или более значений
+
* Частично выч. Для нек-рах зн. x могут иметь 2 или блее знач
'''value'''
'''value'''
name : Type &rarr; result_Type
name : Type &rarr; result_Type
-
для частично вычислимых — стрелочка с тильдой. В случае сложных типов используется декартово произведение
+
для чатично вычислимых — трелочка с тильдой. В случае сложных типов ип. дек. произв.
Явная спецификация:
Явная спецификация:
Строка 280: Строка 280:
'''value'''
'''value'''
f : Int &rarr; Int;
f : Int &rarr; Int;
-
f(x) as r /* определение новой переменной, связанной с значением функции */
+
f(x) as r #опр. новой перем, связ. с зн. ф-ции
-
post r>x /* постусловие, связывающее аргументы и значения функции */
+
post r>x #постусловие, связ. арг. и зн. функции
-
Пример описания квадратного корня:
+
Пример пис. кв. корня:
sqrt : Real трелочка с тильдой Real
sqrt : Real трелочка с тильдой Real
sqrt(x) as s
sqrt(x) as s
Строка 295: Строка 295:
&forall;x"Int &bull; f(x) &equiv; x
&forall;x"Int &bull; f(x) &equiv; x
-
Пример с sqrt: для частично вычислимой функции предусловие переносится в начало импликации.
+
Пример с sqrt: для част. выч. ф-ции предусловие переносится в нач. импл.
'''value'''
'''value'''
sqrt : Real трелочка с тильдой Real
sqrt : Real трелочка с тильдой Real
Строка 319: Строка 319:
cmplx_mul((xr, xi), (yr, yi)) &equiv; (xr&times;yr-xi&times;yi, xi&times;yr+xr&times;yi)
cmplx_mul((xr, xi), (yr, yi)) &equiv; (xr&times;yr-xi&times;yi, xi&times;yr+xr&times;yi)
-
Функция, возвращающая некое комплексное число, отличное от заданного
+
Функция, возвр. некое компл. число, отл. от заданного
'''value'''
'''value'''
cmplx_another : complex &rarr; complex
cmplx_another : complex &rarr; complex

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

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