
- •Список сокращений
- •1. Эис, их классификация и принципы построения
- •1.1. Понятие системы
- •1.2. Понятие эис. Назначение эис
- •1.3.Классификация эис
- •1.4. Основные принципы и методы построения эис.
- •1.4.1. Принципы построения и функционирования эис.
- •1.4.2.Структурный и объектно-ориентированный подходы к проектированию.
- •1.4.3.Понятие жизненного цикла эис.
- •Вопросы для повторения
- •Понятие системы.
- •Резюме по теме
- •2.Теоретические основы работы с информацией
- •2.1. Понятие информации
- •2.2. Измерение количества информации
- •2.3.Кодирование информации
- •2.3.1.Оптимальное основание кода
- •2.3.2.Запись натурального числа в двоичной системе
- •2.3.3.Код Грэя
- •2.3.4.Оптимальное кодирование
- •2.3.5.Помехозащищенное кодирование
- •2.4.Методы организации данных в памяти эвм
- •2.4.1.Типы данных, сд и атд
- •2.4.2.Время выполнения программ
- •2.4.3.Списки
- •2.4.4.Реализация списков
- •Реализация списков посредством массивов
- •Реализация списков с помощью указателей
- •2.4.5.Стеки
- •2.4.6. Очереди
- •2.4.7.Графы и деревья
- •2.4.8.Некоторые сд для хранения графов и деревьев
- •Вопросы для повторения
- •Резюме по теме
- •3. Особенности работы с экономической информацией
- •3.1.Классификация и кодирование экономической информации.
- •3.2.Единая система классификации и кодирования
- •3.3.Штриховое кодирование
- •Алгоритм расчета контрольного разряда ean
- •Вопросы для повторения
- •Резюме по теме
- •4.Модели данных
- •4.1.Атрибуты, составные единицы информации, показатели, документы
- •4.2.Операции над сеи
- •4.3.Реляционная модель данных
- •4.3.1. Отношения, как основа реляционной модели данных
- •4.3.2. Операции над отношениями
- •4.3.3. Нормализация отношений
- •4.3.4. Функциональные зависимости
- •4.3.5. Нормальные формы
- •Вопросы для повторения
- •Операции над сеи.
- •Операции над отношениями.
- •Резюме по теме
- •5.Модели знаний
- •5.1. Классификация знаний
- •5.2. Продукционная модель представления знаний
- •5.3.Представление знаний в виде семантической сети
- •5.4. Фреймовая модель представления знаний
- •5.5. Логическая (предикатная) модель представления знаний
- •Классификация знаний.
- •6.2.Структурная модель предметной области
- •6.2.1.Функциональная методология idef0
- •6.2.2. Функциональная методика потоков данных
- •6.3.Объектная модель предметной области
- •6.4. Сравнение методик моделирования предметной области
- •Вопросы для повторения
- •Понятие модели предметной области.
- •Резюме по теме
- •Литература Рекомендуемая основная литература
- •Рекомендуемая дополнительная литература
- •Задачник Введение
- •Краткое изложение используемых методов решения и основных теоретических положений
- •Примеры решения типовых задач
- •Задачи для самостоятельного решения
- •Практикум (лабораторный) Лабораторная работа №1. Кодирование информации
- •Требования к содержанию, оформлению и порядку выполнения
- •Теоретическая часть
- •Общая постановка задачи
- •Список индивидуальных данных
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Понятие информации.
- •Способ оценки результатов
- •Пример выполнения работы
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Список индивидуальных данных
- •Пример выполнения работы
- •Пример выполнения работы
- •Контрольные вопросы к защите
- •Способ оценки результатов
2.3.3.Код Грэя
Другой пример последовательности двоичных кодовых слов - это код Грэя. Код Грэя обладает ценным свойством, заключающемся в том, что любые два соседних кодовых слова отличаются лишь значением в одном разряде (последовательность кодовых слов в порядке минимального изменения). Код Грэя используется при построении различных преобразователей аналог-код, где он позволяет свести к единице младшего разряда ошибку неоднозначности при считывании информации.
Рекурсивное определение двоично-отраженного кода Грея следующее (используются обозначения, введенные в разд.2.3.2):
Примеры последовательностей двоичных наборов в порядке двоичного счета и порядке минимального изменения представлены в таблице 2.1.
Таблица 2.1 |
|||||
Последовательности двоичных наборов в порядке двоичного счета и порядке минимального изменения |
|||||
Последовательности двоичных наборов в порядке двоичного счета |
Последовательности двоичных наборов в порядке минимального изменения (коды Грэя) |
||||
G(1) |
G(2) |
G(3) |
G(1) |
G(2) |
G(3) |
0 |
00 |
000 |
0 |
00 |
000 |
1 |
01 |
001 |
1 |
01 |
001 |
|
10 |
010 |
|
11 |
011 |
11 |
011 |
10 |
010 |
||
|
100 |
|
110 |
||
101 |
111 |
||||
110 |
101 |
||||
111 |
100 |
Рассмотрим алгоритм порождения кода Грэя. Коды Грея удобно задавать начальным словом и последовательностью переходов, т.е. упорядоченным списком номеров разрядов (пронумерованных справа налево, нумерация с единицы), которые меняются при переходе от одного кодового слова к другому. Так для приведенного в таблице 2.1 кода G(3) начальное слово (000), а последовательность переходов будет иметь вид Т3=1,2,1,3,1,2,1.
Пусть
есть последовательность переходов для
n-разрядного
кода, тогда можно дать рекурсивное
определение последовательности
переходов.
1) Т1=1,
2)
.
Следует
отметить, что последовательности
переходов Tn
и
одинаковы. Поэтому данное рекурсивное
определение упрощается:
1) T1=1,
2) Tn+1=Tn,n+1,Tn.
Итак, для порождения кода Грея достаточно уметь порождать последовательность его переходов.
Последовательность переходов можно порождать итеративно, используя стек. Стек это один из видов организации хранения последовательности элементов данных. Элементы организуются по принципу «последний вошел - первый вышел». Более подробно стеки будут рассмотрены в разд.(2.4.5).
Вначале стек содержит элементы n,n-1,...,1 (с 1 в вершине, т.е. 1 вошла в стек последней). Затем верхний элемент стека - i извлекается из стека и помещается в последовательность переходов, после этого в стек добавляются элементы i-1,i-2,...,1. Процесс повторяется, пока стек не пуст. Алгоритм порождения кода Грея представлен укрупненной блок-схемой на рис.2.5.
В укрупненной блок схеме не детализировано, как осуществлять операции работы со стеком. Отметим, что для организации стека S можно использовать массив и переменную t, следящую за вершиной стека. Пусть для S отведены ячейки S[1], S[2],...,S[m], и число элементов в стеке не превышает m, тогда пустой стек соответствует случаю t=0. Операции занесения в стек некоторого значения x и извлечения из стека будут осуществляться следующим образом:
занесение x в стек S: t=t+1; S[t]=x;
извлечение x из стека S: x:=S[t]; t:=t-1.
Также в укрупненной блок-схеме не детализировано, как выполнять инвертирование элемента q[i]. Заметим, что элемент имеет целочисленный тип, поэтому выполнение операции q[i]:=not q[i] не приведет к желаемому результату (объясните почему). Можно было реализовать операцию инвертирования, например следующим образом: q[i]:=q[i] xor 1 или q[i]:=not q[i] and 1 (объясните почему), но в данном случае лучше заменить инвертирование арифметическими операциями: q[i]:=1-q[i].