
- •Введение
- •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.Реализация очередей
- •2.4.9.Графы и деревья
- •2.4.10.Некоторые сд для хранения графов и деревьев
- •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. Нормальные формы
- •Результат первого шага приведения к 2нф отношения преподаватель_предмет (отношение преподаватель в 2нф)
- •Результат первого и второго шагов приведения к 2нф отношения преподаватель_предмет (все отношения в 2нф)
- •4.3.8. Пример проектирования реляционной бд
- •5.Модели знаний
- •5.1. Классификация знаний
- •5.2. Продукционная модель представления знаний
- •5.3.Представление знаний в виде семантической сети
- •5.4. Фреймовая модель представления знаний
- •5.5. Логическая (предикатная) модель представления знаний
- •6.Моделирование предметных областей в экономике
- •6.1.Понятие модели предметной области
- •6.2.Структурная модель предметной области
- •6.2.1.Функциональная методология idef0
- •6.2.2. Функциональная методика потоков данных
- •6.3.Объектная модель предметной области
- •6.4. Сравнение методик моделирования предметной области
- •7.Алгоритмы, наиболее часто использующиеся при обработке информации в эис
- •7.1.Алгоритмы поиска
- •7.1.1.Поиск элемента в неупорядоченном массиве
- •7.1.2.Поиск элемента в упорядоченном массиве.
- •7.1.3.Фонетический поиск
- •7.2.Алгоритмы сортировки
- •7.2.1.Сортировка методом пузырька.
- •7.2.2.Сортировка вставками
- •7.2.3.Сортировка выбором
- •7.2.4.Пирамидальная сортировка
- •7.2.5.Быстрая сортировка.
- •7.2.6.Сортировка слиянием
- •7.3.Поиск на графах
- •7.3.1.Поиск в глубину
- •7.3.2.Поиск в ширину
- •7.4.Топологическая сортировка графа
- •7.5.Сетевое планирование
- •7.5.1.Алгоритм расчета наиболее ранних сроков наступления событий
- •7.5.2.Алгоритм расчета наиболее поздних сроков наступления событий
- •7.5.3.Алгоритм расчета резервов времени.
- •Литература Рекомендуемая основная литература
- •Рекомендуемая дополнительная литература
- •Приложение 1.Форматы штрих-кодов
- •Приложение 2. Коды некоторых стран
Реализация списков с помощью указателей
Реализация списков с помощью указателей освобождает от использования непрерывной области памяти для хранения списка. Это позволяет избавиться от перемещения элементов списка при вставке или удалении элементов. Однако ценой за это удобство становится дополнительная память для хранения указателей. Структура списка, реализованного с помощью указателей, представлена на рис.2.14. Список представлен записью LIST, состоящей из двух полей: last и elements. В поле last хранится число элементов списка, а в поле elements - указатель на первый элемент списка. Элемент списка хранится в записи, состоящей из двух полей: element и next. Поле element содержит значение элемента списка, а поле next - указатель на следующий элемент списка.
Реализация операторов INSERT и DELETE представлена блок-схемами на рис.2.15 и 2.16 соответственно. Реализация этих же операторов на языке Pascal представлена в листинге 2.5.
Листинг 2.5
type
position=integer;
ptrcell=^celltype;
celltype= record
element:elementtype;
next:ptrcell
end;
LIST = record
elements:^celltype;
last:position
end;
function Seek(p:position; L:LIST):ptrcell;
{Seek возвращает указатель в списке L на элемент с номером p (p=1,2,...,L.last}
var q:ptrcell; i:position;
begin
q:=L.elements; i:=1;
while i<>p do
begin
q:=q^.next; i:=i+1
end;
return(q);
end; {Seek}
procedure INSERT(x:elementtype; p:position; var L:LIST);
(INSERT вставляет элемент x в позицию p в списке L}
var
q,n:ptrcell;
begin
if (p>L.last+1) or (p<1) then error('Такой позиции не существует')
else
begin
q:=Seek(p,L); new(n); n^.element:=x; n^.next=q^.next; q^.next=n;
L.last:=L.last+1;
end
end; {INSERT}
procedure DELETE(p:position; var L:LIST);
{DELETE удаляет элемент в позиции p списка L}
var
q,qp:ptrcell;
begin
if (p>L.last) or (p<1) then error('Такой позиции не существует')
else
begin
if p=1 then
begin
q:=L.elements; L.elements:=q^.next
end
else
begin
qp:=Seek(p-1,L); q:=qp^.next; qp^.next:=q^.next;
end;
dispose(q); L.last:=L.last-1;
end
end; {DELETE}
Реализация списков с помощью курсоров
Некоторые языки программирования Fortran, Algol не имеют указателей. В этом случае указатели можно моделировать с помощью курсоров.
На рис. 2.17 показаны два списка M=a,b,c и L=d,e, вложенные в один массив SPACE длиной 10. Ячейки массива не занятые элементами списков образуют свободный список.
Реализация оператора INSERT списка, представленного с помощью указателей показана на рис.2.18. Реализация данного оператора на языке Pascal показана в листинге 2.6.
Реализацию остальных операторов списка сделайте самостоятельно.
Листинг 2.6
const
maxlen=100; { или другое подходящее число }
type
position=integer;
celltype= record
element:elementtype;
next:position
end;
LIST = record.
elements:position;
last:position
end;
var
SPACE=array[1..maxlength] of celltype;
free:position; {курсор, указывающий на свободный элемент}
function Seek(p:position; L:LIST):position;
{Seek возвращает курсор в списке L на элемент с номером p=1,2,...,L.last}
var q, i:position;
begin
q:=L.elements;
i:=1;
while i<>p do
begin
q:=SPACE[q].next; i:=i+1
end;
return(q);
end; {Seek}
procedure INSERT(x:elementtype; p:position; var L:LIST);
(INSERT вставляет элемент x в позицию p в списке L}
var
q,n:position; i:position;
begin
if L.last>=maxlen then error('Список полон')
else if (p>L.last+1) or (p<1) then error('Такой позиции не существует')
else
begin
q:=Seek(p,L);
n:=free; free:=SPACE[n].next; {Эти два оператора заменяют new(n)}
SPACE[n].element:=x; SPACE[n].next=SPACE[q].next; SPACE[q].next=n;
L.last:=L.last+1;
end
end; {INSERT}