812.73K
Category: programmingprogramming

Основы информатики

1.

Глава 1
Основы информатики

2.

1. Основы информатики
1.1. Алгоритмы
Слово "алгоритм" увековечило известного в далеком прошлом
математика аль Хорезми, от имени которого оно и произошло.
В IX веке аль Хорезми сформулировал правила выполнения четырех
арифметических действий.
def: АЛГОРИТМ – однозначно трактуемая (исполнителем) процедура
решения задачи, включающая конечную последовательность точно
определенных шагов или операций, для выполнения которых
(исполнителю) требуется конечный объем памяти и конечное время.
Действия могут быть любыми, но всегда должны быть
определены начальные условия и конечный
результат.
Для любых начальных условий, удовлетворяющих
заданию на алгоритм, последний должен дать
правильный результат. Это правильный алгоритм.

3.

Пирог творожный
Начальные условия:
* мука - 2 стакана
* сливочное масло - 200 грамм
* творог - 200 грамм
* сгущенное молоко - 1 банка
* орехи грецкие
Собственно, алгоритм:
1. размельчить масло
2. тщательно растереть его с творогом
3. добавить муку
4. замесить тесто и оставить его на холоде на 20-30 минут
5. проварить сгущенное молоко 20-30 мин
6. раскатать из теста 4 коржа
7. выпечь коржи
8. смазать коржи горячей сгущенкой
9. посыпать коржи орехами
10. положить коржи один на другой
Вот такой вот пирог.

4.

СФОРМИРОВАТЬ СЧЕТ
ОПРЕДЕЛИТЬ СУММУ ПОКУПКИ
в каждой строке счета:
сумма = кол-во * цена
сложить суммы по всем строкам
ЕСЛИ СУММА ПОКУПКИ > 1000 руб. ТО
ОПРЕДЕЛИТЬ СУММУ СКИДКИ
определить тип клиента
определить величину скидки в процентах
сумма скидка = сумма покупки * процент / 10
ОПРЕДЕЛИТЬ ИТОГ
итог = сумма покупки - скидка
НАПЕЧАТАТЬ СЧЕТ
ЗАРЕГИСТРИРОВАТЬ СЧЕТ В ЖУРНАЛЕ
Работаем с разными уровнями детализации =>
уменьшаем сложность программирования и количество ошибок =>
ускоряем разработку программ.
Такие простые алгоритмы полезно записывать в комментариях.
ВЫВОД: Алгоритм можно написать на СТРУКТУРНОМ
ЕСТЕСТВЕННОМ ЯЗЫКЕ, если Вы его знаете!!!!!!!

5.

Один
важный
момент,
касающийся
алгоритмов: алгоритм должен быть
понятен исполнителю.
Исполнители могут быть разными –>
конкретность
алгоритма
для
исполнителя.
Исполнителя хаpактеpизуют:
• сpеда;
• cистема команд;
• элементаpные
действия;
(результат
выполнения команды)
• отказы.(когда команда задана при
недопустимом состоянии среды)

6.

СВОЙСТВА алгоритма
• Понятность для исполнителя — т.е. исполнитель алгоритма
должен знать, как его выполнять.
• Дискpетность (прерывность, раздельность) — т.е. алгоpитм
должен пpедставлять пpоцесс pешения задачи как
последовательное выполнение пpостых (или pанее
опpеделенных) шагов (этапов).
• Опpеделенность — т.е. каждое пpавило алгоpитма должно
быть четким, однозначным и не оставлять места для пpоизвола.
Благодаpя этому свойству выполнение алгоpитма носит
механический хаpактеp и не тpебует никаких дополнительных
указаний или сведений о pешаемой задаче.
• Pезультативность (или конечность). Это свойство состоит в
том, что алгоpитм должен пpиводить к pешению задачи за
конечное число шагов.
• Массовость. Это означает, что алгоpитм pешения задачи
pазpабатывается в общем виде, т.е. он должен быть пpименим
для некотоpого класса задач, pазличающихся лишь исходными
данными. Пpи этом исходные данные могут выбиpаться из
некотоpой области, котоpая называется областью
пpименимости алгоpитма.

7.

Почти всегда составитель алгоритма и исполнитель - разные лица.
И Вам надо побеспокоиться о том, чтобы Ваш алгоритм был
понятен исполнителю.
Алгоритм может быть записан в любой форме: на естественном
языке, на каком-либо символическом языке, на языке схем и т.д.
Например, математические выражения - это тоже алгоритмы для
тех кто знает математику:
Пример:
(2^3+4)+2*5
Это простое выражение (алгоритм) с математического языка
можно перевести на естественный (словесный) язык:
1. возвести 2 в третью степень (получим 8)
2. к 8 прибавить 4 (получим 12)
3. умножить 2 на 5 (получим 10)
4. к 12 прибавить 10 (получим 22)
Если исполнитель - компьютер, то алгоритм записывается на
языке программирования, который данный компьютер
«понимает».

8.

ЭФФЕКТИВНОСТЬ алгоритма на примере
перестановки 2-х чисел a и b
tmp = a
a
= b
b
= tmp
a=a+b
b=a–b
a=a–b
a = a xor b
b = a xor b
a = a xor b
a=01
Исключающее ИЛИ
xor, NEQV, ^
b = 10
01 xor 10 = 11
11 xor 10 = 01
11 xor 01 = 10

9.

Целесообразно перед написанием самой программы
написать алгоритм ее работы, т.е. определить что и как
должна делать программа без углубления в синтаксис
конкретного языка программирования. Это позволяет не
утонуть в деталях и видеть основную цель работы.
На практике наиболее распространены следующие формы
представления алгоритмов:
словесная (записи на естественном языке);
графическая (изображения из графических символов);
псевдокоды (полуформализованные описания алгоритмов
на условном алгоритмическом языке, включающие в себя
как элементы языка программирования, так и фразы
естественного языка, общепринятые математические
обозначения и др.);
программная (тексты на языках программирования).

10.

Псевдокод представляет собой систему обозначений и правил,
предназначенную для единообразной записи алгоритмов
Основные служебные слова
алг (алгоритм)
сим (символьный)
дано
для
да
арг (аргумент)
лит (литерный)
надо
от
нет
рез (результат)
лог (логический)
если
до
при
нач (начало)
таб(таблица)
то
знач
выбор
кон (конец)
нц (начало цикла)
иначе
и
ввод
цел (целый)
кц (конец цикла)
все
или
вывод
вещ (вещественный)
длин (длина)
пока
не
утв
Общий вид алгоритма,записанного на псевдокоде:
алг название алгоритма (аргументы и результаты)
дано условия применимости алгоритма
надо цель выполнения алгоритма
нач описание промежуточных величин
последовательность команд (тело алгоритма)
кон
Часть алгоритма от слова алг до слова нач называется заголовком,
а часть, заключенная между словами нач и кон — телом алгоритма.

11.

Графическое описание алгоритмов выполняется с помощью
блок-схем, составленных из последовательности блоков,
предписывающих выполнение отдельных операций, и связей
между ними.
Правила оформления блок-схем
1. внутри блоков помещается информация, поясняющая действия;
2. конфигурация блоков и размеры оговорены ГОСТом;
3. каждый блок снабжается номером в разрыве контура блока в
левой верхней части;
4. высота блока (размер a) выбирается из ряда 10, 15, 20…мм;
5. ширина блока (размер b) выбирается как b=1,5×a;
6. в схемах, не являющихся документацией (плакаты, курсовые
работы), можно увеличить ширину блока для удобства записи
информации;
7. ход вычислительного процесса изображается линиями связи;
8. линии связи обязательно имеют стрелки, если они направлены
снизу вверх или справа налево – в остальных случаях стрелки
необязательны.
Преимущества графического описания алгоритмов
1. наглядность;
2. читаемость;
3. явное отображение управления;
4. имеет стандарт изображения элементов.

12.

• Типы вершин блок-схем
алгоритмов
• Блок-схема – ориентированный граф,
указывающий порядок исполнения
команд алгоритма.
Существует только три типа вершин.
1. Функциональная вершина – имеет один
вход и один выход.
2. Предикатная вершина – имеет один вход и
два выхода. Функция Р передает управление
по одной из ветвей в зависимости от значения
функции Р.
3. Объединяющая вершина – обеспечивает
передачу управления от одного из двух входов
к выходу
F
true
P
false

