ГЛАВА 1. ОСНОВЫ РАБОТЫ В ОПЕРАЦИОННОЙ СИСТЕМЕ LINUX. ИНТЕРПРЕТАТОР SHELL
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ............................................................................................................... 6
ГЛАВА 1. ОСНОВЫ РАБОТЫ В ОПЕРАЦИОННОЙ СИСТЕМЕ LINUX. ИНТЕРПРЕТАТОР SHELL..................................................................................... 9
1.1. Введение в ОС UNIX................................................................................................................ 9
1.1.1 Файловая система ОС Linux............................................................................................. 11
1.1.2. Организация процессов.................................................................................................. 14
1.2. Командный интерпретатор shell..................................................................................... 16
1.2.1. Переменные языка shell................................................................................................ 17
1.2.2. Команды языка shell....................................................................................................... 19
Команды работы с файлами и каталогами................................................ 21
Команда cat............................................................................................. 21
Команда ls................................................................................................ 22
Команда cp.............................................................................................. 23
Команда rm............................................................................................. 24
Команда mount/umount......................................................................... 25
Команда chmod....................................................................................... 26
Команды ввода-вывода. Перенаправление потоков ввода-вывода......... 29
Команда echo........................................................................................... 30
Команда printf......................................................................................... 30
Команда tail............................................................................................. 31
|
|
Команды, используемые для обработки текстовой информации............ 32
Команда транслитерации tr.................................................................... 32
Команда сортировки sort........................................................................ 35
Команда унификации строк uniq........................................................... 36
Команды поиска по образу grep , egrep и fgrep.................................... 38
Работа с переменными................................................................................ 41
Команда инициализации переменных read............................................ 41
Команда set.............................................................................................. 42
Команда unset.......................................................................................... 43
Команды проверки условий....................................................................... 43
Команда test............................................................................................. 43
Обработка арифметических, логических и строковых выражений......... 46
Команда expr........................................................................................... 46
Команда let.............................................................................................. 49
1.2.3. Управляющие конструкции.......................................................................................... 51
Оператор цикла с перечислением for..................................................... 51
Управление циклами с помощью команд break и continue.................. 52
Условный оператор if............................................................................. 52
|
|
Коды завершения....................................................................................... 53
Команда exit............................................................................................ 53
1.2.4. Правила применения кавычек в shell.......................................................................... 54
Одинарные ' ' и двойные " " кавычки....................................................... 54
Обратные кавычки ` `................................................................................ 54
1.3. Конвейерная обработка текстовой информации........................................................ 55
ГЛАВА 2. ОБРАБОТКА РЕГУЛЯРНОЙ ИНФОРМАЦИИ.............................. 57
2.1. Общие сведения о регулярных выражениях................................................................. 58
Элементы регулярных выражений............................................................ 58
Литералы и литеральные константы в регулярных выражениях............ 58
Экранирование метасимволов................................................................... 59
Метасимволы и операторы в регулярных выражениях........................... 60
Якорные метасимволы............................................................................... 61
Метасимвол ............................................................................................. 61
Метасимвол ^........................................................................................... 62
Метасимвол $........................................................................................... 62
Выбор альтернатив.................................................................................... 62
Классы символов [ ]................................................................................... 63
|
|
Квантификаторы......................................................................................... 66
Квантификатор ?..................................................................................... 66
Квантификатор *..................................................................................... 66
Квантификатор +.................................................................................... 66
Интервальный квантификатор { }......................................................... 67
Группировка и ограничение...................................................................... 67
Приоритеты операций в регулярных выражениях................................... 68
2.2. Примеры использования регулярных выражений...................................................... 69
2.3. Команда grep и регулярные выражения........................................................................ 69
ГЛАВА 3. ОБРАБОТКА ВРЕМЕНИ И ДАТЫ................................................... 71
3.1. Обработка времени и даты на языке Cи......................................................................... 71
3.1.1. Основные функции работы со временем.................................................................... 71
Функция time ()......................................................................................... 71
Функция ctime() / ctime _ r()...................................................................... 72
Функция difftime()................................................................................... 73
Функции localtime() и gmtime().............................................................. 75
Функция asctime() / asctime _ r()............................................................... 76
|
|
Функция mktime()................................................................................... 76
Функция strftime()................................................................................... 78
3.2. Обработка времени и даты на языке Shell..................................................................... 80
ГЛАВА 4. КОДИРОВАНИЕ ИНФОРМАЦИИ................................................... 85
4.1. Виды кодировок................................................................................................................. 85
4.1.1. Кодировка ASCII.............................................................................. 85
4.1.2. Кодировка KOI-8.............................................................................................................. 87
4.1.3. Кодировка Windows 1251.............................................................................................. 88
4.2. Перекодировка текстовых файлов на языке Cи........................................................... 90
4.2.1. Функции работы с потоками ввода-вывода............................................................... 90
Функция открытия потока fopen ()......................................................... 90
Функция закрытия потока fclose().......................................................... 92
4.2.2. Функции чтения из файла.............................................................................................. 93
Чтение символа из файла........................................................................ 93
Форматный вывод из файла................................................................... 93
Чтение строки из файла........................................................................... 93
Чтение блока данных из файла............................................................... 94
4.2.3. Функции записи в файл................................................................................................... 94
Запись символа в файл fputc()................................................................ 94
Форматный ввод в файл fprintf().......................................................... 94
Запись строки в файл.............................................................................. 95
Запись блока данных в файл................................................................... 95
4.2.4. Функции позиционирования......................................................................................... 96
Установка указателя на начало файла................................................... 96
Установка указателя в произвольное место файла................................ 96
4.3. Перекодировка текстовых файлов на языке shell....................................................... 98
ГЛАВА 5. БАЗОВЫЕ АЛГОРИТМЫ ИНФОРМАЦИОННОЙ ОБРАБОТКИ ДАННЫХ............................................................................................................... 101
5.1. Алгоритмы сортировки данных.................................................................................... 101
5.1.1. Постановка задачи сортировки.................................................................................. 103
5.1.2 Сортировка вставками.................................................................................................. 104
Метод простых вставок (метод прямого включения)............................. 104
Метод бинарных (двоичных) включений................................................ 105
Сортировка методом Шелла.................................................................... 105
4.1.3. Обменная сортировка.................................................................................................. 107
Метод прямого обмена (пузырьковая сортировка)................................ 107
Шейкерная сортировка (сортировка перемешиванием)......................... 109
Быстрая сортировка................................................................................. 110
5.1.4. Сортировка выбором................................................................................................... 112
Сортировка методом прямого выбора.................................................... 113
5.1.5. Сортировка слиянием.................................................................................................. 114
Сортировка методом простого слияния.................................................. 115
5.1.6. Поразрядная сортировка............................................................................................ 116
MSD и LSD сортировки........................................................................... 116
5.2. Методы поиска информации.......................................................................................... 118
5.2.1. Постановка задачи поиска.......................................................................................... 119
5.2.1 Методы поиска, основанные на сравнении ключей................................................ 119
Последовательный поиск......................................................................... 119
Бинарный поиск........................................................................................ 120
Интерполяционный поиск........................................................................ 122
5.2.2. Хэширование.................................................................................................................. 124
Методы задания хэш-функций.............................................................................................. 126
Метод прямого доступа........................................................................... 126
Метод деления.......................................................................................... 126
Метод умножения (мультипликативный метод)...................................... 126
Аддитивный метод.................................................................................... 127
Методы обработки коллизий................................................................................................ 128
Метод цепочек (закрытое хэширование)................................................. 128
Метод линейного опробования (открытое хэширование)...................... 129
Метод повторного хэширования............................................................. 131
ГЛАВА 6. СИСТЕМЫ СЧИСЛЕНИЯ............................................................... 133
6.1. История возникновения систем счисления................................................................. 135
6.2. Постановка задачи перевода чисел из одной системы счисления в другую......... 136
6.3. Методы перевода чисел из одной системы счисления в другую............................ 137
Схема Горнера.......................................................................................... 137
Метод перевода целых чисел делением на новое основание.................. 140
Метод перевода правильных дробей путем умножения на новое основание 141
Перевод конечной позиционной дроби к виду обыкновенной дроби... 144
Метод перевода периодической дроби к виду обыкновенной дроби.... 146
Метод перевода с использованием промежуточного основания........... 148
СПИСОК РЕКОМЕНДОВАННОЙ ЛИТЕРАТУРЫ....................................... 151
Приложение 1......................................................................................................... 152
МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ПРАКТИЧЕСКОГО ЗАНЯТИ ПО ИНФОРМАТИКЕ................................................................................................. 152
КОНВЕЙЕРНАЯ ОБРАБОТКА ТЕКСТОВЫХ ФАЙЛОВ.......................................................... 152
ПРОГРАММИРОВАНИЕ СИМВОЛЬНЫХ ДАННЫХ............................................................... 155
ПРОГРАММИРОВАНИЕ ВРЕМЕНИ И ДАТЫ.......................................................................... 158
ПЕРЕКОДИРОВКА ТЕКСТА...................................................................................................... 161
ВВЕДЕНИЕ
Информатика – это комплексная общетехническая дисциплина, которая изучает вопросы компьютерной обработки информации. Это название впервые было предложено французской Академией наук в середине 60-тых годов прошлого века.
Термин «информатика» образован путем сложения двух французских слов: information (информатика) и automatique (автоматика), что в сочетании определяется как «автоматическая обработка информации».
В структуре информатики можно выделить три взаимосвязанные части: аппаратную (hardware), алгоритмическую (brainware) и программную (software).
Современная информатика объединяет в себе комплекс самостоятельных компьютерных дисциплин. К ним относятся:
1. Программные средства компьютерной обработки информации (операционные системы и различные программные продукты).
2. Компьютерная математика (арифметика и алгебра).
3. Построение и анализ алгоритмов вычислительной обработки данных (например, алгоритмы сортировки и поиска информации).
4. Изучение абстрактных структур данных (массивов, стеков, деревьев, списков, очередей, графов и пр.).
5. Кодирование и передача информации.
6. Формальные языки и конечные автоматы.
7. Двоичное кодирование информации.
8. Программное управление.
9. Однородность памяти. ???
10. Адресность. ???
Представленный список дисциплин, каждая из которых заслуживает самостоятельного изучения, в комплексе составляют предмет информатика.
Основными задачами, которые решаются посредством информатики, являются:
1. Изучение всех видов информационных процессов;
2. Разработка новых видов техники, связанной с обработкой информации;
3. Создание эффективных технологий обработки информации;
4. Решение научных и инженерных задач различных сфер жизнедеятельности человека.
Ключевым понятием, являющимся основным фактором развития информатики является эффективность. Вся деятельность ученых, работающих в сфере информатики, ориентирована на улучшение этого показателя. Для этого разрабатываются новые методы и алгоритмы, технические системы и пр.
Хотя информатика является относительно новой дисциплиной, она имеет глубокую историю. Первые счеты – а́бак, были созданы 3000 лет до н.э. и многократно усовершенствовались и модифицировались. Принято считать, что предпосылки к созданию такой науки, как информатика, возникли еще в XVI веке, когда человек впервые попытался автоматизировать вычислительные операции.
Основоположником дисциплины информатика принято считать Го́тфрида Лейбница (1646 - 1716) – саксонского философа, логика, математика, физика и изобретателя. Он описал двоичную систему счисления с числами 0 и 1, заложил основы комбинаторики, математической логики и математического анализа (дифференциальные и интегральные исчисления). В 1673 году Лейбниц создал первую вычислительную машину – механический калькулятор (арифометр), который мог выполнять сложение, вычитание, умножение и деление чисел в десятичной системе счисления, а также извлечение квадратных корней и возведение в степень. Машина выполняла вычисления при помощи связанных друг с другом шестеренок и шагающих цилиндров (изобретение Лейбница). Шагающий цилиндр представлял собой цилиндр с набором зубьев увеличивающейся длины, расположенных по кругу на его боковой поверхности. Зубья входили в зацепление с счетным колесом, являющимся сумматором, проворачивая его необходимое число раз. Колесо переноса разряда срабатывало при переполнении.
Еще до создания первых вычислительных машин человек научился систематизировать и упорядочивать большие объемы информации. Примером такой систематизации можно считать стойки с ящиками, в которых хранятся карточки. Это – каталоги, используемые в библиотеке для хранения данных об их книжном фонде. Широкое внедрение средств ЭВМ привело к автоматизации способов хранения и поиска данных, разработки эффективных методов их реализации.
В 1934 г. первая механическая программируемая вычислительная машина была создана немецкими учеными. Ее разработчиком принято считать Конрада Цузе. Последующие усовершенствования машины привели к тому, что в 1941 году была создана машина, обладающая свойствами современных компьютеров (двоичная система счисления и т.д.).
В России, а точнее в СССР, первая цифровая электронная вычислительная машина была разработана и зарегистрирована в 1948 году (изобретатели – И. С. Брук и Б. И. Рамеев).
Представить себе современный мир без средств информатик невозможна. Она вошла во все сферы жизнедеятельности человека, существенно облегчив его жизнь.
ГЛАВА 1. ОСНОВЫ РАБОТЫ В ОПЕРАЦИОННОЙ СИСТЕМЕ LINUX. ИНТЕРПРЕТАТОР SHELL
В общем случае под операционной системой (ОС) понимают совокупность программ для управления вычислительными ресурсами компьютера, а также обеспечения его взаимодействия с пользователем. Операционные системы по праву считаются основной, наиболее важной (а в некоторых случаях и единственной) частью программного обеспечения компьютера. В настоящее время наиболее распространенными видами являются UNIX-подобные операционные системы и ОС Windows.
Введение в ОС UNIX
Принято считать, что ОС UNIX была создана в конце 60-х годов в исследовательском центре Bell Telephon Laboratories. Автором первой версии ОС UNIX является Кен Томпсон. Впоследствии реализацией и усовершенствованием UNIX принимал участие большой коллектив разработчиков, в состав которого входили Б. Керниган, Д. Ритчи, Р. Пайк и многие другие.
Важным фактом, который во многом предопределил широкое распространение UNIX в дальнейшем, является то, что операционная система изначально задумывалась как программная среда для коллективного использования.
Изначально разработчики не предполагали широкое коммерческое использование своего программного продукта – ОС UNIX разрабатывалась для решения внутренних задач лаборатории.
Про UNIX часто говорят, что это «система, которая сделана программистами для программистов». Это объясняет некоторые ее особенности. Во-первых система отличается концептуальной стройностью, свойственной высокому уровню написания программ. При этом UNIX требует высокой компьютерной грамотности пользователей и программистов, выбравших данную среду в качестве рабочей.
Значимый вклад в разработку UNIX внес Деннис Ритчи. В 1972-1973 годах он совместно с Кеном Томпсоном создали новую версию ОС UNIX, для чего Д. Ритчи разработал новый язык программирования – Си. Язык Си стал неотъемлемой часть ОС UNIX, по некоторым оценкам более 90% программного кода UNIX написано именно на этом языке программирования (остальные 10% на ассемблере).
С самого начала своего развития ОС UNIX была открытой системой и свободно распространялась на рынке. Особую популярность система имела в технических университетах, научных центрах и лабораториях. Там система не только использовалась, но и активно развивалась, дополнялась и совершенствовалась.
Множество достоинств ОС UNIX непрерывно повышали интерес к данному программному продукту. Многие IT-компании разрабатывали коммерческие версии ОС на основе UNIX и успешно продвигали их на рынке программного обеспечения.
OC UNIX сегодня – это полноценная многопользовательская, многозадачная и многотерминальная операционная система (а точнее семейство совместимых на уровне исходных текстов программ операционных систем).
В основу разработки ОС UNIX были положены следующие базовые концепции:
1. Организация концепции выполнения программ.
2. Файловая структура.
3. Система ввода-вывода.
4. Многопользовательский режим работы.
5. Командный процессор.
6. Командные улиты.
7. Инструментальная среда.
8. Графическая и одновременно сетевая операционная среда.
Важным достоинством ОС UNIX является высокая мобильность. Это значит, что операционная система легко переносится на различные аппаратные платформы. Все части системы (кроме ядра) полностью машинно-независимые. Такая мобильность достигается за счет того, что все модули написаны на языке Си и при переносе их достаточно просто перекомпилировать.
В завершении обзора ОС UNIX хотелось бы отметить Linux – группу свободных и открытых UNIX-подобных ОС. К основным достоинствам Linux можно отнести:
· бесплатное распространение;
· надежность (при корректной работе аппаратной части Linux может работать годами без перезагрузки);
· безопасность (практически нет вирусов, таким образом не надо ставить тормозящие работу антивирусные программы);
· открытый исходный код дает возможность модифицировать его, ориентируясь на свои потребности, расширять функциональность путем написания дополнении и программ.
Популярность Linux непрерывно растет. Сегодня ОС семейства Linux имеют красивый и привычный пользователю оконный интерфейс, малоотличимый от интерфейса ОС Windows или MacOS. Пользователи имеют возможность работать в привычных офисных программах, осуществлять поиск в сети Интернет, играть в игры, смотреть фильмы, общаться в Skype и т. д. Наиболее известными Linux-операционными системами сегодня являются Ubuntu, Mint, Slackware, Fedora и прочие.
Файловая система ОС Linux
Все данные и результаты, полученные в ходе работы на компьютере, хранятся на жестком диске. Это энергонезависимое устройство хранения данных, содержимое которого, в отличие от содержимого оперативной памяти, не очищается каждый раз при перезагрузке компьютера.
Основное назначение файловой системы – предоставление организованного пространства для хранения данных на жестком диске. Эта функция требует определения пространства имен файлов (состав алфавита, максимально-допустимая длина имени и пр.) и логической структуры их хранения (иерархия каталогов и пр.).
Файловая система Linux в корне отличается от файловой системы Windows. В Windows файловая система не делится на тома или диски, а представляет собой древовидную структуру, вершиной которого является корневой каталог. Корневой каталог обозначается символом ' / ' и имена всех других каталогов начинаются с него (например, /home/user ). Перечисленные таким образом каталоги образуют так называемый путь. Если путь начинается с символа ' / ', то путь считается полным, в противном случае – относительным.
Структура файловых систем Windows и Linux приведена на рисунке 1.1.
а) Windows | б) Linux |
Рис. 1.1. Структура файловых систем
А) Windows б ) Linux
К любому файлу в системе можно обратиться, используя его путь – последовательность каталогов, завершающаяся именем самого файла. Алфавитом файловой системы являются все символы кодировки ASCII. Максимальная длина имени файла – 255 символов; использование косой черты в имени запрещено; указание расширения файла не обязательно.
Важной особенностью файловой системы Linux является то, что корневой каталог в ней всегда один. Все остальные каталоги вложены в него. Следовательно с точки зрения пользователя, файловая система представляет собой единой целое.
Древовидная структура файловой системы не допускает наличия циклов. Это значит, что каталог не может содержать каталог, в котором содержится сам.
Основные каталоги файловой системы ОС Linux и их назначение представлены в таблице 1.1.
Таблица 1.1
Дата добавления: 2020-01-07; просмотров: 209; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!