Лабораторная 15. Деревья. Формирование, анализ деревьев.

  1. В текстовом файле содержится оглавление книги следующего вида:
    1 Язык программирования Турбо-Паскаль.
    1.1 Ключевые понятия языков программирования
    1.1.1 Алгоритм.
    1.1.1.1 Свойства алгоритма
    1.1.2 Программа.
    1.1.2.1 Данные.
    1.1.2.2 Оператор.
    1.1.2.3 Подпрограмма.
    1.1.2.4 Модуль.
    1.1.3 Язык программирования.
    1.1.4 Текстовый редактор.
    1.1.5 Транслятор.
    1.1.6 Отладчик.
    1.1.7 Интегрированная среда.
    1.2 Синтаксис и семантика языков программирования
    1.3 Подготовка и запуск программ
    1.3.1 Интегрированная среда Турбо-Паскаля 7.0.
    1.3.2 Свойства интегрированной среды.
    1.3.3 Имена и расширения файлов для работы в интегрированной среде.
    1.3.4 Некоторые комбинации клавиш, используемых при работе с ИС.
    1.4 Лексемы Турбо-Паскаля 
    1.4.1 Специальные символы
    1.4.2 Зарезервированные слова
    1.4.3 Директивы
    1.4.4 Идентификаторы
    1.4.5 Метки
    1.4.6 Числа
    1.4.7 Строковые константы
    1.5 Структура программы
    1.5.1 Низкоуровневая структура программы
    1.5.2 Важнейшие операторы Турбо-Паскаля
    1.5.2.1 Оператор присваивания
    1.5.2.2 Составной оператор
    1.5.2.3 Оператор вызова процедуры
    1.5.3 Высокоуровневая структура программы
    1.5.3.1 Заголовок программы
    1.5.3.2 Тело программы.
    1.5.3.2.1 Раздел объявлений.
    1.5.3.2.2 Раздел объявления переменных.
    1.5.3.2.3 Раздел объявления констант.
    1.5.3.2.4 Раздел объявления процедур и функций.
    1.5.4 Примеры небольших программ
    
    Построить в оперативной памяти дерево оглавления, используя для хранения каждого узла следующую структуру:
    type PContentNode=^TContentNode;
         TContentNode=record
    	name:string;
    	subContents:array of pContentNode;
         end;
    
    name - ключ узла: название параграфа (без нумерации, например: 'Раздел объявления процедур и функций')
    subContents - дочерние узлы: динамический массив ссылок на подпараграфы

    Учитывать, что расположение параграфов в исходном файле может быть произвольным, например:

    ...
    1.5.3.2.4 Раздел объявления процедур и функций.
    1.5.2.3 Оператор вызова процедуры
    1.5.3 Высокоуровневая структура программы
    1.5.3.1 Заголовок программы
    1.5.2.2 Составной оператор
    1.5.3.2 Тело программы.
    1.5.3.2.1 Раздел объявлений.
    1.5.3.2.2 Раздел объявления переменных.
    1.5.4 Примеры небольших программ
    1.5.3.2.3 Раздел объявления констант.
    ...
    
  2. Разработать процедуру вывода на экран сформированного дерева оглавления, с воссозданием всей нумерации:
    procedure PrintContent(proot:PContentNode);
     begin ... end;
    
    Проверить работоспособность процедуры.

  3. Разработать процедуру получения информации о глубине, степени дерева оглавления:
    procedure GetContentInfo(proot:PContentNode; var Deep, Power:integer);
     begin ... end;
    
    Проверить работоспособность процедуры.