13.

В таблице приведены наиболее часто употребляемые
блоки схем алгоритмов.
Название
символа
Процесс
Решение
Модификация
Обозначение и Пояснение
пример
заполнения
Вычислительное действие или
последовательность действий
Проверка условий
Начало цикла

14.

Предопределенный
процесс
Ввод-вывод
Пускостанов
Документ
Вычисления по подпрограмме,
стандартной подпрограмме
Ввод-вывод в общем виде
Начало, конец алгоритма, вход и
выход в подпрограмму
Вывод результатов на печать

15.

Принцип структурного программирования
(Теорема Бема-Якопини) –
логическая структура любой программы может быть выражена
комбинацией из базовых структур:
1) Следование. 2) Ветвление. 3) Цикл.
Структурная блок схема -композиция из базовых алгоритмических
структур
Один вход - один выход
Следование
Композиция
Ветвление (выбор)
Цикл
Альтернатива
Итерация
IF THEN ELSE
WHILE DO DO WHILE

16.

1. Базовая структура следование. Образуется из
последовательности действий, следующих одно за другим:
Псевдокоды
действие 1
действие 2
.........
действие n
Язык блок-схем

17.

Структура ветвление существует в четырех основных вариантах:
. 1. если-то
если условие
то действия
все
2. если-то-иначе
Если условие
то действия 1
иначе действия 2
все

18.

3. выбор
выбор
при условие1: действия1
при условие2: действия2
............
при условиеN: действияN
все
4. выбор-иначе
Выбор
при условие1: действия1
при условие2: действия2
............
при условиеN: действияN
иначе действия N+1
все

19.

Способы построения комбинаций структур
Путем СЛЕДОВАНИЯ структур друг за другом.
Путем создания СУПЕРПОЗИЦИЙ – вложение одной структуры в другую.
Признаки структурного программирования
1. Полное исключение операторов безусловных переходов.
2. Модульность.
Модуль – последовательность логически связанных операций,
оформленных как отдельная часть программы.
Преимущества модульной структуры:
− возможность разработки программы несколькими программистами;
− простота проектирования и модификации программ;
− упрощение отладки программ: поиска и устранения ошибок;
− возможность использования готовых библиотек подпрограмм и модулей
− лучшая читаемость программ.
3. Детализация или декомпозиция – нисходящее проектирование
программ:
− построение иерархии модулей программ;
− разбиение задач на подзадачи;
− детализация до уровня подзадач, решение которых обеспечивается за
3÷5 строк.

20.

N – простое, k=2
Определить является ли
натуральное число N>2
простым ?
2 <= k <= N-1
и N – простое
нет
да
нет
остаток
N:k
=0
да
N – составное
k = k+1
Выход

21.

Определить является ли
натуральное число N>2 простым ?
Алгоритм N>2 простое ?
N – простое
Перебор натур.чисел k от 2 до N-1
Если (остаток N / k == 0 и N – простое), то
N – не простое
Алгоритм не эффективен, но правилен

22.

Расширения базовых структур
Многовариантный выбор

23.

F
B
T
S1
Прекращение
итерации цикла
C
T
S2
F
Досрочный
выход из цикла

24.

1.2.Системы счисления
Позиционные:
1. Десятичная (200910)
2. Двоичная (111110110012)
3. Восьмеричная (37318)
4. Шестнадцатеричная(7D916)
Непозиционные:
1.Римская (MMIX)
В позиционных системах счисления количественный эквивалент
числа А, состоящего из n цифр ak (k = 0,…,n-1) в системе счисления
с основанием p записывается в виде последовательности цифр
A(p)=an-1an-2…a1a0, где ak<p.
Также, в общем случае, значение количественного эквивалента числа
в позиционной системе счисления с основанием p можно представить
в виде многочлена:
A(p)=an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0, где ak<p, p>0
(1)

25.

Переводы натуральных чисел между системами счисления
восьмеричная <->двоичная<->шестнадцатеричная
Если основание системы счисления можно представить как
степень 2,
p=2m, m=1,2,…,k
то перевод осуществляется через двоичную систему.
1. Сначала число в восьмеричной или шестнадцатеричной системе
записываем в двоичном представлении:
7D916= 0111 1101 10012
37318= 011 111 011 0012
2. разряды согласно основанию p системы
счисления, в которую выполняем перевод числа:
0111 1101 10012 = 011 111 011 0012
011 111 011 0012 = 0111 1101 10012
3. Записываем число в представлении с основанием p системы
счисления, в которую выполняем перевод числа:
37318
7D916

26.

десятичная ->двоичная
200910 2
2008 1004 2
1 1004 502 2
0 502 251 2
0 250 125 2
1 124 62
1 62
0
111110110012
двоичная -> десятичная
2
31 2
30 15 2
1 14 7 2
1 6 3 2
1 2 12
1 0
111110110012 =
= 1*210 +1*29 +1*28 +1*27 +1*26+0*25+1*24+1*23+0*22+0*21+1*20 =
= 102410+51210+25610+12810+6410+0 +1610+810 +0 + 0 + 110=
= 200910

27.

десятичная -> восьмеричная
200910 8
2008 251 8
1 248 31
3 24
7
37318
8
3
8
0
восьмеричная -> десятичная
37318 =
= 3*83 +7*82 +3*81+1*80 =
= 153610+44810+2410 +110 =
= 200910

28.

десятичная -> шестнадцатеричная
200910 16
2000 125 16
9 112 7 16
13
0
7D916 D
шестнадцатеричная -> десятичная
7D916 =
= 7*162 +13*161+9*160=
= 179210+20810 +910 =
= 200910

29.

Перевод дробных положительных чисел
Двоичная, восьмеричная, шестнадцатеричная -> десятичная
Обощаем формулу (1) на случай дробных положительных чисел
A(p)=an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0+a-1*p-1+a-2*p-2+…+a-m*p-m,
где ak<p, p>0
(2)

30.

десятичная ->двоичная, восьмеричная, шестнадцатеричная
1. Выделить целую часть десятичной дроби.
2. Перевести ее в выбранную систему счисления по рассмотренным
ранее алгоритмам.
3. Выделить дробную часть десятичной дроби.
4. Умножить ее на основание выбранной системы счисления.
5. После умножения выделить целую часть и принять ее в качестве
следующего разряда дробной части в выбранной системе счисления.
(На первой итерации – первого разряда после запятой.)
6. Если дробная часть результата после умножения равна 0 или
достигнута требуемая точность, то остановить
процесс перевода дробной части числа в выбранную систему
счисления.
В противном случае перейти на шаг 4.
7. Записать число в выбранной системе счисления, объединив
переведенные целую и дробную части.

31.

десятичная ->двоичная
1) 9.0312510 = 910 + 0.0312510 =
2) = 10012+0.0312510
3) .0312510
4,5,6)
7) 10012+ 0.000012 = 1001.000012
.0312510
2
0.0625010
2
0.1250010
2
0.2500010
2
0.5000010
2
1.0000010
0.000012
двоичная -> десятичная
1001.000012 =
= 1*23+0*22+0*21+1*20+ 0*2-1+0*2-2+0*2-3+0*2-4+1*2-5
=
= 810 +0 +0 +110 + 0.0 +0.0 +0.0 +0.0 +0.0312510=
= 9.0312510

32.

Отрицательные числа
Старший разряд - знаковый ,
4 разряда
Прямой код
0101 2 = 5 10
Обратный код
0101
1101 = - 5 10
-1
+- 0
1
туда помещается цифра 1
1001
0000 1000
0001
0101
1010 = - 5 10
1110
0000 1111
0001
Дополнительный код
0101
1011 = - 5 10
1111
0000
0001
1111
+
1
10000

33.

1.3. Логика
Известная старинная задача:
Крестьянину нужно перевести через реку волка,
козла и капусту . Лодка так мала, что в ней
кроме крестьянина может поместиться только
один. Но, если оставить волка с козлом, то
волк его съест, если оставить козла с
капустой, то будет съедена капуста. Как быть
крестьянину?

34.

Переправу нужно начать с перевозки козла .
Затем крестьянин возвращается и
берет волка, которого перевозит на другой
берег и там оставляет,
но везет обратно на первый берег козла .
Здесь он его оставляет и перевозит к волку
капусту.
А затем, возвращаясь,
перевозит козла.

35.

