Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 32
CОДЕРЖАНИЕ
командных интерпретаторов. Программирование на языке SHELL . . . . . . . . . . .6
2.1. Цель лабораторной работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
2.2. Задание на выполнение лабораторной работы. . . . . . . . . . . . . . . . . . . . 6
2.3. Основные приемы работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4. Примеры выполнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
2.5. Вопросы к защите лабораторной работы . . . . . . . . . . . . . . . . . . . . . . . 15
2.6. Список рекомендуемой литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3. ЛАБОРАТОРНАЯ РАБОТА. ОС Windows. Архивация файлов. . . . . . . . . . 16
3.1. Цель лабораторной работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
3.2. Задание на выполнение лабораторной работы . . . . . . . . . . . . . . . . . . .16
3.3. Основные приемы работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4. Вопросы к защите лабораторной работы . . . . . . . . . . . . . . . . . . . . . . . 31
3.5. Список рекомендуемой литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Настоящее пособие предназначено для студентов направления подготовки 230100 (бакалавр) и специальности 090302, выполняющих лабораторные работы по дисциплине "Информатика". В пособие включены материалы по двум лабораторным работам, соответственно, №3, 4 для студентов направления 230100 и №2, 3 для студентов специальности 090302.
Продолжительность каждой лабораторной работы 4 часа.
Целью проведения лабораторных работ является формирование компетенций:
для направления 230100:
- ОК1 владеет культурой мышления, способность к обобщению, анализу, восприятию информации, постановке цели и выбору путей ее достижения;
- ОК11 осознает сущность и значение информации в развитии современного общества, владеет основными методами, способами и средствами получения, хранения и переработки информации;
- ОК12 имеет навыки работы с компьютером как средством управления информацией;
- ПК2 осваивать методики использования программных средств для решения практических задач;
для специальности 090302:
- ОК9 способность к логически правильному мышлению, обобщению, анализу, критическому осмыслению информации, систематизации, прогнозированию, постановке исследовательских задач и выбору путей их решения на основании принципов научного познания;
- ПК4 способность использовать языки, системы и инструментальные средства программирования в профессиональной деятельности;
- ПК10 способность применять основные методы, способы и средства получения, хранения, переработки и передачи информации.
В процессе выполнения лабораторных работ осуществляется:
- закрепление основных теоретических положений, изложенных в лекциях по данным темам;
- получение навыков и умений программирования на языке командного интерпретатора, а также навыки отладки программ на языке С для ОC с открытым кодом;
- освоение приемов и методов работы со сжатыми данными и программными средствами архиваторами для ОС Microsoft Windows и др;
Лабораторная работа состоит из следующих этапов:
1) домашняя подготовка;
2) выполнение работы на компьютере в соответствии с заданием;
3) сдача выполненной работы преподавателю на персональном компьютере;
4) распечатка результатов работы на принтере;
5) оформление отчета;
6) защита лабораторной работы.
В процессе домашней подготовки студент:
Выполнение лабораторной работы производится во время занятий в компьютерном классе университета в присутствии преподавателя. В процессе выполнения лабораторной работы студент последовательно выполняет задание. По завершению работы демонстрирует преподавателю результаты.
Сдача работы преподавателю на персональном компьютере заключается в демонстрации выполненной работы и выполнении непосредственно при преподавателе индивидуального задания.
После приема преподавателем лабораторной работы на ПК студент:
Отчет по каждой лабораторной работе должен содержать:
Защита лабораторной работы преподавателю проводится по контрольным вопросам и при наличии оформленного отчета (распечатки с результатами должны быть приклеены). После защиты лабораторной работы делается соответствующая запись на отчете студента.
2. ЛАБОРАТОРНАЯ РАБОТА
ОС LINUX: РАСШИРЕННЫЕ ВОЗМОЖНОСТИ КОМАНДНЫХ ИНТЕРПРЕТАТОРОВ. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ SHELL
2.1. Цель лабораторной работы
Целью данной работы является формирование компетенций: ОК1, ОК11, ОК12, ПК2 (для направления 230100) и ОК9, ПК4 (для специальности 090302), в том числе получение практических навыков и умений программирования на языке командного интерпретатора, а также навыки отладки программ на языке С для UNIX/LINUX.
2.2. Задание на выполнение лабораторной работы
1). Написать и отладить скрипт, осуществляющий поиск заданного слова в файле паролей и содержащий вывод комментарий к командам.
2). Написать и отладить скрипт, иллюстрирующий различные способы защиты файлов. Для контроля (чтения) использовать команду cat:
3). Написать и отладить скрипт для проверки количества аргументов командной строки, переданной программе. Если их число больше или равно 1, программа должна выполнять операции внутри блока. Если они отсутствуют, программа завершает работу, не выполняя никаких действий.
4). Используя условные выражения, написать и отладить скрипт, проверяющий наличие в домашнем каталоге инициализационного скрипта .profile, а в случае его отсутствия выполнить копирование шаблона.
5). Написать скрипт очистки неиспользуемых файлов (за определенный промежуток времени) во временных каталогах (/tmp, /usr/tmp), в каталоге /home/user.
6). Используя операторы цикла while, until, написать скрипт, выводящий на экран целые числа в заданном диапазоне.
7). Написать и отладить программу, демонстрирующую перехват прерываний при выходе.
8). Разработать функцию, удаляющую временные файлы при завершении работы сценария.
2.3. Основные приемы работы
Организация циклов и ветвлений
а). Условный оператор "if"
В общем случае оператор "if" имеет структуру:
if условие
then список
[elif условие
then список]
else список]
fi
Служебное слово "elif" сокращенный вариант от "else if", может быть использован наряду с полной записью, т.е. допускается вложение произвольного числа операторов "if" (как и других операторов). Если выполнено условие, то выполняется "список", иначе он пропускается. Структура обязательно завершается служебным словом "fi". Число "fi" всегда должно соответствовать числу "if".
б). Команда test
Команда test проверяет выполнение некоторого условия. С использованием этой (встроенной) команды формируются операторы выбора и цикла языка shell. Имеется два возможных формата команды:
test условие
или
[ условие ]
Интерпретатор shell будет распознавать эту команду по открывающей скобке "[". Между скобками и содержащимся в них условием обязательно должны быть пробелы. Пробелы должны быть и между значениями и символом сравнения или операции. В shell используются условия различных "типов":
1) условия сравнения целых чисел:
x eq y "x" равно "y";
x ne y "x" неравно "y";
x gt y "x" больше "y";
x ge y "x" больше или равно "y";
x lt y "x" меньше "y";
x le y "x" меньше или равно "y";
2) сложные условия, реализуемые с помощью типовых логических операций:
! (not) инвертирует значение кода завершения;
-o (or) соответствует логическому "ИЛИ";
-a (and) соответствует логическому "И";
3) условия проверки файлов:
-f file файл "file" является обычным файлом;
-d file файл "file" каталог;
-с file файл "file" специальный файл;
-r file имеется разрешение на чтение файла "file";
-w file имеется разрешение на запись в файл "file";
-s file файл "file" не пустой;
4) условия проверки строк:
str1 = str2 строки "str1" и "str2" совпадают;
str1 != str2 строки "str1" и "str2" не совпадают;
-n str1 строка "str1" существует (непустая);
-z str1 строка "str1" не существует (пустая).
в). Оператор цикла с перечислением for
Оператор цикла "for" имеет структуру:
for имя in список-значений
do
список команд
done
где for служебное слово, определяющее тип цикла; do и done - служебные слова, выделяющие тело цикла. Фрагмент in список-значений может отсутствовать.
Рассмотрим пример:
for i in f1 f2 f3
do
procsort $i
done
В этом примере имя i играет роль параметра цикла. Это имя можно рассматривать как shell-переменную, которой последовательно присваиваются перечисленные значения (i=f1, i=f2, i=f3), и выполняется в цикле команда procsort.
Часто используется форма for i in *, означающая для всех файлов текущего каталога.
г). Оператор цикла с истинным условием - while
Структура оператора while предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле. Оператор цикла while имеет структуру:
while
условие
do
список команд
done
где while служебное слово, определяющее тип цикла с истинным условием. Список команд в теле цикла (между do и done) повторяется до тех пор, пока сохраняется истинность условия (т.е. код завершения последней команды в теле цикла равен 0) или цикл не будет прерван изнутри специальными командами (break, continue или exit). При первом входе в цикл условие должно выполняться.
д). Оператор цикла с ложным условием until
Отличие оператора цикла until от оператора while состоит в том, что условие цикла проверяется на ложность (на ненулевой код завершения последней команды тела цикла) после каждого (в том числе и первого) выполнения команд тела цикла. Программистов, знакомых с операторами until в других языках, может вначале сбивать такая семантика этого оператора.
Оператор цикла until имеет структуру:
until условие
do
список команд
done
где until служебное слово, определяющее тип цикла с ложным условием. Список команд в теле цикла (между dо и done) повторяется до тех пор, пока сохраняется ложность условия или цикл не будет прерван изнутри специальными командами (break, continue или exit). При первом входе в цикл условие не должно выполняться.
Кроме рассмотренных операторов ветвления и циклов, существует ряд других операторов, которые можно найти в приведенной в списке литературе.
Функции интерпретатора shell
Интерпретатор команд shell позволяет группировать наборы команд или конструкций, создавая повторно используемые блоки. Подобные блоки называются shell-функциями.
Функция состоит из двух частей:
Метка функции Тело функции
В качестве метки выступает имя функции, тело функции образует набор команд, составляющих саму функцию. Имя функции должно быть уникальным, это связано с тем, что в случае наличия двух различных функций с одинаковыми именами сценарий просто не сможет вызвать нужную функцию.
Формат, применяемый для определения функций, имеет следующий вид:
имя функции ( )
{
команда1
…
}
Можно также использовать ключевое слово function перед именем функции:
function имя_функции ( )
{
}
Функцию можно представлять себе как некоторый вид сценария, находящегося внутри другого сценария, но в этом случае следует учитывать одну особенность. При вызове функции она остается в текущем интерпретаторе shell, а ее копия хранится в памяти. С другой стороны, если вызывается или выполняется сценарий из другого сценария, создается отдельный интерпретатор shell. В таком случае становятся недействительными все существующие переменные, определенные в предыдущем сценарии.
Функции могут быть размещены в том же самом файле, что и сценарии, либо в отдельном файле, содержащем функции. При этом функции не всегда включают множество конструкций или команд может просто содержаться единственная конструкция echo, которая выполняется при вызове функции.
Применение функций позволяет сэкономить массу времени, затрачиваемого на разработку сценариев. Благодаря созданию универсальных и многократно используемых функций отпадает необходимость в технической поддержке разработанных сценариев, использующих эти функции.
Объявление функций в сценарии
Перед использованием функций их необходимо объявить. Суть объявления заключается в том, что все функции должны быть размещены в начале кода сценария. Невозможно сослаться на функцию до тех пор, пока она не попадет в "поле зрения" интерпретатора команд. Для вызова функции требуется просто ввести ее имя, например:
hello ()
(
echo "Hello"
}
В этом примере функция называлась "hello", тело функции включало конструкцию echo, которая, в свою очередь, отображала слово.
Передача параметров функции
Порядок передачи параметров функции аналогичен передаче параметров обычному сценарию. При этом используются специальные переменные $1, $2, ... $9. При получении функцией переданных ей аргументов происходит замена аргументов, изначально переданных сценарию интерпретатора shell. В связи с этим желательно было бы повторно присвоить значения переменным, получаемым функцией. В любом случае это стоит сделать, так как при наличии ошибок в функциях их можно будет легко обнаружить, воспользовавшись именами лекальных переменных. Для вызывающих аргументов (переменных), находящихся внутри функции, имя каждой переменной начинается с символа подчеркивания, например: _FILENAME или _filename.
Перехват прерываний при выходе
Как известно, выполнение программы можно прервать, послав какой-либо из сигналов kill, а также посредством различных комбинаций клавиш (например, Ctrl-C). Проблема заключается в том, что если программа создает временные файлы, а пользователь прерывает ее работу по Ctrl-C, созданные файлы не будут удалены. За короткий срок таких файлов может накопиться достаточно много. Командный интерпретатор позволяет перехватывать подобные прерывания. Ниже приведен короткий пример, иллюстрирующий перехват прерываний:
#!/bin/sh
# Программа демонстрирует перехват прерываний
trap 'echo "Interrupt received. Quitting." 1>&2' 1 2 3 15
echo -n "Enter a number: "
readln num
exit 0
Программа устанавливает перехват прерываний 1, 2, 3 и 15. Предпринимаемые действия задаются в одинарных кавычках. Если при запуске программы, после того как она выдаст приглашение "Enter a number", нажать Ctrl-C, она получит сигнал 2 (INT). Поскольку программа перехватывает это прерывание, она выдаст сообщение "Interrupt received" и завершит работу.
В приведенном примере следует обратить внимание на использование команды echo. Фактически это перенаправление вывода, обеспечиваемое самим интерпретатором. Команда 1>&2 в операторе echo перенаправляет вывод в поток STDERR. Поэтому специальное сообщение нельзя случайно перенаправить другой команде с помощью конвейера или в файл вместе с остальным выводом программы. Рекомендуется все сообщения об ошибках перенаправлять в поток STDERR командой 1>&2.
Перехват прерываний обычно используется для операций удаления временных файлов. Если требуется выполнить несколько действий, желательно воспользоваться функцией, перехватывающей прерывание. Если необходимо исключить возможность выхода из программы по Ctrl-C, можно установить перехват прерывания, не исполняющий никаких действий. Например:
trap ' ' 2
Данный оператор приводит к тому, что сигнал 2 полностью игнорируется.
Программа может перехватывать несколько прерываний и выполнять различные действия в зависимости от того, как осуществляется выход из нее. Перехват сигнала 0 установлен для всех вариантов выхода из программы. Перехват остальных сигналов осуществляется лишь тогда, когда они посылаются программе. Список наиболее часто перехватываемых сигналов приведен ниже:
0 выход; 1 HUP обрыв сеанса (или отсоединение);
2 INT прерывание (Ctrl-C); 3 Quit - выход (Ctrl -\)$
15 TERM обычная команда kill.
Сигнал 15 (посылаемый по умолчанию командой kill) и другие сигналы команды kill можно перехватывать, однако это не относится к сигналу 9 (SIGKILL). Он используется в качестве последней возможности прервать работу программы, когда остальные методы не помогают. Поэтому его нельзя ни перехватить, ни игнорировать.
2.4. Примеры выполнения
1). Использование команды grep, например:
if grep user /etc/passwd>/dev/null 2>&1
then
echo пользователь user найден в файле паролей
fi
2). Скрипт, иллюстрирующий различные способы защиты файлов. Выполните и внесите в отчет результат выполнения данной последовательности команд:
mkdir testdir
echo some data > testdir/testfile
ls -l testdir/testfile
cat testdir/testfile
chmod 0200 testdir/testfile
cat testdir/testfile
chmod 0644 testdir/testfile
chmod 0444 testdir
ls testdir
cat testdir/testfile
chmod 0544 testdir/testfile
rm testdir/testfile
chmod 755 testdir
rm testdir/testfile
rm testfile
3). Скрипт для проверки количества аргументов командной строки, переданной программе.
а) использование оператора if
Пример запуска программы:
./test file1 file2 file3
где test имя файла (скрипта); file1 file2 file3 аргументы.
Оператор if в строке 3 проверяет число аргументов командной строки, используя переменную $#, в которой оно содержится. Если оно больше или равно 1, выполняются операторы, заключенные между ключевыми словами then и fi (fi это if наоборот, данный оператор отмечает конец блока). Если нет, управление передается оператору, следующему за fi. В данном случае он информирует пользователя о выходе из программы.
Часть then оператора if является обязательной, а часть else нет. В рассмотренном примере операторы в блоке then выполняются тогда, когда условие истинно.
б) использование команды test
#!/bin/sh
# Пример использования команды test
if [ $myvar -gt 5 ]
then
: # He предпринимать никаких действий, выйти из блока if else
# Операторы, которые выполняются, если условие ложно.
fi
exit 0
4). Скрипт, проверяющий наличие в домашнем каталоге инициализационного скрипта .profile.
Создайте и запустите скрипт, фрагмент которого приведен ниже:
#!/bin/sh
if [ ! -f $HOME/.profile ]
then
echo "файла нет - скопируем шаблон"
cp /home/user123/.profile $HOME/.profile
fi
exit 0
5). Cкрипт очистки неиспользуемых файлов.
Создайте и запустите скрипт, фрагмент которого приведен ниже:
#!/bin/sh
for dir in /tmp /usr/tmp /home/user
do
find $dir ! -type d -atime +11 -exec rm {} \;
done
exit 0
6). Cкрипт, выводящий на экран целые числа в заданном диапазоне.
Использование оператора while
#вывода на экран целых чисел от 1 до 20.
В этом примере в строке 3 переменной i присваивается начальное значение 1, i применяется как счетчик цикла, поэтому здесь нет необходимости использовать описательное имя.
Строка 4: Команда while содержит условие, заключенное в квадратные скобки. На самом деле, они представляют собой сокращенную запись команды test, которая часто используется в сценариях командного интерпретатора. Команда test использует достаточно прозрачный синтаксис, -le в данном примере обозначает "меньше или равно". Таким образом, цикл выполняется до тех пор, пока значение переменной i меньше или равно 20.
Строка 5: Оператор do указывает, что все операторы, следующие за ним, должны выполняться при каждой итерации цикла. Все выражения между do и done являются телом цикла.
Строка 6: Здесь выводится значение переменной i.
Строка 7: Здесь используется подстановка команд, значение переменной i увеличивается на единицу, а затем новое значение вновь присваивается переменной.
Строка 8: Завершающий оператор цикла. В этой точке программа вновь возвращается к оператору while и вновь проверяет условие цикла. Если значение переменной i все еще меньше или равно 20, операторы в теле цикла выполняются снова. Если i больше 20, цикл завершается и управление передается оператору, следующему за оператором done (в данном случае, это просто оператор exit в строке 9, который завершает программу с кодом успешного выполнения, равным 0).
Операторы внутри цикла выровнены с отступом по левому краю. Это позволяет легко выделить цикл при чтении исходного кода. Интерпретатор игнорирует отступ, выполняя команды обычным образом. Пробел между [ и тестируемым условием является обязательным. Его отсутствие приведет к ошибке. Например, [ $I -le 20 ] выполняется, a [$I -le 20] возвращает ошибку.
7). Перехват прерываний.
#!/bin/sh
# Программа демонстрирует перехват прерываний
trap 'echo "Interrupt received. Quitting." 1>&2' 1 2 3 15
echo -n "Enter a number: "
readln num
exit 0
8). Пример функции, удаляющей временные файлы при завершении работы сценария.
#!/bin/sh
on_exit () {
rm -rf /tmp/myprogram.*
mv logfile logfile.old
mail student@evm-bi.com < report.txt
}
Пример вызова данной функции:
trap on_exit 0 1 2 3 15
2.5. Вопросы к защите лабораторной работы
2.6. Список рекомендуемой литературы
1. Романчева Н.И. ОС Linux принципы, технологии, инструменты: учеб. пособие. М.: МГТУ ГА, 2011.
2. Робачевский А.М. Операционная система UNIX. СПб.: BHV-Санкт-Петербург, 2007.
3. ЛАБОРАТОРНАЯ РАБОТА
ОС WINDOWS. АРХИВАЦИЯ ФАЙЛОВ
3.1. Цель лабораторной работы
Целью данной работы является формирование компетенций: ОК1, ОК11, ОК12, ПК2 (для направления 230100) и ОК9, ПК10 (для специальности 090302), в том числе получение практических навыков и умений архивирования и сжатия файлов.
3.2. Задание на выполнение лабораторной работы
1). Создать или скопировать на рабочем диске в рабочей директории 5-7 файлов (текстовых, исполняемых, командных, программных).
2). Создать архивы для этих файлов с помощью различных архиваторов, например, WinRar, WinZip и др.
3). Сравнить объемы получившихся файлов, результаты занести в таблицу и сделать выводы:
Название архиватора |
Тип файла |
Размер файла |
Размер файла после сжатия |
Степень сжатия(%) |
4). C помощью архиватора (в соответствии с заданием преподавателя) выполнить следующие команды:
a) добавить в архив заданный файл;
б) поместить в архив все файлы из текущего каталога, за исключением файлов с заданным расширением;
в) создать защищенный архив;
г) создать архивный файл, позволяющий сохранить структуру каталогов;
д) добавить комментарии к архивам;
е) извлечь заданный файл из архива.
ж) создать многотомный архив, указав размер тома 80 К;
з) выполнить поиск заданной строки в архивах по различным поисковым признакам.
5). Используя программу архивации, создать на диске, заданном в параметрах, многотомный архив с паролем, заданным в параметрах, поместив в них все файлы из каталога LAB рабочего диска, исключив файлы с расширением EXE.
6). Просмотреть списки созданных архивов.
7). Создать командный файл, который с помощью архиватора позволяет расположить файлы в архиве в заданном порядке, просмотреть архив, извлечь файлы из архива в заранее созданный каталог.
8). Создать самораспаковывающиеся RAR- и ZIP-архивы, не поддерживающие распределенные архивы (включить переключатель «Без распределения» в группе Spanning Support Поддержка распределенного архива).
9). Создать самораспаковывающиеся распределенные архивы RAR- и ZIP-архивы.
10). Используя диспетчер архивов WinZip, выполнить интеграцию служебных и прикладных программ с операционной системой Windows.
11). Исследуйте свойства форматов сжатия графических данных (файлы .bmp, .gif, .jpg). Результаты занесите в таблицу:
Формат файла |
Размер файла (Кбайт) |
Степень сжатия (%) |
24 разрядный .bmp |
||
.gif |
||
.jpg |
12). Используя программу, например, Excel, построить диаграммы по результатам, приведенным в таблицах, и сделать выводы.
3.3. Основные приемы работы
Характерной особенностью большинства типов данных, с которыми традиционно работают пользователи, является определенная избыточность. Степень избыточности зависит от типа данных.
При обработке информации избыточность также играет важную роль. Так, например, при преобразовании или селекции информации избыточность используют для повышения ее качества (репрезентативности, актуальности, адекватности и т.п.). Однако, когда речь заходит не об обработке, а о хранении готовых документов или их передаче, то избыточность можно уменьшить, что дает эффект сжатия данных.
Если методы сжатия информации применяют к готовым документам, то нередко термин сжатие данных подменяют термином архивация данных, а программные средства, выполняющие эти операции, называют архиваторами.
Степень сжатия файлов характеризуется коэффициентом Кс, определяемым как отношение объема сжатого файла Vc к объему исходного файла v, выраженное в процентах: Кo=(Vc V*100). Степень сжатия зависит от используемой программы, метода сжатия и типа исходного файла. Наиболее хорошо сжимаются файлы графических образов, текстовые файлы и файлы данных, для которых степень сжатия может достигать 5-40%, меньше сжимаются файлы исполняемых программ и загрузочных модулей 60-90%. Почти не сжимаются архивные файлы.
Объекты сжатия
В зависимости от того, в каком объекте размещены данные, подвергаемые сжатию, различают:
уплотнение (архивацию) файлов;
уплотнение (архивацию) папок;
уплотнение дисков.
Уплотнение файлов применяют для уменьшения их размеров при подготовке к передаче по каналам электронных сетей или к транспортировке на внешнем носителе малой емкости, например на гибком диске.
Уплотнение папок используют как средство архивации данных перед длительным хранением, в частности, при резервном копировании.
Уплотнение дисков служит целям повышения эффективности использования их рабочего пространства и, как правило, применяется к дискам, имеющим недостаточную емкость.
Несмотря на изобилие алгоритмов сжатия данных, теоретически есть только три способа уменьшения их избыточности. Это либо изменение содержания данных, либо изменение их структуры, либо и то и другое вместе.
Если при сжатии данных происходит изменение их содержания, метод сжатия необратим и при восстановлении данных из сжатого файла не происходит полного восстановления исходной последовательности. Такие методы называют также методами сжатия с регулируемой потерей информации. Они применимы только для тех типов данных, для которых формальная утрата части содержания не приводит к значительному снижению потребительских свойств. В первую очередь, это относится к мультимедийным данным: видеорядам, музыкальным записям, звукозаписям и рисункам. Методы сжатия с потерей информации обычно обеспечивают гораздо более высокую степень сжатия, чем обратимые методы, но их нельзя применять к текстовым документам, базам данных и, тем более, к программному коду. Характерными форматами сжатия с потерей информации являются: JPG для графических данных; .MPG для видеоданных; .МРЗ для звуковых данных.
Если при сжатии данных происходит только изменение их структуры, то метод сжатия обратим. Из результирующего кода можно восстановить исходный массив путем применения обратного метода. Обратимые методы применяют для сжатия любых типов данных. Характерными форматами сжатия без потери информации являются: .GIF, .TIP, .PCX и многие другие для графических данных; .AVI для видеоданных; .ZIP, .ARJ, .RAR, .LZH, .LH, .CAB и многие другие для любых типов данных.
Архиваторы
Современные программные средства для создания и обслуживания архивов отличаются большим объемом функциональных возможностей, многие из которых выходят за рамки простого сжатия данных и эффективно дополняют стандартные средства операционной системы. В этом смысле современные средства архивации данных называют диспетчерами архивов.
К базовым функциям, которые выполняют современные диспетчеры архивов, относятся: извлечение файлов из архивов, создание новых архивов, добавление файлов в имеющийся архив, создание самораспаковывающихся архивов, создание распределенных архивов на носителях малой емкости, тестирование целостности структуры архивов, полное или частичное восстановление поврежденных архивов, защита архивов от просмотра и несанкционированной модификации.
К дополнительным функциям диспетчеров архивов относятся сервисные функции, делающие работу более удобной. Они часто реализуются внешним подключением дополнительных служебных программ и обеспечивают:
просмотр файлов различных форматов без извлечения их из архива;
поиск файлов и данных внутри архивов;
установку программ из архивов без предварительной распаковки;
проверку отсутствия компьютерных вирусов в архиве до его распаковки;
криптографическую защиту архивной информации;
декодирование сообщений электронной почты;
«прозрачное» уплотнение исполнимых файлов .ЕХЕ и .DLL;
создание самораспаковывающихся многотомных архивов;
выбор или настройку коэффициента сжатия информации.
Структура окон WinRAR и WinZip типична для приложений Windows. Вид панели инструментов WinRAR приведен на рис. 1.
Рис. 1. Панель инструментов WinRAR
Самораспаковывающиеся архивы
В тех случаях, когда архивация производится для передачи документа потребителю, следует предусмотреть наличие у него программного средства, необходимого для извлечения исходных данных из уплотненного архива. Если таких средств у потребителя нет создают самораспаковывающиеся архивы. Самораспаковывающийся архив готовится на базе обычного архива путем присоединения к нему небольшого программного модуля. Сам архив получает расширение .ЕХЕ, характерное для исполняемых файлов (рис. 2). Потребитель сможет выполнить его запуск как программы, после чего распаковка архива произойдет на его компьютере автоматически.
Распределенные архивы
В тех случаях, когда предполагается передача большого архива на носителях малой емкости, например на гибких дисках, возможно распределение одного архива в виде малых фрагментов на нескольких носителях. Некоторые диспетчеры (например, WinZip) выполняют разбиение сразу на гибкие диски, а некоторые (например, WinRAR) позволяют выполнить предварительное разбиение архива на фрагменты заданного размера на жестком диске. Впоследствии их можно перенести на внешние носители путем копирования.
Рис. 2. Определение параметров архива
При создании распределенных архивов диспетчер WinZip обладает особенностью: каждый том несет файлы с одинаковыми именами. В результате этого нет возможности установить номера томов, хранящихся на каждом из гибких дисков, по названию файла. Поэтому каждый диск следует маркировать пометками на наклейке, а при создании распределенного архива следует быть внимательнее, чтобы не перепутать последовательность немаркированных томов.
В случае необходимости узнать номер тома можно не по названию файла, а по метке на диске, хотя эта операция не слишком удобна. Для этого следует открыть окно «Мой компьютер», выбрать значок дисковода, щелкнуть на нем правой кнопкой мыши и выбрать в контекстном меню пункт «Свойства». В диалоговом окне «Свойства: Диск …» на вкладке «Общие» можно узнать номер тома распределенного архива в поле «Метка тома».
Консольная версия WinRAR
Консольная версия WinRAR поддерживает архивы только в формате RAR, у которых обычно расширение ".rar". ZIP и прочие форматы не поддерживаются. Пользователи Windows могут установить GUI-версию RAR WinRAR, которая обрабатывает и архивы других типов.
Некоторые отличительные особенности RAR:
Следует отметить, что при создании томов RAR в FAT или FAT32 WinRAR автоматически ограничивает максимальный объем тома до 4 ГБ минус 1 байт, так как эти файловые системы не поддерживают файлы объемом больше 4 ГБ.
Работа с WinRAR из консоли
Формат вызова:
WinRAR <команда> [ -<ключи>... ] <архив> [<@файлы-списки...>] [<файлы...>] [ <путь_для_извлечения\> ]
Для создания и управления архивами служат параметры командной строки (команды и ключи). Команда это строка (или одна буква), указывающая, что WinRAR должен выполнить соответствующее действие. Ключи модифицируют действие команды. Остальные параметры это имена архива и файлов, которые будут добавлены или извлечены из архива.
Файлы-списки это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария символы //. Например, для архивирования файлов *.txt из каталога c:\1kurs\doc, файлов *.bmp из каталога c:\1kurs\image и всех файлов из каталога c:\evm\misc можно создать backup.lst, содержащий следующие строки:
c:\1kurs\doc\*.txt //резервная копия текстов
c:\1kurs\image\*.bmp //резервная копия рисунков
c:\1kurs\misc
После этого для архивирования достаточно будет выполнить команду:
winrar a backup @backup.lst
Если требуется прочитать имена файлов с устройства stdin (стандартный ввод), то после символа "@" не указывайте имя файла (просто @).
В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).
Команды:
a добавляет указанные файлы к архиву;
m переносит указанные файлы и подкаталоги в архив;
d удаляет указанные файлы из архива;
x извлекает указанные файлы из архива с восстановлением структуры подкаталогов;
e извлекает указанные файлы из архива в текущий подкаталог;
v просмотр содержимого архива;
u добавляет те файлы к архиву, которых в нем нет;
c добавляет комментарии к архиву;
k защита данных от модификации.
Ключи:
-? выводит экран помощи;
-r сохраняет структуру подкаталогов;
-o+ при распаковке разрешает перезаписывать существующие файлы;
-o- при распаковке не разрешает перезаписывать существующие файлы;
-x<name> все файлы, с соответствующими name именами, будут исключены из обработки (можно использовать шаблоны);
-x@<list> задает файл, в котором содержатся имена файлов, исключаемых из обработки;
-v<size> создание архивных томов;
-p<password> назначить пароль.
Примеры команд
1). Добавить комментарий к архиву:
rar c distrib.rar
Комментарии отображаются во время обработки архива. Длина комментария не должна превышать 62000 байт.
2). Добавить комментарий из файла: rar c -zinfo.txt dummy
3). Записать комментарий архива в указанный файл:
rar cw oldarch comment.txt
4). Выполнить регистрозависимый поиск строки "first level" в файлах *.txt, находящихся в архивах *.rar на диске c:.
rar "ic=first level" -r c:\*.rar *.txt
Поддерживаются следующие необязательные параметры:
i не различать прописные и строчные буквы (по умолчанию);
c различать прописные и строчные буквы;
h поиск в шестнадцатеричном режиме;
t использовать таблицы символов ANSI, Unicode и др.
Если ни один параметр не указан, вместо синтаксиса i=<строка> можно использовать более простую команду i<строка>. Модификатор 't' допускается применять вместе с другими параметрами.
5). Найти шестнадцатеричную строку f0e0aeaeab2d83e3a9 в архивах RAR, расположенных в каталоге e:\texts
rar ih=f0e0aeaeab2d83e3a9 -r e:\texts
6). Добавить к пути назначения имя архива
rar x -ad *.rar data\
Эта опция может пригодиться при распаковке группы архивов. По умолчанию RAR извлекает файлы из всех архивов в одну и ту же папку, если же указать этот ключ, то файлы из каждого архива будут распакованы в отдельные папки (в данном случае в папке 'data').
Работа с архиватором WinRAR
Получение справки о программе
Для получения справочной информации выберите команду ? Содержание. В окне Справка выберите на вкладке Содержание раздел WinRAR Interface, подраздел WinRAR menus, как показано на рис. 3.
Рис. 3. Окно справки WinRAR
После запуска архиватора WinRAR на экране будет раскрыто окно, приведенное на рис. 4.
Рис. 4. Окно WinRAR в режиме операций с файлами
Окно архиватора WinRAR, в отличие от окна, WinZip, имеет средства навигации по дискам и папкам компьютера: поле списка для выбора дисков и папок, кнопку для перехода на верхний уровень в иерархии папок.
Для выбора нужного диска используйте окно списка дисков. Для выхода в родительский каталог щелкните ярлык папки с именем «..». Для открытия нужной папки щелкните ярлык с названием папки.
При проведении процессов архивации (разархивации) с группой файлов, имена которых задаются шаблонами, применяются следующие действия. Для выделения группы файлов выберите в меню File команду Select group или щелкните кнопку Серый плюс и задайте в окне выбора маску «0*.*», как показано на рис. 5. Щелкнув кнопку «ОК», завершите создание маски для выбора группы файлов.
Рис. 5 Выделение группы файлов в архиве
Для создания архива из нескольких файлов, выделите нужные файлы и щелкните кнопку «Добавить» (Add) на панели инструментов (рис. 6).
Рис. 6. Добавление выбранных файлов в архив
Для удаления из архива файла необходимо открыть архив в окне архиватора WinRAR, указать удаляемый файл и щелкнуть кнопку «Удалить» на панели инструментов или выбрать последовательность команд: Команды-Удалить файлы. Подтвердить удаление можно, нажав кнопку «Да» в окне подтверждения Удаление (рис. 7).
Рис. 7. Окно WinRAR в режиме «удаление файла из архива»
Изменение настроек программы WinRAR
Для изменения настроек выберите команду Параметры-Установки, после чего на экране развернется окно настройки параметров WinRAR. Выбирая различные вкладки окна Параметры для получения подсказки по параметрам настройки, используйте всплывающую подсказку. Задайте следующие параметры настройки WinRAR:
- на вкладке Архивация щелкните кнопку «Создать по умолчанию» для создания опций архивирования по умолчанию, в открывшемся после этого окне Установить параметры сжатия по умолчанию включите опции Создать SFX-архив, в списке Размер тома выберите стандартный размер тома сменного носителя. Щелкнув кнопку «ОК», закройте окно Установить параметры сжатия по умолчанию (рис. 8). Можно отредактировать значение размера тома в списке Размер тома, задав его величину вручную;
- на вкладке Интеграция включите все флажки в поле Связать WinRAR с и щелкните кнопку «ОК» для применения внесенных изменений. Проверьте действие измененных параметров, выделив несколько файлов и щелкнув кнопку «Добавить» на панели инструментов. После этого откроется окно Имя и параметры архива, в поле Имя архива которого выводится имя с расширением .ехе (как было установлено, по умолчанию создается SFX-архив), в поле Размер тома отображается значение заданного по умолчанию размер тома. Щелкнув клавишу Esc, отмените архивацию.
Рис. 8. Определение параметров архива
Создание многотомных архивов
Для создания многотомного архива файлов необходимо открыть окно архиватора, выбрать в поле списка дисков и папок папку, подлежащую архивации, выделите все файлы и щелкните кнопку «Добавить» на панели инструментов.
В окне Имя и параметры архива выбрать вкладку Общие. Далее в поле Имя архива задайте имя архива (например, Archive2.rar), выберите вариант формата архива RAR, в поле Volume size (Размер тома) задайте размер тома архива (например, 1.44).
Внимание: при выполнении лабораторной работы размер тома определите в несколько раз меньше суммарного объема файлов, включаемых в архив, чтобы в процессе архивации было создано нескольких томов.
Щелкнув кнопку «ОК», запустите операцию упаковки файлов в архив. По окончании архивации в текущем каталоге появится несколько файлов с именем созданного архива, с расширениями, отличающимися нумерацией, например: Archive2.rar, Archive2.r00, Archive2.r01, Archive2.r02 и т.п., где файл с расширением .rar первый том архива, файлы с расширением .r00, .r01, .r02 и т.п. файлы следующих томов архива.
Создание защищенных архивов
Для создания архивов, доступ к которым защищен паролем, выберите в меню Файл команду Пароль, в окне Ввод пароля по умолчанию в поле Введите пароль введите значение пароля и повторите ввод пароля в поле Повторите пароль для проверки. Щелкнув кнопку «ОК», завершите определение пароля. После этого в данном сеансе работы архиватора доступ ко всем создающимся архивам будет закрываться заданным паролем (рис. 9).
Рис. 9. Задание пароля архива
Внимание: при вводе пароля обратите внимание на включенный регистр символов.
Создайте архив из нескольких файлов в рабочем каталоге.
При извлечении файлов из защищенного паролем архива откроется окно Ввод пароля. Введите в поле Введите пароль для зашифрованного файла любое сочетание символов неправильный пароль и щелкните кнопку «ОК». Если пароль неправильный, то раскроется окно сообщений, в котором будет выведено сообщение: Ошибка CRC в зашифрованном файле (неправильный пароль). Щелкнув кнопку «Закрыть», закройте окно сообщения. Повторно щелкнув кнопку «Извлечь в» на панели инструментов, в окне Ввод пароля введите правильный пароль и щелкните кнопку «ОК». Если пароль был введен правильно, то файл будет распакован из архива.
Создание самораспаковывающегося ZIP-архива
1). Запустите программу WinZip.
2). Выполните команду File/Open Archive (Файл /Открыть архив). Откройте ранее созданный архив .zip.
3). Выполните команду Actions /Make .Exe File (Действия/Создать исполнимый файл) откроется диалоговое окно WinZip Self-Extractor (Генератор самораспаковывающегося архива).
4). В поле Create Self-Extracting Zip files from (Создать самораспаковывающийся архив из ...) необходимо записать адрес исходного ZIP-файла. Можно воспользоваться кнопкой Browse (Обзор) для поиска нужного файла.
5). В группе Self Extractor Type (Тип самораспаковывающегося архива) включите переключатель, соответствующий операционной системе компьютера, для которого готовится архив.
6). В группе Spanning Support (Поддержка распределенного архива) включите переключатель No spanning (Без распределения) и нажмите кнопку ОК.
Создание самораспаковывающегося распределенного архива
1). Запустите программу WinZip.
2). Выполните команду File/Open Archive (Файл /Открыть архив). Откройте ранее созданный архив .zip.
3). Выполните команду Actions /Make .Exe File (Действия /Создать исполнимый файл) откроется диалоговое окно WinZip Self-Extractor (Генератор самораспаковывающегося архива).
4). В группе элементов управления Spanning Support (Поддержка распределенного архива) включите переключатель Safe Spanning Method (Защищенный метод распределения) или Old Spanning Method (Обычный метод распределения).
Защищенный метод создает на первом гибком диске два файла: исполнимый файл, выполняющий автоматическую распаковку, и первый том распределенного архива. На последующих дисках создается продолжение распределенного архива. Такой подход повышает уровень безопасности, поскольку даже в том случае, когда исполнимый файл поврежден, например компьютерным вирусом, информация остается в архивном файле. Этот метод применяют для передачи архивных материалов на гибких дисках.
Обычный метод не создает отдельного исполнимого файла и весь архив хранится в одном исполнимом файле, распределенном по нескольким носителям. Данный метод используют для самораспаковывающихся архивов, передаваемых по каналам компьютерных сетей.
5). Откройте диалоговое окно WinZip Self-Extractor (Генератор самораспаковывающегося архива) и установите флажок Erase any existing files on the new disk before continuing (Предварительно стереть все существующие файлы на гибких дисках).
6). Далее нажмите кнопку OK начнется процесс создания первого тома распределенного архива. По окончании процесса по указанию программы извлеките записанный гибкий диск и вставьте новый.
7). Создав последний том, программа предложит извлечь последний диск и вставить первый для внесения правок в заголовок архива.
Альтернативные архиваторы
Среди альтернативных архиваторов можно выделить 5 программ: Universal Extractor программа, служащая для извлечения данных из архивов практически любых типов; 7-Zip бесплатный файловый архиватор для Windows с высокой степенью сжатия; PeaZip свободный бесплатный архиватор и графическая оболочка для других архиваторов; IZArc бесплатный архиватор для Windows, поддерживающий большое количество форматов; TUGZip простой в использовании архиватор, поддерживающий большое количество форматов. Среди перечисленных архиваторов лидирующие позиции занимает 7-Zip. По степени сжатия он является лучшим не только среди бесплатных программ, но и подавляющего большинства коммерческих продуктов. 7-Zip работает со всеми популярными форматами архивов, поддерживает шифрование, умеет создавать самораспаковывающиеся архивы и обладает многими другими удобными функциями. К недостаткам 7-Zip можно отнести сравнительно малое количество поддерживаемых форматов. Программа IZArc умеет распаковывать около 50 типов архивов, включая многие редкие. Также он может архивировать и сохранять файлы в 12 различных форматах и обрабатывать многотомные ZIP-архивы. Мультиформатный архиватор TUGZip имеет некоторые специальные возможности, например, восстановление поврежденных архивов ZIP и SQX. PeaZip небольшой, бесплатный архиватор с открытыми кодами, как и IZArc поддерживает множество форматов архивов, включая ACE, ARJ, CAB, DMG, ISO, LHA, RAR, и UDF, работает как с 32, так и с 64-битнымы версиями Windows. Universal Extractor нельзя назвать настоящим архиватором, так как сжимать файлы он не умеет, но является наилучшим распаковщиком редких форматов. Огромное количество поддерживаемых форматов делает его лучшим в этом секторе
Интеграция служебных и прикладных программ с OC
Под интеграцией программного обеспечения понимают возможность совместной работы нескольких различных программ в рамках единой системы управления. Так, например, известным системным средством интеграции является концепция внедрения и связывания объектов и основанный на ней буфер обмена Windows. Другим приемом интеграции, в основе которого лежит изменение свойств программы Проводник и связанного с ней контекстного меню объектов. Для эпизодических работ по архивации и извлечению файлов и папок удобнее использовать систему, хорошо интегрированную в Windows, например, WinZip. Для регулярных работ по созданию резервных копий папок и дисков удобнее использовать автономные средства, поскольку для них проще организуется взаимодействие с прочими программами (в частности, со средствами автоматизации). В этих случаях можно рекомендовать, например, программу WinRAR.
1). Запустите программу «Проводник» (Пуск / Программы / Проводник).
2). Скопируйте в созданную папку несколько произвольных файлов.
3). Выделите один из файлов и откройте контекстное меню. Обратите внимание на то, что в нем имеются два пункта для создания архива (создание архива с произвольным именем и с именем, соответствующим текущему файлу). Появление этих пунктов связано с наличием в компьютерной системе диспетчера архивов и интеграции WinZip с Проводником Windows.
4). Выполните команду Add to Zip (Добавить в архив). Далее произойдет автоматический запуск диспетчера архивов WinZip и откроется диалоговое окно Add (Добавление в архив).
5). В поле Add to archive (Добавить в архив) ввести название файла создаваемого архива, адрес текущей папки заносится автоматически. Проверив настройку прочих элементов управления, запустите процесс архивации щелчком на командной кнопке Add (Добавить).
6). Перейдите в окно программы Проводник и убедитесь в том, что в папке появился архивный файл test.zip. Щелкните на значке архивного файла правой кнопкой мыши и изучите новые команды контекстного меню, позволяющие выполнить операции с архивным файлом.
7). Выполните команду Create Self-Extractor (Создать самораспаковывающийся архив). В открывшемся диалоговом окне щелкните на командной кнопке «Да» и в последующих диалоговых окнах откажитесь от проверки созданного архива.
8). Закройте открытые окна программы WinZip и в программе Проводник убедитесь в том, что в рабочей папке появился исполняемый файл (.ехе).
9). В программе Проводник выполните перетаскивание значка любого файла (или группы файлов) на значок созданного ZIP-архива. При отпускании кнопки мыши в конце перетаскивания происходит автоматическое добавление новых файлов в архив. Если содержимое правой панели Проводника открыто в режиме Таблица, после каждого перетаскивания можно наблюдать увеличение размера файла архива.
Исследование свойств форматов сжатия графических данных
1). Откройте графический редактор Paint (Пуск/Программы/Стандартные/ Paint).
2). Загрузите в него заранее подготовленный многоцветный рисунок.
3). Определите размер рисунка в пикселях (Рисунок/Атрибуты).
4). Оцените теоретический размер рисунка в 24-разрядной палитре (3 байта на точку) по формуле:
S=M-N-3,
где S размер файла с рисунком (байт);
М ширина рисунка (точек);
N высота рисунка (точек).
5). Сохраните рисунок в папку C:\Temp\Pictures, выбрав имя файла test и назначив тип файла: 24-разрядный рисунок (.BMP).
6). Повторно сохраните рисунок, выбрав то же имя test, но назначив тип файла .GIF. При сохранении произойдет потеря определенной части графической информации.
7). Восстановите рисунок, загрузив его из ранее сохраненного файла Test.bmp.
8). Вновь сохраните его под тем же именем, но выбрав в качестве типа файла формата .JPEG.
9). Запустите программу Проводник.
10). Откройте папку C:\Temp\Pictures в режиме Таблица.
11). Определите размеры файлов Test.bmp, Test.gif и Test.jpg.
12). Определите коэффициент сжатия файлов (R), взяв отношения размеров файлов к теоретической величине, полученной расчетным путем.
3.4. Вопросы к защите лабораторной работы
3.5. Список рекомендуемой литературы
1. Информатика: Базовый курс / С.В. Симонович и др. СПб.: Питер, 2009.
2. http://www.win-rar.ru/ официальный сайт в России.