
- •Лабораторные работы по программированию "Структуры и алгоритмы обработки данных"
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Методические указания по выполнению задания (окончание)
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Литература
- •Хранение данных в файлах
- •Простая организация данных
- •Ускорение операций с файлами
- •Хешированные файлы
- •Хешированные файлы (окончание)
- •Индексированные файлы
- •Индексированные файлы (окончание)
- •Несортированные файлы с плотным индексом
- •Внешние деревья поиска
- •Разветвленные деревья поиска
- •Создание пустого б-дерева
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (окончание)
- •Сравнение методов
- •Формат атд
- •Формат атд (окончание)
- •Вариант 8:
- •Атд "Хеш-таблица с цепочками коллизий"
- •Атд "Хеш-таблица с цепочками коллизий" (окончание)
- •Атд "Хеш-таблица с открытой адресацией"
- •Атд "Хеш-таблица с открытой адресацией" (окончание)
- •Атд "Итератор"
- •Описание методики тестирования хеш-функции (определение статистики c2)
- •Описание хеш-функций
- •Результаты тестирования хеш-функции
- •Описание методики тестирования трудоемкости операций
- •Описание методики тестирования трудоемкости операций (окончание)
- •Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
- •Литература
Формат атд
При создании любой программной системы, в основе которой лежит некоторая программно управляемая структура данных, базируется на понятии абстрактного типа данных (АТД). АТД задает область значений, представление структуры данных и набор операций к данным.
Для описания АТД используется формат, который включает заголовок с именем АТД, описание типа данных и список операций. Формат АТД служит не только основой для проектирования программной системы. Не менее важен формат и для точного описания интерфейса, предоставляемого пользователю - программисту для управления структурой данных. Поэтому формулировки формата АТД должны быть исчерпывающими, точными и краткими. В описании формата АТД должны использоваться, понятия, объекты и переменные, использующиеся только на уровне интерфейса к структуре данных. На уровень интерфейса не должны выноситься детали внутренней реализации структуры данных и операций управления ею.
Для каждой операции в формате АТД определяются входные значения, предусловия, применяемые к данным до того, как операция может быть выполнена, процесс, который выполняется операцией. После выполнения операции определяются выходные значения и постусловия, указывающие на любые изменения данных.
Большинство АТД имеют инициализирующую операцию, которая присваивает начальные значения данным. В С++ такой инициализатор называется конструктором.
АТД имя. Общая характеристика типа данных
ДАННЫЕ: Описание общих параметров. Описание структуры данных.
ОПЕРАЦИИ: Конструктор: Вход: данные от пользователя. Начальные значения: данные для инициализации. Процесс: инициализация данных. Постусловие: состояние структуры и параметров после инициализации.
Операция: Вход: данные от пользователя. Предусловия: необходимое состояние структуры данных перед выполнением операции. Процесс: действия, выполняемые над данными. Выход: данные, возвращаемые пользователю. Постусловие: состояние структуры после выполнения операции.
Операция: ...
Операция: ...
КОНЕЦ АТД.
В качестве примера ниже приведён формат абстрактного типа данных - надёжного массива. Надёжный массив в отличие от статического массива может изменять свой размер во время выполнения программы. Как АТД, надёжный массив наделяется операциями: инициализации массива с исходным размером (конструктор), опрос текущего размера, изменение текущего размера, доступ к элементу массива по индексу. Операция индексации надёжного массива наделяется новым свойством - проверкой границ массива. Если указанный индекс находится вне текущего размера массива, операция генерирует сообщение об ошибке.
Формат атд (окончание)
АТД "НАДЁЖНЫЙ МАССИВ". Массив элементов указанного типа Т с переменной размерностью. При создании массив имеет исходный размер size0. Массив может изменять свой размер. Операция индексирования массива выполняет проверку соответствия индекса текущему размеру массива size.
ДАННЫЕ:
Параметры:
Исходный размер массива size0 Текущий размер массива size
Структура данных:
Динамический массив элементов указанного типа Т-Tarray[size]
ОПЕРАЦИИ:
Конструктор:
Вход: исходный размер массива size0 Начальные значения: исходный размер массива size=size0 Процесс: выделение памяти с указанным размером size0 Постусловия: Создан массив с размером size=size0
Опрос размера массива:
Вход: нет Предусловия: нет Процесс: чтение текущего размера size Выход: текущий размер size Постусловия: нет
Изменение размера массива:
Вход: новый размер
массива sizen
Предусловия:
sizen
0
Процесс:
выделение памяти указанного размера
sizen, копирование size
или sizen значений из старого
массива в новый массив
Выход:
нет
Постусловия:
массив
содержит size значений старого массива,
если sizen > size,
массив
содержит sizen значений
старого массива, если sizen < size,
текущий
размер массива size=sizen
Операция индексирования:
Вход: значение индекса i Предусловия: 0 i size-1 Процесс: вычисление адреса элемента массива array[i] Выход: ссылка на элемент массива array[i] Постусловия: генерация сообщения об ошибке при невыполнении предусловия
КОНЕЦ АТД