Описание структуры приложения и интерфейса пользователя




Содержание

 

Задание

. Теоретическая часть

. Описание использованных структур данных

. Описание процедур/функций

. Описание структуры приложения и интерфейса пользователя

. Результаты тестирования приложения на разных объемах данных

. Анализ работы алгоритма LZ77 и выводы

Список использованных источников

ПРИЛОЖЕНИЕ

 


Задание

 

Написать программу, которая сжимает данные по алгоритму LZ77 с пошаговой визуализацией.

программа алгоритм сжатие данные lz77

 


Теоретическая часть

 

В этой работе реализован алгоритм сжатия данных LZ77.

Алгоритм LZ77 [1] был опубликован в 1977 г. Разработан израильскими математиками Якобом Зивом (Ziv) и Авраамом Лемпелом (Lempel). Многие программы сжатия информации используют ту или иную модификацию LZ77. Одной из причин популярности алгоритмов LZ является их исключительная простота при высокой эффективности сжатия.

Основная идея LZ77 состоит в том, что второе и последующие вхождения некоторой строки символов в сообщении заменяются ссылками на ее первое вхождение. LZ77 использует уже просмотренную часть сообщения как словарь. Чтобы добиться сжатия, он пытается заменить очередной фрагмент сообщения на указатель в содержимое словаря.

LZ77 использует "скользящее" по сообщению окно, разделенное на две неравные части. Первая, большая по размеру, включает уже просмотренную часть сообщения. Вторая, намного меньшая, является буфером, содержащим еще незакодированные символы входного потока. Обычно размер окна составляет несколько килобайт, а размер буфера - не более ста байт. Алгоритм пытается найти в словаре (большей части окна) фрагмент, совпадающий с содержимым буфера.

Алгоритм LZ77 выдает коды, состоящие из трех элементов:

• смещение в словаре относительно его начала подстроки, совпадающей с началом содержимого буфера;

• длина этой подстроки;

• первый символ буфера, следующий за подстрокой.

 

Описание использованных структур данных

 

В данной работе использована структура данных строка. Отличительная особенность строки заключается в том, что размер используемых символов может определять разработчик программы. Нумерация в строке начинается с 1, значение этой строки является адрес ее первого символа. Таким образом строка является указателем на первый символ строки.

VocPass,st,slov,buff:string;//строка, словарь, буфер

sizebf,sizesl,ind,shft:integer;//размер буфера, размер словаря,индекс буквы в словаре,сдвиг

 

Описание процедур и функций

function GetCount(x,y:string):byte;

Функция предназначена для определения длины совпадений. В данной функции вычисляется количество символов буфера соответствующих словарю.

procedure TForm1.Button1Click(Sender: TObject);

процедура заполнения словаря, буфера и кода.

procedure FillDict(var x,y:string;n:integer);

Процедура сдвига словаря при его заполнении на количество повторяющихся символов из буфера.

procedure FillBuff(var x:string;m:integer);

Процедура сдвига буфера при выполнении проверки совпадений со словарем. Происходит заполнение из строки.

procedure TForm1.Button2Click(Sender: TObject);

Процедура очистка строки, слова, буфера и кода.

procedure TForm1.Button4Click(Sender: TObject);

Процедура предназначена для выход из программы.

procedure TForm1.Button3Click(Sender: TObject);

Данная процедура позволяет выбрать файл для работы из файловой системы Windows. При этом открывается диалоговое окно с каталогом. Делается это с помощью переменной типа TOpenDialog. Свойство Filter позволило создать ограничение на открытие файлов. Программа открывает только файлы с расширением.txt.

procedure TForm1.Button5Click(Sender: TObject);

Данная процедура позволяет сохранять полученный код в текстовой файл. В ней также открывается диалоговое окно с каталогом файловой системы. Используется переменная типа TSaveDialog.

 

Описание структуры приложения и интерфейса пользователя

Вид главного окна приложения (Рис.4.1):

Рис.4.1.Вид главного окна приложения.

 

Данное приложение состоит из одного модуля(Form1). Для работы с программой пользователю необходимо заполнить строку, что бы это сделать- необходимо в Edit1 записать нужный нам текст. Записать текст мы можем двумя способами:

. Заполнить исходную строку вручную;

. Импортировать данные из текстового файла.

В двух случаях последовательность элементов выведется в Str:TEdit. После выполнения кодировки результат сжатия выводится в KOD:TListBox.

Чтобы ввести текст самостоятельно, необходимо установить курсор в поле Str и напечатать необходимый текст. Для выполнения кодировки необходимо выставить счетчик количества букв словаря и буфера для дальнейшей работы программы. (Pис.4.2):

 

Рис.4.2.Заполнение строки вручную.

 

Чтобы заполнить строку из текста необходимо вызвать OpenDialog (Open à Открыть), где пользователь должен выбрать файл, из которого будут загружены данные вставки (Pис.4.3):

 

Рис.4.3. OpenDialog

Программа оповестит пользователя об успешной загрузке данных (Pис.4.4), а в том случае если открытие прервано, программа выдает ошибку (Рис 4.5).

 

Рис.4.4. Оповещение об успешной загрузке

 

Рис.4.5. Оповещение об ошибке

 

После этого пользователь может приступить к пошаговой кодировке. Кодировка осуществляется автоматически. Для запуска кодировки необходимо выбрать на форме кнопку «!!!». По завершению кодировки появится окно(Рис 4.6)

 

Рис. 4.6 Оповещение о завершении кодировки

Для сохранения закодированного текста, то он должен вызвать вызвать SaveDialog (Save), в котором можно создать файл, в который будет сохраняться результат(Рис.4.7).

 

Рис.4.7..SaveDialog

 

Программа оповестит пользователя об успешном сохранении данных, указав путь к файлу. (Рис.4.8)

 

Рис.4.8. Оповещение об успешном сохранении данных

 

Если после завершения кодировки пользователь вновь захочет закодировать текст, то ему необходимо будет очистить форму (Рис.4.9) и выполнить все необходимые шаги, описанные выше. Очистить форму можно нажав на пункт «Clear».


Рис.4.9. Очистка

Ограничения работы программы:

· Программа работает со строкой, длина которой не имеет превышений.

· Программа работает только с текстовыми файлами и цифрами, причем другие символы использоваться не могут.

· Тестировалась на операционных системах семейства Windows NT (XP/7).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: