- •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 Другие операторы
7.4 Код Цезаря
Код k каждого символа заменяется кодом k+n, где n – константа кодирования. Следует иметь в виду, что среди символов кодовой таблицы имеются «странные» символы, которые не имеют собственного изображения, а при попытке их отображения на экране происходят странные вещи…
Коды 0..255, например.
«Странные» символы – с 0 до 20 в шестнадцатеричной системе
7.5 Упаковка текста
В нашем задачнике задача:
III.4.3. Написать программу, которая упаковывает (и восстанавливает упакованный) текст. Упаковка производится заменой всех повторяющихся более трех раз символов комбинацией #АВС, где А и В - цифры, составляющие целое положительное К, С - символ, который в исходном тексте был повторен ровно К раз.
Проблемы упаковки:
Если символ повторяется более 99 раз, он кодируется блоками по 99 + остаток.
Если символ # имеется в кодируемом тексте…
7.6 Код Хаффмана
Пример: Закодировать сообщение: АВАССДАСА
Способ 1:
А=00, В=01, С=10, Д=11
получаем 000100101011001000 (18)
Убедиться, что закодированный текст однозначно восстанавливается.
Любой ли код соответствует некоторому тексту?
Способ 2 (Код Хаффмана):
Частота: А(3)=0, С(2)=10, В(1)=110, Д(1)=111
получаем 0110010101110100 (16)
Принцип: наиболее часто используемые символы кодируются наиболее короткими кодами.
Убедиться, что закодированный текст однозначно восстанавливается.
Любой ли код соответствует некоторому тексту?
Сформулировать условие эффективности кодирования по Хаффману.
Сообщение – последовательность байт (8 бит) рассматриваем как последовательность пар бит (00, 01, 10, 11), пусть их (пар бит) n штук.
Статистика: Х1 – к1 раз, Х2 – к2, Х3 – к3, Х4 – к4, причем к1>=к2>=к3>=к4
Кодируем Х1 – 0, Х2 – 10, Х3 – 110, Х4 – 111.
Хотим, чтобы длина кода к1+2*к2+3*к3+3*к4 < 2*n;
Причем к1+к2+к3+к4=n. Откуда 2*к1+к2>n – условие реального сжатия.
При к1>n/2 – всегда происходит сжатие;
При к1<n/3 – сжатия не будет.
Задача: Испытать этот метод сжатия на файлах различного типа.
7.7 Код Хемминга
Для передачи 11-битного кода используется 15 бит.
Плюсиками обозначены номера столбцов в двоичном коде.
Знаки вопроса – это 1, если четное число единиц в позициях, помеченных знаком +, 0, если нечетное.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
1 |
? |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
|
+ |
2 |
|
? |
+ |
|
|
+ |
+ |
|
|
+ |
+ |
|
|
+ |
+ |
4 |
|
|
|
? |
+ |
+ |
+ |
|
|
|
|
+ |
+ |
+ |
+ |
8 |
|
|
|
|
|
|
|
? |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
Пусть нужно передать сообщение: 10101010101
Передаем ??1?010?1010101, с учетом четности 011101011010101.
Пусть при передаче изменился 13 бит (вместо 1 – 0), тогда по таблице нарушение четности произойдет в строках, помеченных числами 1, 4 и 8, их сумма – 13!