Содержание
1.Постановка задачи……………………………………………….2
2.Метод реализации задачи……………………………………….2
2.1. Краткие теоретические сведения…………………………..2
2.2. Реализация на ЭВМ…………………………………………4
3.Описание программы……………………………………………4
3.1. Псевдокод программы………………………………………4
3.2. Блок-схемы программы……………………………………..6
4.Инструкция пользователю………………………………………7
5.Тестирование…………………………………………………….8
6.Приложения………………………………………………………8
7.Литература………………………………………………………12
8.Выводы…………………………………………………………..12
Выдержка из текста работы
Целью курсового проекта является разработка собственного алгоритма сжатия и восстановления данных, то есть «Архиватор». Актуальность темы обусловлена тем, что архиватор позволяет сжимать и восстанавливать файлы без потери данных, а также их шифрование. Архиватор — программа, осуществляющая сжатие и/или упаковку одного и более файлов в архив или серию архивов для удобства переноса или хранения, а также распаковку архивов.
Простейшие архиваторы просто последовательно объединяют (упаковывают) содержимое файлов в архив. Архив должен также содержать информацию об именах и длине оригинальных файлов для их восстановления, поэтому большинство архиваторов также сохраняют метаданные файлов, предоставляемые операционной системой, такие, как время создания и права доступа. Многие архиваторы используют сжатие без потерь для уменьшения размера архива.
Характеристики архиваторов:
.По степени сжатия;
.По скорости сжатия.
Эти характеристики — обратно зависимые величины. То есть, чем больше скорость сжатия, тем меньше степень сжатия, и наоборот.
Программа, создавая архив, обрабатывает как текстовые файлы, так и бинарные файлы. Первые всегда сжимаются в несколько раз (в зависимости от архиватора), тогда как сжатие бинарных файлов зависит от их характера. Одни бинарные файлы могут быть сжаты в десятки раз, сжатие же других может и вовсе не уменьшить занимаемый ими объём. Нахождение для любого входного файла программы наименьшего возможного размера, печатающей этот файл, является алгоритмически неразрешимой задачей, поэтому «идеальный» архиватор невозможен. Сжатие данных обычно происходит значительно медленнее, чем обратная операция.
На данный момент существует масса архиваторов и компрессоров, которые осуществляют сжатие и восстановление данных:
.Свободные и открытые (7-Zip, Ark, File, Roller, FreeArc, Info-ZIP, KGB, Archiver, PeaZip, The Unarchiver, Xarchiver);
2.Бесплатные (DGCA, Filzip, GCA, HaoZip, IZArc, QuickZip, StuffIt Expander, TUGZip, Universal Extractor, WinUHA, Zipeg, ZipGenius, ZipItFree);
3.Коммерческие (ALZip, Archive Utility, MacBinary, PowerArchiver, Squeez, StuffIt, WinAce, WinRAR, WinRK, WinZip);
4.Командная строка (ARC, ARJ, bzip2, compress, gzip, Info-ZIP, JAR, LHA , lzip, lzop, PAQ, PKZIP, RAR, SBC, UPX).
Для достижения цели, поставленной в курсовом проекте, необходимо решение следующих задач:
−выполнить постановку задачи и описать функции сжатия и восстановления;
−сделать выбор среды разработки, а также привести обоснование этого выбора;
−провести тестирование созданной программы;
1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ
Архиватор будет реализован с использованием возможностей языка C++. C++ — компилируемый статически типизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование. Обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.[1]
C++ широко используется для разработки программного обеспечения. Он является одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#. Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.[2]
Реализовывать моё приложение я буду с помощью платформы Visual C++. Microsoft Visual C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная фирмой Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition. Сменила интегрированную среду разработки Microsoft QuickC. Visual C++ поддерживает перечень приложений как на Managed C++ и C++/CLI, так и на обычном C++, и тем самым позволяет генерировать код как для платформы .NET Framework, так и для исполнения в среде «чистой» Windows. В этом отношении Visual C++ является уникальным среди других языковых средств, предоставляемых средой Visual Studio, поскольку ни Visual Basic .NET, ни Visual J# не способны генерировать код для чистого Win32, в отличие от предыдущих версий (Visual Basic и Visual J++ соответственно).
Так как я работаю как на операционной системе Linux (дистрибутив Ubuntu 14.04 LTS), так и на Windows 7, то мой алгоритм будет работать на этих ОС.
Microsoft Windows — семейство проприетарных операционных систем корпорации Microsoft, ориентированных на применение графического интерфейса при управлении. Изначально Windows была всего лишь графической надстройкой для MS-DOS. По состоянию на август 2014 года под управлением операционных систем семейства Windows (по данным ресурса NetMarketShare (Net Applications)) работает более 91% персональных компьютеров. Windows работает на платформах x86, x86-64, IA-64 и ARM. Существовали также версии для DEC Alpha, MIPS, PowerPC и SPARC.7 — пользовательская операционная система семейства Windows NT, следующая по времени выхода за Windows Vista и предшествующая Windows 8. Операционная система поступила в продажу 22 октября 2009 года — меньше, чем через три года после выпуска предыдущей операционной системы, Windows Vista. Партнёрам и клиентам, обладающим лицензией Volume Licensing, доступ к RTM был предоставлен 24 июля 2009 года. В интернете оригинальные установочные образы финальной версии системы были доступны с 21 июля 2009 года.
По данным веб-аналитики от W3Schools, на апрель 2015 года доля Windows 7 среди используемых в мире операционных систем для доступа к сети Интернет составила 52,1%. По этому критерию она находится на первом месте, превзойдя в августе 2011 предыдущего лидера — Windows XP. В Windows 7 реализована более гибкая настройка User Account Control (UAC), которая в отличие от Windows Vista имеет ещё два промежуточных состояния — «Уведомлять, только при попытках программ внести изменения в компьютер» (положение по умолчанию), «Уведомлять, только при попытках программ внести изменения в компьютер (не затемнять рабочий стол)».
Внесены изменения в технологию шифрования BitLocker и добавлена функция шифрования съёмных носителей BitLocker to go, позволяющая шифровать съёмные носители, причём даже при отсутствии модуля TPM. Добавлена возможность защиты данных на USB-накопителях с помощью Enhanced Storage . Улучшения коснулись и брандмауэра Windows: вернулась функция уведомления пользователя о блокировке программы, которая пытается получить доступ к сети.
С помощью групповой политики и функции AppLocker можно запретить запуск определенных приложений. Функция DirectAccess позволяет устанавливать безопасное соединение с сервером в фоновом режиме, в отличие от VPN, которому требуется участие пользователя. Также DirectAccess может применять групповые политики до входа пользователя в систему. Из состава Windows 7 были исключены приложения, разработанные для Windows Vista: Inkball, DreamScene, Ultimate Extras, приложения, имеющие аналоги в Windows Live (Почта Windows, Календарь Windows и пр.), технология Microsoft Agent, Windows Meeting Space. Из меню «Пуск» исчезла возможность вернуться к классическому меню (но если установить Classic Shell, то можно к нему вернуться), а также автоматическая пристыковка браузера и клиента электронной почты., также Лиинукс — общее название Unix-подобных операционных систем, основанных на одноимённом ядре. Ядро Linux создаётся и распространяется в соответствии с моделью разработки свободного и открытого программного обеспечения.
Поэтому общее название не подразумевает какой-либо единой «официальной» комплектации Linux; они распространяются в основном бесплатно в виде различных готовых дистрибутивов, имеющих свой набор прикладных программ и уже настроенных под конкретные нужды пользователя. На начальном этапе Linux бесплатно разрабатывался только энтузиастами-добровольцами, но с успехом Linux и его массовым коммерческим использованием дорабатывать ОС и вносить свой вклад стали и компании, со временем став значительной силой. Подавляющее большинство ПО в современных дистрибутивах по-прежнему доступно по свободным лицензиям, как правило, за исключением небольшого количества проприетарных компонентов. В 2008 году расчёты показывали, что для того, чтобы «с нуля» разработать систему, аналогичную Fedora 9, потребовалось бы затратить 10,8 млрд долл.
Совокупная себестоимость ядра Linux оценена в более чем 1 млрд евро (около 1,4 млрд долл.). Только за 2008 год себестоимость ядра Linux увеличилась на 225 млн евро. В системе Linux воплощён труд в эквиваленте 73 тыс. человеко-лет. В настоящее время системы Linux лидируют на рынках смартфонов (Android занимает 85 % рынка), интернет-серверов (60 %), самых мощных суперкомпьютеров (97 %), а также, согласно Linux Foundation, в дата-центрах и на предприятиях, занимают половину рынка встраиваемых систем, имеют значительную долю рынка нетбуков (32 % на 2009 год). На рынке домашних компьютеров Linux прочно занимает 3 место (по разным данным, от 1 до 5 %).
Согласно исследованию Goldman Sachs, в целом, рыночная доля Linux среди электронных устройств составляет около 42 %. С тех пор, как ядро Linux было создано для x86-ПК, оно было портировано на множество платформ, включая x86-64, PowerPC и ARM. Linux работает в роутерах, телевизорах и игровых приставках. ОС на ядре продолжают быстро совершенствоваться (например, новая версия ядра выпускается каждые 2-3 месяца, с 2005 года в разработке ядра принимают участие более 7800 разработчиков из более чем 800 различных компаний) и набирает популярность (за 9 месяцев с мая 2011 по январь 2012 доля Linux выросла на 64 %). Наиболее популярными дистрибутивами являются (расположены в алфавитном порядке названия их пакетных форматов): deb-based (Debian, Mint, Ubuntu), pacman-based (Arch Linux, Chakra, Manjaro), RPM-based (RedHat, Fedora, Mageia, OpenSUSE), source-based (Slackware, Gentoo).- операционная система, основанная на Debian GNU/Linux. Основным разработчиком и спонсором является компания Canonical. В настоящее время проект активно развивается и поддерживается свободным сообществом. По утверждениям Canonical, Ubuntu используется примерно 20 миллионами пользователей.
Он является 4-м в списке самых популярных дистрибутивов Linux для веб-серверов. По версии DistroWatch.com (на 2014 год) занимает 2-е место по популярности для десктопов. Обычно новые версии дистрибутива выходят каждые полгода и поддерживаются обновлениями безопасности в течение 9 месяцев (начиная с версии 13.04, до этого поддержка осуществлялась в течение полутора лет). Версии LTS, выпускаемые раз в 2 года, поддерживаются в течение 5 лет — как серверные, так и десктопные варианты. (До версии 12.04 LTS срок поддержки для десктопных LTS-версий составлял 3 года.)