Логические операции
Логическая операция | Ее значение | Примеры
записи | Значение примера | ||||
AND | Логическое "И" | (x<7) and
(x>3) | x меньше 7 и x больше 3 (3<x<7) | ||||
OR | Логическое "ИЛИ" | (y>100) or (y<10) | y больше 100 или
y меньше 10 (y<10, y>100) | ||||
NOT | Логическое "НЕ" | not (x=2) | не x равно 2 |

a | b | a and
b | a or
b | ||||
истина | истина | истина | истина | ||||
истина | ложь | ложь | истина | ||||
ложь | истина | ложь | истина | ||||
ложь | ложь | ложь | ложь |
Остановимся немного подробнее на операции целочисленного деления (div) и операции, выдающей остаток от деления (mod).
Так, результатом целочисленного деления 17 на 5 будет 3:
17 div 5 = 3, а результатом деления меньшего числа на большее, будет 0:
46 div
200 = 0.
Делаем вывод, что при целочисленном деление дробная часть отбрасывается, сам термин "целочисленное деление" или "деление нацело" говорит сам за себя.
Операция a div b осуществляет целочисленное деление целого a на целое b.
Дробная часть при этом отбрасывается.
Еще одна интересная операция - остаток от деления a на b.
Понятно, что остатком от деления 17 на 5 будет число 2:
17 mod 5 = 2,
а вот чему будет равен остаток от деления меньшего числа на большее, например, 46 mod 200?
Оказывается, в этом случае, результатом операции будет число 46. Вот другие примеры:
34 mod
125 = 34,
120 mod 6 = 0.
Интересно, что остаток от деления любого целого числа на 10 будет равен последней цифре этого числа:
543 mod 10 = 3, 45 mod 10 = 5, 7 mod 10 = 7.
Рассмотрим задачу, которая показывает использование операций целочисленного деления и остатка от деления.
Пример 1. Найти разность между трехзначным числом и числом, составленным из тех же цифр, но взятых в обратном порядке.
При решении этой задачи, надо помнить, что компьютер не знает десятичной и позиционной формы записи чисел, так для него совершенно неизвестно, сколько в числе 342 сотен, десятков и единиц.
Это известно нам, потому что с раннего возраста мы используем такую форму записи чисел. Мы условились считать, что на первом месте слева стоит цифра единиц, на втором - цифра десятков, на третьем - цифра сотен и т.д.
Компьютеру это неизвестно! Он любое число переводит на язык двух цифр -

А для решения этой задачи нам необходимо знать цифры единиц, десятков и сотен заданного числа, чтобы затем переставить их, отсюда возникает первая задача - научить компьютер находить цифры числа, принадлежащие различным разрядам. Для этого можно использовать два способа.
Способ первый достаточно простой. Сущность которого в следующем.
Для определения цифры сотен делим данное число на 100 и остаток отбрасываем, т. е. выполняем целочисленное деление.
Для определения цифры десятков надо из данного числа вычесть сотни, результат разделить на 10 и остаток отбросить.
Для определения цифры единиц надо из данного числа вычесть сотни и десятки. Для записи числа теми же цифрами в обратном порядке, умножим цифру единиц на 100, сложим с цифрой десятков, умноженной на 10 и с цифрой сотен.
Далее из заданного числа вычитаем полученное новое. Например, для числа 342. Выполним целочисленное деление числа на 100, получим цифру сотен:
342 div 100 = 3;
вычитаем из 342 сотни 3*100 и результат делим на 10 - получим цифру десятков:
(342 - 3*100) div
10 = 4;
наконец, вычитаем из заданного числа сотни и десятки, получаем цифру единиц:
342 - 3*100 - 4*10 = 2.
Для записи числа в обратном порядке, умножаем цифру единиц 2 на 100 и складываем с цифрой десятков, умноженных на 10 (4*10) и прибавляем цифру сотен 3. Получим новое число, записанное теми же цифрами, но в обратном порядке:
2


Вычитаем: 342 - 243 = 99.
Программа
Program Problem1;
uses WinCrt;
var
a, s, d, e, b, r : integer;
begin
write('Введите трехзначное число '); readln(a);
s := a div 100;
d := (a - s*100) div 10;
e := a - s*100 - d*10;
b := e*100 + d*10 + s;
r := a - b;
writeln('Искомая разность равна ', r)
end.
Программа достаточно проста и понятна.
В разделе описаний переменным a, s, d, e, b, r устанавливается целый тип - integer.
Вводится трехзначное число и присваивается переменной a.
Переменной s присваивается результат целочисленного деления введенного числа a на 100. Это значение есть цифра сотен. Переменная d получает значение цифры десятков:
d := (a - s*100) div
10,
переменная e - это цифра единиц:
e := a - s*100 - d*10.
Дальнейшая работа программы понятна.