2. 8: фундаментальное алгоритмическое
введение
Тип стек.
Понятие стека.
Стек и магазин. Вертикальные терминологии.
Задачи на стеки:
• моделирование реальных стеков,
• собственные задачи информатики.
Функциональная спецификация.
Рекурсивный характер стека.
Свойства операций.
Сравнение с очередью. Горизонтальная терминология.
3. 8: фундаментальное алгоритмическое
введение
Логическое описание.
Стеки в языках программирования и в библиотеках универсальных систем
программирования.
FORTH.
Аппаратная поддержка стеков.
Машины со стековой памятью.
Физическое представление.
Отображение на файл. Достоинства и недостатки.
Отображение на массив. Сравнение с кольцебуферной стратегией.
Встречные стеки.
4. 8: фундаментальное алгоритмическое
введение
Сложностные оценки.
Пример кода на Си.
Отображение на динамические структуры.
Код на языке Си.
Примеры.
Реверс и уничтожение стека.
Автомат Калашникова как устройство преобразования стека в очередь.
Демонстрация.
Моделирование очереди двумя стеками.
5. 8: фундаментальное алгоритмическое
введение
Понятие дека.
Моделирование дека двумя стеками или двумя очередями, контролирующими
общую последовательность.
Анонсы задач на деки:
• Краснопресненское трамвайное депо;
• сортировочная станция Дейкстры;
• злые птицы (RussianCodeCup2012@MaiI.Ru).
6. 8: фундаментальное алгоритмическое
введение
Линейный список.
Линейный список -- последовательность хранимых значений и
мультимножество.
Первичность порядка и хронологии, вторичность нумерации.
Поиск значений в списке.
Добавление и удаление элемента в любом месте списка.
Сложностные оценки.
Сравнение с очередью и стеком.
7. 8: фундаментальное алгоритмическое
введение
Функциональная спецификация.
Свойства операций.
Рекурсивный характер списка.
Логическое описание.
Списки в языках программирования и в библиотеках универсальных систем
программирования.
Списки в языках LISP и Prolog.
Физическое представление.
Отображение на массив. Суррогатная реализация.
Подсписки свободных и занятых элементов резидентного массива.
8. 8: фундаментальное алгоритмическое
введение
Сложностные оценки.
Пример кода на Си.
Отображение на динамические структуры.
Графическая иллюстрация.
Итераторы.
Терминатор.
Код на языке Си.
Обработка списков.
Примеры.
Реверс и уничтожение списка. Демонстрация.
10. 8: фундаментальное алгоритмическое
введение
Рекурсия
Понятие рекурсии.
Рекурсия как цикл в функциональной нотации.
Примеры рекурсии в математике, физике и вычислительной технике.
Зеркала, камеры, мониторы и др.
Рекурсивные алгоритмы. Примеры.
Рекурсия и итерация. Примеры сведения и несведения: факториал и функция
Аккермана.
Понятие о рекурсивном вызове процедуры. Рекурсивное исполнение программ.
Использование стека для управления памятью при рекурсивном исполнении
программ блочной структуры.
Демонстрация: трассировка программы вычисления 20!
11. 8: фундаментальное алгоритмическое
введение
Лабораторная работа №2 «Сортировка структур данных».
Реализовать заданный абстрактный тип данных на стандарте языке Си
без использования библиотек.
Составить программу сортировки экземпляра типа заданным методом.
Характерные элементы метода реализовать отдельными функциями.
Дать сложностные оценки использованным методам с подтверждением
в процессе тестирования крайних и средних значений.
Для сборки программы, генерации тестов и собственно тестирования
использовать средства ОС UNIX.
Варианты заданий задаются в матрице на пересечении строк -- методов
сортировки и столбцов – сортируемых структур.