- •Пояснительная записка
- •Задание на курсовую работу
- •Содержание
- •Введение
- •Постановка задачи
- •1.1 Цель и задачи работы
- •1.2 Обоснование выбора средства программирования
- •1.3 Входная и выходная информация
- •1.4 Требования к аппаратному обеспечению
- •1.5 Требования к программному обеспечению
- •2 Сведения из теории
- •3 Алгоритм решения задачи
- •5. Руководство пользователя
- •Заключение
- •Список литературы:
- •Приложение 1
Постановка задачи
1.1 Цель и задачи работы
Основной целью данной работы является разработка программы «Работа с очередью», а также закрепление практических навыков программирования в среде Borland C++ Builder.
Задачи курсовой работы:
изучить основные методы разработки приложений в среде Borland C++ Builder;
разработать алгоритм решения задачи;
осуществить программную реализацию и протестировать разработанное приложение.
1.2 Обоснование выбора средства программирования
Для написания программы была выбрана среда программирования Borland С++ Builder, основанная на языке программирования С++. Данная среда выгодно отличается эффективностью и надежностью по сравнению с другими инструментальными средами.
1.3 Входная и выходная информация
Входными данными для программы является строка символов, вводимая в поле “Text” компонента Edit1 и Edit2.
Выходными данными являются поля вывода label2 и label3.
1.4 Требования к аппаратному обеспечению
Требования к аппаратному обеспечению указанны в таблице 1.
|
|
Компьютер и процессор |
Компьютер с процессором, работающим на тактовой частоте не менее 233 МГц (рекомендуется процессор Pentium) |
Память |
Не менее 32 mb of RAM |
Дисковод |
Дисковод для компакт-дисков (если установка производится с компакт-диска) |
Дисплей |
Монитор Super VGA с разрешением (800 x 600) или более высоким при цветности в 256 цветов |
|
|
1.5 Требования к программному обеспечению
Для функционирования данного программного продукта на компьютере должна быть установлена операционная система Windows 9X или более поздняя версия.
2 Сведения из теории
Существует несколько способов реализации очереди в языках программирования:
Массив
Первый
способ представляет очередь в виде
массива и
двух целочисленных переменных start
и end.
Обычно start указывает
на голову очереди, end —
на элемент, который заполнится, когда
в очередь войдёт новый элемент. При
добавлении элемента в очередь
в q[end] записывается
новый элемент очереди, а end уменьшается
на единицу. Если значение end
становится меньше 1, то мы как бы циклически
обходим массив и значение переменной
становится равным n.
Извлечение элемента из очереди
производится аналогично: после извлечения
элемента q[start] из
очереди переменная start уменьшается
на 1. С такими алгоритмами одна ячейка
изn всегда
будет незанятой (так как очередь
с n элементами
невозможно отличить от пустой), что
компенсируется простотой алгоритмов.
Преимущества данного метода: возможна незначительная экономия памяти по сравнению со вторым способом; проще в разработке.
Недостатки: максимальное количество элементов в очереди ограничено размером массива. При его переполнении требуется перевыделение памяти и копирование всех элементов в новый массив.
Связной список
Второй способ основан на работе с динамической памятью. Очередь представляется в качестве линейного списка в котором добавление/удаление элементов идет строго с соответствующих его концов.
Преимущества данного метода: размер очереди ограничен лишь объёмом памяти.
Недостатки: сложнее в разработке; требуется больше памяти; при работе с такой очередью память сильнее фрагментируется; работа с очередью несколько медленнее.
Реализация на двух стеках
Очередь может быть построена из двух стеков S1 и S2 как показано ниже:
Процедура enqueue(x):
S1.push(x)
Процедура dequeue():
если S2 пуст:
если S1 пуст:
сообщить об ошибке: очередь пуста
пока S1 не пуст:
S2.push(S1.pop())
return S2.pop()
Такой способ реализации наиболее удобен в качестве основы для построения персистентной очереди.
Очередь из различных языков программирования.
Практически во всех развитых языках программирования реализованы очереди. В CLI для этого предусмотрен класс System.Collections.Queue с методами Enqueue и Dequeue. В STL также присутствует класс queue<>, определённый в заголовочном файле queue. В нём используется та же терминология (push и pop), что и в стеках .
