
- •A. Государственный образовательный стандарт
- •B. Рабочая программа учебной дисциплины b.1. Цели и задачи дисциплины, ее место в учебном процессе
- •B.2. Протокол согласования рабочей программы с другими дисциплинами специальности на 200_ учебный год
- •B.3. Объем дисциплины и виды учебной работы
- •B.4. Содержание дисциплины b.4.1.Тематический план
- •B.4.2. Лекционный курс
- •B.4.3. Лабораторный практикум
- •B.4.4. Самостоятельная работа студентов
- •B.5. Список рекомендуемой литературы для изучения дисциплины
- •B.6. Вопросы к экзамену
- •B.9. Тематический план
- •C.2.Технические и программные средства реализации информационных процессов.
- •C3. Модели решения функциональных и вычислительных задач. Алгоритмизация и программирование. Алгоритмы, классы, типы, свойства алгоритмов, Языки программирования высокого уровня (обзор).
- •C.4. Тема 4. Основы и методы защиты информации.
- •C.5. Тема 5.Компьютерный практикум.
- •C.9. Тема 9. Постановка задачи и спецификация программы. Способы записи алгоритмов. Стандартные типы данных.
- •5. Описание процедур и функций. Этот вопрос рассматривается в пункте 6.
- •C.10.5. Лекция 5 (1час) Понятие рекурсии, примеры рекурсивных задач и программ с рекурсивными вызовами процедур и функций.
- •C.10.7. Лекция 7 (2 часа) Множества
- •D. Лабораторный практикум d.1 Лабораторная работа № 1
- •D.2. Лабораторная работа № 2
- •D.3. Лабораторная работа № 3
- •D.3.1. Варианты для задания 1. «Простейшие циклы»
- •D.3.2. Варианты для задания 2 «Обработка одномерных массивов»
- •D.4. Лабораторная работа № 4
- •D.5. Лабораторная работа № 5
- •D.6. Лабораторная работа № 6
- •D.7. Лабораторная работа № 7
- •D.8. Лабораторная работа № 8
- •D.9. Лабораторная работа № 9
- •D.10. Лабораторная работа № 10
- •D.11. Литература к лабораторным работам
- •E. Самостоятельная работа. E.1. Задачи для самостоятельной работы e.1.1. Задачи для самостоятельной работы по теме: "Запись числовых констант, переменных и выражений".
- •E.1.2. Задачи для самостоятельной работы по теме: "Типы данных. Операции и функции над данными разных типов".
- •E.1.3. Задачи для самостоятельной работы по теме: "Операторы цикла".
- •E.1.4. Задачи для самостоятельной работы по теме: "Массивы".
- •E.1.5. Задачи для самостоятельной работы по теме: "Процедуры и функции".
- •E.1.6. Задачи для самостоятельной работы по теме: "Строки".
- •E.1.7. Задачи для самостоятельной работы по теме: "Множества".
- •E.1.8. Задачи для самостоятельной работы по теме: "Файлы".
- •E.2. Задачи и упражнения на тему «Структуры данных»
- •E.2.1. Векторы
- •E.2.2. Матрицы
- •E.2.3. Строки
- •E.2.4. Записи и таблицы
- •E.2.5. Списки
- •E.2.6. Очереди, стеки, деревья
- •E.2.7. Двоичные деревья
- •E.2.8. Литература по теме «Структуры данных»
- •G. Контрольные задания по лабораторным работам g.1. Контрольная работа по лабораторным № 3,4
- •G.2. Контрольная работа по лабораторной № 5
- •G.3. Контрольная работа по лабораторным № 6, 7, 8
- •H. Тематика контрольных работ по дисциплине Информатика и программирование
- •I. Вопросы к экзамену
- •J. Литература
E.2.7. Двоичные деревья
В упражнениях 1-27 использовать двоичные деревья при следующем их описании.
type ТЭД= ... : {тип элементов дерева}
дерево= вершина;
вершина=record элем:ТЭД;
лев, прав: дерево end;
В этих упражнениях
Т,
и
обозначают деревья, а Е – величину типа
ТЭД.
1. Создать и продемонстрировать работу программы, которая определяет, входит ли элемент Е в дерево Т.
2. Создать и продемонстрировать работу программы, которая определяет число вхождений элемента Е в дерево Т.
3. Создать и продемонстрировать работу программы, которая вычисляет сумму элементов непустого дерева Т (ТЭД=real ).
4. Создать и продемонстрировать работу программы, которая находит величину наибольшего элемента непустого дерева Т (ТЭД=real ).
5. Создать и продемонстрировать работу программы, которая печатает элементы из всех листьев дерева Т (ТЭД=char ).
6. Создать и продемонстрировать работу программы, которая определяет максимальную глубину непустого дерева Т, т.е. число ветвей в самом длинном из путей от корня дерева до листьев.
7. Создать и продемонстрировать работу программы, которая подсчитывает число вершин на n-ом уровне непустого дерева Т (корень считать вершиной 0-го уровня).
8. Рекурсивно и не рекурсивно создать и продемонстрировать работу логической функции equal (T1,T2), проверяющую на равенство деревья Т1 и Т2.
9. Создать и продемонстрировать работу процедуры copy(Т, Т1), которая строит Т1 - копию дерева Т.
10. Создать и продемонстрировать работу процедуры create(T,n), где n - положительное целое число, которое строит дерево Т, показанное на рис. 9.1.
11. Создать и продемонстрировать работу логической функции same(T), определяющую, есть ли в дереве Т хотя бы два одинаковых элемента.
12. Формулу вида
<формула> ::= <терминал> (<формула><знак><формула>)
<знак> :: = + -*
<терминал> ::= 0 123456789
можно представить в виде двоичного дерева ("дерева-формулы") с ТЭД=charсогласно следующим правилам: формула из одного терминала (цифры) представляется деревом из одной вершины с этим терминалом, а формула вида (f1sf2) - деревом, в котором корень - это знакs, а левое и правое поддеревья - это соответствующие представления формул f1 и f2. На рис. 9.2 показано дерево-формула, соответствующее формуле (5*(3+8)).
Создать и продемонстрировать работу программы, которая вычисляет (как целое число) значение дерева-формулы Т.
13. Создать и продемонстрировать работу программы, которая по формуле (см. упр.12) из текстового файла fстроит соответствующее дерево-формулуТ.
14. Создать и продемонстрировать работу программы, которая печатает дерево-формулу Т(см. упр.12) в виде соответствующей формулы.
15. Создать и продемонстрировать работу программы, которая проверяет, является ли двоичное дерево Тдеревом-формулой (см. упр.12).
16. Пусть в дереве-формуле (см. упр.12) в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая упрощает дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам (f+1), (0+f), (f-0),
(f*1) и (1*f), на поддеревья, соответствующие формулеf, а поддеревья, соответствующие формулам (f*0) и (0*f ), - на вершину с 0.
17. Пусть в дереве-формуле (см. упр.12) в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая преобразует дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам((f1+f2)*f3,
(f1-f2)*f3, f1*(f2+f3), f1*(f2-f3))на поддеревья, соответствующие формулам((f1*f3)+(f2*f3), (f1*f3)-(f2*f3), (f1*f2)+(f1*f3), (f1*f2)-(f1*f3)).
18. Пусть в дереве-формуле (см. упр.12) в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая преобразует дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам((f1*f3)+(f2*f3), (f1*f3)-(f2*f3), (f1*f2)+(f1*f3), (f1*f2)-(f1*f3))на поддеревья, соответствующие формулам((f1+f2)*f3, (f1-f2)*f3, f1*(f2+f3), f1*(f2-f3)).
19. Пусть в дереве-формуле (см. упр.12) в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая строит дерево-формулу Т1 - производную дерева-формулы Тпо переменной, однобуквенное имя которой является значением литерного параметраv.
20. Предложить и описать на Паскале представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Создать и продемонстрировать работу программы, которая вычисляет (как целое число) значение дерева-формулы Т.
21. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Создать и продемонстрировать работу программы, которая по формуле из текстового файла f строит соответствующее дерево-формулуТ.
22. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Создать и продемонстрировать работу программы, которая печатает дерево-формулу Тв виде соответствующей формулы.
23. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Создать и продемонстрировать работу программы, которая проверяет, является ли двоичное дерево Тдеревом-формулой.
24. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Пусть в дереве-формуле в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая упрощает дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам(f+1), (0+f), (f-0), (f*1) и (1*f),на поддеревья, соответствующие формулеf, а поддеревья, соответствующие формулам(f*0)и(0*f),- на вершину с 0.
25. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Пусть в дереве-формуле в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая преобразует дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам ((f1+f2)*f3,
(f1-f2)*f3, f1*(f2+f3), f1*(f2-f3))на поддеревья, соответствующие формулам((f1*f3)+(f2*f3), (f1*f3)-(f2*f3), (f1*f2)+(f1*f3), (f1*f2)-(f1*f3)).
26. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Пусть в дереве-формуле в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая преобразует дерево-формулу Т, заменяя в нем все поддеревья, соответствующие формулам ((f1*f3)+(f2*f3),
(f1*f3)-(f2*f3), (f1*f2)+(f1*f3), (f1*f2)-(f1*f3))на поддеревья, соответствующие формулам((f1+f2)*f3, (f1-f2)*f3, f1*(f2+f3), f1*(f2-f3)).
27. Предложить и описать представление в виде двоичного дерева для формул из упр.12, в которых в качестве терминалов используются любые неотрицательные целые числа. Пусть в дереве-формуле в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных. Создать и продемонстрировать работу программы, которая строит дерево-формулу Т1 - производную дерева-формулы Тпо переменной, однобуквенное имя которой является значением литерного параметраv.
28. Деревом поиска, или таблицей в виде дерева, называется двоичное дерево, в котором слева от любой вершины находятся вершины с элементами, меньшими элемента из этой вершины, а справа - с большими элементами (предполагается, что все элементы дерева попарно различны и что их тип (ТЭД) допускает применение операций сравнения). Пример такого дерева показан на рис. 9.2.
Описав тип дерево(см. выше) и типфайл:
type файл=file of ТЭД;
написать и продемонстрировать программу, которая проверяет, входит ли элемент Ев дерево поискаТ.
29. Тип деревои типфайл, такие же, как в упр 28. Написать и продемонстрировать программу, которая записывает в файл f элементы дерева поискаТв порядке их возрастания.
30. Тип деревои типфайл, такие же как в упр 28. Написать и продемонстрировать программу, которая добавляет к дереву поискаТновый элементЕ, если его не было вТ.
31. Тип деревои типфайл, такие же как в упр 28. Написать и продемонстрировать программу, которая по файлу f, все элементы которого различны, строит соответствующее дерево поискаТ.
32. Во внешнем текстовом файле PROGзаписана (без ошибок) некоторая программа на языке Паскаль. Известно, что в этой программе каждый идентификатор (служебное слово или имя) содержит не более 9 латинских букв и/или цифр. Напечатать в алфавитном порядке все различные идентификаторы этой программы, указав для каждого из них число его вхождений в текст программы. (Учесть, что в идентификаторах одноименные прописные и строчные буквы отождествляются, что внутри литерных значений, строк-констант и комментариев последовательности из букв и цифр не являются идентификаторами и что в записи вещественных чисел может встречаться букваЕилие).
Для хранения идентификаторов использовать дерево поиска, элементами которого являются пары - идентификатор и число его вхождений в текст программы.
33. Решить предыдущую задачу, но вместе с каждым идентификатором печатать в возрастающем порядке номера всех строк текста программы, в которых он встречается.
34. Решить задачу 32 при условии, что максимальная длина идентификаторов заранее не известна.
35. Решить задачу 33 при условии, что максимальная длина идентификаторов заранее не известна.