Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс._ по _инф..doc
Скачиваний:
0
Добавлен:
17.07.2019
Размер:
270.34 Кб
Скачать
  1. Апробация разработанного программного обеспечения.

Во время отладки и тестирования активно использовались дополнительные функции Turbo Pascal, такие как Watch и Breakpoints, вследствие чего было выявлено несколько недостатков работы программы, которые были затем устранены.

Рис. 4. В двух обведённых ячейках видны единицы. На самом деле это не так: в матрице соответствующие им элементы уже заменены на нули.

Р ис. 5. То же состояние программы, после нажатия Enter.

Тем не менее, остался один недостаток (рис. 4-5). Во время построения самого лабиринта при выборе верхнего направления операция замены 1 на 0 отображается на экране несколько некорректно: изменение последнего и следующих элементов отображается одновременно, причём через два или три хода. Пытаясь устранить этот недостаток, я использовал функцию (среды Turbo Pascal) Step over во вкладке меню Run и запускал программу пошагово. В этом случае всё работало как надо – программный код был записан правильно. Видимо, причина была в некоторой несовместимости Turbo Pascal 7.1 и моей операционной системы Windows Vista.

Для тестирования программы я использовал различные вариации задания ходов лабиринта, а также различные размеры матриц – от 3x3 до 20x20. Далее приведены три примера результатов работы программы. Первый рисунок обозначает состояние программы после ввода матрицы, второй – после прохождения лабиринта с заменой нулей на восьмёрки:

М атрица размером 6x8, координаты элемента входа 4, 1:

М атрица размером 10x13, координаты элемента входа 10, 4:

М атрица размером 20x20, координаты элемента входа 2, 20:

П ереход в лабиринте осуществляется по четырём направлениям, но не по диагонали. Поэтому пользователь должен учитывать, что в некоторых случаях лабиринт уйдёт в тупик. Вот пример подобной ситуации:

Обведённый элемент является тупиком лабиринта: вверх, вниз и влево перемещаться нельзя по условию задачи.

В разделе Const объявлены константы N = 20 и D = 50000. Меняя значение N, пользователь задаёт ограничение количества строк и столбцов при определении размера матрицы. Меняя значение D, пользователь определяет длительность, с которой будет осуществляться задержка при прохождении лабиринта программой.

  1. Заключение.

При создании программы мной были использованы достаточно простые приёмы программирования. Тем не менее, из-за многочисленности условий во время отладки возникали многие проблемы, которые всё же были впоследствии устранены. К тому же сама программа из-за этого в итоге получается несколько усложнённой. Зато она имеет множество плюсов. Например, пользователь может свободно перемещать курсор по матрице, но в то же время может продолжать ход лабиринта по результатам проверки нескольких составных условий: если выбранный элемент не заблокирован; если имеет только одного соседа; если этот сосед является концом коридора. Это ограничивает пользователя в задании лабиринта, но предотвращает возможные ошибки при прогоне лабиринта программой (т.е. к моменту начала прогона лабиринт будет абсолютно правильным). Она надёжна; кроме того, хорошо структурирована, и её код достаточно прокомментирован. Если же требуется модифицировать программу, например, заставить её вывести матрицу с готовым и/или пройденным лабиринтом в текстовый файл, можно вставить соответствующие процедуры между блоками программы; если нужно изменить начальные координаты вывода матрицы, задаются две константы (например, mx, my), добавляющиеся к координатам перевода курсора в виде (x+mx, y+my). По всем особенностям программы можно сказать, что она соответствует основным положительным характеристикам, таким как понятность, учёт человеческого фактора, надёжность, модифицируемость и др.