Лекция RAISE Specification Language: списки и операции со списками.

Презентация:



Advertisements
Похожие презентации
Лекция RAISE Specification Language: базовые типы, логика, декартовы произведения, множества и операции с множествами.
Advertisements

Лекция RAISE Development Method: некоторые виды спецификаций и проверка согласованности моделей.
Лекция Неполная спецификация и недетерминизм. Let- и Case-выражения.
Лекция Виды формальных спецификаций. Практические задачи курса.
Общее понятие верификации и валидации Примеры спецификации программ Лекция 11 Предикатное программирование.
1 Кубенский А.А. Функциональное программирование. Глава 2. Средства функционального программирования. Потоки. «Завязывание узлов» Часто обработку данных.
Семантический анализ КC-грамматики, с помощью которых описывают синтаксис языков программирования, не позволяют задавать контекстные условия (КУ), имеющиеся.
3. Математические основы 3.3. Матиндукция 5. Построение языка предикатного программирования. Методы доказательства корректности предикатных программ Методы.
1 Эффективность рекурсивных функций. Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. -- Вычисление.
7. Технология предикатного программирования Базовые трансформации Подстановка определения на место вызова Замена хвостовой рекурсии циклом Склеивание переменных.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
1 Кубенский А.А. Функциональное программирование. Глава 2. Средства функционального программирования. Еще один пример функциональной программы
Формальные спецификации программ А.К.Петренко МГУ ВМиК, ИСП РАН, ИПМ РАН, член IEEE CS.
Денотационная семантика 0 |1|1 | 0 | 1 Mb:Mb: М b ('0') = 0, М b ('1')=1 М b ( '0') = =2 * М b ( ) М b ( 1) = =2 * М b ( ) + 1.
Лекция 3 Бесконечно малые и бесконечно большие 1.Понятие бесконечно малой функции в окрестности, свойства. 2.Понятие бесконечно большой свойства. 3.Порядок.
Объектно – ориентированное программирование (ООП) Артишевская Юлия, 222 группа Артишевская Юлия, 222 группа.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
8. Моделирование логической структуры системы Диаграмма классов Диаграмма классов служит для моделирования классов и отношений между ними.
Часть II. Формальное описание языков программирования ( Формальная спецификация формальных языков ) Приложение. Описание статической семантики языка IMP.
Тема: Множества.. Множество – совокупность однотипных элементов, рассматриваемых как единое целое. Примеры множеств: [ 3, 4, 7, 9, 12] [ ] [ a,
Транксрипт:

Лекция RAISE Specification Language: списки и операции со списками

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко План лекции Списки. Свойства списков Описание типов Литералы и агрегаты Операции со списками Диаграмма Гогена Пример «хорошего стиля»

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Списки. Свойства списков каждый элемент может встретиться несколько раз порядок определен (и существенен)

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Описание типов type LT1 = T1-list КОНЕЧНЫЕ СПИСКИ LT2 = T1 * NLT1 = T1-inflist БЕСКОНЕЧНЫЕ СПИСКИ NLT2 = T1 +

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Литералы и агрегаты списочное выражение (rangered list expression) = генерация списка на основе имеющегося :- true.>.> :- is_a_prime(n).> =... value INTLIST : (Int > y.>

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Тип Text и списки символов "abc" = текст из трех символов "" = текст нулевой длины

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Операции со списками ^ : T-list > T-list in : T >< T-list len : T-list -> Nat hd : T-list -~-> T tl : T-list -~-> T-list inds : T-list -> Nat-set elems : T-list -> T-set Свойства операций inds fl = {1..len fl} для конечных списков inds il = {idx | idx : Nat :- idx >= 1}для бесконечных cписков elems l = {l(idx) | idx : Nat :- idx isin inds l}

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Диаграмма Гогена T-list T Bool Nat T-set T-inflist T-infset Задание: Нарисуйте связи, которые задают операции над списками между этими типами данных

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Пример: Очередь QUEUE = class type Element, Queue = Element-list value empty : Queue, put : Element > Queue, get : Queue -~-> Queue >< Element axiom forall e : Element, q : Queue empty is, put (e,q) is q ^, get(q) is (tl q, hd q) pre q ~= empty end

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Пример: Сортировка (1) Цель примера – показать хороший стиль: мы не описываем алгоритмы, мы описываем только свойства результата. LIST_PROPERTIES = class value is_permutation : Int-list > Bool, is_sorted : Int-list -> Bool axiom forall l,l1,l2 ; Int-list :- is_permutation(l1,l2) is (all i : Int :- card {idx | idx : Nat :- idx isin indx l1 /\ l1(idx) = i} = card {idx | idx : Nat :- idx isin indx l2 /\ l2(idx) = i}, is_sorted(l) is (all idx1,idx2 : Nat :- {idx1,idx2} l(idx1)

ВМиК МГУ, сентябрь-декабрь 2001 Формальные спецификации программ-I, Лекция 6. А.К.Петренко Пример: Сортировка (2) SORTING = extend LIST_PROPERTIES with class value sort : Int-list -> Int-list axiom forall l : Int-list :- sort(l) as l1 post is_permutation(l1,l2) /\ is_sorted(l1) end Замечание. В данном примере мы разбили специфицикацию на два модуля. В первом собраны вспомогательные определения. Второй модуль описывает функциональность собственно функции sort.