А́лгебра - раздел математики, который развивает общую теорию
алгебраических операций и является обобщением и расширением
арифметики.
Слово «алгебра» происходит от арабского «аль-джабр» —
восполнение, воссоединение, связь, завершение;
часть названия трактата аль-Хорезми
«аль-Китаб аль-Джебр валь-Мукабала»
(араб. ‫ ‬,
англ. Al-Kitab al-Jabr wa-l-Muqabala)
перев. «Книга о восполнении и противопоставлении»)
В этом трактате содержатся общие приёмы для решения задач,
сводящихся к алгебраическим уравнениям I и II степеней.
При этом, для приведения квадратного уравнения общего вида к
каноническому виду аль-Хорезми вводит два действия:
- аль-джебр - перенесение отрицательного члена из одной части в другую
для получения в обеих частях положительных членов;
- валь-мукабала — приведение подобных членов в обеих частях
уравнения.
Предметом изучения современной алгебры являются множества с
заданными на них алгебраическими операциями.

36.

Алгебра - изучение алгебраических операций
логические величины
числа
Обычная алгебра
Булева алгебра
алгебра логики
Джорж Буль
1854г
Простое высказывание
Логические значения:
истина - И - 1 - T (true)
ложь - Л - 0 - F (false) – nil(пусто)

37.

George Boole (1815-1864)
1854 г.: Булева алгебра - раздел
математической логики, изучающий
высказывания и операции над ними.
Наиболее известными операциями
булевой алгебры являются:
конъюнкция, дизъюнкция, импликация,
эквивалентность, отрицание

38.

сложное (составное) высказывание: НЕ, И, ИЛИ, ЕСЛИ … ТО
Отрица
ние
Конъюнкция
НЕ
(логическое
умножение)
И
Дизъюнкци
я (логическое
Имплика
ция
Эквивале
нция:
сложение)
ИЛИ +
Если x, то
y
(x тогда и
только тогда,
когда y)
x
y
x ( x)
x∧y (x&y)
x∨y (x y)
x→y
x↔y
1
1
0
1
1
1
1
1
0
0
0
1
0
0
0
1
1
0
1
1
0
0
0
1
0
0
1
1

39.

ПРИМЕНЕНИЕ
Переключательная схема
Электронные схемы
ИЛИ
И
Диаграммы Венна
(алгебра множеств)
A
B

40.

Логические операции
A
B
НЕ A
И
ИЛИ
XOR
=
0
0
1
0
0
0
0
1
1
0
1
1
1
0
0
0
1
1
1
1
0
1
1
0
XOR – сложение по модулю 2
0+0=0 0+1=1 1+0=1 1+1=10 1 1=0
(исключающее ИЛИ, неэквивалентность)

41.

Варианты обозначения основных логических операций:
Дизъюнкция
ИЛИ
Конъюнкция
И
Отрицание
НЕ
∨ or
|, ||
+
∧ and &, && *
not !
~
max
min
inv
Варианты обозначения логических значений:
Истина
И
1 T
True
Ложь
Л
0 F
False -
Любое значение
Х
+
T
nil

42.

законы алгебры логики:
Коммутативность
x∧y = y∧x
Конъюнкции
x∨y = y∨x
Дизъюнкции
Ассоциативность
x∧(y∧z)=(x∧y)∧z
Конъюнкции
x∨(y∨z)=(x∨ y)∨z
Дизъюнкции
Дистрибутивность
x ∧ ( y ∨ z ) = ( x ∧ y ) ∨ ( x ∧ z ) Конъюн. от-но дизъюнк.
x ∨ ( y ∧ z ) = ( x ∨ y ) ∧ ( x ∨ z ) Дизъюн. от-но конъюнк.

43.

Аксиомы алгебры логики
Идемпотентность
x ∧ x…x ∧ x = x
Конъюнкции
x ∨ x…x ∨ x = x
Дизъюнкции
Инволютивность
x =x
Снятие двойного отрицания
Дополнительность
x ∧ x = F
Закон противоречия
x ∨ x = Т
Закон исключенного третьего
Свойства констант
x∨T=T
x∨F=x
x∧F=F
x∧T=x

44.

Законы де-Моргана
( x ∨ y ) = x ∧ y
( x ∧ y ) = x ∨ y
Законы Блейка-Порецкого
x∨( x∧y)=x∨y
x∧( x∨y)=x∧y
Законы поглощения
x∨(y∧x) =x
Конъюнкции дизъюнкцией
x∧(y∨x) =x
Дизъюнкции конъюнкцией
Законы склеивания
( x ∧ y ) ∨ ( x ∧ y ) = y
( x ∨ y ) ∧ ( x ∨ y ) = y
x=>y = x ∨ y
Импликация через дизъюнкцию
x<=>y = (x=>y) ∧ (y=>x)
Эквиваленция через импликацию

45.

Часть законов проверяется через таблицы
истинности, например, закон де-Моргана для
дизъюнкции: ( A ∨ B ) = A ∧ B
A
B
A∨B
0
0
0
0
1
1
1
(A∨B)
A
B
A ∧ B
1
1
1
1
1
0
1
0
0
0
1
0
0
1
0
1
1
0
0
0
0
Другие проверяются прямым вычиcлением, при этом удобно перейти к
“арифметическому” набору обозначения логических операций: + * ~
Проверим закон склеивания для дизъюнкции:
( x ∨ y ) ∧ ( x ∨ y ) = (x+y)(~x+y)=x~x+y~x+xy+yy=
=0+y(~x+x)+y=y*1+y=y

46.

Диаграммы Венна
(алгебра множеств)
A
B
A
B
( A ∨ B ) = A ∧ B

47.

Обобщенные унарные и бинарные логические операции (функции)
Функция
Знак
gn(1)
gn(0)
g0 – ложь
0
0
0
g1 – отрицание
0
1
g2 – тождество
=
1
0
g3 – истина
1
1
1
gn (x) ∧ g3-n (x) = F
gn (x) ∨ g3-n (x) = T
по закону противоречия
по закону исключенного третьего

48.

Функция
Знак
Fn(1,1)
Fn(1,0)
Fn(0,1)
Fn(0,0)
F0 – ложь
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
F5 – инверсия y
0
1
0
1
F6 – сумма по модулю 2,
исключающее ИЛИ,
неэквивалентность
0
1
1
0
0
1
1
1
F1 – стрелка Пирса (ф-я Даггера,
ф-я Вебба, отрицание
дизъюнкции,
ИЛИ-НЕ)
F2 – обратная импликация y к x
(запрет х)
nor
__
<=
F3 – инверсия х,
F4 – обратная импликация х к y
(запрет у)
F7 – штрих Шеффера,
отрицание конъюнкции, И-НЕ
__
=>
NEQV
xor ^
|

nand

49.

Функция
Знак
Fn(1,1)
Fn(1,0)
F8 – конъюнкция, И
∧ & &&
and
* min
1
0
0
0
F9 – эквиваленция
<=> EQV ~
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
0
1
1
1
0
1
1
1
1
F11 – импликация от x к y
(разрешение у)
=>
U
F10 – y
F12 – x
F13 – импликация от y к x
(разрешение х)
<=
U
1
F14 – дизъюнкция, ИЛИ
∨ | || or
+ max
1
1
F15 – истина
Fn (x,y) ∧ F15-n (x,y) = F
Fn (x,y) ∨ F15-n (x,y) = T
Fn(0,1) Fn(0,0)

50.

Алгебра логики послужила основным математическим инструментом при
создании компьютеров.
Она легко преобразуется в битовую логику:
истинность высказывания обозначается одним битом
0 — ЛОЖЬ, 1 — ИСТИНА
тогда операции приобретают смысл
- вычитания из -1 (-А = А + 1
∨ - немодульного сложения;
А = -1 - А)
1100 = 1111 - 0011
& - умножения;
<=> - равенства;
- сложения по модулю 2 (исключающее ИЛИ — XOR, перенос разряда
отбрасывается);
| - непревосходства суммы над 1, A | B <= 1 (0 | 0 = 1, 0 | 1 = 1, 1 | 1 = 0).

51.

Штрих Шеффера: x y = (x ∧ y)
x
y
x y
1
1
0
1
0
1
0
1
1
0
0
1
x = x x
x∧y = (x y) (x y)
Аналогично можно рассматривать стрелку Пирса
ψ(x,y)= (x∨y)

52.

