Разделы презентаций


Схема проектирования цикла

сентябрь 2008Лекция 4.3Пусть для написания некоторой программы требуется разработать цикл while с заданной спецификацией (P, Q) : {P} S0;  while (B) S; {Q},где S – тело цикла, S0 – операторы инициализации цикла, а

Слайды и текст этой презентации

Слайд 1сентябрь 2008
Лекция 4.3
Схема проектирования цикла с помощью инварианта (проектная модель)
Понятие

инварианта оказывается очень полезным не только для доказательства корректности готового

цикла,
но и для его проектирования в процессе разработки программы.

Инвариант цикла лежит в основе некоторой
схемы проектирования циклов,
которую естественно и назвать схемой проектирования цикла с помощью инварианта.
сентябрь 2008Лекция 4.3Схема проектирования цикла с помощью инварианта (проектная модель)Понятие инварианта оказывается очень полезным не только для

Слайд 2сентябрь 2008
Лекция 4.3
Пусть для написания некоторой программы требуется разработать цикл

while с заданной спецификацией (P, Q) :
{P} S0;  while (B) S;

{Q},
где S – тело цикла, S0 – операторы инициализации цикла, а предикат B в соответствии с семантикой цикла while есть условие продолжения цикла.
Пусть X – множество переменных программы, X0 – их начальные значения, установленные действием S0.
Не ограничивая общности, представим тело цикла в виде X = f(X), где f – функция, описывающая преобразование переменных в теле цикла S.
сентябрь 2008Лекция 4.3Пусть для написания некоторой программы требуется разработать цикл while с заданной спецификацией (P, Q) : {P}

Слайд 3сентябрь 2008
Лекция 4.3
Введем обозначения:
M – множество; X ∈ M;
P: M →  Boolean, где Boolean = {true,

false}; т. е. P – предикат, выражающий предусловие;
Q: M →  Boolean, т. е. Q – предикат,

выражающий постусловие.
Кроме того, обозначим множества:
P = {X ∈ M : P(X) = true};
Q = {X ∈ M : Q(X) = true};
B = {X ∈ M : B(X) = true};
B * = {X ∈ M : B(X) = false}.
Рассмотрим предикат inv : M →  Boolean и множество I = {X ∈ M : inv (X) = true}. Кроме того, введем некоторую целочисленную функцию переменных программы t: I → N0, где N0 – множество неотрицательных целых чисел.
сентябрь 2008Лекция 4.3Введем обозначения:M – множество; X ∈ M;P: M →  Boolean, где Boolean = {true, false}; т. е. P – предикат, выражающий предусловие;Q: M →  Boolean,

Слайд 4сентябрь 2008
Лекция 4.3
Предположим, что существуют предикат inv и функция t такие,

что справедливы следующие утверждения:
inv & !B → Q;
{P} S0 {inv}
{inv & B } S {inv};
inv (X) & B(X) → (t(X) > 0);
{inv (X) & B(X) & t0 = t(X)} S {0 ≤ t(X) 

while завершается и имеет «заявленное» свойство {P} S0;  while (B) S; {Q}.
Интерпретация этого факта в терминах преобразования f переменных в теле цикла:
свойство {inv & B } S {inv} тела цикла детализируется как {inv (X) & B(X) } X = f(X) {inv(X)},
и по правилу вывода для оператора присваивания имеем inv (X) & B(X) → inv(f(X)),
т.е. преобразование f на множестве I ∩ B  сохраняет инвариант inv.
сентябрь 2008Лекция 4.3Предположим, что существуют предикат inv и функция t такие, что справедливы следующие утверждения:inv & !B → Q;{P} S0 {inv}{inv & B } S {inv};inv (X) & B(X) → (t(X) > 0);{inv (X) & B(X) & t0 = t(X)} S {0 ≤ t(X) 

Слайд 5сентябрь 2008
Лекция 4.3
Геометрическая интерпретация схемы цикла с инвариантом



P = {X ∈ M : P(X) = true};
Q = {X ∈ M

: Q(X) = true};
B * = {X ∈ M : B(X) = false}.
I = {X ∈ M : inv (X) = true}

inv (X)  & not B (X)  → Q (X)

сентябрь 2008Лекция 4.3Геометрическая интерпретация схемы цикла с инвариантомP = {X ∈ M : P(X) = true};Q = {X ∈ M : Q(X) = true};B * = {X ∈ M : B(X) = false}.I = {X ∈ M : inv (X) = true}inv (X)  & not B (X)  → Q

Слайд 6сентябрь 2008
Лекция 4.3

Итак, последовательность преобразований f за число шагов не

более чем t (X0) гарантировано приведет к достижению в множестве M

точки X ∈ I ∩ B *  и при этом  I ∩ B * ⊂ Q , т. е. X ∈ Q и следовательно Q(X) = true.
сентябрь 2008Лекция 4.3Итак, последовательность преобразований f за число шагов не более чем t (X0) гарантировано приведет к достижению

Слайд 7сентябрь 2008
Лекция 4.3
Схема проектирования цикла с помощью инварианта
На практике разработка

цикла с заданными пост- и предутверждениями состоит в следующем.
Начинают с

придумывания общей стратегии решения задачи и основной идеи алгоритма.
При этом на неформальном уровне следует решить, что будет происходить в цикле, какие программные объекты будут изменяться при выполнении цикла.

Затем надо:
сформулировать условие продолжения цикла B (или завершения !B);
попытаться придумать инвариант цикла inv и вариант var.
Если это удалось, то набросок цикла можно записать в виде:

сентябрь 2008Лекция 4.3Схема проектирования цикла с помощью инвариантаНа практике разработка цикла с заданными пост- и предутверждениями состоит

Слайд 8сентябрь 2008
Лекция 4.3

//Предусловие: P
Фрагмент A
//Инвариант: inv
//Вариант: var
While (B) {
ТЕЛО ЦИКЛА


}
Фрагмент Б
//Постусловие: Q
После этих действий остается:
обеспечить при заданном предусловии выполнение

инварианта перед началом цикла, написав фрагмент А;
построить тело цикла, сохраняющее инвариант и уменьшающее ограничивающую функцию;
обеспечить выполнение постусловия после завершения цикла, написав фрагмент Б.
сентябрь 2008Лекция 4.3//Предусловие: PФрагмент A//Инвариант: inv//Вариант: varWhile (B) {	ТЕЛО ЦИКЛА }Фрагмент Б//Постусловие: QПосле этих действий остается:обеспечить при

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика