Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / Программы / Опорный конспект.doc
Скачиваний:
31
Добавлен:
23.03.2015
Размер:
141.31 Кб
Скачать

Тема 4. Абстракція ітерації.

Поняття про ітератори. Необхідність використання ітераторів при проектуванні типів даних.

Специфікація ітераторів.

Ітератори у мові CLU. Поняття фільтру.

Реалізація ітераторів за допомогою генераторів.Приклад реалізації генератора для абстракції даних “Черга цілих чисел на базі массиву”.

Поняття повноти типу. Важливість використання ітераторів при проектуванні повного набору операцій типу.

Приклади специфікації ітераторів.

Питання до студентів:

  1. Наведіть визначення ітератора. Доведіть необхідність використання ітераторів при проектуванні типів даних.

  2. Чим відрізняється класичний ітератор у мові CLU від ітератора у мові C++?

  3. Наведіть загальний вигляд специфікації ітератора.

  4. Дайте поняття повного типу. Наведіть основні риси, що характерні для повного типу.

  5. Дайте визначення генератора. Чому треба моделювати ітератори за допомогою генераторів?

  6. Що таке фільтр?

Змістовий модуль ІII. Реалізація А.Т.Д.

Тема 1. Реалізація абстракції даних.

Функція абстракції та функція інваріант представлення.

Абстрактний тип та тип представлення.

Функції UP та DOWN.

Документування реалізації А.Т.Д.

Приклади.

Тема 2. Логічні специфікації.

Поняття про логічні специфікації. Вступ до верифікації програм.

Поняття інваріанту циклу.

Проектування циклів за допомогою інваріантів.

Верифікація програм з циклами. Поняття часткової та повної коректності циклу. Функція декременту.

Тема 3. Аналіз програм з А.Т.Д.

Функція інваріант абстракції.

Операції Equal, Similar та Copy.

Тема 4. Застосування методології розробки програм на базі А.Т.Д. у сучасних мовах програмування високого рівня.

Тема 5. Специфікації та їх важливість на різних етапах існування програм.

МІНІ-ЛЕКСИКОН

Информацияэто понятие (от лат. informatio - сведения, разъяснения, изложение) многозначно и поэтому строго определено быть не может. В широком смысле информация - это отражение реального (материального, предметного) мира, выражаемое в виде сигналов и знаков. То есть это сведения об окружающем мире, которые могут воспринимать устройства. Информация характеризуется такими свойствами как достоверность, полнота, актуальность, полезность, понятность.

Объем информации– это измерение информации, основанное на подсчете числа символов в сообщении, необходимое для того, чтобы оценить возможности технических устройств, работающих с ней. Объем информации измеряется в битах. Для представления любого числа в диапазоне от 0 до N требуется минимальное число бит, которое вычисляется по формуле [log2N] + 1.

Мера неопределенности множества событий С={С1, С2, С3, …, Сn} называетсяэнтропиейи вычисляется по формуле:

Количество информации– это мера уменьшения неопределенности некоторой ситуации. Пусть С={С1, С2, С3, …, СN} множество вариантов исхода некоторого события, тогда информативное сообщение это один изNвариантов исхода.Log2Nслужит для измерения количества информации. ЕслиNстепень двойки, то для определения исхода достаточно задатьLog2Nдвоичных вопросов, иначе [Log2N]+1.

По смыслу количество информациипротивоположно энтропии, поэтому

I(C)= –H(C)= –

ТеоремаВеличина I(C) максимальна в случае, когда события равновероятны, и равна Log2N, если N степень двойки, и равна[Log2N]+1 в противном случае.

Кодирование информации – это запись информации по определенным правилам.

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

Информационная модель предметной области – это изображение предметной области с точки зрения решаемой задачи.

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

Ключевой атрибут- атрибут, однозначно идентифицирующий объект в совокупности.

Данными называют изображение информации, т.е. описание состояния носителя. С каждым источником информации обязательно связан язык интерпретации - язык преобразования информации в данные и наоборот. Информация всегда активна, а данные - пассивны. Говорят, что данные - это застывшая информация.

Пусть язык интерпретации имеет алфавит: α1, α 2, ..., α m. С помощью символов этого языка сообщение изображается в виде строки символов S = s1, s2, ..., sN, где si - это некоторые αi. Строка символов разбивается на "слова" (фрагменты). При этом каждое слово изображает атрибут. Именно такое слово называется элементом данных. Элемент данных - это простейшая неделимая конструкция данных как и атрибут - неделимый элемент информации. Строка S называется логическим уровнем представления данных. Если мы будем изображать каждый символ si в виде определенного состояния (δj) некоторой физической среды, то (si) можно рассматривать как коды.

Наиболее экономная среда хранения – среда с тремя устойчивыми состояниями.

Системы кодирования с фиксированным числом разрядов:

- телеграфный код М2 – 6 двоичных разрядов (64 значений )

- КОИ7 - 7 двоичных разрядов (128 значений )

- ДКОИ - 8 двоичных разрядов (хватало 128 значений )

- ASCII- 8 двоичных разрядов (256 значений )

- UNICODE- 16 двоичных разрядов (значений )

- USC2 - 16 двоичных разрядов

- USC4 - 16 двоичных разрядов

Код Хофмана – система с переменным числом, при которой ни у каких двух кодов нет общего начала. Символы кодируются в зависимости от частоты их в исходной строке.

Организованную совокупность данных обычно называют структу­рой данных. Структура содержит информации о связях между элементами, общие характеристики множества и позволяет выполнять операции адресации и поиска.

Отношением B называется некоторое подмножество C, выделяемое некоторым

оператором, условием или функцией B=F(А1, А2, ..., Аn).

Если n=1, то отношение называется унарным.

Если n=2, то отношение называется бинарным. Изображением бинарных отношения является граф. Частными случаями бинарного отношения, например, являются отношение сравнения, порядка, иерархии.

Свойства отношений.

Определение. Бинарное отношение AρBназываетсярефлексивным, если ему всегда принадлежит элементaρa.

Определение. Бинарное отношение AρBназываетсясимметричным, еслиaρbвсегда следует иbρa.

Определение. Бинарное отношение AρBназываетсятранзитивным, еслиaρb&bρcвсегда следует иaρc.

Под структурой данных(СД) мы будем понимать два множества S = {D,R}, гдеD– множество элементов данных, а R – множество взаимосвязей между ними. Другими словамиСД– это организованное определенным образом множество элементов данных. В множество R включаются не все взаимосвязи между элементами, а только те, которые не зависят от конкретных значений элементов структуры, т. е. связи характерные для данного типа структуры, которые описывают ее общие характеристики.

Структура– это сложная конструкция данных и с ней можно связать ряд общих характеристик, таких как

- организация;

- метод доступа;

- методы расположения и обработки и т.д.

Под методом доступабудем понимать множество операций (действий), выполнив которые, мы получим отдельный выделенный элемент структуры. В большинстве случаев метод доступа можно описать тремя процедурами:

- метод поиска;

- метод адресации;

- метод идентификации, т.е.

MD = {MP, MA, MI}.

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

Метод адресацииэлемента – это процедура нахождения выбранного элемента, его относительного положения,его “чтения” в структуре. Например, для табличной структуры – это обращение к функции расстановки, для массива – это определение приведенного индекса (отображение на вектор памяти).

Метод идентификации– это процедура анализа выделенного элемента с целью его классификации в соответствии с критерием поиска. Это может быть сравнение значений или анализ попадания в интервал, или нахождение элемента, ближайшего к заданному и т.д.

Методом обработкиструктуры будем называть последовательность обработки элементов, наличие взаимосвязей элементов, которые формируют такую последовательность. Важно отметить, что очередность обработки элементов определяется задачей обработки, прикладной задачей, но в зависимости от структуры разные методы обработки могут иметь разную сложность.

Под статической СДбудем понимать такую АСД, в которой в процессе ее обработки могут изменяться значения элементов данных. При изменении элемента в статической СД он размещается на месте старого значения. В статической структуре почти не изменяется системная информация, которая формируется при инициализации структуры. Изменение организации такой структуры – сложное и ограниченное, т.е. в статической структуре изменяется D и неизменно R.

В динамической СДлегко изменяются связи между ее элементами, организация, состав структуры, а не только характеристики ее элементов. Т.е. в такой структуре допускается простое изменение множества R. Как правило, динамические структуры более гибкие (удобные) в использовании, чем статические, но сложность их обработки и содержания (поддержки) значительно большая, чем для статических. Они более точно описывают функционирование предметной области.

Структура данных - это организованная совокупность данных, решающая задачи адресации (взаимного расположения элементов в памяти) и доступа (выборки). Каждая структура характеризуется набором операций, которые с ней можно выполнять и стратегией размещения элементов структуры в памяти. Поэтому каждая структура имеет:

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

внутреннее представление: здесь определяется стратегия взаимного расположения элементов в структуре, а также от этого зависит эффективность реализации операций.

Последовательная СД - это СД с последовательной адресацией и последовательным доступом.

Массив- это СД с последовательным расположением элементов и вычисляемым доступом по индексам.

Списковые СД- это структура с последовательной обработкой и произвольным размещением.

Табличные СД – это структуры в которых порядок обработки и расположения элементов не регламентированы (являются произвольными). При этом доступ к элементу таблицы осуществляется по его значению (ключу), который, как правило, должен быть частью элемента таблицы. Место расположения элемента определяется или с помощью специальной функции Адрес = f(k), преобразующей значение ключа в адрес (такая функция называется функцией хеширования или расстановки) или с помощью специальной операции поиска.

Древовидные СД – это структуры с иерархическим доступом по условию.

Определение. Непустым деревом t называется конечное множество T, состоящее из одного или более узлов, таких, что

а) имеется один специально выделенный узел, называемый корнем данного дерева;

б) остальные узлы (исключая корень) содержатся в m>=0 попарно непересекающихся подмножествах T1, T2, …, Tm, каждое из которых в свою очередь является деревом.

Деревья T1, T2, …, Tm называются поддеревьями данного корня.

Пустое дерево также считается деревом и обозначается nil.

Степенью (рангом) данного узла называется количество поддеревьев данного узла.

Степенью дерева называется максимальная степень его узлов.

Концевым узлом (листом) называется узел нулевой степени.

Узлом разветвления называется не концевой узел.

Уровень узла по отношению к корню дерева определяется следующим образом:

  • корень находится на первом уровне;

  • другие узлы (корневые узлы поддеревьев) находятся на уровне на единицу большем корня.

Регулярное дерево – дерево, все узлы разветвления которого имеют одну и ту же степень.

Высотой дерева называется максимальный уровень его узлов.

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

Бинарное дерево – это или пусто или узел (корень) и два поддерева (левое и правое). Все узлы бинарного дерева берутся из некоторого множества, котором должна быть определена функция предшествования , располагающая элементы этого множества в виде последовательности а1 а2 аn. При этом для любого узла бинарного дерева должно выполняться: все ключи левого поддерева меньше ключа корня, а ключ корня меньше всех ключей правого поддерева. Бинарное дерево часто называют деревом поиска.

Дерево поиска называется сбалансированным по высоте (АВЛ-деревом или подровненным деревом), если для каждого его узла высоты левого и правого поддеревьев отличаются не более чем на единицу.

Сбалансированное по высоте дерево называется деревом Фибоначчи, если количество узлов в его левом о правом поддеревьях являются последовательными числами Фибоначчи (для любого узла).

Дерево поиска называется идеально сбалансированным, если для каждого его узла количество узлов в левом и правом поддереве отличаются не более чем на единицу.

Дерево называется полным, если все точки роста находятся на последнем уровне. Дерево называется выровненным, если все точки роста находятся на двух последних уровнях.

Поддерево называется вырожденным, если у него все узлы разветвления - однопутевые.

Сеть - орграф, в котором допускаются и петли, и кратные дуги и который используется как модель системы, процесса и пр.

Тип данных мы понимаем как класс объектов-переменных, которые могут подменять друг друга в различных контекстах.

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

Тип данных определяется по существу двумя свойствами:

  • поведением объекта, рассматриваемого типа;

  • структурным описанием,  определяет представление объектов этого типа;

  • (не обязательно) множество объектов рассматриваемого типа;

Под типом объекта понимается:

  • само множество объектов;

  • существенные свойства, т.е. представление объектов этого множества;

  • набор операций обеспечивающий доступ к объектам и позволяющий использовать их свойства;

Теория структурной организации данных Хоара:

  1. Тип данных определяет класс значений, которые могут принимать переменные и выражения.

  2. Каждое значение принадлежит одному и только одному типу(данное правило не нарушается в языке Паскаль во многом благодаря неявному приведению типов).

  3. Тип константы, переменной или выражения можно вывести либо из контекста либо из вида самого выражения не обращаясь к значениям, вычислимым во время работы программы, что обеспечивает возможность статического контроля типов.

  4. Для каждой операции существует тип ее операндов и результата.

  5. Для каждого типа свойства значений и элементарных операций над значениями задается с помощью аксиом.

  6. При работе с языком высокого уровня значение типа позволяет обнаруживать в программе бессмысленные конструкции (контроль типов) и решать вопрос о методе представления данных.

Если какой-то тип встроен в язык, то он предоставляет пользователю следующие средства:

1) описание переменной;

2) взятие значения и присваивание;

3) сравнение значений;

4) обозначение констант;

5) выбор компонент (селектор).

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

Придекомпозиции задачимы разбиваем ее на ряд подзадач так, что

  1. каждая подзадача имеет один и тот же уровень рас­смотрения;

  2. каждая задача может быть решена независимо;

  3. полученные решения могут быть объединены вместе, позволяя решить исходную проблему.

Процессабстракцииможет быть рассмотрен как некоторое обобщение. Он озволяет нам забыть об информации и, следова­тельно, рассматривать различные предметы так, как если бы они были эквивалентны.

Абстракция– это отвлечение от несущественных деталей с целью лучше понять одну сторону изучаемого явления. Это путь к созданию абстрактных понятий.

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

Спецификация– это описание абстракции сточки зрения ее использования. Спецификация отлична от любой определяемой ею реализации абстракции. Все реализации сходны между собой, поскольку они реализуют одну и ту же абстракцию. Отличие их заключается в том, что это делается разными способами. Спецификация опре­деляет их схожесть.

Абстракция данныхопределяется по формуле

абстракция данных =<объекты, операции>

Абстракции данных позволяют отложить окончательный вы­бор структур данных до момента, когда эти структуры станут нам вполне ясны.

Эта взаимосвязь может быть определена функцией, которая называется функцией абстракции.Эта функция отображает объ­екты представления в абстрактные объекты:

А: repА

Функция абстракции —это важнейшая информация о реали­зации. Она определяет конкретное представление, т. е. то, каким образом объекты представления реализуют абстрактные объ­екты. Эта функция должна быть обязательно представлена в ком­ментариях реализации.

Условие, которому удовлетворяют все законные объекты, называется инвариантом представления.Инвариант представле­ния есть предикат

I:rep→bool

который принимает значение trueдля законных объектов пред­ставления.

Соседние файлы в папке Программы