- •Министерство образования и науки Украины
- •Практическое занятие №1
- •1.1. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления
- •1.2. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные
- •1.3. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные
- •1.4. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №2
- •1.1. Вход в систему
- •1.2. Редактирование командной строки
- •1.3. Память командных строк
- •1.4. Переключение виртуальных консолей
- •1.5. Изменение консольных шрифтов
- •1.6. Основные команды
- •Выполнение некоторых команд
- •2. Команда просмотра содержимого каталогов -ls (LiSt) – выдает на экран перечень файлов и каталогов (по умолчанию из текущего каталога).
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3. Команда создание новых каталогов - mkdir.
- •5. Команда копирование файлов -cp (CoPy).
- •6. Команда перемещение файлов - mv (MoVe).
- •7. Команда удаление файлов - rm (ReMove).
- •8. Команды просмотра содержимого файлов more и cat.
- •Подстановочные символы
- •1.7. Выход из системы
- •2. Упражнения
- •Используя справочную информацию из п.1.6 Основные команды, изучите работу рассмотренных команд с различными параметрами и опциями:
- •1.2. Перенаправление ввода и вывода
- •1.3. Перенаправление с добавлением
- •1.4. Использование конвейера
- •2. Упражнения
- •3. Содержание отчёта
- •Справочная информация
- •Практическое занятие №4 Псевдонимы команд в ос qnx Цель – создание псевдонимов команд для облегчения работы в среде ос qnx
- •1. Краткие теоретические сведения
- •1.1. Управление связями файлов
- •1.2. Жесткие связи
- •1.3. Символические связи
- •1.4. Права доступа к файлам
- •1.5. Зависимости
- •1.6. Изменение прав доступа
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Сравнение файлов (команда diff)
- •1.3. Подсчет числа слов, строк и байт в файле (команда wc)
- •1.4. Потоковый редактор sed
- •2. Упражнения
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •/Usr/xpg4/bin/grep
- •Операнды
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •Использование
- •Работа с большими файлами
- •/Usr/bin/who
- •/Usr/xpg4/bin/who
- •Операнды
- •1.1. Ввод текста
- •1.2. Редактирование текста
- •1.3. Сохранение файлов и выход из VI
- •1.4. Редактирование еще одного файла
- •1.5. Включение других файлов
- •1.6. Выполнение команд Shell
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №7 Работа с текстовыми файлами Цель – знакомство с командами, работающими с текстовыми файлами (awk-интерпретатор скриптовый)
- •1. Краткие теоретические сведения
- •1.1. Язык awk
- •1.2. Регулярные выражения
- •Метасимволы, используемые в регулярных выражениях
- •1.3. Действия
- •1.4. Awk-переменные и выражения
- •1.5. Использование операций
- •1.6. Использование массивов
- •1.7. Селекторы
- •1.8. Использование операторов
- •1.9. Ввод и вывод данных
- •1.10. Встроенные функции
- •2. Упражнения
- •Структура файла query1
- •Структура файла query2
- •3. Содержание отчёта
- •1.2. Граматика языка shell
- •2. Упражнения
- •3. Содержание отчёта
- •Выполнить:
- •2. Упражнения
- •Примечание:
- •3. Содержание отчёта
- •1.1. Компоновка объектных модулей
- •1.2. Отладка
- •2. Упражнения
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •Задание №5
- •Задание №6
- •Задание №13
- •Задание №14
- •Задание №15
- •Задание №16
- •Задание №17
- •Практическое занятие №11
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Создание каталога
- •1.3. Биты режима для прав доступа
- •1.4. Удаление каталога
- •1.5. Создание жесткой связи
- •1.6. Создание символической связи
- •1.7. Чтение символической связи
- •1.8. Переименование файла
- •1.9. Удаление файла
- •1.10. Обработка ошибок
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Проверка возможностей управления работой и процессами в shell
- •2. Упражнения
- •3. Содержание отчёта
- •1.3. Ошибки, связанные с именами файлов
- •1.4. Доступ к файлу
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №15 Организация процессов вQnx
- •1. Методические указания по выполнению практической работы
- •1.1. Файл main.O
- •1.2. Файл input.C
- •1.3. Файл output.C
- •1.4. Файл process.C
- •1.5. Используемые функции
- •1.6. Получение информации о процессах
- •2. Упражнения
- •1.2. Клиент
- •1.3. Определение идентификаторов узла, процесса и канала (nd/pid/chid) нужного сервера
- •1.4. Применение обмена сообщениями
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №17 Организация потоков в qnx
- •1. Краткие теоретические сведения
- •1.1. Запуск потока
- •1.2. Администрирование атрибутов потока
- •Текст программы
- •Результаты
- •1.2. Текст программы
- •1.3. Последовательность действий
- •1.4. Результаты
- •2. Упражнения
- •3. Содержание отчёта
Практическое занятие №1
С
Цели:
усвоить основные понятия систем счисления,
понять методику работы с числами, представленными в различных системах счисления (двоичной, восьмеричной и шестнадцатеричной),
научиться записывать двоичные числа в виде восьмеричных и шестнадцатеричных чисел,
научиться преобразовывать восьмеричные и шестнадцатеричные числа к двоичному виду,
научиться выполнять прямое и обратное преобразование десятичных чисел и их двоичных, восьмеричных и шестнадцатеричных эквивалентов.
1. Краткие теоретические сведения
Для работы над проектами программного обеспечения (ППО), активно взаимодействующего с аппаратными средствами на «машинном уровне», необходимо знание основных систем представления чисел. Такие ППО включают в себя: операционные системы, программное обеспечение работы в сети, компиляторы, системы управления базами данных и прикладные программы, от которых требуется высокая эффективность работы.
Когда в программе на С++ мы используем целое число типа 227 или -63, то предполагаем, что оно записано в десятичной системе счисления (с основанием 10). Цифрами в десятичной системе счисления являются 0, 1, 2, 3, 4, 5, 6, 7, 8, и 9. Самая младшая цифра - 0, а самая старшая цифра - 9; она на единицу меньше, чем 10, являющееся основанием системы счисления. Для внутреннего представления данных в компьютере используется двоичная система счисления (с основанием 2). Двоичная система счисления обходится только двумя цифрами, а именно, 0 и 1. Самая младшая цифра - 0, а самая старшая цифра - 1, она на единицу меньше основания системы счисления 2.
Двоичные числа намного длиннее их десятичных эквивалентов. Программистам, пишущим на ассемблере или на языках высокого уровня, которые, подобно С++, дают возможность работать и на «машинном уровне», неудобно использовать двоичные числа. Они предпочитают две другие системы счисления: восьмеричную систему счисления (с основанием 8) и шестнадцатеричную систему счисления (с основанием 16), завоевавшие себе популярность, прежде всего возможностью сокращенной записи двоичного числа.
В восьмеричной системе счисления используются цифры от 0 до 7. Поскольку и в двоичной системе счисления, и в восьмеричной системе применяется меньшее количество цифр, чем в десятичной системе счисления, то в качестве цифр в этих системам просто используются соответствующие цифры десятичной системы.
В шестнадцатеричной системе счисления возникает проблема, связанная с тем, что для записи чисел требуется уже шестнадцать цифр: самая младшая цифра - 0, и самая старшая цифра должна иметь десятичное значение 15 (на единицу меньшее, чем основание системы 16). В соответствии с принятым соглашением, для представления шестнадцатеричных цифр, соответствующих десятичным значениям от 10 до 15, используются символы от A до F. Таким образом, в шестнадцатеричной записи мы можем встретить числа типа 876, состоящие исключительно из цифр десятичной системы счисления, и числа типа 8A55F, состоящие из цифр и букв, и числа вида FEE, состоящих исключительно из букв. Иногда попадаются шестнадцатеричные числа типа FACE или FEED, имеющие второй смысл (в переводе ЛИЦО и ПИЩА), что кажется странным для некоторых программистов, привыкших работать с десятичными числами.
Каждая из перечисленных систем счисления использует позиционную запись, когда каждая позиция, в которой записывается цифра, имеет свое позиционное значение. Например, про десятичное число 937 мы говорим, что цифра 7 записана в позиции единиц, цифра 3 записана в позиции десятков и 9 – в позиции сотен (цифры 9, 3 и 7, при этом, называются числовыми значениями). Обратите внимание, что значения этих позиций равны основанию системы счисления (в данном случае – 10), возведенному в степень, начинающуюся с нулевой и увеличивающуюся на 1 при перемещении в числе на одну позицию влево.
Значения позиций в десятичной системе счисления
| |||
Десятичная цифра |
9 |
3 |
7 |
Название позиции |
Сотни |
Десятки |
Единицы |
Позиционное значение |
100 |
10 |
1 |
Значение позиции как степень основания (10) |
102 |
101 |
100 |
Для более длинных десятичных чисел, чем те, что мы взяли в качестве примера, следующими позициями слева будут позиции: тысяч (10 в степени 3), десятков тысяч (10 в степени 4), сотен тысяч (10 в степени 5), миллионов (10 в степени 6), десятков миллионов (10 в степени 7) и так далее.
Про двоичное число 101 мы говорим, что его самая правая единица записана в позиции единиц, 0 записан в позиции двоек, а самая левая единица находится в позиции четверок. Обратите внимание, что каждая из этих позиций имеет значение, равное степени основания системы счисления (в данном случае 2), и что значение степени начинается со значения 0 и увеличивается на 1 при перемещении в числе на одну позицию влево.
Значения позиций в двоичной системе счисления | |||
Двоичная цифра |
1 |
0 |
1 |
Название позиции |
Четверки |
Двойки |
Единицы |
Позиционное значение |
4 |
2 |
1 |
Значение позиции как степень основания (2) |
22 |
21 |
20 |
Для более длинных двоичных чисел следующими позициями слева будут позиция восьми (2 в степени 3), позиция шестнадцати (2 в степени 4), позиция тридцати двух: (2 в степени 5), позиция шестидесяти четырех (2 в степени 6) и так далее.
В восьмеричном числе 425 цифра 5 записана в позиции единиц, цифра 2 записана в позиции восьми и 4 – в позиции шестидесяти четырех. Заметьте, что значение каждой из этих позиций равно степени основания системы счисления (в этом случае равной 8) и что показатель степени изменяется от 0, увеличиваясь на 1 при передвижении в числе на одну позицию влево.
Значения позиций в восьмеричной системе счисления
| |||
Двоичная цифра |
4 |
2 |
5 |
Назвать позиции |
Шестьдесят четыре |
Восьмерки |
Единицы |
Позиционное значение |
64 |
8 |
1 |
Значение позиции как степень основания (8) |
82 |
81 |
80 |
Для больших по величине восьмеричных чисел, следующие позиции слева будут позиции пятисот двенадцати (8 в степени 3), четырех тысяч девяноста шести (8 в степени 4), тридцати двух тысяч семисот шестидесяти восьми (8 в степени 5) и так далее.
В шестнадцатеричном числе 3DA цифра А записана в позиции единиц, цифра D записана в позиции шестнадцати и 3 – в позиции двухсот пятидесяти шести. Значение каждой из этих позиций равно основанию системы счисления (в данном случае 16), возведенному в степень, показатель которой при продвижении в числе на одну позицию влево увеличивается на 1, а начинается со значения 0.
Значения позиций в шестнадцатеричной системе счисления | |||
Двоичная цифра |
3 |
D |
А |
Название позиции |
Двести пятьдесят шесть |
Шестнадцать |
Единицы |
Позиционное значение |
256 |
16 |
1 |
Значение позиции как степень основания (16) |
162 |
161 |
160 |
Для шестнадцатеричных чисел большей длины следующими левыми позициями будут позиции четырех тысяч девяноста шести (16 в степени 3), тридцати двух тысяч семисот шестидесяти восьми (16 в степени 4) и так далее.