Государственное образовательное учреждение
высшего профессионального образования
ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
кафедра робототехники и автоматизации производства
Курсовая работа
по дисциплине: Информатика
Выполнил студент гр. 220591 Олешкевич И. И.
Проверил д.т.н., профессор Котов В.В.
Тула, 2010
Содержание пояснительной записки:
№ стр:
Введение. 3
Анализ технического задания. 4
Разработка схемы алгоритма решения задачи. 5
Разработка программного обеспечения. 6
Апробация разработанного программного обеспечения. 15
Заключение. 18
Библиографический список. 19
Приложение. 20
Введение.
Основная работа программы.
Задача состоит из двух пунктов:
Подпрограмма выводит на экран на некоторый промежуток времени матрицу (размером, выбранным пользователем), полностью состоящую из единиц (стен). В ней пользователь должен отметить коридор, состоящий из нулей.
Программа постепенно начинает заменять в матрице 0 на 8, имитируя тем самым её прохождение.
В результате в конце программы на месте старой матрицы должна стоять новая, состоящая из единиц (стен) и нулей (коридора):
до после
111111 111111
001000 881888
101011 181811
100011 188811
111111 111111
Анализ технического задания.
Проанализировав задание, я установил, что для реализации алгоритма задачи будет достаточно изученных приёмов программирования. Среда, в которой может быть реализована данная задача, может быть простой.
В данном случае используется интегрированная среда (Integrated Development Enviroment) Turbo Pascal версии 7.1 от компании Borland International. Это совокупность текстового редактора, компилятора редактора связей и отладчика. Все эти средства позволяют быстро создавать довольно сложные прикладные программы. Pascal является языком высокого уровня. Чаще всего именно этот язык используется для изучения школьников и студентов младших курсов ввиду своей понятности и доступности.
Очевидно, что реализация будет требовать выполнения множественных условий:
- рутинные действия программы автоматизируются;
- реализована связь пользователя с программой путём ввода и вывода данных;
- программа достаточно понятна, к тому же выводятся различные вспомогательные сообщения для справки.
Многие аспекты реализации необязательны. Но они улучшают программу в плане удобства. Для осуществления всех аспектов потребуется изучение различной технической литературы, а также лекций пройденного курса и методических указаний для реализации некоторых программ. Несомненно, следует использовать опыт, приобретённый при создании прошлых программ. При создании своей программы я руководствовался в основном методическими указаниями и личным опытом.
Разработка схемы алгоритма решения задачи.
Я установил следующую последовательность действий, которая бы обеспечивала решение задачи:
Задание пользователем базовой матрицы.
Задание пользователем коридора из нулей.
Прогон коридора программой с последовательной заменой элементов коридора – нулей – на восьмёрки.
Проанализировав эту последовательность, я определил, что программа имеет линейную структуру, но помимо этого некоторые действия программы сведены в цикл. Данные, с которыми взаимодействует пользователь во время работы программы, организованы в массив с двумя координатами, т.е. матрицу.
Пытаясь записать полный алгоритм, я установил, что самым сложным пунктом в отношении реализации окажется п.2. Поэтому я его разделил на подпункты:
2.1. Реализация связи, которая обеспечивала бы изменение записанных данных пользователем путём ввода, и вывод на экран результата, описывающего действия, осуществляемые программой.
2.2. Определение элемента-входа в матрицу.
2.3. Создание лабиринта из нулей путём связи между пользователем и программой.
2.4. Определение выхода из матрицы.
Для повышения структурированности программы я использую функции. Связь, о которой говорилось в пункте 2.1, реализована с помощью специальных клавиш – стрелок, а также клавиши Enter (нажатие стрелок осуществляет перемещение по матрице, а Enter определяет следующий элемент лабиринта). Для этого я создал функцию code, определяющую код нажатой клавиши. Вторая функция nei определяет, есть ли у активного элемента соседи-нули, и если это так, программа позволяет продолжить ход лабиринта. Определение входа в матрицу и выхода из неё в моей программе осуществляется с помощью проверки на положение активного элемента на границе матрицы, которую я записал как третью функцию border. Также для реализации п. 2.3. я использовал многоуровневый набор условий.