Академический Документы
Профессиональный Документы
Культура Документы
БГАС
БГАС
Как уже было сказано во введении, целью данного курсового проекта разработка
программы «Архиватора».
Задачи разработки:
1. Поиск на различных ресурсах информации по теме «Сжатие данных».
2. Объяснение различных алгоритмов сжатия.
3. Написание программы - архиватора.
Различными компаниями и разработчиками всего мира были созданы специальные
программы для архивации файлов. Программы для архивации файлов позволяют
помещать копии файлов на диске в сжатом виде в архивный файл, извлекать файлы из
архива, просматривать оглавление архива и т.д. Как многие пользователи компьютерной
техники могли заметить, что программы отличаются форматом архивных файлов,
скоростью работы, степенью сжатия файлов при помещении в архив, удобством
использования.
На сегодняшний день применяется несколько десятков программ - архиваторов,
которые отличаются между собой перечнем функций и параметрами работы, однако
лучшие из них имеют схожие характеристики. Из числа наиболее популярных программ
можно выделить: PKPAK, LHA, ICE, HYPER, ZIP, РАК, ZOO, EXPAND, разработанные за
рубежом, а также AIN и RAR, разработанные в России. Зачастую упаковка и распаковка
файлов выполняются одной и той же программой, но также бывает, что это
осуществляется разными программами, например, программа РКZIР производит упаковку
файлов, a PKUNZIP - распаковку файлов.
Программы-архиваторы позволяют создавать и такие архивы, для извлечения из
которых содержащихся в них файлов не требуются какие - либо программы, так как сами
архивные файлы могут содержать программу распаковки. Отсюда и пошло их название
для таких архивных файлов –самораспаковывающиеся.
Самораспаковывающийся архивный файл - это загрузочный, исполняемый модуль,
который способен к самостоятельной разархивации находящихся в нем файлов без
использования программы - архиватора.
Самораспаковывающийся архив получил название SFX - архив (SelF - eXtracting).
1.2 Обзор и анализ аналогов программных средств
15 12 00 00 00 00 00 00 00 00 00 00 00 00 44 44
44 55 77 44 AF 00 00 11 11 12 45 45 00 00 00 00
01 02 03 04 05 01 02 03 04 05 06 01 02 03 04 05
Как видно в содержимом файла есть много повторов. А значит первое что
необходимо сделать — «нужно как-то избавиться от них». Решение данной проблемы
вполне логичное, ведь можно, например, заменить все повторяющиеся подряд байты всего
двумя. Первый будет указывать на число повторов, второй на повторяющийся байт.
Например, было: 00 00 00 00 00 00 00 00
Стало: 08 00
Однако тут стоит помнить, что максимальное значение байта (FF или 255). Значит
можно сокращать цепочки максимум из 255 одинаковых байтов. На самом деле можно
сократить цепочку в 256 байтов, для этого нужно начинать нумерацию с нуля, однако
этого не стоит делать.
Так же стоит помнить о том, что файл нужно разархивировать, а значит нужен
способ декодирования. Чтобы была возможность однозначно восстановить файл придется
использовать данный метод и к неповторяющимся байтам. А это уже может повлечь за
собой рост размера архива, так как один байт исходного файла заменяется двумя байтами
в архиве.
В итоге для исходного файла имеем:
01 15 01 12 0С 00 03 44 01 55 01 77 01 44 01 AF
02 00 02 11 01 12 02 45 04 00 01 01 01 02 01 03
01 04 01 05 01 01 01 02 01 03 01 04 01 05 01 06
01 01 01 02 01 03 01 04 01 05
Как видно файл не уменьшился, а стал больше. Поэтому нужно вводить еще одно
правило архивации. Не трудно заметить, что структура архива такова, что его можно
считывать парами байт. При этом каждый четный байт не будет нулевым, так как он
отвечает за количество повторяющихся символов и как минимум будет равен единице.
Введем следующее правило: если четный байт равен нулю, то далее идет байт-число
неповторяющихся байт, за ним идут непосредственно эти байты.
Например, было: 01 02 03 04 AA AB AC AE.
Стало: 00 08 01 02 03 04 AA AB AC AE.
Очевидно, что такая конструкция не приводит к уменьшению числа байт, однако
это увеличение крайне мало, по сравнению с первым методом.
Теперь применим оба правила к файлу. Имеем:
00 02 15 12 0С 00 03 44 00 04 55 77 44 AF 02 00
02 11 00 01 12 02 45 04 00 00 10 01 02 03 04 05
01 02 03 04 05 06 01 02 03 04 05
Продолжение таблицы 1
1 2 3 4 5
2. Выбрать путь
сохранения
1.Нажать кнопку
«Open»
Извлечение Архив
4 2.Выбрать архив Пройден
архива извлечен
3.Нажать кнопку
«Extract»
1.Нажать кнопку Открылось
Обратная
5 «Feedback» окно в Пройден
связь
2. Нажать кнопку «Vk» браузере
Открылось
1.Нажать кнопку About
6. О продукте окно с Пройден
product
информацией