Пример применения подстановки
и закона де-Моргана.
Упростить логическое выражение
(f ↔ g) → (f → g)
Раскрываем эквивалентность через импликацию
(f → g) ∧ (g → f) → (f → g)
Подстановка h= (f → g) j= (g → f)
h∧j→h
Раскрываем импликацию
(h ∧ j) ∨ h
Применяем закон де-Моргана
h∨ j∨h
Применяем закон исключенного третьего и свойства
констант
T∨ j=T

53.

Пример решения
логического уравнения
Решить логическое уравнение
(F=>Q) => S=Т
Вспоминаем таблицу истинности для импликации. Импликация ложна только
если первый операнд имеет значение «истина», а второй «ложь».
Т.к. в первой импликации первый операнд не изменяется и имеет значение
«ложь», то ее результат будет «истина» независимо от значения Q.
Получаем систему уравнений
{F=>Q =Т; T=>S=T}
Из первого уравнения в системе делаем вывод о допустимости любого значения
Q, а из второго и определения импликации следует, что S должно быть
истинно
{Q=X; S=T}
Ответ: Q - любое и S- истина

54.

Пример применения законов
склеивания и Блейка-Порецкого
Упростить
( x ∨ y) ∧ (x ∨ y) ∧ (x ∨ y)
Применяем к первым двум скобкам закон
склеивания
y ∧(x ∨ y)
Применяем закон Блейка-Порецкого
y∧x

55.

Пример применения
арифметической формы записи и
свойств
констант
(1/2)
Упростить
MIN(MAX(I,M),MAX(M,N),MAX(INV(I),N))
Конъюнкцию (MIN) заменяем на умножение,
дизъюнкцию (MAX) – на сложение,
отрицание (INV) обозначаем ~
(I+M)(M+N)(~I+N)
Перейдем от конъюнктивной формы (произведение сумм) к
дизъюнктивной форме (сумма произведений)
IM ~I + IMN + IN ~I + INN + MM ~I + MMN + MN ~I + MNN
MN +
IN + M ~I + MN +
MN
IN + M ~I + MN

56.

Пример применения
арифметической формы записи и
свойств
констант
(2/2)
Анализируем симметрию выражения и слагаемое, в котором нет
антисимметричного множителя, умножаем на логическую 1
(закон исключенного третьего) и перегруппировываем
слагаемые
IN + M ~I + MN (I + ~I)
IN + MIN + M ~I + NM ~I
Выделяем общие множители и используем свойство констант
IN (1+ M) + M ~I (1+ N)
IN + M~I
Возвращаемся к исходной форме записи
MAX (MIN (I, N), MIN (M, INV(I)))

57.

Пример применения диаграмм
Венна (1/2)
Упростить
MIN(MAX(I,M),MAX(M,N),MAX(INV(I),N))
I
M
MAX(I, M)
N
MAX (M, N)

INV(I)
MAX(INV(I), N)

58.

Пример применения диаграмм
Венна (2/2)
MIN(MAX(I,M),MAX(M,N),MAX(INV(I),N))
=
MAX(MIN(INV(I),M),MIN(I,N))
+
MIN(INV(I),M)
+ MIN(I,N)

59.

Пример применения таблицы
истинности и карты Карно (1/2)
Упростить
MIN(MAX(I,M),MAX(M,N),MAX(INV(I),N))
Заполняем таблицу истинности
I
M
N
~I
I+M
M+N
~I+N
MIN(…)

1
2
3
4
5
6
7
8
1
1
1
1
0
1
1
1
1
2
1
1
0
0
1
1
0
0
3
1
0
1
0
1
1
1
1
4
1
0
0
0
1
0
0
0
5
0
1
1
1
1
1
1
1
6
0
1
0
1
1
1
1
1
7
0
0
1
1
0
1
1
0
8
0
0
0
1
0
0
1
0

60.

Пример применения таблицы
истинности и карты Карно (2/2)
Строим карту Карно
I
M
N
MIN(…)
№ 1
2
3
8
1
1
1
1
1
2
1
1
0
0
3
1
0
1
1
4
1
0
0
0
5
0
1
1
1
6
0
1
0
1
7
0
0
1
0
8
0
0
0
0
N
1
0
0
0
0
I
M
1
1
1
0
1
A
1
0
0
0
0
1
1
B
1
A(I,N) = MIN (I, N)
B(I,M) = MIN (INV(I), M)
Ответ: MAX(MIN(I, N), MIN(INV(I), M))

61.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (1/6)
Восстановить обобщенную логическую квадрарную
функцию Q2013(L1, L2, L3, L4). Результат записать в
дизъюнктивной и конъюнктивной нормальных
минимальных формах.
1. Переводим индекс в двоичную систему счисления
201310 2
2012 1006 2
1 1006 503 2
0 502 251 2
1 250 125 2
1 124 62
1 62
0
111110111012
2
31 2
30 15 2
1 14 7 2
1 6 3 2
1 2 12
1 0

62.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (2/6)
Всего для N-арной функции индекс должен состоять из 2N
двоичных разрядов, т.е. для квадрарной функции 24=16
разрядов.
Диапазон изменения значений индекса для N-арных
функций от 0 до 22 -1. Для N=4 от 0 до 65535.
2. Заполняем старшие разряды нулями
0000 0111 1101 11012
3. Записываем таблицу истинности для Q2013(L1, L2, L3, L4).
В ней будет столько же строк данных, сколько двоичных
разрядов, т.е. – 16.
Младшей комбинации значений операндов соответствует
младший разряд индекса (см красные стрелки)
Красным шрифтом выделены нули, которыми заполнили
старшие разряды
N

63.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (3/6)
0000 0111 1101 11012
0000 0111 1101 11002
L1
L2
L3
L4
Q2013
L1
L2
L3
L4
Q2013

1
2
3
4
5

1
2
3
4
5
1
0
0
0
0
1
9
1
0
0
0
1
2
0
0
0
1
0
10
1
0
0
1
1
3
0
0
1
0
1
11
1
0
1
0
1
4
0
0
1
1
1
12
1
0
1
1
0
5
0
1
0
0
1
13
1
1
0
0
0
6
0
1
0
1
0
14
1
1
0
1
0
7
0
1
1
0
1
15
1
1
1
0
0
8
0
1
1
1
1
16
1
1
1
1
0

64.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (4/6)
4. Строим карту Карно.
Для индексации
строк и столбцов
применяем код
Грея.
5. Для ДНФ склеиваем
единицы и
инвертируем
операнды с входным
значением 0.
Крайние строки и
столбцы считаем
смежными
A = ~L1 L3
B = ~L1 ~L4
C = L1 ~L2 ~L4
D = L1 ~L2 ~L3
L4
0
1
1
0
L3
0
0
1
1
1
L1
L2
0
0
1
0
1
0
1
B1
0
1
1
1
1
0
0
0
0
1
0
C1
D1
0
1
A
B
C
6. Записываем ДНФ:
Q2013 = ~L1 L3 + ~L1 ~L4 +
+ L1 ~L2 ~L4 + L1 ~L2 ~L3

65.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (5/6)
1
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
0
0
1
0
0
0
1
0
1
1
1
0
1
1
0
0
0
1
1
0
=
Q 2013
+
A (2 x 2)
+
+
B (2 x 2)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
1
0
0
C (1 x 2)
+
D (1 x 2)

66.

Пример восстановления обобщённой
логической квадрарной функции по ее
индексу с помощью карт Карно (6/6)
7. Для КНФ все похоже,
но склеиваем нули
и инвертируем
операнды с
входным значением
1
j = ~L1 + ~L2
k = ~L1 + ~L3 + ~L4
m = L1 + L3 + ~L4
L4
0
1
1
0
L3
0
0
1
1
L1
L2
0
0
1
0
1
1
0
1
1
m0
1
1
1
1
0
0
0
1
0
1
1
k0
j
0
1
8. Записываем КНФ:
Q2013 = (~L1 + ~L2)(~L1 + ~L3+ ~L4)
(L1 + L3 + ~L4)

67.

2.1. ОПЕРАЦИОННАЯ СИСТЕМА И РЕСУРСЫ
ОПЕРАЦИОННАЯ СИСТЕМА (ОС) комплекс программ, обеспечивающий
управление ресурсами компьютера и
процессами, использующими эти
ресурсы при вычислениях
РЕСУРС - любой логический или
физический компонент
компьютера и предоставляемые
им возможности.
Основные ресурсы:
процессор (процессорное время),
оперативная память, внешняя память,
периферийные устройства.

68.

ОС реализует низкоуровневое управление аппаратной
частью, наследует ее возможности и предоставляет
пользователю виртуальную машину, которой проще
управлять, чем непосредственно аппаратной частью.
Попробуйте написать драйвер с нуля.
ОС инкапсулирует аппаратуру от пользователя. ОС
защищает данные и себя от программных ошибок и
аппаратных сбоев.
С точки зрения пользователя ОС выступает в роли
расширенной машины.
С точки зрения аппаратной части ОС выступает в роли
системы управления ресурсами

69.

Основные задачи управления ресурсами:
1. Планирование использования ресурсов на основе
текущих критериев эффективности управления.
2. Регистрация изменений состояния ресурсов.

70.

2.2. Классификация операционных систем:
1. По числу одновременно выполняемых задач:
- однозадачные (MS DOS);
- многозадачные (UNIX, Windows) – распределяют
ресурсы между задачами и защищают выполнение
задач друг от друга.
2. По числу одновременно работающих
пользователей:
- однопользовательские (MS-DOS, ранние
Windows);
- многопользовательские (UNIX, Windows, начиная
с NT) – распределяют ресурсы между сеансами
пользователей и защищают их выполнение друг от
друга.

71.

3.
4.
По реализации многозадачности:
- невытесняющая многозадачность (ранние Windows) –
активный процесс работает до тех пор, пока сам не вернет
управление операционной системе.
- вытесняющая многозадачность (UNIX, Windows, начиная с
NT) – операционная система определяет процессорное время
выделяемое процессу.
По масштабируемости:
- однопроцессорные;
- асимметричные многопроцессорные (NetWare)– сама ОС
занимает только одно из процессорных ядер – master
processor;
- симметричные многопроцессорные;
- исключительные многопроцессорные – есть возможность
привязывать процессы к процессорным ядрам.

72.

5.
6.
По поддержке вычислений:
- локальные (автономные);
- сетевые (Windows server) – распределяют
сетевые ресурсы, возможен перенос задач;
- распределенные – поддерживают кластерную
архитектуру.
По времени реакции на запросы:
- с разделением времени работы процессов
(Windows, UNIX);
- ОС реального времени (QNX, Windows NT
Embedded, RTX)

73.

2.3. Файл. Файловая система
ФАЙЛ - именованная целостная упорядоченная
совокупность данных на носителе информации.
Файловая система (ФС) - часть ОС, обеспечивающая
выполнение операций над файлами.
Набор программ, образующих ФС, разрабатывается по спецификации,
регламентирующей способ организации, хранения и именования данных
на носителе информации.

74.

2.4.Задачи файловой системы:
- именование файлов;
- предоставление программного интерфейса для работы с
файлами, в т.ч. для совместной работы;
- отображение логической модели файловой системы на
физическую модель организации носителя информации;
- защита ФС и файлов от аппаратных и программных сбоев
и несанкционированного доступа;
- контроль атрибутов файлов;
- подготовка и управление доступом к носителям
информации.

75.

2.5.Характеристики файловых систем
1. Общие сведения о версиях файловой системы (существующие версии,
годы выпуска, разработчики, для какой операционной системы разработаны,
поддерживающие операционные системы, распространенность).
2. Требования к аппаратному обеспечению.
3. Базовые и допустимые размеры кластеров.
4. Ограничения (допустимые размеры тома, файла, длины пути к файлу,
длины имени файла, допустимые символы в имени файла и пути к нему,
зарезервированные имена)
5. Поддерживаемые атрибуты и другие мета-данные.
6. Характеристики безопасности и отказоустойчивости (журналирование,
запись логов, контрольные суммы)

76.

2.6. Файлы и каталоги
В ОС Linux и многих других операционных системах файлы логически
размещаются в каталогах (директориях).
Все файлы и каталоги логически объединены образуют одно большое дерево,
иерархическую файловую структуру в виде дерева, корень которого
называется корневым каталогом.
Корневой каталог обозначается знаком “/” (в Windows наоборот - “\”)
/
Directory_1
это имя! Задается при
форматировании
символическая
ссылка
SubDir_11 SubDir_12
file_4 file_5.f90
-
Dir_2
SubDir_21 SubDir_22
file_121.sh
file_3

77.

Файлы и каталоги (2)
Каталог – это специальный тип файла, содержащий имена и номера файловых
индексов файлов и каталогов
Файлы и каталоги могут располагаться на нескольких устройствах.
mount - монтирует (подсоединяет) файловую систему на устройстве
к иерархической структуре дерева каталогов и файлов.
unmount - размонтирует (отсоединяет) файловую систему на
устройстве.
Соглашения по именам файлов и каталогов:
- в Linux зависят от регистра (в Windows – не зависят).
MyFile ≠ myfile
- имя каталога может состоять из любых букв или символов, кроме символа
коревого каталога “/”
- корневой каталог нельзя переименовать
- в Linux абсолютный путь к файлу начинается с корневого каталога,
а не с буквы диска, как в Windows.

78.

Полный путь
Linux:
/ Directory_1/SubDir_11/file_5.f90
/ [путь/] составное имя файла
Windows:
[диск:] [путь\] составное имя файла
Текущий каталог
SubDir_11 - есть для каждого диска
Рабочий каталог
SubDir_11 - текущий каталог
текущего диска
. (сам)
.. (родитель)
. /file_4
.. / SubDir_12
Относительный путь
~
в Linux указывает на домашний каталог текущего пользователя
~user1
домашний каталог пользователя user1

79.

2.7. Содержание каталогов Linux
/bin
/boot
/dev
/etc
/home
/lib
/media
/mnt
/proc
/root
/sbin
/tmp
/usr
/var
/var/log
основные программы
файлы загрузки и ядра операционной системы
файлы блочных и символьных устройств
конфигурационные файлы ОС и программ.
домашние каталоги всех непривилегированных пользователей
библиотеки и компоненты ядра и программ
доступные смонтированные съемные носители информации
доступные смонтированные несъемные носители информации
образы всех выполняющихся процессов
домашний каталог суперпользователя
второстепенные приложения
временные файлы
программы, библиотеки, ресурсы, коды приложений пользователя
файлы данных
системные журналы событий (лог-файлы)

80.

2.8. Метаданные файлов
$ ls -l выводит список содержимого каталога с указанием прав доступа
и другой информации
Для каждого файла указывается:
- тип файла,
- права доступа к файлу для каждой из трех категорий пользователей,
- имя владельца;
- имя группы;
- размер файла в байтах;
- дата и время последнего изменения файла;
- имя файла.
Типы файлов:
- обычный файл
d (Directory) каталог
l (symbolic Link) символическая ссылка
с (Character device) файл символьного устройства (порт)
b (Block device) файл блочного устройства (жесткий диск)
p (Pipe) именованный канал
s (Socket) сокет

81.

2.9. Получение прав суперпользователя
Вход как root:
-войти в систему как root в начале сеанса.
По умолчанию запрещено. Одна из степеней защиты системы.
Можно изменить в конфигурационном файле, например, для KDE
в файле /etc/kde4/kdm/kdmrc установлен запрет входа под root
AllowRootLogin=false
- Перейти в режим суперпользователя в командой su,
возвращение в обычного пользователя командой exit.
- Выполнить одну команду с правами суперпользователя
$ sudo bash
запуск оболочки от имени root
# <команды с правами root>
# exit
$

82.

2.10. Права доступа к файлам и каталогам
Три категории пользователей:
u (User) владелец
g (Group) группа
o (Other) остальные пользователи
Обозначение любого пользователя:
a (All) все пользователи
Три вида прав доступа к файлу
r (Read) право чтения файла
w (Write) право записи (изменения) файла
x (eXecute) право выполнения файла как команды
Три вида прав доступа к каталогу
r (Read) право чтения каталога (список только имен файлов в нем)
w (Write) право записи и удаления файлов из каталога
x (eXecute) право выполнения каталога (разрешен вход в
каталог и выполнение файлов с правом выполнения, разрешен
просмотр подробной информации о файлах)

83.

