- •1.1.2 Классификация структур данных
- •1.1.3 Обозначения и договоренности
- •1.1.4 Множества.
- •1.1.5 Прямоугольные структуры. Массивы
- •Лекция 2
- •2.1 Прямоугольные структуры. Таблицы
- •2.2 Реализация с использованием параллельных массивов (статическое представление таблицы)
- •2.3 Реализация операций для неупорядоченной таблицы с использованием статической памяти
- •2.4 Динамическая память. Куча
- •2.5 Операции над указателями
- •2.6 Геометрическая интерпретация
- •2.7 Динамическая цепочка
- •2.8 Реализация операций для неупорядоченной таблицы с использованием динамической памяти
- •3.2 Обратная польская (постфиксная) запись
- •Лекция 4
- •4.1 Списковые структуры. Линейный список
- •Атом есть линейный список (атомарный);
- •Атом есть линейный список (атомарный);
- •4.2 Об операции "расчленение"
- •4.3 Логическое описание линейного списка.
- •4.4 Вычисление значения арифметического выражения
- •Лекция 5
- •5.1 Деревья
- •5.2 Бинарные деревья
- •5.5 Дерево двоичного поиска
- •7.2 Инструментальные средства. Архивация файлов (пока без сжатия)
- •7.3 Программы хранения и обработки информации
- •7.4 Код Цезаря
- •7.5 Упаковка текста
- •7.6 Код Хаффмана
- •7.7 Код Хемминга
- •7.8 Вектор Айлиффа
- •Вектор Айлиффа
- •Лекция 8
- •8.1 Сортировка – перестановка элементов линейной структуры
- •8.2 Алгоритмы сортировки Три класса алгоритмов сортировки (включением, выбором, обменом)
- •8.2.1 Сортировка простым включением.
- •9.2 Источники погрешностей
- •9.3 Классификация погрешностей
- •9.4 Терминология
- •FoRmula traNslation (станд.66, станд.77(*))
- •10.0 Бланк для записи текста программы на Фортране
- •10.1 Элементы языка
- •10.2 Типы данных и операции
- •10.3 Описание переменных и констант
- •10.4 Арифметические операции
- •11.3 Операторы присваивания
- •11.4 Оператор continue
- •11.5 Оператор безусловной передачи управления
- •11.6 Вычисляемый оператор передачи управления
- •11.7 Оператор передачи управления по предписанию
- •11.8 Арифметический оператор условной передачи управления
- •11.9 Логический оператор условной передачи управления
- •11.10 Структурный оператор условной передачи управления*
- •11.11 Оператор цикла с параметром
- •Лекция 12
- •12.1 Реализация стандартных структур
- •12.2 Операции ввода/вывода
- •12.3 Операторы ввода/вывода
- •12.4 Оператор формата (format)
- •12.5 Логическая запись
- •12.6 Взаимодействие операторов в/в и оператора format.
- •Расширенная форма оператора read
- •12.7 Управляющие символы при печати
- •12.8 Представление целого и действительного в памяти.
- •12.9 Оператор data
- •12.10 Сравнение текстовых данных
- •12.11 Функции для данных типа character
- •Лекция 13
- •13.1 Программные единицы
- •13.2 Библиотечные и встроенные функции
- •13.3 Оператор-функция
- •Правило соответствия: Списки формальных и фактических параметров согласованы по количеству, типу и порядку следования. Пример
- •13.4 Подпрограмма-функция
- •13.5 Подпрограмма-процедура
- •О соответствии фактических и формальных параметров
- •13.6 Операторы external и intrinsic
- •Пример (параметр-переменная и параметр-значение)
- •14.3 Операторы ввода и вывода.
- •14.4 Параметры операторов ввода и вывода
- •Открытие (присоединение) файла.
- •14.5 Операторы open и close
- •14.6 Оператор read
- •14.7 Оператор write
- •14.8 Другие операторы
5.5 Дерево двоичного поиска
Пусть тип данных Inf допускает порядок (то есть данные этого типа можно сравнивать на «больше» и «меньше»).
Дерево двоичного поиска – это двоичное дерево, каждое поддерево которого обладает следующим свойством: информационные части всех узлов, находящихся в левом поддереве, меньше информационной части корня, а информационные части всех узлов, находящихся в правом поддереве больше информационной части корня.
Операции: Создать, Добавить, Найти, Обход.
Пример: 22,10,3,5,13,26,18,19,17,2,4,7,...
5.6 Реализация операций
Добавить(р:^Эл,i:Inf)
Если p=NIL то NEW(p);p^.кор=i;p^.лев=NIL;p^.прав=NIL
иначе
если i<p^.кор > то Добавить(p^.лев,i),
иначе Добавить(p^.прав,i)
Задачи
Заполнить дерево двоичного поиска из файла?
Найти элемент с заданной информационной частью в дереве двоичного поиска?
Что дает ЛКП обход дерева двоичного поиска?
Лекция 6
Повторение темы «Структуры данных»
Лекция 7
Программное окружение = пользовательские (авторские) программы, инструментальные средства, примитивы.
7.1 Примитивы
Примитивы – это подпрограммы, назначение которых – локализовать систмно-зависимые операции. Чтобы программу, работающую в одной операционной среде, использовать в другой операционной среде, необходимо «переписать» все системно-зависимые операторы. Как правило, это операции обращения к внешним устройствам. Для удобства такого «переписывания» зависящие от системы операции локализуют в отдельных подпрограммах (примитивах). В случае перехода в другую операционную среду достаточно «переписать» только эти подпрограммы. Вот пример из книги Г.Кернигана и Ф.Плоджера «Инструментальные средства программирования на языке Паскаль» («Ф и С», 1985).
Program primitiv;
Const _endfile_=-1; _endline_=-2;
Type character=-2..255;
var f,g:text;
function getc(var f:text):character;
var ch:char; c:character;
begin
if eof(f) then c:=_endfile_else
if eoln(f) then
begin
readln(f); c:=_endline_
end
else begin
read(f,ch);
c:=ord(ch)
end;
getc:=c;
end;
procedure putc(var f:text; c:character);
begin
if c<>_endfile_ then
if c=_endline_ then writeln(f) else write(f,chr(c))
end;
procedure copy(var f,g:text);
var c:character;
begin
c:=getc(f);
while c<>_endfile_ do
begin
putc(g,c);
c:=getc(f)
end;
close(g)
end;
begin {Тело программы}
assign(f,'primitiv.pas'); assign(g,'cop.pas');
reset(f); rewrite(g); copy(f,g);
end.
7.2 Инструментальные средства. Архивация файлов (пока без сжатия)
Файлы с любым базовым типом – file of byte.
Операции: создать, добавить, исключить, просмотреть.
Procedure addfile(arh,fl:string);
var A,B,F:File Of Byte; c:Byte;
begin
assign(A,arh); assign(F,fl); assign(B,’workfile.d’);
reset(A); reset(F); rewrite(B);
while not eof(A) do begin read(A,c);write(B,c) end;
while not eof(F) do begin read(F,c);write(B,c) end;
erase(A); rename(B,arh);
end;
Каковы недостатки такого «добавления»?
Как эти недостатки исправить?
Уникальный разделитель
Указание длины каждого файла
Каталог содержимого всего архива
7.3 Программы хранения и обработки информации
Алгоритмы обработки информации зависят от носителя информации. Если хранение осуществляется в оперативной памяти, то используются различные структуры данных, определяющие способы обработки информации. Если информация хранится на внешних носителях, то данные объединены в файлы, обработка которых осуществляется с использованием средств операционной системы.
Эффективность хранения и обработки данных определяется объемом занимаемой памяти и временем доступа к данным.
Свойства алгоритмов хранения и обработки информации:
Корректность (однозначное восстановление из архива);
Надежность (восстановление после сбоя)