|
По первому тесту выполнил дважды задания. Результат получается правильный (проверял калькулятором). Пишет, что "Задание не проверено" и предлагает повторить. |
Общие сведения о языке программирования Free Pascal
2.5 Операции и выражения
Выражение задаёт порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций, например a+b*sin(cos(x)). В табл. 2.4 представлены основные операции языка программирования Free Pascal.
| Операция | Действие | Тип операндов | Тип результата |
|---|---|---|---|
| + | сложение | целый/вещественный | целый/вещественный |
| + | сцепление строк | строковый | строковый |
| – | вычитание | целый/вещественный | целый/вещественный |
| * | умножение | целый/вещественный | целый/вещественный |
| / | деление | целый/вещественный | вещественный |
| div | целочисленное деление | целый | целый |
| mod | остаток от деления | целый | целый |
| not | арифметическое/логическое | отрицание | целый/логический целый/логический |
| and | арифметическое/логическое И | целый/логический | целый/логический |
| or | арифметическое/логическое ИЛИ | целый/логический | целый/логический |
| xor | арифметическое/логическое исключающее ИЛИ | целый/логический | целый/логический |
| shl | сдвиг влево | целый | целый |
| shr | сдвиг вправо | целый | целый |
| in | вхождение в множество | множество | логический |
| < | меньше | не структурированный | логический |
| > | больше | не структурированный | логический |
| <= | меньше или равно | не структурированный | логический |
| >= | больше или равно | не структурированный | логический |
| = | равно | не структурированный | логический |
| <> | не равно | не структурированный | логический |
В сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций. В языке Free Pascal приняты следующие приоритеты:
- not.
- *, /, div, mod, and, shl, shr.
- +, –, or, xor.
- =, <>, >, <, >=, <=.
Использование скобок в выражениях позволяет менять порядок вычислений.
Перейдём к подробному рассмотрению основных операций языка.
2.5.1 Арифметические операции
Операции +, –, *, / относят к арифметическим операциям. Их назначение понятно и не требует дополнительных пояснений.
Операции целочисленной арифметики (применяются только к целочисленным операндам):
- div — целочисленное деление (возвращает целую часть частного, дробная часть отбрасывается), например, 17 div 10 = 1;
- mod — остаток от деления, например, 17 mod 10 = 7.
К операциям битовой арифметики относятся следующие операции: and, or, xor, not, shl, shr. В операциях битовой арифметики действия происходят над двоичным представлением целых чисел.
Арифметическое И (and)5Конъюнкция.. Оба операнда переводятся в двоичную систему, затем над ними происходит логическое поразрядное умножение операндов по следующим правилам:
1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0
Например, если
и
, то их двоичное представление —
и
. В результате логического умножения A and B получим 0000000000001000 или 8 в десятичной системе счисления (рис. 2.1). Таким образом,
.
Арифметическое ИЛИ (or)6Дизъюнкция.. Здесь оба операнда также переводятся в двоичную систему, после чего над ними происходит логическое поразрядное сложение операндов по следующим правилам:
1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0
Например, результат логического сложения чисел
и
будет равен A or B = 30 (рис. 2.2).
Арифметическое исключающее ИЛИ (xor). Оба операнда переводятся в двоичную систему, после чего над ними происходит логическая поразрядная операция xor по следующим правилам:
1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
Арифметическое отрицание (not). Эта операция выполняется над одним операндом. Применение операции not вызывает побитную инверсию7Побитная инверсия — замена в двоичном представлении числа нулей единицами, единиц — нулями. двоичного представления числа (рис. 2.3).
Сдвиг влево (M shl L). Двоичное представление числа
сдвигается влево на
позиций. Рассмотрим операцию 15 shl 3. Число 15 в двоичной системе имеет вид 1111. При сдвиге его на 3 позиции влево получим 1111000. В десятичной системе это двоичное число равно 120. Итак, 15 shl 3 = 120 (рис. 2.4).
Заметим, что сдвиг на один разряд влево соответствует умножению на два, на два разряда — умножению на четыре, на три — умножению на восемь. Таким образом, операция M shl L эквивалентна умножению числа
на 2 в степени
.
Сдвиг вправо (M shr L). В этом случае двоичное представление числа
сдвигается вправо на
позиций, что эквивалентно целочисленному делению числа
на 2 в степени
. Например, 15 shr 1 = 7 (рис. 2.5), 15 shr 3 = 2.




