Динамические схемы для иллюстрации лекций

В работе предложено посимвольное отображение лекционного материала с помощью специально разработанных программ. При использовании программного комплекса лектор не пишет на доске, а, разворачивает на экране с помощью видеопроектора специально сформированные информационные файлы. После каждого нажатия клавиши «z» на экране появляется один символ. После заполнения символами окна верхняя его часть очищается, и курсор автоматически устанавливается в начало первой строки, т.е. моделируется процесс написания символов мелом на доске. С момента опубликования работы автором проведена апробация предложенного программного комплекса в более, чем 60 лекциях. Для этого использована специализированная аудитория МарГУ (ауд. 411), оснащенная видеопроектором. В ходе работы с программным комплексом некоторые его программы скорректированы в направлении улучшения интерфейса. Поскольку последние изменения внесены давно, настоящую версию программного комплекса можно считать окончательной. Следует заметить, что формат используемых в программах информационных файлов остался неизменным. В ходе чтения лекций выяснилось, что выбор крупного размера шрифта оказался вполне оправданным: текст лекции хорошо виден с последнего ряда аудитории. Для набора информационных файлов не требуется много времени, примерно 30-40 минут на лекцию, при условии, что преподаватель располагает текстом лекции. Чуть больше времени необходимо, если в лекцию включены различные чертежи и схемы. С другой стороны, при повторном чтении курса, даже если требуется перекомпоновка материала, на подготовку информационных файлов для одной лекции требуется не более 20 минут. Следуя далее по пути компьютерной иллюстрации излагаемого материала, автором предлагается набор программ, отображающих различные разделы курса программирования. В программах отдельные вопросы курса проиллюстрированы в виде динамических схем. Каждая динамическая схема представляет собой набор статических схем, которые после нажатия, например, клавиши Enter последовательно сменяют друг друга на одном поле. Динамическая схема иллюстрирует один алгоритм. Причем отображение этого алгоритма с помощью доски и мела или невозможно, или требует много времени. Следует заметить, что набор статических схем, соответствующих данной динамической схеме, конечен. Кроме того, при заранее известных условиях происходит переход от одной статической схемы к другой. Указанные признаки определяют динамическую схему, как конечный автомат, который в свою очередь относится к курсу программирования. Таким образом, можно предположить, что рассматриваемые ниже динамические схемы, станут частью курса программирования, или его дополнительными главами. В курсе программирования есть такие разделы, которые требуют иллюстрации. Остановимся на некоторых из них. Раздел курса программирования, охватывающий методы сортировки, является разделом, который наиболее насыщен различными алгоритмами. Причем при рассмотрении методов сортировки в первую очередь интересен процесс сортировки, поскольку результат заранее известен. Для иллюстрации в первую очередь интересны улучшенные методы сортировки: сортировка прямыми включениями с убывающими приращениями (сортировка Шелла), сортировка с помощью двоичного дерева, быстрая сортировка. Визуализация алгоритмов этих сортировок с последовательным отображением всех шагов возможна только с помощью компьютерных программ. Причем в программах можно отобразить даже ту часть задачи, которая, как правило, фигурирует неявно. Например, в быстрой сортировке дополнительно к алгоритму приведена схема рекурсии, в которой в виде прямоугольников приведены следы работы рекурсивного алгоритма с отображением различных стеков. Кроме указанных методов интерес представляют также методы, которые лежат в основе улучшенных методов сортировки: сортировка прямыми включениями, сортировка прямым выбором, сортировка прямым обменом. Ставя в соответствие улучшенному методу сортировки простой метод, нетрудно проследить процесс улучшения метода, сравнивая различные динамические схемы. Метод Шелла и метод сортировки прямым включением удалось объединить в одной программе, что позволяет более наглядно проанализировать переход от простого метода к улучшенному методу. Программы представлены в виде приложений на языке Java, хотя первоначальные версии получены в рамках языка Turbo Pascal. Наиболее интересным для иллюстрации является раздел, включающий рекурсивные алгоритмы. Классическая задача о Ханойских башнях может быть рассмотрена на аудиторной доске в самом простейшем варианте, который использует или три, или четыре диска. В этом варианте трудно проследить все особенности алгоритма. Автором предлагается динамическая схема, в которой на экране в графическом режиме представлены варианты для перемещения до 8 дисков. В графическом режиме реализован известный алгоритм рекурсии с возвратом, реализующий задачу о расстановке 8 ферзей. Данные алгоритмы реализованы на языке Java. Причем рассмотрены также анимационные варианты задач, реализующие движение дисков в первой задачи и ферзей во второй задаче. Кроме того, в данном разделе интерес представляет кривые Гильберта, которые иллюстрируют косвенную рекурсию. Достаточно сложным при рассмотрении традиционным способом является раздел, включающий двоичные деревья. Здесь можно выделить следующие интересные для иллюстрации задачи: удаление узла дерева поиска с заданным ключом, балансировка дерева поиска, различные варианты обхода двоичного дерева. При формировании дерева поиска возможны 4 варианта нарушения его баланса, каждому из которых соответствует свой вариант балансировки дерева. При случайной генерации 35 ключей и последовательном их включении в дерево поиска реализуются все варианты балансировки дерева, а некоторые несколько раз. При удалении узла с заданным ключом в динамической схеме запрограммированы все варианты удаления узла, включая и тот, когда удаляемый узел заменяется крайним правым в левом поддереве или крайним левым в правом поддереве. Причем переход от одного варианта к другому возможен в одной динамической схеме. В указанных задачах ни только реализуется специального вида динамические структуры данных и организация действий с ними, но и эффективные рекурсивные алгоритмы. Данные задачи представлены в виде нескольких программ, выполненных в графическом режиме языка Turbo Pascal. Кроме рассмотренных выше задач в них реализована известная задача поиска по дереву с включением, задача удаление дерева, распечатка ключей дерева в порядке возрастания и в порядке убывания, формирование идеально сбалансированного дерева. Рассмотренный перечень программ используется автором на лекциях в дополнении к существующей возможности посимвольного вывода на экран лекционного материала. Подобный подход при чтении лекций позволяет излагать достаточно сложный материал без доски и мела. Литература 1. «Отображение в электронной форме процесса написания символов на доске при чтении лекций по дисциплинам из области точных наук». — «Применение информационно-коммуникационных технологий в образовании». Материалы IV Всесоюзной научно-практической конференции, Йошкар-Ола, МарГУ, 2007, с. 120-124.