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

Постановка задачи

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), что и в стеках .