Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач2.doc
Скачиваний:
1
Добавлен:
25.09.2019
Размер:
661.5 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Сибирская государственная автомобильно-дорожная академия

(СибАДИ)»

Факультет Информационные системы в управлении

Специальность Информационная безопасность

Кафедра Информационная безопасность

Пояснительная записка

к курсовой работе

по дисциплине Информатика 2 (Языки программирования)

Название работы: Автоматическое решение задачи «Ханойские башни»

Выполнил: студент гр. Биб11-И4

Климович Александр Андреевич

Проверил преподаватель

Михайлов Евгений Михайлович

Омск 2012

Сибирская государственная автомобильно-дорожная академия

/СибАДИ/

Утверждаю:

Кафедра информационной безопасности Зав.кафедрой_________________

Дата_________________________

З А Д А Н И Е

ПО КУРСОВОМУ ПРОЕКТИРОВАНИЮ

Студент Климович Александр Андреевич

1.Тема проекта

Автоматическое решение задачи «Ханойские башни»

2. Срок сдачи студентом законченного проекта

01 мая 2012 г.

3. Исходные данные к проекту

4. Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов)

1. титульный лист

2. лист задания

3. аннотация

4. обзор литературы

5. руководство пользователя программы

6. решение контрольного примера

7. список литературы

8. приложения

5. Перечень графического материала

1. укрупненная блок-схема всей программы

2. подробная блок-схема ключевого фрагмента программы

6. Подготовить презентацию курсовой работы

Руководитель___________________________________ Михайлов Е.М.

Задание принял к исполнению _____________________________________________________________

дата

Подпись студента___________________________________________________________

СОДЕРЖАНИЕ

Аннотация 4

1 Обзор литературы 5

2 Руководство пользователя программы 7

3 Решение контрольного примера 12

Заключение 18

Список литературы 19

Приложения 20

Аннотация

Задачей курсового проекта является создание автоматического решения задачи «Ханойские башни» на языке Pascal. Приложение имеет графический интерфейс. В программе использованы элементы работы с графикой, процедуры, и рекурсивный метод к решению задачи. Так же осуществлена работа со свойствами элементов программы.

1 Обзор литературы

1.1 Класс TCanvas

Этот класс — сердцевина графической подсистемы Delphi. Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инстру­менты" (перо, кисть, шрифт) и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур). В дальнейшем для обозначения этого класса мы будем пользоваться термином "канва". Сознавая неоднозначность такого перевода, авторы, тем не менее, считают, что у него наилучшие шансы прижиться. Канва не является компонентом, но она входит в качестве свойства во многие другие компоненты, которые должны уметь нарисовать себя и отобразить какую-либо информацию.

Читатели, знакомые с графикой Windows, узнают в TCanvas объектно-ориентированную надстройку над контекстом устройства Windows (Device Context, DC). Дескриптор устройства, над которым "построена" канва, может быть востребован для различных низкоуровневых операций. Он задается свойством:

property Handle: HDC;

Для рисования канва включает в себя шрифт, перо и кисть:

property Font: TFont; property Pen: TPen; property Brush: TBrush;

Кроме того, можно рисовать и поточечно, получив доступ к каждому пикселу. Значение свойства: property Pixels[X, Y: Integer]: TColor; соответствует цвету точки с координатами X, Y.

При их рассмотрении имейте в виду, что все геометрические фигуры рисуются текущим пером. Те из них, которые можно закрашивать, закрашиваются с помощью текущей кисти. Кисть и перо при этом имеют текущий цвет.

Procedure Refresh сбрасывает текущие шрифт, перо и кисть, заменяя их на стандартные, заимствованные из установок Windows (BLACK PEN, HOLLOW_BRUSH, SYSTEM_FONT).

Предусмотрено два события для пользовательской реакции на изменение канвы: property OnChange: TNotifyEvent; property OnChanging: TNotifyEvent; Эти события возникают при изменении свойств и вызове методов TCanvas, меняющих вид канвы (т. е. при любом рисовании. В методе MoveTo, например, они не возникают). Отличие их в том, что событие OnChanging вызывается до начала изменений, а событие OnChange — после их завершения.

Из возможностей, появившихся в классе TCanvas, следует отметить поддержку рисования кривых (полиномов) Безье. Эта возможность впервые появилась в API Windows NT. Для построения одной кривой нужны минимум четыре точки — начальная, конечная и две опорные. По ним будет построена кривая второго порядка. Если задан массив точек, они используются для построения последовательных кривых, причем последняя точка одной кривой является первой для следующей кривой. Хорошей иллюстрацией использования объекта TCanvas может служить пример GraphEx, поставляемый вместе с Delphi (папка \Demos\Doc\GraphEx). Есть только одно "но" — он приводится в неизменном виде, начиная с версии Delphi 1.0. Поэтому сделаем часть работы за программистов Borland. В нашем примере модернизированы Панели инструментов — они выполнены на компонентах TToolBar и TControlBar; добавлена поддержка файлов JPEG; и, наконец, добавлена возможность рисования кривых Безье.

Где же найти ту канву, на которой предстоит рисовать? Во-первых, ею снабжены все потомки классов TGraphicControl и TCustomControl, т. е. почти все визуальные компоненты из Палитры компонентов; в том числе и форма.

1.2 Рекурсия

Рекурсия — процесс повторения элементов самоподобным образом. Например, если два зеркала установить друг напротив друга, то возникающие в них вложенные отражения суть одна из форм бесконечной рекурсии.

Под рекурсией в программировании понимают подпрограмму, которая вызывает сама себя. Рекурсивные функции чаще всего используют для компактной реализации рекурсивных алгоритмов. Классическими рекурсивными алгоритмами могут быть возведение числа в целую положительную степень, вычисление факториала. С другой стороны, любой рекурсивный алгоритм можно реализовать без применения рекурсий. Достоинством рекурсии является компактная запись, а недостатком расход памяти на повторные вызовы функций и передачу параметров. Кроме того, существует опасность переполнения памяти. В рекурсивной функции необходимо обязательно предусмотреть завершение рекурсивного вызова. Иначе функция никогда не завершит свою работу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]