Государственное образовательное учреждение высшего профессионального образования «Московский государственный технический университет им. Н.Э. Баумана»
Калужский филиал
Факультет"Фундаментальных Наук"
Кафедра "Программного обеспечения ЭВМ, информационных технологий и прикладной математики" (ФН1-КФ)
КУРСОВАЯ РАБОТА
ПО КУРСУ: «ПРОГРАММИРОВАНИЕ НА С++»
На тему: «Работа со списками»
Калуга - 2008
АННОТАЦИЯ
Список – это динамическая структура, иными словами, массив данных некоторого типа, размеры которого могут меняться в процессе выполнения программы. Списки очень широко используются в информационных технологиях. В том числе, в области машинной графики для описания графических примитивов. Так, например, некоторая геометрическая модель может быть представлена списком вершин, линий или других объектов любой сложности.
Данная программа представляет собой редактор изображений, позволяет создавать графические изображения, в основе которых лежат некоторые графические примитивы, такие как линии, прямоугольники и кривые Безье, а также выделять и удалять части объектов и менять цвет объектов. Все графическое изображение представляется списком линий. Все возможные в программе операции с объектами – это наглядное представление операций со списками, которые осуществляются при помощи нескольких классов для работы с ними.
ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ
1.1 Постановка задачи
Создать несколько классов, реализующих работу со списками и применить эти классы к задаче построения геометрических фигур, тем самым продемонстрировав их работоспособность.
1.2Способы реализации
Для реализации поставленной задачи используется стек (он представляет собой список типа LIFO, в котором последний добавленный элемент считывается первым), а также обратная стеку динамическая структура – очередь (FIFO). В программе используются методы объектно-ориентированного программирования для облегчения способа решения задачи: шаблоны классов (для записи в список элементов различного типа), наследование (для сокращения объема программного кода), виртуальные функции (для корректного переопределения методов различных классов), абстрактный класс (для общего описания основных функций).
1.3Исследование поставленной задачи
1.3.1 Создание стека
Стек представляет собой список типа LIFO, в котором последний добавленный элемент считывается первым. Для создания стека в программе используется структура List, содержащая поле ссылки на следующий элемент и шаблонный тип данных в качестве информационного поля. Для программной реализации стека необходимо описать 2 переменные указанного выше типа List: p (указатель на текущий элемент) и top (указатель на вершину списка). При добавлении элемента в стек, новому элементу присваивается ссылка на вершину стека, а затем и он сам становится вершиной. Таким образом, стек растет как бы назад:
p=new list;
p->next=top;
p->inf=value;
top=p;
1.3.2 Создание очереди
Очередь очень похожа на стек за исключением того, что элементы в ней располагаются в нормальном порядке, а не в обратном. Обход очереди и обход стека идентичны. Учитывая это сходство, можно создать класс очереди как наследника класса стека, переопределив в нем только функции создания и добавления элемента. Так как в очереди первый элемент должен быть создан заранее, то заносим его создание в конструктор класса:
top=new list;
top->next=NULL;
p=top;
Добавление элемента в очередь тоже отличается от добавления элемента в стек. Здесь вершина списка остается на своем месте, меняется только положение текущего указателя, а элементы заносятся в прямом порядке, и ссылка на новый элемент создается из текущего, а не наоборот, как было в стеке, после чего новый элемент становится текущим:
p->next=new list;
p->next->next=NULL;
p->inf=value;
p=p->next;
1.4 Актуальность поставленной задачи
Исследуемые алгоритмы применяются для решения многих прикладных задач, особенно в области машинной графики. Работа со списками очень важна при построении графических моделей, моделировании графических приложений, создании видеоигр, а также для организации памяти под данные пользовательских типов и так далее. Списки – это основная динамическая структура, на которой базируются остальные.
2. КОНСТРУКТОРСКАЯ ЧАСТЬ
2.1 Обоснование выбора средства программирования
Для написания данной курсовой работы был использован язык Borland C++ Builder 6. C++ Builder позволяет быструю визуальную разработку приложений на языке C++. Профессиональные средства языка C++ интегрированы в визуальную среду разработки. Интегрированная среда разработки объединяет редактор форм, инспектор объектов, палитру компонент, администратор проекта и полностью интегрированные редактор кода и отладчик – инструменты быстрой разработки программных приложений, обеспечивающие полный контроль над кодом и ресурсами. C++Builder воплощает важнейшие аспекты объектно-ориентированного программирования в удобном для пользования инструменте визуального проектирования, что лучше всего подходит для реализации и отображения результатов работы программы.
Для удобной работы со списком необходимо представить его как отдельный тип данных. C++ позволяет определять пользовательские типы, а также определять набор операций, производимых над экземплярами этого типа. Ключевым понятием C++ является класс. Класс – это тип данных, определяемый пользователем, переменные которого являются объектами. Т.о., в программе, созданной на C++, определение класса должно быть определением типа данных, содержащим информацию о значениях, которые могут храниться в его переменных, а также о функциях-членах этого класса.
Механизм наследования позволяет определять новые классы на основе уже имеющихся. Класс, на основе которого создаётся новый класс, называется базовым (родительским) классом, а новый – производным (наследником). Непосредственным базовым классом называется такой класс, который входит в список базовых классов при определении класса. Любой производный класс может в свою очередь стать базовым для других создаваемых классов. Т.о. формируется направленный граф иерархии классов, а при объявлении объектов и иерархия объектов. В иерархии объектов производный объект имеет возможность доступа к элементам данных и методам объектов, типизированных базовым классом.
В языке существует возможность одиночного и множественного наследования. При одиночном наследовании базовым является один класс, а при множественном наследовании базовыми классами должны быть несколько классов.
Виртуальные функции являются средством позднего связывания в языке С++.
Виртуальной функцией называется функция, которая еще, не будучи определённой каким-либо образом, может использоваться. Эта технология, когда определение реализации процедуры откладывается до времени выполнения программы, называется поздним или динамическим связыванием.
Для удобства работы со списком нужно предоставить специальные функции, которые дают возможность без изменений в реализации и описании классов получить дополнительную информацию о нем. С этой целью может быть использован реализованный в С++ механизм дружественности и создан дружественный класс, который, оперируя внутренними методами абстрактного типа данных, возвращает дополнительную информацию, полезную при работе со структурой.
Т.о. язык С++ содержит все необходимые возможности для реализации списковой структуры, а также возможность работы с ней как со встроенным типом данных, который к тому же может быть со временем преобразован и расширен.
... Такая реализация встречается не так уж редко. Просто она часто скрывается за разными названиями - индексные массивы, массивы соответствия и т.п. Несмотря на разницу в названиях, используется один и тот же алгоритм. – прим.ред. Реализация связанного списка на базе массивов Рассмотрим этот способ на примере реализации линейного односвязного списка. Элементы такого списка линейно упорядочены ...
... Save List. 6. Erase List. 7. Open File. 8. Find Element. 9. Sort List. 0. Exit. Your choice : 2 Input kol-vo of elements: Программа просит ввести количество элементов которое мы хотим добавит к нашему списку. Вводим 1 (для примера): Input digit: 2 Input digit: 3 Input digit: 4 Main Menu: 1. Make New List. 2. Add Element. 3. Print List. 4. Delete Element. 5. Save List. 6. Erase List. ...
... сортировку и более чем по трем столбцам. В этой ситуации список сортируется последовательно, начиная с наименее важного поля. 6) Как выполнить фильтрацию (выборку) данных в электронной таблице? Какие существуют варианты фильтрации? Для фильтрации данных в MS Excel используются команды «Автофильтр» и «Расширенный фильтр». Для выполнения фильтрации необходимо: - активизировать любую ячейку с ...
... не даст нужного результата, не стоит отчаиваться. На случай, если вам вновь понадобятся удаленные ранее файлы, система Windows XP предприняла некоторые меры. Файлы, которые вы удаляете, перемещаются в специальную папку, называемую Корзина (Recycle Bin). Внешний вид окна проводника при работе с корзиной почти не отличается от окна этой программы при работе с любой другой папкой вашего компьютера ( ...
0 комментариев