2.11. Изменение прав доступа
# chown new_owner file1.txt
изменение владельца файла
# chgrp new_group file1.txt
изменение группы файла
# chmod [ugoa][+-=] [rwx][,…] file1.txt формат команды изменения
прав доступа
# chmod u=rwx, go=rx file1.txt
u g o
rwxr-xr-x
111101101
421421421
421401401
7 5 5
владелец (u)
группа (g) остальные (o)
все разрешено
только чтение и выполнение
1 - есть право, 0 – нет права
веса прав
вес * наличие права
4+2+1 = 7
4+0+1 = 5
# chmod 755 file1.txt
Представления слова прав доступа:
rwxrwxrwx - мнемоническое
111 111 111 - двоичное
777
- десятичное

84.

2.12. Приоритеты прав доступа
Пользователь
Владелец?
rwxrwxrwx
да
нет
Входит в
группу?
нет
да

85.

2.13. Старшие биты прав доступа
Смотрим документацию man sticky и man chmod
Веса старших битов в десятичном представлении слова прав доступа:
1000 - sticky bit - особые условия удаления файлов из каталога
2000 - SGID (Set Group ID) - право запуска от имени группы
или принадлежность группе каталога
4000 - SUID (Set User ID) - право запуска от имени владельца
или принадлежность владельцу каталога
Примеры:
# chmod 4755 filename
# chmod u+s filename
dr-xr-xr-t (1555) - для каталога установлен sticky-bit, файлы удаляет только
их владелец
dr-Sr-xr-x (4455) - для каталога установлен бит SUID без бита
выполняемости, создаваемый файл будет принадлежать
владельцу каталога
-r-xr-sr-x (2555) - для файла установлены биты SGID и выполняемости,
создаваемый файл будет принадлежать группе каталога

86.

Примеры установки прав
1.Требуется установить права так, чтобы файл стал недоступным
по чтению и записи для всех, кроме владельца,
а по выполнению для всех пользователей
Нужно установить права rw - - - - - - -
-> 110 000 000 -> 600
# chmod 600 input.txt
2. Защита данных!
Доступ к данным ограничен и выполнение запрещено.
Дополнительно можно установить sticky bit на каталог,
в котором находится файл с данными.

87.

2.14. Отметки времени
команда просмотра
timestamps
mtime
ctime
atime
(modify) время модификации
(change) время изменения состояния
(access) время последнего доступа
Действие
чтение
смена владельца или прав доступа
перезапись
$ ls -l
$ ls -lc
$ ls -lu
обновляет значение
atime
atime, ctime
atime, ctime, mtime

88.

2.15.1. Типы файлов. Ссылки
Типы ссылок:
жесткая ссылка (hardlink)
символическая ссылка (symlink)
Обозначения в ответе на команду $ ls -l
l
Жесткая ссылка – псевдоним существующего файла
$ ln file1.txt textfile1
имя
жесткая ссылка
Символическая ссылка – специальный файл с указателем на другой файл.
$ ln -s file1.txt textfile2
имя
символическая ссылка
Символическая ссылка может быть «битой», если исходный файл стерли
или он стал недоступен.
В этом случае в списке файлов она выделяется красным цветом.

89.

2.15.2. Типы файлов. Каналы и сокеты
Типы файла:
Именованный канал (pipe)
Локальный сокет (socket)
Обозначения в ответе на команду $ ls -l
p
s
Именованный канал - файл очереди для передачи данных между процессами.
Дисциплина очереди - FIFO (First-In-First-Out).
Один процесс пишет в канал, другой читает.
Оба процесса не могут быть завершены, пока в канале есть данные.
Размер всегда 0.
Локальный сокет - файл описания подсоединения к процессу (разъём,
подсоединитель).
Обеспечивают межпроцессное взаимодействие.

90.

2.15.3. Типы файлов. Устройства
Типы файла:
Обозначения в ответе на команду $ ls -l
Файл символьного устройства (Character device)
с
Файл блочного устройства (Block device)
b
Файл устройства - это представление в файловой системе физического
или виртуального устройства.
Физические устройства: жесткий диск, клавиатура, видеокарта…
Виртуальные устройства: консоль, пустое устройство…
Чтение из (запись в) символьное устройство осуществляется посимвольно.
Чтение из (запись в) блочное устройство осуществляется блоками данных.
/dev/null - пустое устройство
/dev/ttyS0 - первый последовательный порт
/dev/lp0 - первый параллельный порт

91.

Командная оболочка.
Shell-программирование.
3.1. Командная оболочка – это программа,
реализующая текстовый интерфейс между
пользователем и ОС.
Окно терминала:
- приглашение на ввод очередной команды;
- протокол предыдущих действий.
Изучаем командную оболочку, т.к.
- всегда доступна;
- можно выполнять сценарии (shellпрограммирование).

92.

3.2. История развития командных оболочек

Файл
Автор
Год
Название
разраб.
Примечание
1
sh
Stephen R.
Bourne
1974
Bourne shell
первоначальная
оболочка ранних
версий UNIX
2
csh
Bill Joy
1978
C shell
оболочка для BSD
UNIX
3
ksh
David Korn
1983
Korn shell
расширение sh
4
tcsh
Ken Greer
1983
TC shell
расширение csh
5
bash
Stephen R.
Bourne
1989
Bourne Again
shell
наиболее
популярная
оболочка
6
dash
Herbert Xu,
Kenneth
Almquist
.
1997
Debian
Almquist shell
облегченная bash

93.

3.3. Запуск командной оболочки
По умолчанию располагается в
Символьная ссылка на
/bin/sh
/bin/bash или /bin/dash
1. Открываем окно терминала.
Запускается командная оболочка по умолчанию.
2. Выполняем команду
$ echo $SHELL
/bin/bash
3. Подробности версии
$ bash -version
<текст с информацией о командной оболочке>

94.

3.4. Цикл обработки команды
Приглашение к вводу команды
$
Набор текста команды [Enter]
да
Команда интерпретирована
(распознана внутренняя команда оболочки
или найден файл)
Выполнение внутренней команды
или передача информации о
файле ядру ОС, которое
запускает его на выполнение
Формирование и вывод результата
выполнения команды
в окно терминала
нет
Формирование и
вывод сообщения об
ошибке в окно
терминала

95.

3.5. Справка по командам: man, info, -help и другие
1. Документация - MAN-страницы.
Справочники состоят из разделов.
Вызов справки о документации
$ man man
в ответ - распечатка справки (несколько
экранных страниц)
Выход из справочников: [q]
2. База данных info - набор ссылок на справочные онлайн-ресурсы.
Система более современная, но содержит информацию не о всех
командах.
$ info info
в ответ - Информация о работе info
Выход из info: [q].
3. Cправка о текущей команде: ее вызов с ключом –h или --help
(двойной дефис перед аргументом).
Постраничный вывод: more или less (более функциональна, но есть
не во всех версиях ОС)
$ cp --help | less
Выход из справки о команде: [q].

96.

Cтруктура ответа man
1.синтаксис команды man.
2.ее краткое описание.
3.таблицу нумерации разделов MAN-справочника .
4.соглашения по отображению справки на экране.
5.примеры.
6. обзор – подробное описание команды.
7. значения по умолчанию.
8. параметры (ключи в строке вызова команды).
9. коды выхода.
10. использование переменных окружения.
11. файлы.
12 ссылки на другие страницы по теме.
13. история, автор.
14. номер версии и дата.

97.

3.6. Настройки командной оболочки
Настройки bash - в конфигурационных файлах и
системных настройках (опциях bash).
~/.bashrc
Собственно настройки командной оболочки:
- текст приглашения к вводу команды;
- псевдонимы (алиасы) команд;
- команды, выполняемые перед первичным
приглашением;
- цвета и стили текста и фона командной строки;
- обработка каталогов с командами.

98.

etc/profile - общесистемный файл инициализации, выполняется
при входе в систему
~/.bash_profile - персональный профиль оболочки для текущего
пользователя, который обрабатывается при входе в систему
~/.inputrc - отдельный файл инициализации библиотеки readline,
настройка ввода команд (история, табуляция)
~/.bash_history - персональный файл истории (список)
использованных команд
~/.bash_logout - персональный файл, обрабатываемый при
корректном выходе пользователя из системы
Часть настроек хранится в виде значений системных
переменных окружения
Для их просмотра используем команду
$ set -o

99.

