- •Информация
- •Свойства информации
- •Преобразования сигнала
- •Системы счисления
- •Перевод из двоичной и шестнадцатеричной систем счисления в десятичную.
- •Перевод из двоичной системы счисления в шестнадцатеричную:
- •Правила вычитания
- •Правила умножения
- •Кодирование сигнала
- •Сложение по модулю
- •Ascii-коды
- •Коды Грея
- •Коды, учитывающие частоту символов
- •Код Штибица
- •Метод Вижинера
- •Метод Шеннона-Фано
- •Метод Хаффмена
- •Декодирование эффективных кодов
- •Методы эффективного кодирования словарей
- •Кодовое расстояние и корректирующая способность кода
- •Обнаружение ошибки
- •Коды, исправляющие ошибки
- •Комбинаторная мера
- •Аддитивная мера
- •Статистический подход к измерению информации
- •Полезность информации
- •Истинность информации
- •Виды современных компьютеров
- •Персональные компьютеры
- •Устройство управления
- •Арифметико-логическое устройство
- •Формы представления вещественных чисел
- •Коды представления числовых данных в алу
- •Сложение вещественных чисел
- •Поскольку старший числовой разряд мантиссы равен 0, она требует нормализации. Для этого:
- •Офисные пакеты
- •Настольные издательские системы
- •Системы автоматизации проектирования (сапр)
- •Инструментарий технологии программирования
- •Первое поколение эвм
- •Второе поколение эвм
- •Третье поколение эвм
- •Четвертое поколение эвм
- •Технология проектирования программ
- •Формализация задачи
- •Структурно-стилизованный способ
- •Операторный язык
- •Команда комментарии
- •Методы проектирования алгоритмов
- •Модуль Ввод и размещение
- •Модуль Ввод и анализ
- •Модуль Упорядочение
- •Модуль Определение
- •Лексический анализ
- •Синтаксический анализ
- •Семантический анализ
- •Генерация промежуточного кода
- •Оптимизация промежуточного кода
- •Компоновка
- •Выполнение и тестирование программы
- •Эволюция использования компьютеров. Проект эвм пятого поколения
- •Структура информационного процесса
- •Сбор информации
- •Первичное восприятие информации
- •Методы классификации
- •Иерархическая классификация
- •Фасетная классификация
- •Распознавание и кодирование объектов
- •Регистрация информации
- •Запись информации оператором
- •Контроль правильности записи данных
- •Первичное восприятие и измерение информации
- •Анализ результатов первичного восприятия и измерения
- •Распознавание символов
- •Восприятие информации клавиатурой
- •Первичное восприятие и измерение
- •Компьютерные сети
- •Топология сетей
- •Методы передачи данных в сетях
- •Организация обмена информацией в сети
- •Обработка информации
- •Хранение информации
- •Операции над данными
- •Линейные списки
- •Блочный способ
- •Двоичный способ
- •Индексно-последовательный способ
- •Индексно-произвольный способ
- •Размещение элементов в упорядоченном списке
- •Исходный список представлен таблицей 11:
- •Рандомизация
- •Фамилия (ключ) Числовое значение ключа
- •3) Формирование реальных номеров бакетов. Для определения константы с выполним следующие вычисления:
- •Метод квадратов. Распределение элементов по бакетам показано в таблице 20:
- •Сдвиг разрядов. Распределение элементов по бакетам показано в таблице 21:
- •Метод складывания. Распределение элементов по бакетам показано в таблице 22:
- •Оптимизированные цепочки элементов
- •Инвертированные списки
- •Иерархические структуры
- •Множественные ссылки на порожденные элементы
- •Ссылки на подобные и порожденные элементы
- •Кольцевые структуры
- •Справочники
- •Битовые отображения
- •Сетевые структуры
- •Множественные ссылки на порожденные элементы
- •Кольцевые структуры
- •Справочники
- •Битовые отображения
- •Жидкокристаллические мониторы
- •Плазменные мониторы
- •Технология вывода изображений на мониторы, использующие элт
- •Принципы организации текстовых видеорежимов
- •Принципы организации графических видеорежимов
- •Манипуляторы курсора
- •Механическая мышь
- •Устройства вывода на бумажный носитель
- •Матричные принтеры
- •Струйная технология
- •Термическая технология
- •Электрографическая технология
- •Технология формирования цвета
Метод складывания. Распределение элементов по бакетам показано в таблице 22:
Таблица 22
Номер бакета |
Содержимое бакета |
||||
0001 |
|
|
|
|
|
0002 |
|
|
|
|
|
0003 |
Скворцов |
Олег |
иванович |
02544 |
пр. Мира, 45 - 3 |
0004 |
Соколов |
Юрий |
Кузьмич |
01278 |
ул. Леонова, 23 - 98 |
Супруненко |
Виктор |
Егорович |
02347 |
Каштановая аллея, 23 - 5 |
|
0005 |
|
|
|
|
|
0006 |
|
|
|
|
|
0007 |
|
|
|
|
|
0008 |
Строков |
Иван |
Иванович |
02343 |
ул. Красная, 9 - 2 |
0009 |
|
|
|
|
|
Как показывает анализ, все три метода с одинаковой равномерностью заполняют бакеты: один бакет содержит два элемента, остальные – по одному, т.е. методы равноэффективны.
Решим задачу просмотра элемента.
Пример 10. По ключу Супруненко требуется просмотреть домашний адрес студента, т.е. qпросмотр = (Фамилия = Супруненко, Домашний адрес), где Кдоступ = Супруненко. Пусть линейный список после размещения соответствует таблице 22. Задача решается следующим образом:
по приведенным выше алгоритмам рандомизации определяется номер бакета для нужного ключа доступа – это 0004;
в данном бакете находится линейный список элементов, в общем случае, не упорядоченный по ключу. Поэтому к нему применим метод последовательного сканирования. Анализируется первый элемент бакета с ключом Соколов: Соколов = Супруненко;
поскольку условие не выполняется, выбирается следующий элемент;
его ключевое поле сравнивается с ключом доступа: Супруненко = Супруненко; условие выполняется, поэтому выводится результат – Каштановая аллея, 23 – 5. Алгоритм заканчивает работу.
Способы доступа по вторичному ключу
Доступ по вторичному ключу выполняется следующими способами: с помощью элементов, связанных в цепь, с помощью оптимизированных цепочек элементов и с помощью инвертированных списков.
Элементы, связанные в цепь
К исходному линейному списку не предъявляется никаких требований. К нему достраиваются дополнительные списки – индексы - в количестве, соответствующем числу вторичных ключей доступа. Элементы таких списков имеют два поля: первое – значение вторичного ключа из основного списка, второе – ссылка на первый элемент в основном списке с таким же значением вторичного ключа. Сами элементы основного списка также модифицируются: они дополняются полями в количестве, соответствующем числу вторичных ключей доступа. Каждое поле служит для организации цепочек записей с одним значением вторичного ключа.
Пример 11. Пусть основной линейный список имеет вид таблицы 23:
Таблица 23
№ п/п |
ФИО студента |
Шифр учебной группы |
Дисциплина |
Оценка |
1 |
Иванов И.И. |
01-ИЭ |
Информатика |
5 |
2 |
Петров П.П. |
02-ВТ |
Программирование |
4 |
3 |
Сидоров С.С. |
01-ИЭ |
Информатика |
3 |
4 |
Федоров Ф.Ф. |
01-АС |
Программирование |
5 |
5 |
Яковлев Я.Я. |
01-ИЭ |
Физика |
4 |
Вторичными ключами являются Шифр учебной группы, Дисциплина, Оценка. Построим индексы для этих ключей (таблицы 24 – 26):
Таблица 24 Таблица 25 Таблица 26
№ п/п |
Шифр учебной группы |
Ссылка |
|
№ п/п |
Дисциплина |
Ссылка |
|
№ п/п |
Оценка |
Ссылка |
1 |
01-АС |
4 |
|
1 |
Информатика |
1 |
|
1 |
3 |
3 |
2 |
01-ИЭ |
1 |
|
2 |
Программирование |
2 |
|
2 |
4 |
2 |
3 |
02-ВТ |
2 |
|
3 |
Физика |
5 |
|
3 |
5 |
1 |
Как видно из таблиц 24 – 26, каждый индекс содержит поле со всеми значениями соответствующего вторичного ключа из основного списка и поле (озаглавлено Ссылка), в котором указывается номер элемента основного списка, где впервые встречается соответствующее значение вторичного ключа. Значения вторичных ключей в индексах упорядочены по возрастанию, так что с индексами можно работать как с упорядоченными линейными списками (в роли первичных ключей таких списков выступают вторичные ключи основных списков).
Модифицируем также и основной список. Для удобства поместим дополнительные поля (они выделены заливкой) справа от соответствующего вторичного ключа. Получим таблицу 27:
Таблица 27
№ п/п |
ФИО студента |
Шифр учебной группы |
Ссылка |
Дисциплина |
Ссылка |
Оценка |
Ссылка |
1 |
Иванов И.И. |
01-ИЭ |
3 |
Информатика |
3 |
5 |
4 |
2 |
Петров П.П. |
02-ВТ |
- |
Программирование |
4 |
4 |
5 |
3 |
Сидоров С.С. |
01-ИЭ |
5 |
Информатика |
- |
3 |
- |
4 |
Федоров Ф.Ф. |
01-АС |
- |
Программирование |
- |
5 |
- |
5 |
Яковлев Я.Я. |
01-ИЭ |
- |
Физика |
- |
4 |
- |
Рассмотрим, например, как сформировано поле Ссылка для вторичного ключа Шифр учебной группы:
элемент с номером 1 имеет ссылку на элемент с номером 3: это следующий элемент основного списка со значением шифра группы 01-ИЭ;
элемент с номером 3 имеет ссылку на элемент с номером 5: это следующий элемент основного списка со значением шифра группы 01-ИЭ;
элемент с номером 5 – последний в основном списке со значением вторичного ключа Шифр учебной группы, равным 01-ИЭ. Поэтому он имеет пустую ссылку «-»;
элемент с номером 2 - единственный в основном списке со значением вторичного ключа 02-ВТ, поэтому он имеет пустую ссылку «-»;
элемент с номером 4 - единственный в основном списке со значением вторичного ключа 01-АС, поэтому он имеет пустую ссылку «-».
Аналогично можно проследить образование ссылок у остальных вторичных ключей.
Рассмотрим вначале, как выполняется задача просмотра.
Пример 12. Пусть надо просмотреть фамилии и инициалы всех студентов, сдававших информатику, т.е. qпросмотр = (Дисциплина = Информатика, ФИО студента). Очевидно, Кдоступ = Информатика. Поиск осуществляется последовательным выполнением шагов:
по Индексу для ключа Дисциплина определяется элемент со значением поля Дисциплина, равным Информатика (поскольку индекс – это упорядоченный линейный список, к нему применяются рассмотренные ранее методы, например, метод последовательного сканирования, анализ работы которых в данном случае не приводится). Это первый элемент индекса;
по полю Ссылка выясняется номер элемента основного списка с искомым ключом доступа – это первый элемент;
в основном списке выбирается первый элемент. Выводится фамилия и инициалы студента – это Иванов И.И.;
в соответствии со значением поля Ссылка для поля Дисциплина определяется номер следующего элемента основного списка с аналогичным значением вторичного ключа – это элемент № 3;
выбирается третий элемент. Выводится фамилия и инициалы студента – это Сидоров С.С.;
в соответствии со значением поля Ссылка для поля Дисциплина определяется номер следующего элемента основного списка с аналогичным значением вторичного ключа. Поскольку это поле не содержит ссылки, это означает, что цепочка элементов закончилась, следовательно, список студентов сформирован; алгоритм заканчивает работу.
Рассмотрим, как решается задача добавления.
Пример 13. Пусть в основной список таблицы 27 надо добавить элемент со структурой:
ФИО студента |
Шифр учебной группы |
Дисциплина |
Оценка |
Ковалев К.К. |
02-ВТ |
Программирование |
2 |
т.е. qдобавление = (ФИО студента = Ковалев К.К., Шифр учебной группы = 02-ВТ, Дисциплина = Программирование, Оценка = 2), где Кдоступ = Ковалев К.К.
Поскольку процедуры добавления подробно рассматривались ранее, проследим, как в результате модифицировались основной список и три индекса (таблицы 28 – 31). Измененные значения ссылок выделены заливкой; новые элементы в основном списке и в таблице 31 выделены полужирным шрифтом:
Таблица 28
№ п/п |
ФИО студента |
Шифр учебной группы |
Ссылка |
Дисциплина |
Ссылка |
Оценка |
Ссылка |
1 |
Иванов И.И. |
01-ИЭ |
4 |
Информатика |
4 |
5 |
5 |
2 |
Ковалев К.К. |
02-ВТ |
3 |
Программирование |
3 |
2 |
- |
3 |
Петров П.П. |
02-ВТ |
- |
Программирование |
5 |
4 |
6 |
4 |
Сидоров С.С. |
01-ИЭ |
6 |
Информатика |
- |
3 |
- |
5 |
Федоров Ф.Ф. |
01-АС |
- |
Программирование |
- |
5 |
- |
6 |
Яковлев Я.Я. |
01-ИЭ |
- |
Физика |
- |
4 |
- |
Таблица 29 Таблица 30 Таблица 31
№ п/п |
Шифр учебной группы |
Ссылка |
|
№ п/п |
Дисциплина |
Ссылка |
|
№ п/п |
Оценка |
Ссылка |
1 |
01-АС |
5 |
|
1 |
Информатика |
1 |
|
1 |
2 |
2 |
2 |
01-ИЭ |
1 |
|
2 |
Программирование |
2 |
|
2 |
3 |
4 |
3 |
02-ВТ |
2 |
|
3 |
Физика |
6 |
|
3 |
4 |
3 |
|
|
|
|
|
|
|
|
4 |
5 |
1 |