3.7. Ускорение работы с командной строкой
Работа с оболочкой.
[Ctrl-c] - прекратить выполнение команды, если это возможно.
[Ctrl-d] - выход из оболочки, когда командная строка пустая, иначе = [Del]
[Ctrl-l] - очистка экрана, состояние самой командной строки не изменяется.
Работа с историей команд.
[Ctrl-n] = [↓] - переход к следующей команде в истории.
[Ctrl-p] = [↑] - переход к предыдущей команде в истории.
[Ctrl-r] - поиск (reversed) по истории команд.
!! - выполнить последнюю команду в истории
!n - выполнить n-ую команду в истории
Работа с текстом в командной строке.
[Ctrl-а] - переход в начало строки.
[Ctrl-c] - отменить редактирование текста команды.
[Ctrl-e] - переход к концу строки.
[Ctrl-k] - удалить текст за курсором до конца строки.
[Alt - r] - очистить всю строку
[Ctrl-t] - поменять текущий символ с предыдущим.
[Alt - t] - поменять слова местами
[Ctrl-u] - удалить текст до начала строки.
[Ctrl-w] - удалить символы от курсора до начала слова.
[Ctrl-y] - вставить из буфера.

100.

4.1. Shell-программирование
Shell-программирование - программирование с использованием средств,
доступных в командной оболочке (shell), которую используем в качестве
среды программирования.
Команды и составленные из них программы выполняются в режиме
интерпретации.
Выполнение команд и результат видны сразу, нет компиляции.
Такие программы называют сценариями.
Эмулятор Linux в web-браузере:
https://bellard.org/jslinux/

101.

4.2. Переменные
Виды переменных
- переменные пользователя (программиста) - создаем, присваивая
первое значение
- переменные окружения - переменные ОС и командной оболочки
- переменные-параметры - аргументы вызова команды (сценария)
По умолчанию все переменные хранятся в виде строк (включая
переменные с числовым значением).
При необходимости командная оболочка и часть утилит преобразуют
строки с числовым содержанием в числа перед использованием в
вычислениях.
В Linux важен регистр символов, поэтому VAR1, VAr1, VaR1, vAR1, Var1,
vAr1, vaR1 и var1 воспринимаются как разные переменные.

102.

Создание переменной пользователя:
Присваиванием первого значения:
$ var1 = Single_word
$ var2 = “Text with spaces”
- есть пробелы - нужны кавычки!
$ var3 = 1+5
С использованием команды read.
$ read var4
- параметр - имя создаваемой переменной
Text with spaces
- завершение ввода [Enter], кавычки не нужны
Стирание переменной:
$ var3 =

103.

Доступ к значению переменной:
var1 - переменная (ее имя)
$var1 - значение переменной
$ echo $var1 - подстановка значения переменной в команду вывода на
терминал, чтобы посмотреть текущее значение переменной
$ echo $var1
Single_word
$ echo $var2
Text with spaces
$ echo $var3
$ echo $var4
Text with spaces
- уже стерли var3

104.

Переменные окружения
Принято записывать заглавными буквами.
Значения зависят от состояния среды и профиля пользователя.
$HOME - домашний каталог текущего пользователя
$USER - имя текущего пользователя
$PATH - список путей для поиска команд. Разделитель - двоеточие.
$PWD - текущий каталог
(Present Working Directory)
$OLDPWD - предыдущий текущий каталог
$SHELL - текущая командная оболочка
$0 - имя сценария командной оболочки (исходный нулевой параметр)
$$ - ID идентификатор процесса сценария оболочки
$# - количество передаваемых параметров
Не во всех версиях операционной системы:
$HOSTNAME - имя машины
$QTDIR - каталог библиотеки QT
$MAIL - почтовый ящик
$LD_LIBRARY_PATH - путь "поиска" дополнительных библиотек
$MANPATH - список путей поиска файлов man-страниц. Разделитель двоеточие.
$LANG или $LANGUAGE - язык и кодировка пользователя

105.

Просмотр переменных окружения - команда env без параметров
Текущее значение переменной PATH
$ env | grep $PATH
Добавление переменной окружения
$ export ENVVAR=value1
Добавление пути в список поиска
$ export PATH=$PATH:/home/user1/dir1

106.

Первый механизм передачи информации между
сценариями: через окружение
.script1 :
export MY1 = Ivanov
“окружение”
PATH = ....
HOME = ....
............
............
MY1 = Ivanov
.script2 :
echo $MY1
echo Ivanov

107.

Переменные-параметры
Исходная информация передается в сценарий через переменные-параметры.
Это второй механизм передачи информации между сценариями.
Переменные-параметры перечисляются в строке вызова после имени
сценария через пробелы.
В этом случае создается несколько дополнительных переменных
$# - существует всегда и хранит количество передаваемых параметров
$0 - существует всегда и хранит имя вызванного сценария (нулевой параметр)
$1, $2,… параметры передаваемые сценарию в том порядке, в каком они
были указаны в команде вызова сценария
$* - список всех параметров в одной переменной
$ myScript 15 text $var1
$0
$1
$2
$3

108.

4.3. Сценарии
Сценарии - это программы, состоящие из вызова команд и программ
доступных в командной оболочке.
Преимущества сценариев:
- позволяют из последовательности команд собрать более сложную
команду;
- реализуют хранение кода сценария (достаточно помнить имя сценария,
какие ему передавать параметры и как он возвращает результат);
- реализуется повторное использование кода (меньше опечаток, не нужна
отладка, не нужно «изобретать велосипед»);
- допускают передачу кода (от профессионалов к пользователям);
- обеспечивают повышение качества кода (за счет его многократного
применения и проверки в разных ситуациях)

109.

Оформление сценария
Режимы выполнения:
- интерактивный
- пакетный
Обработка сценария идет построчно.
В первой строке надо определить программу, которая должна обрабатывать
файл. Это делается после ключевой последовательности
#! /bin/bash
Полезные команды оформления сценария:
echo - вывод отклика в окно терминала, в котором выполняется сценарий,
clear - очистка этого окна
sleep - задание паузы, чтобы можно было успеть посмотреть
промежуточные результаты
exit с кодом возврата завершает сценарий

110.

Оформление сценария (2)
Комментарии начинаются с символа # и продолжается до конца строки.
Символы “ ' \ экранируют действие символа #.
echo "# это не комментарий"
echo '# также не комментарий.'
echo \# опять не комментарий.
echo Наконец, # соответствует началу комментария.
; (точка с запятой) используется как разделитель команд в одной строке.
Также экранируется с помощью символа \

111.

Варианты выполнения сценария
сохранили сценарий в файл myScript.sh
1) Выполнение сценария с вызовом командной оболочки
$ /bin/sh myScript.sh
2) Преобразование файла сценария в исполняемый (executive)
# chmod +x myScript.sh
и выполнение без командной оболочки
$ myScript
Из одного сценария myScript1.sh можно вызвать другой myScript2.sh :
3) Вызов сценария с созданием подоболочки с копией окружения
./myScript2.sh
# в сценарии myScript1.sh вызываем myScript2.sh
4) Вызов сценария для выполнения в текущей командной оболочке
source ./myScript2.sh # имя вызываемого сценария - параметр source

112.

Прерывание сценария. Коды завершения
[Ctrl-C] - прервать выполнение сценария
exit n - выход из выполнения сценария с кодом завершения n
Код завершения возвращается вызвавшему сценарий процессу.
$? - код завершения последнего процесса
Правила задания кода завершения:
0 - успешное завершение сценария
1 - 125 - коды ошибок, определяемые программистом (их можно
использовать и не только для передачи информации об ошибках)
126 - файл не является исполняемым
127 - команда не найдена
128+ появившийся сигнал

113.

Самостоятельно посмотреть команды
ls - (list) просмотр каталога
cd - (change directory) изменение рабочего каталога
cp - (copy) копирование
mv - (move) перемещение
find - поиск файлов
grep - (general regular expression parser) - общий синтаксический
анализатор регулярных выражений
top - вывод информации о наиболее активных процессах
pidof - (PID of) определение идентификатора процесса по его имени
kill - принудительное завершение процесса

114.

6.29. Ввод-вывод. Перенаправление.
Стандартные потоки ввода-вывода данных связаны с консолью.
Для ввода:
консоль = клавиатура
Для вывода:
консоль = окно терминала (черный фон у окна).
В языках программирования стандартные потоки имеют, как правило, свои
наименования или номера каналов, например, в Фортране каналы 5 и 6.
Перенаправление потоков ввода-вывода:
>
перенаправляет вывод в указанный файл в режиме перезаписи (write)
>> перенаправляет вывод в режиме добавления (append)
<
перенаправляет ввод на чтение из указанного файла (read)
$ ./myСmd.sh >> output.txt < input.txt
Фиктивное пустое устройство /dev/null
$ echo string to be lost > /dev/null
$ cp /dev/null newEmpty.txt
Подавление вывода (внутренняя команда оболочки)
$ set +v echo suppressed text
set +v

115.

6.30. Ветвления. Условия
if [условие1]
then
операторы, если True1
elif [условие2] ; then
операторы, если True2
………..
else
операторы, если False
fi
if [ -f filename ] ; then
операторы, если filename - обычный файл
fi
if [ -z "$N” ] ; then
операторы, если переменная N не существует
fi

116.

Сравнения строк.
Варианты условий Обозначение Пример
Результат
Равно
=
string1 = string2 true, если строки
одинаковы
Неравно
!=
string1 != string2 true, если строки
различаются
Пустая строка
-z
-z string
true, если строка null
Непустая строка
-n
-n string
true, если строка не null
Отрицание
!
! expression
true, если
expression=false, и
наоборот
expression - это логическое значение или выражение.

117.

Сравнения чисел.
Обозначение Расшифровка
Пример
-eq
EQual
expression1 -eq expression2
-ne
Not Equal
expression1 -ne expression2
-gt
Greater Than
expression1 -gt expression2
-ge
Greater or Equal expression1 -ge expression2
-lt
Less Than
expression1 -lt expression2
-le
Less or Equal
expression1 -le expression2
expression - это число или вычисляемое выражение.
Результат
true, если
значения равны
true, если
значения не равны
true, если первое
больше
true, если
первое не меньше
true, если
первое меньше
true, если
первое не больше

118.

Проверка файлов.
Флаг файла Расшифровка
-d
Directory
-f
ordinary File
-r
Read
-s
-w
-x
non zero Size
Write
eXecutive
Пример
-d filename
-f filename
-r filename
Результат
true, если каталог
true, если обычный файл
true, если доступен для
чтения
-s filename
true, если длина больше 0
-w filename true, если доступен для записи
-x filename
true, если разрешено
выполнение

119.

6.31. Циклы. Сдвиг параметров.
for переменная in значения
do
операторы
done
for var1 in value1 value2 value3
do
echo $var1
done
for File1 in $(ls *.sh); do
echo $File1 >> All.txt
done

120.

while условие
do
операторы
done
while выполняется пока условие true
until условие
do
операторы
done
until выполняется пока условие false

121.

shift n сдвигает все переменные-параметры,
начиная с $2, на n позиций к 0
Для shift :
$0 - не изменяется
$1 - отбрасывается
$2 -> $1
……
while [“$1” != “”]; do
echo $1
shift
done
так в цикле можно обработать все параметры

122.

6.32. Конвейер и списки
Конвейер - результат предыдущей команды является начальным
условием последующей команды.
оператор1 | оператор2 | оператор3
И-список (AND list) - последующая команда выполняется только при
успешном завершении предыдущей команды, т.е. до тех пор пока
очередная команда не вернет false
оператор1 && оператор2 && оператор3
ИЛИ-список (OR list) - последующая команда выполняется пока
очередная команда не вернет true
оператор1 || оператор2 || оператор3
операторный блок - для объединения нескольких операторов в
один
{ операторы }

123.

6.33.Сравнение с Windows .
DOS/
Windows
Unix
%
$
префикс параметров
/
-
ключ (опция)
\
/
Корневой каталог или разделитель
имен каталогов в пути
==
=
равно (сравнение строк)
!==!
!=
не равно (сравнение строк)
NOT
!
отрицание последующего условия
|
|
конвейер (канал)
*
*
Обозначение последовательности
символов в шаблоне

124.

>
>
перенаправление (с удалением
существующего файла)
>>
>>
перенаправление (с добавлением в конец
существующего файла)
<
<
перенаправление ввода
%VAR%
$VAR
переменная окружения
REM
#
Комментарий
ECHO
echo
вывод (в UNIX имеет большое число опций)
ECHO.
echo
вывод пустой строки
@
set +v
не выводить текущую команду
ECHO OFF
set +v
не выводить последующие команды
FOR %%VAR IN
(LIST) DO
for var in [list]; do
цикл "for"

125.

PAUSE
sleep
пауза, или ожидание, в течение
заданного времени
CHOICE
case или select
выбор из меню
IF
If …. then…elif….else ….fi условный оператор if
IF EXIST
FILENAME
if [ -f filename ]
проверка существования файла
IF !%N==!
if [ -z "$N" ]
Проверка: параметр "N" отсутствует
CALL или
COMMAND /C
source или . (оператор
"точка")
"подключение" другого сценария
SET
export
установить переменную окружения
SHIFT
shift
сдвиг списка аргументов командной
строки влево

126.

ERRORLEVEL
$?
код завершения
NUL
/dev/null
Фиктивное устройство
CON
Stdin, stdout
консоль
PRN
/dev/lp0
устройство принтера
LPT1
/dev/lp0
устройство принтера
COM1
/dev/ttyS0
первый последовательный порт

127.

ATTRIB
Chmod
изменить атрибуты файла (права
доступа)
CD,
CHDIR
Cd
сменить каталог
CLS
Clear
очистить экран
COMP, FC
diff, comm, cmp
сравнить файлы
COPY, XCOPY
Cp
скопировать файл
[Ctrl-C]
[Ctrl-C]
прервать исполнение сценария
[Ctrl-Z]
[Ctrl-D]
EOF (конец-файла)

128.

DEL
rm
удалить файл(ы)
DELTREE
rm -rf
удалить каталог с подкаталогами
DIR
ls -l
вывести содержимое каталога
ERASE
rm
удалить файл(ы)
EXIT
exit
завершить текущий процесс
FIND
grep
найти строку в файлах
MD, MKDIR
mkdir
создать каталог
MORE
more
постраничный вывод
MOVE
mv
переместить

129.

PATH
$PATH
путь поиска исполняемых файлов
REN, RENAME
mv
переименовать (переместить)
RD, RMDIR
rmdir
удалить каталог
SORT
sort
отсортировать файл
TIME
date
вывести системное время
TYPE
cat
вывести содержимое файла на stdout

130.

Shell-программирование в Windows
Командный файл *.bat (в простом текстовом редакторе)
Запуск интерпретатора cmd /e
Справка по командам help | more
Справка по сетевым командам net help

131.

Подготовка к зачету
Задание S1 Linux.
Написать файл сценария, который:
1. Переходит в домашний каталог текущего пользователя и создает
в нем пустой файл.
2. Перемещает под новым именем уже существующий файл в
другой существующий каталог и делает перемещенный и
переименованный файл недоступным по чтению и записи для
всех, кроме владельца, а по выполнению для всех пользователей.
3. Показывает в окне терминала файлы заданного типа из текущего
каталога, в которых находит заданное слово.
4. Находит имена файлов, соответствующие заданному шаблону и
сохраняет их в текстовый файл.
5. Показывает информацию о процессах на все окно терминала и
убивает один из процессов по его идентификатору.
Эмулятор Linux в web-браузере:
https://bellard.org/jslinux/

132.

Подготовка к зачету
Задание S2 Windows.
Написать пакетный файл *.bat, который:
1. Настраивает операционную систему на ежедневное выполнение
в 08:00 синхронизации системного времени компьютера с
системным временем сервера X-FILES.
2. Подключает сетевые диски:
T: и X: к ресурсам Tasks и Exchange, соответственно, на сервере
X-FILES.
3. Подключает компьютер к сетевому принтеру pr_530 через принтсервер r530printer.
4. Создает 3 целочисленные переменные окружения, запрашивая у
пользователя значения первых двух и присваивая их сумму в
качестве значения третьей переменной.
5. Создаёт в подкаталоге START текущего каталога диска Z: пустой
файл empty.for

133.

1.1.3. Литература:
1.
2.
Маслаков В.Г. Linux на 100% (+DVD).- СПб.: Питер,
2009. – 336 с.: ил. – (Серия «На 100%»).
Попов А.В. Командные файлы и сценарии Windows
Script Host. – СПб.: БХВ-Петербург, 2002. – 320 с.
English     Русский Rules